Skip to content

Commit 4bb66db

Browse files
committed
implemented V0 mc
1 parent cc42b69 commit 4bb66db

File tree

1 file changed

+51
-96
lines changed

1 file changed

+51
-96
lines changed

Common/Tasks/pidStudies.cxx

Lines changed: 51 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ DECLARE_SOA_COLUMN(OccupancyFt0c, occupancyFt0c, float); //! Occupancy from F
6161
DECLARE_SOA_COLUMN(OccupancyIts, occupancyIts, float); //! Occupancy from ITS
6262
DECLARE_SOA_COLUMN(CentralityFT0C, centralityFT0C, float); //! Centrality from FT0C
6363
DECLARE_SOA_COLUMN(CentralityFT0M, centralityFT0M, float); //! Centrality from FT0M
64+
DECLARE_SOA_COLUMN(CandFlag, candFlag, int); //! Flag for MC matching
6465
} // namespace pid_studies
6566

6667
DECLARE_SOA_TABLE(pidV0s, "AOD", "PIDV0S", //! Table with PID information
@@ -87,7 +88,8 @@ DECLARE_SOA_TABLE(pidV0s, "AOD", "PIDV0S", //! Table with PID information
8788
pid_studies::OccupancyFt0c,
8889
pid_studies::OccupancyIts,
8990
pid_studies::CentralityFT0C,
90-
pid_studies::CentralityFT0M
91+
pid_studies::CentralityFT0M,
92+
pid_studies::CandFlag
9193
);
9294
} // namespace o2::aod
9395

@@ -101,10 +103,6 @@ struct pidStudies {
101103
aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
102104
using CollSels = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::CentFT0Ms>;
103105
using V0sMCRec = soa::Join<aod::V0Datas, aod::V0CoreMCLabels>;
104-
using dauTracks = soa::Join<aod::DauTrackExtras, aod::DauTrackTPCPIDs, aod::DauTrackTOFPIDs>;
105-
// using dauTracks = soa::Join<aod::DauTrackExtras, aod::DauTrackTPCPIDs>;
106-
107-
// using V0sMCRec = soa::Join<aod::V0Cores, aod::V0CoreMCLabels>;
108106

109107
Configurable<float> massK0Min{"massK0Min", 0.4, "Minimum mass for K0"};
110108
Configurable<float> massK0Max{"massK0Max", 0.6, "Maximum mass for K0"};
@@ -116,113 +114,70 @@ struct pidStudies {
116114
}
117115

118116
template <bool isMc, typename Cand>
119-
void fillTree(Cand const& candidate)
117+
void fillTree(Cand const& candidate, const int& flag)
120118
{
121-
if constexpr(!isMc) {
122-
const auto& posTrack = candidate.template posTrack_as<PIDTracks>();
123-
const auto& negTrack = candidate.template negTrack_as<PIDTracks>();
124-
pidV0(
125-
candidate.mK0Short(),
126-
candidate.mLambda(),
127-
posTrack.pt(),
128-
negTrack.pt(),
129-
candidate.v0radius(),
130-
candidate.v0cosPA(),
131-
posTrack.tofNSigmaPi(),
132-
negTrack.tofNSigmaPi(),
133-
posTrack.tofNSigmaKa(),
134-
negTrack.tofNSigmaKa(),
135-
posTrack.tofNSigmaPr(),
136-
negTrack.tofNSigmaPr(),
137-
posTrack.tpcNSigmaPi(),
138-
negTrack.tpcNSigmaPi(),
139-
posTrack.tpcNSigmaKa(),
140-
negTrack.tpcNSigmaKa(),
141-
posTrack.tpcNSigmaPr(),
142-
negTrack.tpcNSigmaPr(),
143-
candidate.alpha(),
144-
candidate.qtarm(),
145-
candidate.template collision_as<CollSels>().ft0cOccupancyInTimeRange(),
146-
candidate.template collision_as<CollSels>().trackOccupancyInTimeRange(),
147-
candidate.template collision_as<CollSels>().centFT0C(),
148-
candidate.template collision_as<CollSels>().centFT0M()
149-
);
150-
} else {
151-
LOG(info) << "Filling MC";
152-
const auto& posTrack = candidate.template posTrack_as<PIDTracks>();
153-
const auto& negTrack = candidate.template negTrack_as<PIDTracks>();
154-
155-
// auto negTrack = candidate.template negTrack_as<soa::Join<aod::DauTrackExtras, aod::DauTrackTPCPIDs, aod::DauTrackTOFPIDs>>();
156-
// auto posTrack = candidate.template posTrack_as<soa::Join<aod::DauTrackExtras, aod::DauTrackTPCPIDs, aod::DauTrackTOFPIDs>>();
157-
158-
pidV0(
159-
candidate.mK0Short(),
160-
candidate.mLambda(),
161-
posTrack.pt(),
162-
negTrack.pt(),
163-
candidate.v0radius(),
164-
candidate.v0cosPA(),
165-
posTrack.tofNSigmaPi(),
166-
negTrack.tofNSigmaPi(),
167-
posTrack.tofNSigmaKa(),
168-
negTrack.tofNSigmaKa(),
169-
posTrack.tofNSigmaPr(),
170-
negTrack.tofNSigmaPr(),
171-
posTrack.tpcNSigmaPi(),
172-
negTrack.tpcNSigmaPi(),
173-
posTrack.tpcNSigmaKa(),
174-
negTrack.tpcNSigmaKa(),
175-
posTrack.tpcNSigmaPr(),
176-
negTrack.tpcNSigmaPr(),
177-
candidate.alpha(),
178-
candidate.qtarm(),
179-
0, // candidate.template collision_as<CollSels>().ft0cOccupancyInTimeRange(),
180-
0, // candidate.template collision_as<CollSels>().trackOccupancyInTimeRange(),
181-
0, // candidate.template collision_as<CollSels>().centFT0C(),
182-
0 // candidate.template collision_as<CollSels>().centFT0M()
183-
);
184-
}
185-
186-
}
119+
const auto& posTrack = candidate.template posTrack_as<PIDTracks>();
120+
const auto& negTrack = candidate.template negTrack_as<PIDTracks>();
121+
pidV0(
122+
candidate.mK0Short(),
123+
candidate.mLambda(),
124+
posTrack.pt(),
125+
negTrack.pt(),
126+
candidate.v0radius(),
127+
candidate.v0cosPA(),
128+
posTrack.tofNSigmaPi(),
129+
negTrack.tofNSigmaPi(),
130+
posTrack.tofNSigmaKa(),
131+
negTrack.tofNSigmaKa(),
132+
posTrack.tofNSigmaPr(),
133+
negTrack.tofNSigmaPr(),
134+
posTrack.tpcNSigmaPi(),
135+
negTrack.tpcNSigmaPi(),
136+
posTrack.tpcNSigmaKa(),
137+
negTrack.tpcNSigmaKa(),
138+
posTrack.tpcNSigmaPr(),
139+
negTrack.tpcNSigmaPr(),
140+
candidate.alpha(),
141+
candidate.qtarm(),
142+
candidate.template collision_as<CollSels>().ft0cOccupancyInTimeRange(),
143+
candidate.template collision_as<CollSels>().trackOccupancyInTimeRange(),
144+
candidate.template collision_as<CollSels>().centFT0C(),
145+
candidate.template collision_as<CollSels>().centFT0M(),
146+
flag
147+
);
148+
}
187149

