1515// / \author Fabrizio Chinu <fabrizio.chinu@cern.ch>, Università and INFN Torino
1616// / \author Stefano Politanò <stefano.politano@cern.ch>, INFN Torino
1717// / \author Marcello Di Costanzo <marcello.di.costanzo@cern.ch>, Politecnico and INFN Torino
18- // / \author Marcello Di Costanzo <luca.aglietta@unito.it>, Università and INFN Torino
18+ // / \author Luca Aglietta <luca.aglietta@unito.it>, Università and INFN Torino
1919
2020#include " TPDGCode.h"
2121
@@ -34,47 +34,49 @@ using namespace o2;
3434using namespace o2 ::framework;
3535using namespace o2 ::framework::expressions;
3636
37-
3837namespace o2 ::aod
3938{
4039namespace pid_studies
4140{
42- enum Particle {NotMatched=0 , K0s, Lambda, Omega};
41+ enum Particle { NotMatched = 0 ,
42+ K0s,
43+ Lambda,
44+ Omega };
4345// V0s
44- DECLARE_SOA_COLUMN (MassK0, massK0, float ); // ! Candidate mass
45- DECLARE_SOA_COLUMN (MassLambda, massLambda, float ); // ! Candidate mass
46- DECLARE_SOA_COLUMN (MassAntiLambda, massAntiLambda, float ); // ! Candidate mass
47- DECLARE_SOA_COLUMN (Pt, pt, float ); // ! Transverse momentum of the candidate (GeV/c)
48- DECLARE_SOA_COLUMN (PtPos, ptPos, float ); // ! Transverse momentum of positive track (GeV/c)
49- DECLARE_SOA_COLUMN (PtNeg, ptNeg, float ); // ! Transverse momentum of negative track (GeV/c)
50- DECLARE_SOA_COLUMN (Radius, radius, float ); // ! Radius
51- DECLARE_SOA_COLUMN (Cpa, cpa, float ); // ! Cosine of pointing angle
52- DECLARE_SOA_COLUMN (NSigmaTpcPosPi, nSigmaTpcPosPi, float ); // ! nSigmaTPC of positive track with pion hypothesis
53- DECLARE_SOA_COLUMN (NSigmaTpcNegPi, nSigmaTpcNegPi, float ); // ! nSigmaTPC of negative track with pion hypothesis
54- DECLARE_SOA_COLUMN (NSigmaTpcPosPr, nSigmaTpcPosPr, float ); // ! nSigmaTPC of positive track with proton hypothesis
55- DECLARE_SOA_COLUMN (NSigmaTpcNegPr, nSigmaTpcNegPr, float ); // ! nSigmaTPC of negative track with proton hypothesis
56- DECLARE_SOA_COLUMN (NSigmaTofPosPi, nSigmaTofPosPi, float ); // ! nSigmaTOF of positive track with pion hypothesis
57- DECLARE_SOA_COLUMN (NSigmaTofNegPi, nSigmaTofNegPi, float ); // ! nSigmaTOF of negative track with pion hypothesis
58- DECLARE_SOA_COLUMN (NSigmaTofPosPr, nSigmaTofPosPr, float ); // ! nSigmaTOF of positive track with proton hypothesis
59- DECLARE_SOA_COLUMN (NSigmaTofNegPr, nSigmaTofNegPr, float ); // ! nSigmaTOF of negative track with proton hypothesis
60- DECLARE_SOA_COLUMN (AlphaArm, alphaArm, float ); // ! Armenteros alpha
61- DECLARE_SOA_COLUMN (QtArm, qtArm, float ); // ! Armenteros Qt
46+ DECLARE_SOA_COLUMN (MassK0, massK0, float ); // ! Candidate mass
47+ DECLARE_SOA_COLUMN (MassLambda, massLambda, float ); // ! Candidate mass
48+ DECLARE_SOA_COLUMN (MassAntiLambda, massAntiLambda, float ); // ! Candidate mass
49+ DECLARE_SOA_COLUMN (Pt, pt, float ); // ! Transverse momentum of the candidate (GeV/c)
50+ DECLARE_SOA_COLUMN (PtPos, ptPos, float ); // ! Transverse momentum of positive track (GeV/c)
51+ DECLARE_SOA_COLUMN (PtNeg, ptNeg, float ); // ! Transverse momentum of negative track (GeV/c)
52+ DECLARE_SOA_COLUMN (Radius, radius, float ); // ! Radius
53+ DECLARE_SOA_COLUMN (Cpa, cpa, float ); // ! Cosine of pointing angle
54+ DECLARE_SOA_COLUMN (NSigmaTpcPosPi, nSigmaTpcPosPi, float ); // ! nSigmaTPC of positive track with pion hypothesis
55+ DECLARE_SOA_COLUMN (NSigmaTpcNegPi, nSigmaTpcNegPi, float ); // ! nSigmaTPC of negative track with pion hypothesis
56+ DECLARE_SOA_COLUMN (NSigmaTpcPosPr, nSigmaTpcPosPr, float ); // ! nSigmaTPC of positive track with proton hypothesis
57+ DECLARE_SOA_COLUMN (NSigmaTpcNegPr, nSigmaTpcNegPr, float ); // ! nSigmaTPC of negative track with proton hypothesis
58+ DECLARE_SOA_COLUMN (NSigmaTofPosPi, nSigmaTofPosPi, float ); // ! nSigmaTOF of positive track with pion hypothesis
59+ DECLARE_SOA_COLUMN (NSigmaTofNegPi, nSigmaTofNegPi, float ); // ! nSigmaTOF of negative track with pion hypothesis
60+ DECLARE_SOA_COLUMN (NSigmaTofPosPr, nSigmaTofPosPr, float ); // ! nSigmaTOF of positive track with proton hypothesis
61+ DECLARE_SOA_COLUMN (NSigmaTofNegPr, nSigmaTofNegPr, float ); // ! nSigmaTOF of negative track with proton hypothesis
62+ DECLARE_SOA_COLUMN (AlphaArm, alphaArm, float ); // ! Armenteros alpha
63+ DECLARE_SOA_COLUMN (QtArm, qtArm, float ); // ! Armenteros Qt
6264
6365// Cascades
64- DECLARE_SOA_COLUMN (MassOmega, massOmega, float ); // ! Candidate mass
65- DECLARE_SOA_COLUMN (MassXi, massXi, float ); // ! Candidate mass
66- DECLARE_SOA_COLUMN (CascCosPA, casccosPA, float ); // ! Cascade CPA
67- DECLARE_SOA_COLUMN (DCAV0daughters, dcaV0daughters, float ); // ! DCA of V0 daughters
68- DECLARE_SOA_COLUMN (DCAv0topv, dcav0topv, float ); // ! V0 DCA to PV
69- DECLARE_SOA_COLUMN (NSigmaTpcBachKa, nSigmaTpcBachKa, float ); // ! nSigmaTPC of positive bachelor with kaon hypothesis
70- DECLARE_SOA_COLUMN (NSigmaTofBachKa, nSigmaTofBachKa, float ); // ! nSigmaTPC of negative bachelor with kaon hypothesis
66+ DECLARE_SOA_COLUMN (MassOmega, massOmega, float ); // ! Candidate mass
67+ DECLARE_SOA_COLUMN (MassXi, massXi, float ); // ! Candidate mass
68+ DECLARE_SOA_COLUMN (CascCosPA, casccosPA, float ); // ! Cascade CPA
69+ DECLARE_SOA_COLUMN (DCAV0daughters, dcaV0daughters, float ); // ! DCA of V0 daughters
70+ DECLARE_SOA_COLUMN (DCAv0topv, dcav0topv, float ); // ! V0 DCA to PV
71+ DECLARE_SOA_COLUMN (NSigmaTpcBachKa, nSigmaTpcBachKa, float ); // ! nSigmaTPC of positive bachelor with kaon hypothesis
72+ DECLARE_SOA_COLUMN (NSigmaTofBachKa, nSigmaTofBachKa, float ); // ! nSigmaTPC of negative bachelor with kaon hypothesis
7173
7274// Common columns
73- DECLARE_SOA_COLUMN (OccupancyFt0c, occupancyFt0c, float ); // ! Occupancy from FT0C
74- DECLARE_SOA_COLUMN (OccupancyIts, occupancyIts, float ); // ! Occupancy from ITS
75- DECLARE_SOA_COLUMN (CentralityFT0C, centralityFT0C, float ); // ! Centrality from FT0C
76- DECLARE_SOA_COLUMN (CentralityFT0M, centralityFT0M, float ); // ! Centrality from FT0M
77- DECLARE_SOA_COLUMN (CandFlag, candFlag, int ); // ! Flag for MC matching
75+ DECLARE_SOA_COLUMN (OccupancyFt0c, occupancyFt0c, float ); // ! Occupancy from FT0C
76+ DECLARE_SOA_COLUMN (OccupancyIts, occupancyIts, float ); // ! Occupancy from ITS
77+ DECLARE_SOA_COLUMN (CentralityFT0C, centralityFT0C, float ); // ! Centrality from FT0C
78+ DECLARE_SOA_COLUMN (CentralityFT0M, centralityFT0M, float ); // ! Centrality from FT0M
79+ DECLARE_SOA_COLUMN (CandFlag, candFlag, int ); // ! Flag for MC matching
7880} // namespace pid_studies
7981
8082DECLARE_SOA_TABLE (pidV0s, " AOD" , " PIDV0S" , // ! Table with PID information
@@ -98,10 +100,9 @@ DECLARE_SOA_TABLE(pidV0s, "AOD", "PIDV0S", //! Table with PID information
98100 pid_studies::QtArm,
99101 pid_studies::OccupancyFt0c,
100102 pid_studies::OccupancyIts,
101- pid_studies::CentralityFT0C,
102- pid_studies::CentralityFT0M,
103- pid_studies::CandFlag
104- );
103+ pid_studies::CentralityFT0C,
104+ pid_studies::CentralityFT0M,
105+ pid_studies::CandFlag);
105106
106107DECLARE_SOA_TABLE (pidCascades, " AOD" , " PIDCASCADES" , // ! Table with PID information
107108 pid_studies::MassOmega,
@@ -114,20 +115,19 @@ DECLARE_SOA_TABLE(pidCascades, "AOD", "PIDCASCADES", //! Table with PID informat
114115 pid_studies::NSigmaTofBachKa,
115116 pid_studies::OccupancyFt0c,
116117 pid_studies::OccupancyIts,
117- pid_studies::CentralityFT0C,
118- pid_studies::CentralityFT0M,
119- pid_studies::CandFlag
120- );
118+ pid_studies::CentralityFT0C,
119+ pid_studies::CentralityFT0M,
120+ pid_studies::CandFlag);
121121} // namespace o2::aod
122122
123123struct pidStudies {
124- Produces <o2::aod::pidV0s> pidV0;
125- Produces <o2::aod::pidCascades> pidCascade;
124+ Produces<o2::aod::pidV0s> pidV0;
125+ Produces<o2::aod::pidCascades> pidCascade;
126126 HistogramRegistry registry{" registry" , {}};
127127
128128 using PIDTracks = soa::Join<aod::Tracks, aod::TracksExtra,
129- aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
130- aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
129+ aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
130+ aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
131131 using CollSels = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::CentFT0Ms>;
132132 using V0sMCRec = soa::Join<aod::V0Datas, aod::V0CoreMCLabels>;
133133 using CascsMCRec = soa::Join<aod::CascDatas, aod::CascCoreMCLabels>;
@@ -180,8 +180,7 @@ struct pidStudies {
180180 coll.trackOccupancyInTimeRange (),
181181 coll.centFT0C (),
182182 coll.centFT0M (),
183- flag
184- );
183+ flag);
185184 } else {
186185 const auto & bachTrack = candidate.template bachelor_as <PIDTracks>();
187186 pidCascade (
@@ -197,77 +196,71 @@ struct pidStudies {
197196 coll.trackOccupancyInTimeRange (),
198197 coll.centFT0C (),
199198 coll.centFT0M (),
200- flag
201- );
199+ flag);
202200 }
203- }
201+ }
204202
205203 template <typename T1>
206- int isMatched (const T1& cand) {
204+ int isMatched (const T1& cand)
205+ {
207206 if constexpr (std::is_same<T1, V0sMCRec::iterator>::value) {
208207 if (!cand.has_v0MCCore ()) {
209- return aod::pid_studies::NotMatched;
208+ return aod::pid_studies::Particle:: NotMatched;
210209 }
211210 auto v0MC = cand.template v0MCCore_as <aod::V0MCCores>();
212- if (v0MC.pdgCode () == kK0Short && v0MC.pdgCodeNegative () == -kPiPlus
213- && v0MC.pdgCodePositive () == kPiPlus ) {
214- return aod::pid_studies::K0s;
215- }
216- if (v0MC.pdgCode () == -kK0Short && v0MC.pdgCodeNegative () == -kPiPlus
217- && v0MC.pdgCodePositive () == kPiPlus ) {
218- return -aod::pid_studies::K0s;
211+ if (v0MC.pdgCode () == kK0Short && v0MC.pdgCodeNegative () == -kPiPlus && v0MC.pdgCodePositive () == kPiPlus ) {
212+ return aod::pid_studies::Particle::K0s;
213+ }
214+ if (v0MC.pdgCode () == -kK0Short && v0MC.pdgCodeNegative () == -kPiPlus && v0MC.pdgCodePositive () == kPiPlus ) {
215+ return -aod::pid_studies::Particle::K0s;
219216 }
220- if (v0MC.pdgCode () == kLambda0 && v0MC.pdgCodeNegative () == -kPiPlus
221- && v0MC.pdgCodePositive () == kProton ) {
222- return aod::pid_studies::Lambda;
217+ if (v0MC.pdgCode () == kLambda0 && v0MC.pdgCodeNegative () == -kPiPlus && v0MC.pdgCodePositive () == kProton ) {
218+ return aod::pid_studies::Particle::Lambda;
223219 }
224- if (v0MC.pdgCode () == -kLambda0 && v0MC.pdgCodeNegative () == -kProton
225- && v0MC.pdgCodePositive () == kPiPlus ) {
226- return -aod::pid_studies::Lambda;
220+ if (v0MC.pdgCode () == -kLambda0 && v0MC.pdgCodeNegative () == -kProton && v0MC.pdgCodePositive () == kPiPlus ) {
221+ return -aod::pid_studies::Particle::Lambda;
227222 }
228223 }
229224 if constexpr (std::is_same<T1, CascsMCRec::iterator>::value) {
230225 if (!cand.has_cascMCCore ()) {
231- return aod::pid_studies::NotMatched;
226+ return aod::pid_studies::Particle:: NotMatched;
232227 }
233- auto cascMC = cand.template cascMCCore_as <aod::CascMCCores>();
234- if (cascMC.pdgCode () > 0 ) {
235- if (cascMC.pdgCode () == kOmegaMinus &&
236- cascMC.pdgCodeBachelor () == -kKPlus &&
237- cascMC.pdgCodeV0 () == kLambda0 &&
238- cascMC.pdgCodePositive () == kProton &&
239- cascMC.pdgCodeNegative () == -kPiPlus ) {
240- return aod::pid_studies::Omega;
241- }
242- } else {
243- if (cascMC.pdgCode () == -kOmegaMinus &&
244- cascMC.pdgCodeBachelor () == kKPlus &&
245- cascMC.pdgCodeV0 () == -kLambda0 &&
246- cascMC.pdgCodePositive () == kPiPlus &&
247- cascMC.pdgCodeNegative () == -kProton ) {
248- return -aod::pid_studies::Omega;
249- }
228+ auto cascMC = cand.template cascMCCore_as <aod::CascMCCores>();
229+ if (cascMC.pdgCode () == kOmegaMinus &&
230+ cascMC.pdgCodeBachelor () == -kKPlus &&
231+ cascMC.pdgCodeV0 () == kLambda0 &&
232+ cascMC.pdgCodePositive () == kProton &&
233+ cascMC.pdgCodeNegative () == -kPiPlus ) {
234+ return aod::pid_studies::Particle::Omega;
235+ }
236+ if (cascMC.pdgCode () == -kOmegaMinus &&
237+ cascMC.pdgCodeBachelor () == kKPlus &&
238+ cascMC.pdgCodeV0 () == -kLambda0 &&
239+ cascMC.pdgCodePositive () == kPiPlus &&
240+ cascMC.pdgCodeNegative () == -kProton ) {
241+ return -aod::pid_studies::Particle::Omega;
250242 }
251243 }
252- return aod::pid_studies::NotMatched;
244+ return aod::pid_studies::Particle:: NotMatched;
253245 }
254246
255- void processMC (V0sMCRec const & V0s, aod::V0MCCores const &, CascsMCRec const & cascades,
256- aod::CascMCCores const &, CollSels const &, PIDTracks const &) {
247+ void processMC (V0sMCRec const & V0s, aod::V0MCCores const &, CascsMCRec const & cascades,
248+ aod::CascMCCores const &, CollSels const &, PIDTracks const &)
249+ {
257250 for (const auto & v0 : V0s) {
258- if (v0.mK0Short () > massK0Min && v0.mK0Short () < massK0Max ||
259- v0.mLambda () > massLambdaMin && v0.mLambda () < massLambdaMax ||
260- v0.mAntiLambda () > massLambdaMin && v0.mAntiLambda () < massLambdaMax) {
251+ if (( v0.mK0Short () > massK0Min && v0.mK0Short () < massK0Max) ||
252+ ( v0.mLambda () > massLambdaMin && v0.mLambda () < massLambdaMax) ||
253+ ( v0.mAntiLambda () > massLambdaMin && v0.mAntiLambda () < massLambdaMax) ) {
261254 int matched = isMatched (v0);
262- if (matched != aod::pid_studies::NotMatched) {
255+ if (matched != aod::pid_studies::Particle ::NotMatched) {
263256 fillTree<true >(v0, matched);
264257 }
265258 }
266259 }
267260 for (const auto & casc : cascades) {
268261 if (casc.mOmega () > massOmegaMin && casc.mOmega () < massOmegaMax) {
269- int matched = isMatched (casc);
270- if (matched != aod::pid_studies::NotMatched) {
262+ int matched = isMatched (casc);
263+ if (matched != aod::pid_studies::Particle ::NotMatched) {
271264 fillTree<false >(casc, matched);
272265 }
273266 }
@@ -278,15 +271,15 @@ struct pidStudies {
278271 void processData (aod::V0Datas const & V0s, aod::CascDatas const & cascades, CollSels const &, PIDTracks const &)
279272 {
280273 for (const auto & v0 : V0s) {
281- if (v0.mK0Short () > massK0Min && v0.mK0Short () < massK0Max ||
282- v0.mLambda () > massLambdaMin && v0.mLambda () < massLambdaMax ||
283- v0.mAntiLambda () > massLambdaMin && v0.mAntiLambda () < massLambdaMax) {
284- fillTree<true >(v0, aod::pid_studies::NotMatched);
274+ if (( v0.mK0Short () > massK0Min && v0.mK0Short () < massK0Max) ||
275+ ( v0.mLambda () > massLambdaMin && v0.mLambda () < massLambdaMax) ||
276+ ( v0.mAntiLambda () > massLambdaMin && v0.mAntiLambda () < massLambdaMax) ) {
277+ fillTree<true >(v0, aod::pid_studies::Particle:: NotMatched);
285278 }
286279 }
287280 for (const auto & casc : cascades) {
288281 if (casc.mOmega () > massOmegaMin && casc.mOmega () < massOmegaMax) {
289- fillTree<false >(casc, aod::pid_studies::NotMatched);
282+ fillTree<false >(casc, aod::pid_studies::Particle:: NotMatched);
290283 }
291284 }
292285 }
0 commit comments