@@ -72,7 +72,7 @@ struct SingleTrackQC {
7272 // Configurables
7373 Configurable<std::string> ccdburl{" ccdb-url" , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
7474
75- Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2, NTPV:3 " };
75+ Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2" };
7676 Configurable<float > cfgCentMin{" cfgCentMin" , 0 , " min. centrality" };
7777 Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
7878 Configurable<std::string> cfg_swt_name{" cfg_swt_name" , " fHighTrackMult" , " desired software trigger name" }; // 1 trigger name per 1 task. fHighTrackMult, fHighFt0Mult
@@ -208,6 +208,7 @@ struct SingleTrackQC {
208208 fRegistry .add (" Track/positive/hChi2TPC" , " chi2/number of TPC clusters" , kTH1F , {{100 , 0 , 10 }}, false );
209209 fRegistry .add (" Track/positive/hTPCNcr2Nf" , " TPC Ncr/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
210210 fRegistry .add (" Track/positive/hTPCNcls2Nf" , " TPC Ncls/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
211+ fRegistry .add (" Track/positive/hTPCNclsShared" , " TPC Ncls shared/Ncls;p_{T} (GeV/c);N_{cls}^{shared}/N_{cls} in TPC" , kTH2F , {{1000 , 0 , 10 }, {100 , 0 , 1 }}, false );
211212 fRegistry .add (" Track/positive/hNclsITS" , " number of ITS clusters" , kTH1F , {{8 , -0.5 , 7.5 }}, false );
212213 fRegistry .add (" Track/positive/hChi2ITS" , " chi2/number of ITS clusters" , kTH1F , {{100 , 0 , 10 }}, false );
213214 fRegistry .add (" Track/positive/hITSClusterMap" , " ITS cluster map" , kTH1F , {{128 , -0.5 , 127.5 }}, false );
@@ -264,6 +265,7 @@ struct SingleTrackQC {
264265 addhistograms ();
265266 mRunNumber = 0 ;
266267
268+ fRegistry .addClone (" Event/before/hCollisionCounter" , " Event/norm/hCollisionCounter" );
267269 if (doprocessQC_TriggeredData) {
268270 fRegistry .add (" Event/hNInspectedTVX" , " N inspected TVX;run number;N_{TVX}" , kTProfile , {{80000 , 520000.5 , 600000.5 }}, true );
269271 }
@@ -398,6 +400,7 @@ struct SingleTrackQC {
398400 fRegistry .fill (HIST (" Track/positive/hNcrTPC" ), track.tpcNClsCrossedRows ());
399401 fRegistry .fill (HIST (" Track/positive/hTPCNcr2Nf" ), track.tpcCrossedRowsOverFindableCls ());
400402 fRegistry .fill (HIST (" Track/positive/hTPCNcls2Nf" ), track.tpcFoundOverFindableCls ());
403+ fRegistry .fill (HIST (" Track/positive/hTPCNclsShared" ), track.pt (), track.tpcFractionSharedCls ());
401404 fRegistry .fill (HIST (" Track/positive/hChi2TPC" ), track.tpcChi2NCl ());
402405 fRegistry .fill (HIST (" Track/positive/hChi2ITS" ), track.itsChi2NCl ());
403406 fRegistry .fill (HIST (" Track/positive/hITSClusterMap" ), track.itsClusterMap ());
@@ -427,6 +430,7 @@ struct SingleTrackQC {
427430 fRegistry .fill (HIST (" Track/negative/hNcrTPC" ), track.tpcNClsCrossedRows ());
428431 fRegistry .fill (HIST (" Track/negative/hTPCNcr2Nf" ), track.tpcCrossedRowsOverFindableCls ());
429432 fRegistry .fill (HIST (" Track/negative/hTPCNcls2Nf" ), track.tpcFoundOverFindableCls ());
433+ fRegistry .fill (HIST (" Track/negative/hTPCNclsShared" ), track.pt (), track.tpcFractionSharedCls ());
430434 fRegistry .fill (HIST (" Track/negative/hChi2TPC" ), track.tpcChi2NCl ());
431435 fRegistry .fill (HIST (" Track/negative/hChi2ITS" ), track.itsChi2NCl ());
432436 fRegistry .fill (HIST (" Track/negative/hITSClusterMap" ), track.itsClusterMap ());
@@ -493,7 +497,7 @@ struct SingleTrackQC {
493497 {
494498 for (auto & collision : collisions) {
495499 initCCDB<isTriggerAnalysis>(collision);
496- float centralities[4 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C (), collision. centNTPV ()};
500+ float centralities[3 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()};
497501 if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) {
498502 continue ;
499503 }
@@ -545,7 +549,7 @@ struct SingleTrackQC {
545549 passed_trackIds.reserve (tracks.size ());
546550 for (auto & collision : collisions) {
547551 initCCDB<isTriggerAnalysis>(collision);
548- float centralities[4 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C (), collision. centNTPV ()};
552+ float centralities[3 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()};
549553 if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) {
550554 continue ;
551555 }
@@ -670,6 +674,51 @@ struct SingleTrackQC {
670674 }
671675 PROCESS_SWITCH (SingleTrackQC, processQC_TriggeredData, " run single track QC on triggered data" , false );
672676
677+ void processNorm (aod::EMEventNormInfos const & collisions)
678+ {
679+ for (auto & collision : collisions) {
680+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 1.0 );
681+ if (collision.selection_bit (o2::aod::evsel::kIsTriggerTVX )) {
682+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 2.0 );
683+ }
684+ if (collision.selection_bit (o2::aod::evsel::kNoTimeFrameBorder )) {
685+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 3.0 );
686+ }
687+ if (collision.selection_bit (o2::aod::evsel::kNoITSROFrameBorder )) {
688+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 4.0 );
689+ }
690+ if (collision.selection_bit (o2::aod::evsel::kNoSameBunchPileup )) {
691+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 5.0 );
692+ }
693+ if (collision.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
694+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 6.0 );
695+ }
696+ if (collision.selection_bit (o2::aod::evsel::kIsVertexITSTPC )) {
697+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 7.0 );
698+ }
699+ if (collision.selection_bit (o2::aod::evsel::kIsVertexTRDmatched )) {
700+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 8.0 );
701+ }
702+ if (collision.selection_bit (o2::aod::evsel::kIsVertexTOFmatched )) {
703+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 9.0 );
704+ }
705+ if (collision.sel8 ()) {
706+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 10.0 );
707+ }
708+ if (abs (collision.posZ ()) < 10.0 ) {
709+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 11.0 );
710+ }
711+ if (collision.selection_bit (o2::aod::evsel::kNoCollInTimeRangeStandard )) {
712+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), 12.0 );
713+ }
714+ if (!fEMEventCut .IsSelected (collision)) {
715+ continue ;
716+ }
717+ fRegistry .fill (HIST (" Event/norm/hCollisionCounter" ), o2::aod::pwgem::dilepton::utils::eventhistogram::nbin_ev); // accepted
718+ } // end of collision loop
719+ }
720+ PROCESS_SWITCH (SingleTrackQC, processNorm, " process normalization info" , true );
721+
673722 void processDummy (MyCollisions const &) {}
674723 PROCESS_SWITCH (SingleTrackQC, processDummy, " Dummy function" , false );
675724};
0 commit comments