@@ -457,6 +457,178 @@ struct lambdaInvMassTest{
457457 histos.add (" hMassLambda" , " hMassLambda" , kTH1D , {axisConfigurations.axisLambdaMass });
458458 // histos.add("ptQAHist", "ptQAHist", kTH1F, {axisPtQA});
459459
460+
461+ // /////////////////////////////////////////////////////////
462+ // Event Counters
463+ histos.add (" hEventSelection" , " hEventSelection" , kTH1D , {{21 , -0 .5f , +20 .5f }});
464+ if (isRun3) {
465+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (1 , " All collisions" );
466+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (2 , " sel8 cut" );
467+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (3 , " kIsTriggerTVX" );
468+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (4 , " kNoITSROFrameBorder" );
469+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (5 , " kNoTimeFrameBorder" );
470+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (6 , " posZ cut" );
471+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (7 , " kIsVertexITSTPC" );
472+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (8 , " kIsGoodZvtxFT0vsPV" );
473+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (9 , " kIsVertexTOFmatched" );
474+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (10 , " kIsVertexTRDmatched" );
475+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (11 , " kNoSameBunchPileup" );
476+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (12 , " kNoCollInTimeRangeStd" );
477+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (13 , " kNoCollInTimeRangeStrict" );
478+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (14 , " kNoCollInTimeRangeNarrow" );
479+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (15 , " kNoCollInRofStd" );
480+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (16 , " kNoCollInRofStrict" );
481+ if (doPPAnalysis) {
482+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (17 , " INEL>0" );
483+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (18 , " INEL>1" );
484+ } else {
485+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (17 , " Below min occup." );
486+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (18 , " Above max occup." );
487+ }
488+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (19 , " Below min IR" );
489+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (20 , " Above max IR" );
490+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (21 , " RCT flags" );
491+ } else {
492+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (1 , " All collisions" );
493+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (2 , " sel8 cut" );
494+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (3 , " sel7 cut" );
495+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (4 , " kINT7" );
496+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (5 , " kIsTriggerTVX" );
497+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (6 , " kNoIncompleteDAQ" );
498+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (7 , " posZ cut" );
499+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (8 , " kNoInconsistentVtx" );
500+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (9 , " kNoPileupFromSPD" );
501+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (10 , " kNoV0PFPileup" );
502+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (11 , " kNoPileupInMultBins" );
503+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (12 , " kNoPileupMV" );
504+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (13 , " kNoPileupTPC" );
505+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (14 , " kNoV0MOnVsOfPileup" );
506+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (15 , " kNoSPDOnVsOfPileup" );
507+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (16 , " kNoSPDClsVsTklBG" );
508+ if (doPPAnalysis) {
509+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (17 , " INEL>0" );
510+ histos.get <TH1>(HIST (" hEventSelection" ))->GetXaxis ()->SetBinLabel (18 , " INEL>1" );
511+ }
512+ }
513+
514+ histos.add (" hEventCentrality" , " hEventCentrality" , kTH1D , {{101 , 0 .0f , 101 .0f }});
515+ histos.add (" hCentralityVsNch" , " hCentralityVsNch" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisNch });
516+ if (doEventQA) {
517+ if (isRun3) {
518+ histos.add (" hEventSelectionVsCentrality" , " hEventSelectionVsCentrality" , kTH2D , {{21 , -0 .5f , +20 .5f }, {101 , 0 .0f , 101 .0f }});
519+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (1 , " All collisions" );
520+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (2 , " sel8 cut" );
521+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (3 , " kIsTriggerTVX" );
522+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (4 , " kNoITSROFrameBorder" );
523+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (5 , " kNoTimeFrameBorder" );
524+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (6 , " posZ cut" );
525+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (7 , " kIsVertexITSTPC" );
526+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (8 , " kIsGoodZvtxFT0vsPV" );
527+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (9 , " kIsVertexTOFmatched" );
528+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (10 , " kIsVertexTRDmatched" );
529+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (11 , " kNoSameBunchPileup" );
530+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (12 , " kNoCollInTimeRangeStd" );
531+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (13 , " kNoCollInTimeRangeStrict" );
532+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (14 , " kNoCollInTimeRangeNarrow" );
533+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (15 , " kNoCollInRofStd" );
534+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (16 , " kNoCollInRofStrict" );
535+ if (doPPAnalysis) {
536+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (17 , " INEL>0" );
537+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (18 , " INEL>1" );
538+ } else {
539+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (17 , " Below min occup." );
540+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (18 , " Above max occup." );
541+ }
542+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (19 , " Below min IR" );
543+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (20 , " Above max IR" );
544+ histos.get <TH2>(HIST (" hEventSelectionVsCentrality" ))->GetXaxis ()->SetBinLabel (21 , " RCT flags" );
545+
546+ histos.add (" hCentralityVsNGlobal" , " hCentralityVsNGlobal" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisNch });
547+ histos.add (" hEventCentVsMultFT0M" , " hEventCentVsMultFT0M" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisMultFT0M });
548+ histos.add (" hEventCentVsMultFT0C" , " hEventCentVsMultFT0C" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisMultFT0C });
549+ histos.add (" hEventCentVsMultNGlobal" , " hEventCentVsMultNGlobal" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisNch });
550+ histos.add (" hEventCentVsMultFV0A" , " hEventCentVsMultFV0A" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisMultFV0A });
551+ histos.add (" hEventMultFT0MvsMultNGlobal" , " hEventMultFT0MvsMultNGlobal" , kTH2D , {axisConfigurations.axisMultFT0M , axisConfigurations.axisNch });
552+ histos.add (" hEventMultFT0CvsMultNGlobal" , " hEventMultFT0CvsMultNGlobal" , kTH2D , {axisConfigurations.axisMultFT0C , axisConfigurations.axisNch });
553+ histos.add (" hEventMultFV0AvsMultNGlobal" , " hEventMultFV0AvsMultNGlobal" , kTH2D , {axisConfigurations.axisMultFV0A , axisConfigurations.axisNch });
554+ histos.add (" hEventMultPVvsMultNGlobal" , " hEventMultPVvsMultNGlobal" , kTH2D , {axisConfigurations.axisNch , axisConfigurations.axisNch });
555+ histos.add (" hEventMultFT0CvsMultFV0A" , " hEventMultFT0CvsMultFV0A" , kTH2D , {axisConfigurations.axisMultFT0C , axisConfigurations.axisMultFV0A });
556+ }
557+ }
558+
559+ histos.add (" hEventPVz" , " hEventPVz" , kTH1D , {{100 , -20 .0f , +20 .0f }});
560+ histos.add (" hCentralityVsPVz" , " hCentralityVsPVz" , kTH2D , {{101 , 0 .0f , 101 .0f }, {100 , -20 .0f , +20 .0f }});
561+ if (isRun3) {
562+ histos.add (" hEventPVzMC" , " hEventPVzMC" , kTH1D , {{100 , -20 .0f , +20 .0f }});
563+ histos.add (" hCentralityVsPVzMC" , " hCentralityVsPVzMC" , kTH2D , {{101 , 0 .0f , 101 .0f }, {100 , -20 .0f , +20 .0f }});
564+ }
565+
566+ histos.add (" hEventOccupancy" , " hEventOccupancy" , kTH1D , {axisConfigurations.axisOccupancy });
567+ histos.add (" hCentralityVsOccupancy" , " hCentralityVsOccupancy" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisOccupancy });
568+
569+ histos.add (" hGapSide" , " Gap side; Entries" , kTH1D , {{5 , -0.5 , 4.5 }});
570+ histos.add (" hSelGapSide" , " Selected gap side; Entries" , kTH1D , {axisConfigurations.axisSelGap });
571+ histos.add (" hEventCentralityVsSelGapSide" , " ;Centrality (%); Selected gap side" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisSelGap });
572+
573+ histos.add (" hInteractionRate" , " hInteractionRate" , kTH1D , {axisConfigurations.axisIRBinning });
574+ histos.add (" hCentralityVsInteractionRate" , " hCentralityVsInteractionRate" , kTH2D , {{101 , 0 .0f , 101 .0f }, axisConfigurations.axisIRBinning });
575+
576+ histos.add (" hInteractionRateVsOccupancy" , " hInteractionRateVsOccupancy" , kTH2D , {axisConfigurations.axisIRBinning , axisConfigurations.axisOccupancy });
577+
578+ // for QA and test purposes
579+ auto hRawCentrality = histos.add <TH1>(" hRawCentrality" , " hRawCentrality" , kTH1D , {axisConfigurations.axisRawCentrality });
580+
581+ for (int ii = 1 ; ii < 101 ; ii++) {
582+ float value = 100 .5f - static_cast <float >(ii);
583+ hRawCentrality->SetBinContent (ii, value);
584+ }
585+
586+ auto hSelectionV0s = histos.add <TH1>(" GeneralQA/hSelectionV0s" , " hSelectionV0s" , kTH1D , {{static_cast <int >(selPhysPrimAntiLambda) + 3 , -0 .5f , static_cast <double >(selPhysPrimAntiLambda) + 2 .5f }});
587+ hSelectionV0s->GetXaxis ()->SetBinLabel (1 , " All" );
588+ hSelectionV0s->GetXaxis ()->SetBinLabel (selCosPA + 2 , " cosPA" );
589+ hSelectionV0s->GetXaxis ()->SetBinLabel (selRadius + 2 , " Radius min." );
590+ hSelectionV0s->GetXaxis ()->SetBinLabel (selRadiusMax + 2 , " Radius max." );
591+ hSelectionV0s->GetXaxis ()->SetBinLabel (selDCANegToPV + 2 , " DCA neg. to PV" );
592+ hSelectionV0s->GetXaxis ()->SetBinLabel (selDCAPosToPV + 2 , " DCA pos. to PV" );
593+ hSelectionV0s->GetXaxis ()->SetBinLabel (selDCAV0Dau + 2 , " DCA V0 dau." );
594+ hSelectionV0s->GetXaxis ()->SetBinLabel (selK0ShortRapidity + 2 , " K^{0}_{S} rapidity" );
595+ hSelectionV0s->GetXaxis ()->SetBinLabel (selLambdaRapidity + 2 , " #Lambda rapidity" );
596+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTPCPIDPositivePion + 2 , " TPC PID #pi^{+}" );
597+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTPCPIDNegativePion + 2 , " TPC PID #pi^{-}" );
598+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTPCPIDPositiveProton + 2 , " TPC PID p" );
599+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTPCPIDNegativeProton + 2 , " TPC PID #bar{p}" );
600+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTPositiveProtonLambda + 2 , " TOF #Delta t p from #Lambda" );
601+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTPositivePionLambda + 2 , " TOF #Delta t #pi^{+} from #Lambda" );
602+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTPositivePionK0Short + 2 , " TOF #Delta t #pi^{+} from K^{0}_{S}" );
603+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTNegativeProtonLambda + 2 , " TOF #Delta t #bar{p} from #Lambda" );
604+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTNegativePionLambda + 2 , " TOF #Delta t #pi^{-} from #Lambda" );
605+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFDeltaTNegativePionK0Short + 2 , " TOF #Delta t #pi^{-} from K^{0}_{S}" );
606+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaPositiveProtonLambda + 2 , " TOF PID p from #Lambda" );
607+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaPositivePionLambda + 2 , " TOF PID #pi^{+} from #Lambda" );
608+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaPositivePionK0Short + 2 , " TOF PID #pi^{+} from K^{0}_{S}" );
609+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaNegativeProtonLambda + 2 , " TOF PID #bar{p} from #Lambda" );
610+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaNegativePionLambda + 2 , " TOF PID #pi^{-} from #Lambda" );
611+ hSelectionV0s->GetXaxis ()->SetBinLabel (selTOFNSigmaNegativePionK0Short + 2 , " TOF PID #pi^{-} from K^{0}_{S}" );
612+ hSelectionV0s->GetXaxis ()->SetBinLabel (selK0ShortCTau + 2 , " K^{0}_{S} lifetime" );
613+ hSelectionV0s->GetXaxis ()->SetBinLabel (selLambdaCTau + 2 , " #Lambda lifetime" );
614+ hSelectionV0s->GetXaxis ()->SetBinLabel (selK0ShortArmenteros + 2 , " Arm. pod. cut" );
615+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPosGoodTPCTrack + 2 , " Pos. good TPC track" );
616+ hSelectionV0s->GetXaxis ()->SetBinLabel (selNegGoodTPCTrack + 2 , " Neg. good TPC track" );
617+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPosGoodITSTrack + 2 , " Pos. good ITS track" );
618+ hSelectionV0s->GetXaxis ()->SetBinLabel (selNegGoodITSTrack + 2 , " Neg. good ITS track" );
619+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPosItsOnly + 2 , " Pos. ITS-only" );
620+ hSelectionV0s->GetXaxis ()->SetBinLabel (selNegItsOnly + 2 , " Neg. ITS-only" );
621+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPosNotTPCOnly + 2 , " Pos. not TPC-only" );
622+ hSelectionV0s->GetXaxis ()->SetBinLabel (selNegNotTPCOnly + 2 , " Neg. not TPC-only" );
623+ hSelectionV0s->GetXaxis ()->SetBinLabel (selConsiderK0Short + 2 , " True K^{0}_{S}" );
624+ hSelectionV0s->GetXaxis ()->SetBinLabel (selConsiderLambda + 2 , " True #Lambda" );
625+ hSelectionV0s->GetXaxis ()->SetBinLabel (selConsiderAntiLambda + 2 , " True #bar{#Lambda}" );
626+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPhysPrimK0Short + 2 , " Phys. prim. K^{0}_{S}" );
627+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPhysPrimLambda + 2 , " Phys. prim. #Lambda" );
628+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPhysPrimAntiLambda + 2 , " Phys. prim. #bar{#Lambda}" );
629+ hSelectionV0s->GetXaxis ()->SetBinLabel (selPhysPrimAntiLambda + 3 , " Cand. selected" );
630+ // /////////////////////////////////////////////////////////
631+
460632 // From the analyseLambda flag:
461633 histos.add (" h2dNbrOfLambdaVsCentrality" , " h2dNbrOfLambdaVsCentrality" , kTH2D , {axisConfigurations.axisCentrality , {10 , -0 .5f , 9 .5f }});
462634 histos.add (" h3dMassLambda" , " h3dMassLambda" , kTH3D , {axisConfigurations.axisCentrality , axisConfigurations.axisPt , axisConfigurations.axisLambdaMass });
@@ -536,7 +708,7 @@ struct lambdaInvMassTest{
536708 }
537709 }
538710
539- double computePhiMod (double phi, int sign)
711+ double computePhiMod (double phi, int sign)
540712 // Compute phi wrt to a TPC sector
541713 // Calculation taken from CF: https://github.com/AliceO2Group/O2Physics/blob/376392cb87349886a300c75fa2492b50b7f46725/PWGCF/Flow/Tasks/flowAnalysisGF.cxx#L470
542714 {
0 commit comments