1212// / \file rho770analysis.cxx
1313// / \brief rho(770)0 analysis in pp 13 & 13.6 TeV
1414// / \author Hyunji Lim (hyunji.lim@cern.ch)
15- // / \since 01/23 /2025
15+ // / \since 03/12 /2025
1616
1717#include < Framework/Configurable.h>
1818#include < TLorentzVector.h>
@@ -45,7 +45,7 @@ struct rho770analysis {
4545 Configurable<float > cfgMaxDCArToPVcut{" cfgMaxDCArToPVcut" , 0.15 , " Maximum transverse DCA" };
4646 Configurable<float > cfgMaxDCAzToPVcut{" cfgMaxDCAzToPVcut" , 2.0 , " Maximum longitudinal DCA" };
4747 Configurable<float > cfgMaxTPC{" cfgMaxTPC" , 5.0 , " Maximum TPC PID with TOF" };
48- Configurable<float > cfgMaxTOF{" cfgMaxTOF" , 3 .0 , " Maximum TOF PID with TPC" };
48+ Configurable<float > cfgMaxTOF{" cfgMaxTOF" , 5 .0 , " Maximum TOF PID with TPC" };
4949 Configurable<float > cfgMinRap{" cfgMinRap" , -0.5 , " Minimum rapidity for pair" };
5050 Configurable<float > cfgMaxRap{" cfgMaxRap" , 0.5 , " Maximum rapidity for pair" };
5151
@@ -68,7 +68,8 @@ struct rho770analysis {
6868
6969 // PID
7070 Configurable<double > cMaxTOFnSigmaPion{" cMaxTOFnSigmaPion" , 3.0 , " TOF nSigma cut for Pion" }; // TOF
71- Configurable<double > cMaxTPCnSigmaPion{" cMaxTPCnSigmaPion" , 3.0 , " TPC nSigma cut for Pion" }; // TPC
71+ Configurable<double > cMaxTPCnSigmaPion{" cMaxTPCnSigmaPion" , 5.0 , " TPC nSigma cut for Pion" }; // TPC
72+ Configurable<double > cMaxTPCnSigmaPionnoTOF{" cMaxTPCnSigmaPionnoTOF" , 2.0 , " TPC nSigma cut for Pion in no TOF case" }; // TPC
7273 Configurable<double > nsigmaCutCombinedPion{" nsigmaCutCombinedPion" , 3.0 , " Combined nSigma cut for Pion" };
7374 Configurable<int > selectType{" selectType" , 0 , " PID selection type" };
7475
@@ -97,6 +98,10 @@ struct rho770analysis {
9798 histos.add (" hInvMass_Kstar_LSpp" , " Kstar ++ invariant mass" , {HistType::kTHnSparseF , {massKstarAxis, ptAxis, centAxis}});
9899 histos.add (" hInvMass_Kstar_LSmm" , " Kstar -- invariant mass" , {HistType::kTHnSparseF , {massKstarAxis, ptAxis, centAxis}});
99100
101+ histos.add (" QA/Nsigma_TPC_BF" , " " , {HistType::kTH2F , {pTqaAxis, pidqaAxis}});
102+ histos.add (" QA/Nsigma_TOF_BF" , " " , {HistType::kTH2F , {pTqaAxis, pidqaAxis}});
103+ histos.add (" QA/TPC_TOF_BF" , " " , {HistType::kTH2F , {pidqaAxis, pidqaAxis}});
104+
100105 histos.add (" QA/Nsigma_TPC" , " " , {HistType::kTH2F , {pTqaAxis, pidqaAxis}});
101106 histos.add (" QA/Nsigma_TOF" , " " , {HistType::kTH2F , {pTqaAxis, pidqaAxis}});
102107 histos.add (" QA/TPC_TOF" , " " , {HistType::kTH2F , {pidqaAxis, pidqaAxis}});
@@ -163,6 +168,15 @@ struct rho770analysis {
163168 if (track.tpcNSigmaPi () * track.tpcNSigmaPi () + track.tofNSigmaPi () * track.tofNSigmaPi () >= nsigmaCutCombinedPion * nsigmaCutCombinedPion)
164169 return false ;
165170 }
171+ if (selectType == 3 ) {
172+ if (track.hasTOF ()) {
173+ if (std::fabs (track.tpcNSigmaPi ()) >= cMaxTPCnSigmaPion || std::fabs (track.tofNSigmaPi ()) >= cMaxTOFnSigmaPion)
174+ return false ;
175+ } else if (!track.hasTOF ()) {
176+ if (std::fabs (track.tpcNSigmaPi ()) >= cMaxTPCnSigmaPionnoTOF)
177+ return false ;
178+ }
179+ }
166180 return true ;
167181 }
168182
@@ -181,6 +195,15 @@ struct rho770analysis {
181195 if (track.tpcNSigmaKa () * track.tpcNSigmaKa () + track.tofNSigmaKa () * track.tofNSigmaKa () >= nsigmaCutCombinedPion * nsigmaCutCombinedPion)
182196 return false ;
183197 }
198+ if (selectType == 3 ) {
199+ if (track.hasTOF ()) {
200+ if (std::fabs (track.tpcNSigmaKa ()) >= cMaxTPCnSigmaPion || std::fabs (track.tofNSigmaKa ()) >= cMaxTOFnSigmaPion)
201+ return false ;
202+ } else if (!track.hasTOF ()) {
203+ if (std::fabs (track.tpcNSigmaKa ()) >= cMaxTPCnSigmaPionnoTOF)
204+ return false ;
205+ }
206+ }
184207 return true ;
185208 }
186209
@@ -191,6 +214,10 @@ struct rho770analysis {
191214 for (const auto & [trk1, trk2] : combinations (CombinationsUpperIndexPolicy (dTracks, dTracks))) {
192215
193216 if (trk1.index () == trk2.index ()) {
217+ histos.fill (HIST (" QA/Nsigma_TPC_BF" ), trk1.pt (), trk1.tpcNSigmaPi ());
218+ histos.fill (HIST (" QA/Nsigma_TOF_BF" ), trk1.pt (), trk1.tofNSigmaPi ());
219+ histos.fill (HIST (" QA/TPC_TOF_BF" ), trk1.tpcNSigmaPi (), trk1.tofNSigmaPi ());
220+
194221 if (!selTrack (trk1))
195222 continue ;
196223
@@ -306,17 +333,19 @@ struct rho770analysis {
306333 truthpar.SetPxPyPzE (part.px (), part.py (), part.pz (), part.e ());
307334 auto mass = truthpar.M ();
308335
336+ histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 0 , mass, part.pt (), multiplicity);
337+
309338 if (collision.isVtxIn10 ()) {
310- histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 0 , mass, part.pt (), multiplicity);
339+ histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 1 , mass, part.pt (), multiplicity);
311340 }
312341 if (collision.isVtxIn10 () && collision.isInSel8 ()) {
313- histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 1 , mass, part.pt (), multiplicity);
342+ histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 2 , mass, part.pt (), multiplicity);
314343 }
315344 if (collision.isVtxIn10 () && collision.isTriggerTVX ()) {
316- histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 2 , mass, part.pt (), multiplicity);
345+ histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 3 , mass, part.pt (), multiplicity);
317346 }
318347 if (collision.isInAfterAllCuts ()) {
319- histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 3 , mass, part.pt (), multiplicity);
348+ histos.fill (HIST (" MCL/hpT_rho770_GEN" ), 4 , mass, part.pt (), multiplicity);
320349 }
321350 }
322351 };
0 commit comments