2424#include " Common/DataModel/Centrality.h"
2525#include " Common/DataModel/Multiplicity.h"
2626#include " Common/DataModel/EventSelection.h"
27+ #include " Common/DataModel/TrackSelectionTables.h"
2728#include " PWGLF/DataModel/LFStrangenessTables.h"
2829#include " PWGLF/DataModel/LFStrangenessPIDTables.h"
29- // #include "/home/mdicosta/alice/O2Physics/Common/TableProducer/Converters/mcCollisionConverter.cxx"
3030
3131using namespace o2 ;
3232using namespace o2 ::framework;
@@ -37,27 +37,34 @@ namespace o2::aod
3737{
3838namespace pid_studies
3939{
40+ // V0s
4041DECLARE_SOA_COLUMN (MassK0, massK0, float ); // ! Candidate mass
4142DECLARE_SOA_COLUMN (MassLambda, massLambda, float ); // ! Candidate mass
42- DECLARE_SOA_COLUMN (MassOmega, massOmega, float ); // ! Candidate mass
4343DECLARE_SOA_COLUMN (PtPos, ptPos, float ); // ! Transverse momentum of positive track (GeV/c)
4444DECLARE_SOA_COLUMN (PtNeg, ptNeg, float ); // ! Transverse momentum of negative track (GeV/c)
4545DECLARE_SOA_COLUMN (Radius, radius, float ); // ! Radius
4646DECLARE_SOA_COLUMN (Cpa, cpa, float ); // ! Cosine of pointing angle
4747DECLARE_SOA_COLUMN (NSigmaTpcPosPi, nSigmaTpcPosPi, float ); // ! nSigmaTPC of positive track with pion hypothesis
4848DECLARE_SOA_COLUMN (NSigmaTpcNegPi, nSigmaTpcNegPi, float ); // ! nSigmaTPC of negative track with pion hypothesis
49- DECLARE_SOA_COLUMN (NSigmaTpcPosKa, nSigmaTpcPosKa, float ); // ! nSigmaTPC of positive track with kaon hypothesis
50- DECLARE_SOA_COLUMN (NSigmaTpcNegKa, nSigmaTpcNegKa, float ); // ! nSigmaTPC of negative track with kaon hypothesis
5149DECLARE_SOA_COLUMN (NSigmaTpcPosPr, nSigmaTpcPosPr, float ); // ! nSigmaTPC of positive track with proton hypothesis
5250DECLARE_SOA_COLUMN (NSigmaTpcNegPr, nSigmaTpcNegPr, float ); // ! nSigmaTPC of negative track with proton hypothesis
5351DECLARE_SOA_COLUMN (NSigmaTofPosPi, nSigmaTofPosPi, float ); // ! nSigmaTOF of positive track with pion hypothesis
5452DECLARE_SOA_COLUMN (NSigmaTofNegPi, nSigmaTofNegPi, float ); // ! nSigmaTOF of negative track with pion hypothesis
55- DECLARE_SOA_COLUMN (NSigmaTofPosKa, nSigmaTofPosKa, float ); // ! nSigmaTOF of positive track with kaon hypothesis
56- DECLARE_SOA_COLUMN (NSigmaTofNegKa, nSigmaTofNegKa, float ); // ! nSigmaTOF of negative track with kaon hypothesis
5753DECLARE_SOA_COLUMN (NSigmaTofPosPr, nSigmaTofPosPr, float ); // ! nSigmaTOF of positive track with proton hypothesis
5854DECLARE_SOA_COLUMN (NSigmaTofNegPr, nSigmaTofNegPr, float ); // ! nSigmaTOF of negative track with proton hypothesis
5955DECLARE_SOA_COLUMN (AlphaArm, alphaArm, float ); // ! Armenteros alpha
6056DECLARE_SOA_COLUMN (QtArm, qtArm, float ); // ! Armenteros Qt
57+
58+ // Cascades
59+ DECLARE_SOA_COLUMN (MassOmega, massOmega, float ); // ! Candidate mass
60+ DECLARE_SOA_COLUMN (MassXi, massXi, float ); // ! Candidate mass
61+ DECLARE_SOA_COLUMN (CascCosPA, casccosPA, float ); // ! Cascade CPA
62+ DECLARE_SOA_COLUMN (DCAV0daughters, dcaV0daughters, float ); // ! DCA of V0 daughters
63+ DECLARE_SOA_COLUMN (DCAv0topv, dcav0topv, float ); // ! V0 DCA to PV
64+ DECLARE_SOA_COLUMN (NSigmaTpcBachKa, nSigmaTpcBachKa, float ); // ! nSigmaTPC of positive bachelor with kaon hypothesis
65+ DECLARE_SOA_COLUMN (NSigmaTofBachKa, nSigmaTofBachKa, float ); // ! nSigmaTPC of negative bachelor with kaon hypothesis
66+
67+ // Common columns
6168DECLARE_SOA_COLUMN (OccupancyFt0c, occupancyFt0c, float ); // ! Occupancy from FT0C
6269DECLARE_SOA_COLUMN (OccupancyIts, occupancyIts, float ); // ! Occupancy from ITS
6370DECLARE_SOA_COLUMN (CentralityFT0C, centralityFT0C, float ); // ! Centrality from FT0C
@@ -74,14 +81,10 @@ DECLARE_SOA_TABLE(pidV0s, "AOD", "PIDV0S", //! Table with PID information
7481 pid_studies::Cpa,
7582 pid_studies::NSigmaTpcPosPi,
7683 pid_studies::NSigmaTpcNegPi,
77- pid_studies::NSigmaTpcPosKa,
78- pid_studies::NSigmaTpcNegKa,
7984 pid_studies::NSigmaTpcPosPr,
8085 pid_studies::NSigmaTpcNegPr,
8186 pid_studies::NSigmaTofPosPi,
8287 pid_studies::NSigmaTofNegPi,
83- pid_studies::NSigmaTofPosKa,
84- pid_studies::NSigmaTofNegKa,
8588 pid_studies::NSigmaTofPosPr,
8689 pid_studies::NSigmaTofNegPr,
8790 pid_studies::AlphaArm,
@@ -94,13 +97,13 @@ DECLARE_SOA_TABLE(pidV0s, "AOD", "PIDV0S", //! Table with PID information
9497 );
9598
9699DECLARE_SOA_TABLE (pidCascades, " AOD" , " PIDCASCADES" , // ! Table with PID information
97- // pid_studies::MassOmega,
98- // pid_studies::PtPos ,
99- // pid_studies::PtNeg ,
100- // pid_studies::Radius ,
101- // pid_studies::Cpa ,
102- // pid_studies::NSigmaTpcPosKa ,
103- // pid_studies::NSigmaTpcNegKa ,
100+ pid_studies::MassOmega,
101+ pid_studies::MassXi ,
102+ pid_studies::CascCosPA ,
103+ pid_studies::DCAV0daughters ,
104+ pid_studies::DCAv0topv ,
105+ pid_studies::NSigmaTpcBachKa ,
106+ pid_studies::NSigmaTofBachKa ,
104107 pid_studies::OccupancyFt0c,
105108 pid_studies::OccupancyIts,
106109 pid_studies::CentralityFT0C,
@@ -136,6 +139,7 @@ struct pidStudies {
136139 template <typename Cand>
137140 void fillTree (Cand const & candidate, const int & flag)
138141 {
142+ const auto & coll = candidate.template collision_as <CollSels>();
139143 if constexpr (std::is_same<Cand, V0sMCRec::iterator>::value) {
140144 const auto & posTrack = candidate.template posTrack_as <PIDTracks>();
141145 const auto & negTrack = candidate.template negTrack_as <PIDTracks>();
@@ -148,39 +152,35 @@ struct pidStudies {
148152 candidate.v0cosPA (),
149153 posTrack.tofNSigmaPi (),
150154 negTrack.tofNSigmaPi (),
151- posTrack.tofNSigmaKa (),
152- negTrack.tofNSigmaKa (),
153155 posTrack.tofNSigmaPr (),
154156 negTrack.tofNSigmaPr (),
155157 posTrack.tpcNSigmaPi (),
156158 negTrack.tpcNSigmaPi (),
157- posTrack.tpcNSigmaKa (),
158- negTrack.tpcNSigmaKa (),
159159 posTrack.tpcNSigmaPr (),
160160 negTrack.tpcNSigmaPr (),
161161 candidate.alpha (),
162162 candidate.qtarm (),
163- candidate. template collision_as <CollSels>() .ft0cOccupancyInTimeRange (),
164- candidate. template collision_as <CollSels>() .trackOccupancyInTimeRange (),
165- candidate. template collision_as <CollSels>() .centFT0C (),
166- candidate. template collision_as <CollSels>() .centFT0M (),
163+ coll .ft0cOccupancyInTimeRange (),
164+ coll .trackOccupancyInTimeRange (),
165+ coll .centFT0C (),
166+ coll .centFT0M (),
167167 flag
168168 );
169- } else {
170- // const auto& posTrack = candidate.template posTrack_as<PIDTracks>();
171- // const auto& negTrack = candidate.template negTrack_as <PIDTracks>();
172- pidCascades (
173- // candidate.mOmega(),
174- // posTrack.pt (),
175- // negTrack.pt( ),
176- // candidate.v0radius (),
177- // candidate.v0cosPA( ),
178- // posTrack .tpcNSigmaKa(),
179- // negTrack.tpcNSigmaKa (),
180- candidate. template collision_as <CollSels>() .ft0cOccupancyInTimeRange (),
181- candidate. template collision_as <CollSels>() .trackOccupancyInTimeRange (),
182- candidate. template collision_as <CollSels>() .centFT0C (),
183- candidate. template collision_as <CollSels>() .centFT0M (),
169+ }
170+ if constexpr (std::is_same<Cand, CascsMCRec::iterator>::value) {
171+ const auto & bachTrack = candidate.template bachelor_as <PIDTracks>();
172+ pidCascade (
173+ candidate.mOmega (),
174+ candidate. mXi (),
175+ candidate. casccosPA (coll. posX (), coll. posY (), coll. posZ () ),
176+ candidate.dcaV0daughters (),
177+ candidate.dcav0topv (coll. posX (), coll. posY (), coll. posZ () ),
178+ bachTrack .tpcNSigmaKa (),
179+ bachTrack. tofNSigmaKa (),
180+ coll .ft0cOccupancyInTimeRange (),
181+ coll .trackOccupancyInTimeRange (),
182+ coll .centFT0C (),
183+ coll .centFT0M (),
184184 flag
185185 );
186186 }
@@ -192,10 +192,7 @@ struct pidStudies {
192192 if constexpr (std::is_same<T1, V0sMCRec::iterator>::value) {
193193 if (!cand.has_v0MCCore ())
194194 return matched;
195- auto v0MC = cand.template v0MCCore_as <aod::V0MCCores>();
196- // LOG(info) << "v0MC.pdgCode() " << v0MC.pdgCode();
197- // LOG(info) << "v0MC.pdgCodeNegative() " << v0MC.pdgCodeNegative();
198- // LOG(info) << "v0MC.pdgCodePositive() " << v0MC.pdgCodePositive();
195+ auto v0MC = cand.template v0MCCore_as <aod::V0MCCores>();
199196 if (v0MC.pdgCode () == 3122 && v0MC.pdgCodeNegative () == -211
200197 && v0MC.pdgCodePositive () == 2212 ) {
201198 matched = 1 ;
@@ -218,11 +215,6 @@ struct pidStudies {
218215 return matched;
219216 LOG (info) << " Inside checker" ;
220217 auto cascMC = cand.template cascMCCore_as <aod::CascMCCores>();
221- // LOG(info) << "cascMC.pdgCode() " << cascMC.pdgCode();
222- // LOG(info) << "cascMC.pdgCodeBachelor() " << cascMC.pdgCodeBachelor();
223- // LOG(info) << "cascMC.pdgCodeV0() " << cascMC.pdgCodeV0();
224- // LOG(info) << "cascMC.pdgCodePositive() " << cascMC.pdgCodePositive();
225- // LOG(info) << "cascMC.pdgCodeNegative() " << cascMC.pdgCodeNegative();
226218 if (cascMC.pdgCode () > 0 ) {
227219 if (cascMC.pdgCode () == 3334 &&
228220 cascMC.pdgCodeBachelor () == -321 &&
@@ -257,21 +249,18 @@ struct pidStudies {
257249 }
258250 }
259251 for (const auto & casc : cascs) {
260- LOG (info) << " checking omega" ;
261252 if (casc.mOmega () > massOmegaMin && casc.mOmega () < massOmegaMax) {
262- LOG (info) << " mass passed" ;
263253 int matched = isMatched (casc);
264254 if (matched != 0 ) {
265- LOG (info) << " Matched omega" ;
266- // fillTree(casc, matched);
255+ fillTree (casc, matched);
267256 }
268257 }
269258 }
270259
271260 }
272261 PROCESS_SWITCH (pidStudies, processMC, " process MC" , true );
273262
274- void processData (aod::V0Datas const & V0s, aod::Cascades const & cascades, CollSels const &, PIDTracks const &)
263+ void processData (aod::V0Datas const & V0s, aod::CascDatas const & cascades, CollSels const &, PIDTracks const &)
275264 {
276265 for (const auto & v0 : V0s) {
277266 if (v0.mK0Short () > massK0Min && v0.mK0Short () < massK0Max ||
0 commit comments