188150
template <typename T1>
189-
bool isMatched(const T1& cand) {
190-
// LOG(info) << "Checking";
191-
bool matched = false;
151+
int isMatched(const T1& cand) {
152+
int matched{0};
192153
if constexpr (std::is_same<T1, V0sMCRec::iterator>::value) {
193154
if (!cand.has_v0MCCore())
194-
return false;
155+
return matched;
195156
auto v0MC = cand.template v0MCCore_as<aod::V0MCCores>();
196-
if (std::abs(v0MC.pdgCode()) == 3122 && (abs(v0MC.pdgCodeNegative()) == 211)
197-
&& (abs(v0MC.pdgCodePositive()) == 2212)) {
198-
LOG(info) << "Lambda matched";
199-
matched = true;
157+
int sign = 1;
158+
if (v0MC.pdgCode() < 0) sign=-1;
159+
if (v0MC.pdgCode() == sign*3122 && v0MC.pdgCodeNegative() == -sign*211
160+
&& v0MC.pdgCodePositive() == sign*2212) {
161+
matched = sign*1;
200162
}
201-
if (std::abs(v0MC.pdgCode()) == 310 && (abs(v0MC.pdgCodeNegative()) == 211)
202-
&& (abs(v0MC.pdgCodePositive()) == 211)) {
203-
LOG(info) << "K0S matched";
204-
matched = true;
163+
if (v0MC.pdgCode() == sign*310 && v0MC.pdgCodeNegative() == -sign*211
164+
&& v0MC.pdgCodePositive() == sign*211) {
165+
matched = sign*2;
205166
}
206167
}
207168
return matched;
208169
}
209170

210-
void processMC(V0sMCRec const& V0s, aod::V0MCCores const& V0sMC, PIDTracks const&)
171+
void processMC(V0sMCRec const& V0s, aod::V0MCCores const& V0sMC, CollSels const&, PIDTracks const&)
211172
{
212-
// LOG(info) << "Processing MC";
213-
// LOG(info) << "Size: " << V0s.size();
214173
for (const auto& v0 : V0s) {
215174
if (v0.mK0Short() > massK0Min && v0.mK0Short() < massK0Max ||
216175
v0.mLambda() > massLambdaMin && v0.mLambda() < massLambdaMax ||
217176
v0.mAntiLambda() > massLambdaMin && v0.mAntiLambda() < massLambdaMax) {
218-
// LOG(info) << "mass sel ok";
219-
// bool matched = isMatched(v0);
220-
// LOG(info) << "---------";
221-
if(isMatched(v0)) {
222-
fillTree<true>(v0);
223-
} else {
224-
LOG(info) << "v0 not matched";
225-
}
177+
int matched = isMatched(v0);
178+
if(matched != 0) {
179+
fillTree<true>(v0, matched);
180+
}
226181
}
227182
}
228183
}
@@ -234,7 +189,7 @@ struct pidStudies {
234189
if (v0.mK0Short() > massK0Min && v0.mK0Short() < massK0Max ||
235190
v0.mLambda() > massLambdaMin && v0.mLambda() < massLambdaMax ||
236191
v0.mAntiLambda() > massLambdaMin && v0.mAntiLambda() < massLambdaMax) {
237-
fillTree<false>(v0);
192+
fillTree<false>(v0, 0);
238193
}
239194
}
240195
}

0 commit comments

Comments
 (0)