@@ -78,6 +78,12 @@ enum {
7878 kSpNotPrimary
7979};
8080
81+ enum {
82+ kNoGenpTVar = 0 ,
83+ kGenpTup ,
84+ kGenpTdown
85+ };
86+
8187struct Phik0shortanalysis {
8288 // Histograms are defined with HistogramRegistry
8389 HistogramRegistry dataEventHist{" dataEventHist" , {}, OutputObjHandlingPolicy::AnalysisObject, true , true };
@@ -121,6 +127,7 @@ struct Phik0shortanalysis {
121127 Configurable<float > cfgMinAbsCharge{" cfgMinAbsCharge" , 3 .0f , " Cut on absolute charge" };
122128 Configurable<bool > cfgGlobalWoDCATrack{" cfgGlobalWoDCATrack" , true , " Global track selection without DCA" };
123129 Configurable<bool > cfgPVContributor{" cfgPVContributor" , true , " PV contributor track selection" };
130+ Configurable<float > cMinChargedParticlePtcut{" cMinChargedParticlePtcut" , 0 .1f , " Track minimum pt cut" };
124131 Configurable<float > cMinKaonPtcut{" cMinKaonPtcut" , 0 .15f , " Track minimum pt cut" };
125132 Configurable<float > etaMax{" etaMax" , 0 .8f , " eta max" };
126133 Configurable<float > pTToUseTOF{" pTToUseTOF" , 0 .5f , " pT above which use TOF" };
@@ -148,6 +155,9 @@ struct Phik0shortanalysis {
148155 Configurable<float > maxChi2TPC{" maxChi2TPC" , 4 .0f , " max chi2 per cluster TPC" };
149156 Configurable<int > minITSnCls{" minITSnCls" , 4 , " min number of ITS clusters" };
150157 Configurable<float > maxChi2ITS{" maxChi2ITS" , 36 .0f , " max chi2 per cluster ITS" };
158+
159+ Configurable<bool > applyExtraPhiCuts{" applyExtraPhiCuts" , false , " Enable extra phi cut" };
160+ Configurable<std::vector<float >> extraPhiCuts{" extraPhiCuts" , {3 .07666f , 3 .12661f , 0 .03f , 6 .253f }, " Extra phi cuts" };
151161 } trackConfigs;
152162
153163 // Configurables on phi pT bins
@@ -315,10 +325,11 @@ struct Phik0shortanalysis {
315325 AxisSpec sigmassPhiAxis = {nBinsMPhi, lowMPhi, upMPhi, " #it{M}_{inv} [GeV/#it{c}^{2}]" };
316326 AxisSpec massK0SAxis = {200 , 0 .45f , 0 .55f , " #it{M}_{inv} [GeV/#it{c}^{2}]" };
317327 AxisSpec nSigmaPiAxis = {100 , -10 .0f , 10 .0f , " N#sigma #pi" };
318- AxisSpec vertexZAxis = {100 , -15 . f , 15 . f , " vrtx_{Z} [cm]" };
328+ AxisSpec vertexZAxis = {100 , -cutZVertex, cutZVertex , " vrtx_{Z} [cm]" };
319329 AxisSpec etaAxis = {16 , -trackConfigs.etaMax , trackConfigs.etaMax , " #eta" };
320330 AxisSpec yAxis = {deltaYConfigs.nBinsY , -deltaYConfigs.cfgYAcceptance , deltaYConfigs.cfgYAcceptance , " #it{y}" };
321331 AxisSpec deltayAxis = {deltaYConfigs.nBinsDeltaY , -1 .0f , 1 .0f , " #Delta#it{y}" };
332+ AxisSpec phiAxis = {629 , 0 , o2::constants::math::TwoPI, " #phi" };
322333 AxisSpec multAxis = {120 , 0 .0f , 120 .0f , " centFT0M" };
323334 AxisSpec binnedmultAxis{(std::vector<double >)binsMult, " centFT0M" };
324335 AxisSpec pTPhiAxis = {120 , 0 .0f , 12 .0f , " #it{p}_{T} (GeV/#it{c})" };
@@ -345,7 +356,7 @@ struct Phik0shortanalysis {
345356 dataEventHist.add (" h2VertexZvsMult" , " Vertex Z vs Multiplicity Percentile" , kTH2F , {vertexZAxis, binnedmultAxis});
346357
347358 // Eta distribution for dN/deta values estimation in Data
348- dataEventHist.add (" h4EtaDistribution " , " Eta vs multiplicity in Data" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, {3 , -0 .5f , 2 .5f }});
359+ dataEventHist.add (" h5EtaDistribution " , " Eta vs multiplicity in Data" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, phiAxis , {3 , -0 .5f , 2 .5f }});
349360
350361 // Number of MC events per selection for Rec and Gen
351362 mcEventHist.add (" hRecMCEventSelection" , " hRecMCEventSelection" , kTH1F , {{9 , -0 .5f , 8 .5f }});
@@ -380,13 +391,13 @@ struct Phik0shortanalysis {
380391 mcEventHist.add (" h2GenMCRecoVertexZvsMult" , " GenMCReco Vertex Z vs Multiplicity Percentile" , kTH2F , {vertexZAxis, binnedmultAxis});
381392
382393 // Eta distribution for dN/deta values estimation in MC
383- mcEventHist.add (" h5RecoMCEtaDistribution " , " Eta vs multiplicity in MCReco" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, { 3 , -0 .5f , 2 .5f }, {6 , -0 .5f , 5 .5f }});
384- mcEventHist.add (" h5RecoCheckMCEtaDistribution " , " Eta vs multiplicity in MCReco Check" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, { 3 , -0 .5f , 2 .5f }, {6 , -0 .5f , 5 .5f }});
394+ mcEventHist.add (" h6RecoMCEtaDistribution " , " Eta vs multiplicity in MCReco" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, phiAxis, { 6 , -0 .5f , 5 .5f }, {3 , -0 .5f , 2 .5f }});
395+ mcEventHist.add (" h6RecoCheckMCEtaDistribution " , " Eta vs multiplicity in MCReco Check" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, phiAxis, { 6 , -0 .5f , 5 .5f }, {3 , -0 .5f , 2 .5f }});
385396
386397 mcEventHist.add (" h2GenMCEtaDistribution" , " Eta vs multiplicity in MCGen" , kTH2F , {binnedmultAxis, etaAxis});
387398 mcEventHist.add (" h2GenMCEtaDistributionAssocReco" , " Eta vs multiplicity in MCGen Assoc Reco" , kTH2F , {binnedmultAxis, etaAxis});
388- mcEventHist.add (" h4GenMCEtaDistributionReco " , " Eta vs multiplicity in MCGen Reco" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, {6 , -0 .5f , 5 .5f }});
389- mcEventHist.add (" h4GenMCEtaDistributionRecoCheck " , " Eta vs multiplicity in MCGen Reco Check" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, {6 , -0 .5f , 5 .5f }});
399+ mcEventHist.add (" h6GenMCEtaDistributionReco " , " Eta vs multiplicity in MCGen Reco" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, phiAxis, {6 , -0 .5f , 5 . 5f }, { 3 , - 0 . 5f , 2 .5f }});
400+ mcEventHist.add (" h6GenMCEtaDistributionRecoCheck " , " Eta vs multiplicity in MCGen Reco Check" , kTHnSparseF , {vertexZAxis, binnedmultAxis, etaAxis, phiAxis, {6 , -0 .5f , 5 . 5f }, { 3 , - 0 . 5f , 2 .5f }});
390401
391402 // Phi topological/PID cuts
392403 dataPhiHist.add (" h2DauTracksPhiDCAxyPreCutData" , " Dcaxy distribution vs pt before DCAxy cut" , kTH2F , {{100 , 0.0 , 5.0 , " #it{p}_{T} (GeV/#it{c})" }, {2000 , -0.05 , 0.05 , " DCA_{xy} (cm)" }});
@@ -2485,11 +2496,15 @@ struct Phik0shortanalysis {
24852496 dataEventHist.fill (HIST (" h2VertexZvsMult" ), collision.posZ (), collision.centFT0M ());
24862497
24872498 for (const auto & track : filteredTracks) {
2488- dataEventHist.fill (HIST (" h4EtaDistribution" ), collision.posZ (), collision.centFT0M (), track.eta (), kGlobalplusITSonly );
2499+ if (trackConfigs.applyExtraPhiCuts && ((track.phi () > trackConfigs.extraPhiCuts ->at (0 ) && track.phi () < trackConfigs.extraPhiCuts ->at (1 )) ||
2500+ track.phi () <= trackConfigs.extraPhiCuts ->at (2 ) || track.phi () >= trackConfigs.extraPhiCuts ->at (3 )))
2501+ continue ;
2502+
2503+ dataEventHist.fill (HIST (" h5EtaDistribution" ), collision.posZ (), collision.centFT0M (), track.eta (), track.phi (), kGlobalplusITSonly );
24892504 if (track.hasTPC ()) {
2490- dataEventHist.fill (HIST (" h4EtaDistribution " ), collision.posZ (), collision.centFT0M (), track.eta (), kGlobalonly );
2505+ dataEventHist.fill (HIST (" h5EtaDistribution " ), collision.posZ (), collision.centFT0M (), track.eta (), track. phi (), kGlobalonly );
24912506 } else {
2492- dataEventHist.fill (HIST (" h4EtaDistribution " ), collision.posZ (), collision.centFT0M (), track.eta (), kITSonly );
2507+ dataEventHist.fill (HIST (" h5EtaDistribution " ), collision.posZ (), collision.centFT0M (), track.eta (), track. phi (), kITSonly );
24932508 }
24942509 }
24952510 }
@@ -2515,32 +2530,42 @@ struct Phik0shortanalysis {
25152530 mcEventHist.fill (HIST (" h2RecoMCVertexZvsMult" ), collision.posZ (), mcCollision.centFT0M ());
25162531
25172532 for (const auto & track : filteredMCTracks) {
2533+ if (trackConfigs.applyExtraPhiCuts && ((track.phi () > trackConfigs.extraPhiCuts ->at (0 ) && track.phi () < trackConfigs.extraPhiCuts ->at (1 )) ||
2534+ track.phi () <= trackConfigs.extraPhiCuts ->at (2 ) || track.phi () >= trackConfigs.extraPhiCuts ->at (3 )))
2535+ continue ;
25182536 if (!track.has_mcParticle ())
25192537 continue ;
25202538
25212539 auto mcTrack = track.mcParticle_as <aod::McParticles>();
25222540 if (!mcTrack.isPhysicalPrimary () || std::abs (mcTrack.eta ()) > trackConfigs.etaMax )
25232541 continue ;
25242542
2525- mcEventHist.fill (HIST (" h5RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalplusITSonly , kSpAll );
2543+ mcEventHist.fill (HIST (" h6RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kGlobalplusITSonly );
25262544 if (track.hasTPC ()) {
2527- mcEventHist.fill (HIST (" h5RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalonly , kSpAll );
2545+ mcEventHist.fill (HIST (" h6RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kGlobalonly );
25282546 } else {
2529- mcEventHist.fill (HIST (" h5RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kITSonly , kSpAll );
2547+ mcEventHist.fill (HIST (" h6RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kITSonly );
25302548 }
25312549
25322550 int pid = fromPDGToEnum (mcTrack.pdgCode ());
2533- mcEventHist.fill (HIST (" h5RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalplusITSonly , pid);
2551+ mcEventHist.fill (HIST (" h6RecoMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , pid, kGlobalplusITSonly );
25342552 }
25352553
25362554 for (const auto & mcParticle : mcParticlesThisColl) {
25372555 if (!isGenParticleCharged (mcParticle))
25382556 continue ;
25392557
2540- mcEventHist.fill (HIST (" h4GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), kSpAll );
2558+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kNoGenpTVar );
2559+ if (mcParticle.pt () < trackConfigs.cMinChargedParticlePtcut ) {
2560+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTup , -10 .0f * mcParticle.pt () + 2 .0f );
2561+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTdown , 5 .0f * mcParticle.pt () + 0 .5f );
2562+ } else {
2563+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTup );
2564+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTdown );
2565+ }
25412566
25422567 int pid = fromPDGToEnum (mcParticle.pdgCode ());
2543- mcEventHist.fill (HIST (" h4GenMCEtaDistributionReco " ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), pid);
2568+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionReco " ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle. phi (), pid, kNoGenpTVar );
25442569 }
25452570 }
25462571
@@ -2563,32 +2588,42 @@ struct Phik0shortanalysis {
25632588
25642589 auto filteredMCTracksThisColl = filteredMCTracks.sliceBy (preslices.perColl , collision.globalIndex ());
25652590 for (const auto & track : filteredMCTracksThisColl) {
2591+ if (trackConfigs.applyExtraPhiCuts && ((track.phi () > trackConfigs.extraPhiCuts ->at (0 ) && track.phi () < trackConfigs.extraPhiCuts ->at (1 )) ||
2592+ track.phi () <= trackConfigs.extraPhiCuts ->at (2 ) || track.phi () >= trackConfigs.extraPhiCuts ->at (3 )))
2593+ continue ;
25662594 if (!track.has_mcParticle ())
25672595 continue ;
25682596
25692597 auto mcTrack = track.mcParticle ();
25702598 if (!mcTrack.isPhysicalPrimary () || std::abs (mcTrack.eta ()) > trackConfigs.etaMax )
25712599 continue ;
25722600
2573- mcEventHist.fill (HIST (" h5RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalplusITSonly , kSpAll );
2601+ mcEventHist.fill (HIST (" h6RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kGlobalplusITSonly );
25742602 if (track.hasTPC ()) {
2575- mcEventHist.fill (HIST (" h5RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalonly , kSpAll );
2603+ mcEventHist.fill (HIST (" h6RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kGlobalonly );
25762604 } else {
2577- mcEventHist.fill (HIST (" h5RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kITSonly , kSpAll );
2605+ mcEventHist.fill (HIST (" h6RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , kSpAll , kITSonly );
25782606 }
25792607
25802608 int pid = fromPDGToEnum (mcTrack.pdgCode ());
2581- mcEventHist.fill (HIST (" h5RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), kGlobalplusITSonly , pid);
2609+ mcEventHist.fill (HIST (" h6RecoCheckMCEtaDistribution " ), collision.posZ (), mcCollision.centFT0M (), mcTrack.eta (), mcTrack. phi () , pid, kGlobalplusITSonly );
25822610 }
25832611
25842612 for (const auto & mcParticle : mcParticles) {
25852613 if (!isGenParticleCharged (mcParticle))
25862614 continue ;
25872615
2588- mcEventHist.fill (HIST (" h4GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), kSpAll );
2616+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kNoGenpTVar );
2617+ if (mcParticle.pt () < trackConfigs.cMinChargedParticlePtcut ) {
2618+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTup , -10 .0f * mcParticle.pt () + 2 .0f );
2619+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTdown , 5 .0f * mcParticle.pt () + 0 .5f );
2620+ } else {
2621+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTup );
2622+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kGenpTdown );
2623+ }
25892624
25902625 int pid = fromPDGToEnum (mcParticle.pdgCode ());
2591- mcEventHist.fill (HIST (" h4GenMCEtaDistributionRecoCheck " ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), pid);
2626+ mcEventHist.fill (HIST (" h6GenMCEtaDistributionRecoCheck " ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle. phi (), pid, kNoGenpTVar );
25922627 }
25932628
25942629 numberAssocColl++;
0 commit comments