@@ -76,6 +76,7 @@ struct Derivedcascadeanalysis {
7676 ConfigurableAxis axisIR{" axisIR" , {510 , -1 , 50 }, " Binning for the interaction rate (kHz)" };
7777
7878 Configurable<bool > isXi{" isXi" , 1 , " Apply cuts for Xi identification" };
79+ Configurable<bool > ispO{" ispO" , 0 , " Analyse p--O collisions" };
7980 Configurable<bool > useCentralityFT0M{" useCentralityFT0M" , 0 , " If true, use centFT0M" };
8081 Configurable<bool > useCentralityFT0A{" useCentralityFT0A" , 0 , " If true, use centFT0A" };
8182 Configurable<bool > useCentralityFT0Cvar1{" useCentralityFT0Cvar1" , 0 , " If true, use centFT0FT0Cvar1" };
@@ -119,6 +120,18 @@ struct Derivedcascadeanalysis {
119120 Configurable<int > maxOccupancy{" maxOccupancy" , -1 , " Maximal occupancy" };
120121 Configurable<float > minOccupancyFT0{" minOccupancyFT0" , -1 , " Minimal occupancy" };
121122 Configurable<float > maxOccupancyFT0{" maxOccupancyFT0" , -1 , " Maximal occupancy" };
123+ Configurable<float > globalTracksCorrelpar0Low{" globalTracksCorrelpar0Low" , 81 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
124+ Configurable<float > globalTracksCorrelpar1Low{" globalTracksCorrelpar1Low" , -0.0431016 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
125+ Configurable<float > globalTracksCorrelpar2Low{" globalTracksCorrelpar2Low" , -6 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
126+ Configurable<float > globalTracksCorrelpar0High{" globalTracksCorrelpar0High" , 226 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
127+ Configurable<float > globalTracksCorrelpar1High{" globalTracksCorrelpar1High" , -0.0181686 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
128+ Configurable<float > globalTracksCorrelpar2High{" globalTracksCorrelpar2High" , -22 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
129+ Configurable<float > pvContribCorrelpar0Low{" pvContribCorrelpar0Low" , 152 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
130+ Configurable<float > pvContribCorrelpar1Low{" pvContribCorrelpar1Low" , -0.0431016 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
131+ Configurable<float > pvContribCorrelpar2Low{" pvContribCorrelpar2Low" , -15.3776 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
132+ Configurable<float > pvContribCorrelpar0High{" pvContribCorrelpar0High" , 384.861 , " [0]*exp([1]*centrality)+[2], mean minus 3*sigma" };
133+ Configurable<float > pvContribCorrelpar1High{" pvContribCorrelpar1High" , -0.0181686 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
134+ Configurable<float > pvContribCorrelpar2High{" pvContribCorrelpar2High" , -39 , " [0]*exp([1]*centrality)+[2], mean plus 3*sigma" };
122135 } eventSelectionRun3Flags;
123136
124137 struct : ConfigurableGroup {
@@ -219,6 +232,8 @@ struct Derivedcascadeanalysis {
219232 Configurable<float > rejcomp{" rejcomp" , 0.008 , " Competing Cascade rejection" };
220233 Configurable<float > masswin{" masswin" , 0.05 , " Mass window limit" };
221234 Configurable<float > rapCut{" rapCut" , 0.5 , " Rapidity acceptance" };
235+ Configurable<float > minRapCut{" minRapCut" , -0.845 , " minimal rapidity acceptance in case of p--o" };
236+ Configurable<float > maxRapCut{" maxRapCut" , 0.155 , " maximal rapidity acceptance in case of p--o" };
222237 Configurable<float > etaDauCut{" etaDauCut" , 0.8 , " Pseudorapidity acceptance of the cascade daughters" };
223238 Configurable<int > minITSclusters{" minITSclusters" , 3 , " minimal number of ITS hits for the daughter tracks" };
224239 } candidateSelectionValues;
@@ -302,6 +317,10 @@ struct Derivedcascadeanalysis {
302317 histos.add (" hNCrossedRowsPositive" , " " , kTH1F , {{400 , -200 , 200 }});
303318 histos.add (" hNCrossedRowsBachelor" , " " , kTH1F , {{400 , -200 , 200 }});
304319
320+ histos.add (" hPseudorapPosDaughter" , " " , kTH1F , {{50 , -1 , 1 }});
321+ histos.add (" hPseudorapNegDaughter" , " " , kTH1F , {{50 , -1 , 1 }});
322+ histos.add (" hPseudorapBachelor" , " " , kTH1F , {{50 , -1 , 1 }});
323+
305324 histos.add (" hEventNchCorrelationAfCuts" , " hEventNchCorrelationAfCuts" , kTH2F , {{5000 , 0 , 5000 }, {5000 , 0 , 2500 }});
306325 histos.add (" hEventPVcontributorsVsCentrality" , " hEventPVcontributorsVsCentrality" , kTH2F , {{100 , 0 , 100 }, {5000 , 0 , 5000 }});
307326 histos.add (" hEventGlobalTracksVsCentrality" , " hEventGlobalTracksVsCentrality" , kTH2F , {{100 , 0 , 100 }, {2500 , 0 , 2500 }});
@@ -660,9 +679,9 @@ struct Derivedcascadeanalysis {
660679 histos.fill (HIST (" hEventSelection" ), 11.5 /* Not at TF border */ );
661680
662681 if (eventSelectionRun3Flags.doMultiplicityCorrCut ) {
663- if (coll.multNTracksGlobal () < (1343.3 * std::exp (- 0.0443259 * centrality) - 50 ) || coll.multNTracksGlobal () > (2098.9 * std::exp (- 0.0332444 * centrality)))
682+ if (coll.multNTracksGlobal () < (eventSelectionRun3Flags. globalTracksCorrelpar0Low * std::exp (eventSelectionRun3Flags. globalTracksCorrelpar1Low * centrality) + eventSelectionRun3Flags. globalTracksCorrelpar2Low ) || coll.multNTracksGlobal () > (eventSelectionRun3Flags. globalTracksCorrelpar0High * std::exp (eventSelectionRun3Flags. globalTracksCorrelpar1High * centrality) + eventSelectionRun3Flags. globalTracksCorrelpar2High ))
664683 return false ;
665- if (coll.multNTracksPVeta1 () < (3703 * std::exp (- 0.0455483 * centrality) - 150 ) || coll.multNTracksPVeta1 () > (4937.33 * std::exp (- 0.0372668 * centrality) + 20 ))
684+ if (coll.multNTracksPVeta1 () < (eventSelectionRun3Flags. pvContribCorrelpar0Low * std::exp (eventSelectionRun3Flags. pvContribCorrelpar1Low * centrality) + eventSelectionRun3Flags. pvContribCorrelpar2Low ) || coll.multNTracksPVeta1 () > (eventSelectionRun3Flags. pvContribCorrelpar0High * std::exp (eventSelectionRun3Flags. pvContribCorrelpar1High * centrality) + eventSelectionRun3Flags. pvContribCorrelpar2High ))
666685 return false ;
667686 }
668687 if (fillHists)
@@ -826,21 +845,27 @@ struct Derivedcascadeanalysis {
826845 float cut = candidateSelectionValues.masswin ;
827846 histos.fill (HIST (" hCutValue" ), 1 , cut);
828847 cut = candidateSelectionValues.rapCut ;
848+ if (ispO)
849+ cut = candidateSelectionValues.maxRapCut ;
829850 histos.fill (HIST (" hCutValue" ), 2 , cut);
830851 if (isXi) {
831852 if (std::abs (casc.mXi () - o2::constants::physics::MassXiMinus) > candidateSelectionValues.masswin ) {
832853 return false ;
833854 }
834855 histos.fill (HIST (" hCandidate" ), ++counter);
835- if (std::abs (casc.yXi ()) > candidateSelectionValues.rapCut )
856+ if (ispO && (casc.yXi () < candidateSelectionValues.minRapCut || casc.yXi () > candidateSelectionValues.maxRapCut ))
857+ return false ;
858+ else if (std::abs (casc.yXi ()) > candidateSelectionValues.rapCut )
836859 return false ;
837860 histos.fill (HIST (" hCandidate" ), ++counter);
838861 } else {
839862 if (std::abs (casc.mOmega () - o2::constants::physics::MassOmegaMinus) > candidateSelectionValues.masswin ) {
840863 return false ;
841864 }
842865 histos.fill (HIST (" hCandidate" ), ++counter);
843- if (std::abs (casc.yOmega ()) > candidateSelectionValues.rapCut )
866+ if (ispO && (casc.yOmega () < candidateSelectionValues.minRapCut || casc.yOmega () > candidateSelectionValues.maxRapCut ))
867+ return false ;
868+ else if (std::abs (casc.yOmega ()) > candidateSelectionValues.rapCut )
844869 return false ;
845870 histos.fill (HIST (" hCandidate" ), ++counter);
846871 }
@@ -1120,11 +1145,11 @@ struct Derivedcascadeanalysis {
11201145 auto cascMC = casc.template cascMCCore_as <soa::Join<aod::CascMCCores, aod::CascMCCollRefs>>();
11211146 ptmc = RecoDecay::sqrtSumOfSquares (cascMC.pxMC (), cascMC.pyMC ());
11221147
1123- if (cascMC.isPhysicalPrimary () && ((isXi && std::abs (cascMC.pdgCode ()) == 3312 ) || (!isXi && std::abs (cascMC.pdgCode ()) == 3334 )))
1148+ if (cascMC.isPhysicalPrimary () && ((isXi && std::abs (cascMC.pdgCode ()) == PDG_t:: kXiMinus ) || (!isXi && std::abs (cascMC.pdgCode ()) == PDG_t:: kOmegaMinus )))
11241149 isTrueMCCascade = true ;
1125- if (isTrueMCCascade && ((isPositive && cascMC.pdgCodePositive () == 211 && cascMC.pdgCodeNegative () == - 2212 ) || (isNegative && cascMC.pdgCodePositive () == 2212 && cascMC.pdgCodeNegative () == - 211 )))
1150+ if (isTrueMCCascade && ((isPositive && cascMC.pdgCodePositive () == PDG_t:: kPiPlus && cascMC.pdgCodeNegative () == PDG_t:: kProtonBar ) || (isNegative && cascMC.pdgCodePositive () == PDG_t:: kProton && cascMC.pdgCodeNegative () == PDG_t:: kPiMinus )))
11261151 isCorrectLambdaDecay = true ;
1127- if (isTrueMCCascade && isCorrectLambdaDecay && ((isXi && std::abs (cascMC.pdgCodeBachelor ()) == 211 ) || (!isXi && std::abs (cascMC.pdgCodeBachelor ()) == 321 )))
1152+ if (isTrueMCCascade && isCorrectLambdaDecay && ((isXi && std::abs (cascMC.pdgCodeBachelor ()) == PDG_t:: kPiPlus ) || (!isXi && std::abs (cascMC.pdgCodeBachelor ()) == PDG_t:: kKPlus )))
11281153 isTrueMCCascadeDecay = true ;
11291154
11301155 if (qaFlags.doBefSelCheck && isTrueMCCascade) {
@@ -1161,6 +1186,10 @@ struct Derivedcascadeanalysis {
11611186 continue ;
11621187 histos.fill (HIST (" hCandidate" ), ++counter);
11631188
1189+ histos.fill (HIST (" hPseudorapPosDaughter" ), poseta);
1190+ histos.fill (HIST (" hPseudorapNegDaughter" ), negeta);
1191+ histos.fill (HIST (" hPseudorapBachelor" ), bacheta);
1192+
11641193 if (candidateSelectionFlags.doCascadeCosPaCut ) {
11651194 if (!isCosPAAccepted (casc, coll.posX (), coll.posY (), coll.posZ (), candidateSelectionFlags.doPtDepCosPaCut , true ))
11661195 continue ;
@@ -1429,12 +1458,14 @@ struct Derivedcascadeanalysis {
14291458
14301459 float ptmc = RecoDecay::sqrtSumOfSquares (cascMC.pxMC (), cascMC.pyMC ());
14311460 float ymc = 1e3 ;
1432- if (std::abs (cascMC.pdgCode ()) == 3312 )
1461+ if (std::abs (cascMC.pdgCode ()) == PDG_t:: kXiMinus )
14331462 ymc = RecoDecay::y (std::array{cascMC.pxMC (), cascMC.pyMC (), cascMC.pzMC ()}, o2::constants::physics::MassXiMinus);
1434- else if (std::abs (cascMC.pdgCode ()) == 3334 )
1463+ else if (std::abs (cascMC.pdgCode ()) == PDG_t:: kOmegaMinus )
14351464 ymc = RecoDecay::y (std::array{cascMC.pxMC (), cascMC.pyMC (), cascMC.pzMC ()}, o2::constants::physics::MassOmegaMinus);
14361465
1437- if (std::abs (ymc) > candidateSelectionValues.rapCut )
1466+ if (ispO && (ymc > candidateSelectionValues.maxRapCut || ymc < candidateSelectionValues.minRapCut ))
1467+ continue ;
1468+ else if (std::abs (ymc) > candidateSelectionValues.rapCut )
14381469 continue ;
14391470
14401471 auto mcCollision = cascMC.template straMCCollision_as <soa::Join<aod::StraMCCollisions, aod::StraMCCollMults>>();
@@ -1471,7 +1502,7 @@ struct Derivedcascadeanalysis {
14711502 nChEta1 = collision.multNTracksPVeta1 ();
14721503 }
14731504
1474- if (cascMC.pdgCode () == 3312 && isXi) {
1505+ if (cascMC.pdgCode () == PDG_t:: kXiMinus && isXi) {
14751506 histos.fill (HIST (" h2dGenXiMinus" ), centrality, ptmc);
14761507 histos.fill (HIST (" h2dGenXiMinusVsNch" ), nChEta1, ptmc);
14771508 histos.fill (HIST (" h2dGenXiMinusEta" ), RecoDecay::eta (std::array{cascMC.pxMC (), cascMC.pyMC (), cascMC.pzMC ()}));
@@ -1484,7 +1515,7 @@ struct Derivedcascadeanalysis {
14841515 histos.fill (HIST (" h2dGenXiMinusVsCentIR" ), ptmc, centrality, intRate);
14851516 histos.fill (HIST (" h2dGenXiMinusVsNchVsOccupancy" ), ptmc, nChEta1, occupancy);
14861517 }
1487- if (cascMC.pdgCode () == - 3312 && isXi) {
1518+ if (cascMC.pdgCode () == PDG_t:: kXiPlusBar && isXi) {
14881519 histos.fill (HIST (" h2dGenXiPlus" ), centrality, ptmc);
14891520 histos.fill (HIST (" h2dGenXiPlusVsNch" ), nChEta1, ptmc);
14901521 histos.fill (HIST (" h2dGenXiPlusVsMultMCVsCentrality" ), mcCollision.multMCNParticlesEta05 (), centrality, ptmc);
@@ -1493,7 +1524,7 @@ struct Derivedcascadeanalysis {
14931524 histos.fill (HIST (" h2dGenXiPlusVsNchVsOccupancy" ), ptmc, nChEta1, occupancy);
14941525 histos.fill (HIST (" h2dGenXiPlusVsCentIR" ), ptmc, centrality, intRate);
14951526 }
1496- if (cascMC.pdgCode () == 3334 && !isXi) {
1527+ if (cascMC.pdgCode () == PDG_t:: kOmegaMinus && !isXi) {
14971528 histos.fill (HIST (" h2dGenOmegaMinus" ), centrality, ptmc);
14981529 histos.fill (HIST (" h2dGenOmegaMinusVsNch" ), nChEta1, ptmc);
14991530 histos.fill (HIST (" h2dGenOmegaMinusEta" ), RecoDecay::eta (std::array{cascMC.pxMC (), cascMC.pyMC (), cascMC.pzMC ()}));
@@ -1506,7 +1537,7 @@ struct Derivedcascadeanalysis {
15061537 histos.fill (HIST (" h2dGenOmegaMinusVsNchVsOccupancy" ), ptmc, nChEta1, occupancy);
15071538 histos.fill (HIST (" h2dGenOmegaMinusVsCentIR" ), ptmc, centrality, intRate);
15081539 }
1509- if (cascMC.pdgCode () == - 3334 && !isXi) {
1540+ if (cascMC.pdgCode () == PDG_t:: kOmegaPlusBar && !isXi) {
15101541 histos.fill (HIST (" h2dGenOmegaPlus" ), centrality, ptmc);
15111542 histos.fill (HIST (" h2dGenOmegaPlusVsNch" ), nChEta1, ptmc);
15121543 histos.fill (HIST (" h2dGenOmegaPlusVsMultMCVsCentrality" ), mcCollision.multMCNParticlesEta05 (), centrality, ptmc);
0 commit comments