Skip to content

Commit e988cca

Browse files
mjkim525alibuild
andauthored
[PWGLF] Updates to xi* analysis code and resonanceMergeDF for event-mixing (#10939)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 6d1cf26 commit e988cca

File tree

2 files changed

+294
-43
lines changed

2 files changed

+294
-43
lines changed

PWGLF/TableProducer/Resonances/resonanceMergeDF.cxx

Lines changed: 219 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,32 @@ struct ResonanceMergeDF {
9898

9999
std::vector<std::tuple<float, float, float, float, float, float, int>> vecOfTuples;
100100
std::vector<std::vector<std::tuple<float, float, float, float,
101-
signed char, unsigned char, unsigned char,
101+
unsigned char, unsigned char,
102102
int16_t, int16_t, int8_t, int8_t, int8_t,
103103
int8_t, int8_t, int8_t, float,
104104
uint8_t>>>
105105
vecOfVecOfTuples;
106+
std::vector<std::vector<std::tuple<float, float, float, float,
107+
int*,
108+
int8_t, int8_t, int8_t, // TPC Pos Trk
109+
int8_t, int8_t, int8_t, // TPC Neg Trk
110+
int8_t, int8_t, int8_t, // TPC Bach Trk
111+
int8_t, int8_t, int8_t, // TOF Pos Trk
112+
int8_t, int8_t, int8_t, // TOF Neg Trk
113+
int8_t, int8_t, int8_t, // TOF Bach Trk
114+
float, float, float, float,
115+
float, float, float, float,
116+
float, float, int, float,
117+
float, float, float,
118+
float, float, float>>>
119+
vecOfVecOfTuplesCasc;
106120
void processTrackDataDF(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks)
107121
{
108122

109123
int nCollisions = nDF;
110124
vecOfTuples.push_back(std::make_tuple(collision.posX(), collision.posY(), collision.posZ(), collision.cent(), 0, 0, 0));
111125
std::vector<std::tuple<float, float, float, float,
112-
signed char, unsigned char, unsigned char,
126+
unsigned char, unsigned char,
113127
int16_t, int16_t, int8_t, int8_t, int8_t,
114128
int8_t, int8_t, int8_t, float,
115129
uint8_t>>
@@ -143,7 +157,6 @@ struct ResonanceMergeDF {
143157
track.px(),
144158
track.py(),
145159
track.pz(),
146-
track.sign(),
147160
(uint8_t)track.tpcNClsCrossedRows(),
148161
(uint8_t)track.tpcNClsFound(),
149162
static_cast<int16_t>(track.dcaXY() * 10000),
@@ -196,11 +209,213 @@ struct ResonanceMergeDF {
196209
}
197210

198211
vecOfTuples.clear();
199-
vecOfVecOfTuples.clear(); //
212+
vecOfVecOfTuples.clear();
200213
}
201214

202215
PROCESS_SWITCH(ResonanceMergeDF, processTrackDataDF, "Process for data merged DF", true);
203216

217+
void processTrackDataDFCasc(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks, aod::ResoCascades const& trackCascs)
218+
{
219+
220+
int nCollisions = nDF;
221+
vecOfTuples.push_back(std::make_tuple(collision.posX(), collision.posY(), collision.posZ(), collision.cent(), 0, 0, 0));
222+
std::vector<std::tuple<float, float, float, float,
223+
unsigned char, unsigned char,
224+
int16_t, int16_t, int8_t, int8_t, int8_t,
225+
int8_t, int8_t, int8_t, float,
226+
uint8_t>>
227+
innerVector;
228+
std::vector<std::tuple<float, float, float, float,
229+
int*,
230+
int8_t, int8_t, int8_t, // TPC Pos Trk
231+
int8_t, int8_t, int8_t, // TPC Neg Trk
232+
int8_t, int8_t, int8_t, // TPC Bach Trk
233+
int8_t, int8_t, int8_t, // TOF Pos Trk
234+
int8_t, int8_t, int8_t, // TOF Neg Trk
235+
int8_t, int8_t, int8_t, // TOF Bach Trk
236+
float, float, float, float,
237+
float, float, float, float,
238+
float, float, int, float,
239+
float, float, float,
240+
float, float, float>>
241+
innerVectorCasc;
242+
for (const auto& track : tracks) {
243+
if (cpidCut) {
244+
if (!track.hasTOF()) {
245+
if (std::abs(track.tpcNSigmaPr()) > nsigmaPr && std::abs(track.tpcNSigmaKa()) > nsigmaKa)
246+
continue;
247+
248+
if (crejtpc && (std::abs(track.tpcNSigmaPr()) > std::abs(track.tpcNSigmaPi()) && std::abs(track.tpcNSigmaKa()) > std::abs(track.tpcNSigmaPi())))
249+
continue;
250+
251+
} else {
252+
if (std::abs(track.tofNSigmaPr()) > nsigmatofPr && std::abs(track.tofNSigmaKa()) > nsigmatofKa)
253+
continue;
254+
255+
if (crejtof && (std::abs(track.tofNSigmaPr()) > std::abs(track.tofNSigmaPi()) && std::abs(track.tofNSigmaKa()) > std::abs(track.tofNSigmaPi())))
256+
continue;
257+
}
258+
259+
if (std::abs(track.dcaXY()) > cDCAXY)
260+
continue;
261+
if (std::abs(track.dcaZ()) > cDCAZ)
262+
continue;
263+
}
264+
265+
innerVector.push_back(std::make_tuple(
266+
// track.trackId(),
267+
track.pt(),
268+
track.px(),
269+
track.py(),
270+
track.pz(),
271+
(uint8_t)track.tpcNClsCrossedRows(),
272+
(uint8_t)track.tpcNClsFound(),
273+
static_cast<int16_t>(track.dcaXY() * 10000),
274+
static_cast<int16_t>(track.dcaZ() * 10000),
275+
(int8_t)(track.tpcNSigmaPi() * 10),
276+
(int8_t)(track.tpcNSigmaKa() * 10),
277+
(int8_t)(track.tpcNSigmaPr() * 10),
278+
(int8_t)(track.tofNSigmaPi() * 10),
279+
(int8_t)(track.tofNSigmaKa() * 10),
280+
(int8_t)(track.tofNSigmaPr() * 10),
281+
(int8_t)(track.tpcSignal() * 10),
282+
track.trackFlags()));
283+
}
284+
285+
for (const auto& trackCasc : trackCascs) {
286+
innerVectorCasc.push_back(std::make_tuple(
287+
trackCasc.pt(),
288+
trackCasc.px(),
289+
trackCasc.py(),
290+
trackCasc.pz(),
291+
const_cast<int*>(trackCasc.cascadeIndices()),
292+
(int8_t)(trackCasc.daughterTPCNSigmaPosPi() * 10),
293+
(int8_t)(trackCasc.daughterTPCNSigmaPosKa() * 10),
294+
(int8_t)(trackCasc.daughterTPCNSigmaPosPr() * 10),
295+
(int8_t)(trackCasc.daughterTPCNSigmaNegPi() * 10),
296+
(int8_t)(trackCasc.daughterTPCNSigmaNegKa() * 10),
297+
(int8_t)(trackCasc.daughterTPCNSigmaNegPr() * 10),
298+
(int8_t)(trackCasc.daughterTPCNSigmaBachPi() * 10),
299+
(int8_t)(trackCasc.daughterTPCNSigmaBachKa() * 10),
300+
(int8_t)(trackCasc.daughterTPCNSigmaBachPr() * 10),
301+
(int8_t)(trackCasc.daughterTOFNSigmaPosPi() * 10),
302+
(int8_t)(trackCasc.daughterTOFNSigmaPosKa() * 10),
303+
(int8_t)(trackCasc.daughterTOFNSigmaPosPr() * 10),
304+
(int8_t)(trackCasc.daughterTOFNSigmaNegPi() * 10),
305+
(int8_t)(trackCasc.daughterTOFNSigmaNegKa() * 10),
306+
(int8_t)(trackCasc.daughterTOFNSigmaNegPr() * 10),
307+
(int8_t)(trackCasc.daughterTOFNSigmaBachPi() * 10),
308+
(int8_t)(trackCasc.daughterTOFNSigmaBachKa() * 10),
309+
(int8_t)(trackCasc.daughterTOFNSigmaBachPr() * 10),
310+
trackCasc.v0CosPA(),
311+
trackCasc.cascCosPA(),
312+
trackCasc.daughDCA(),
313+
trackCasc.cascDaughDCA(),
314+
trackCasc.dcapostopv(),
315+
trackCasc.dcanegtopv(),
316+
trackCasc.dcabachtopv(),
317+
trackCasc.dcav0topv(),
318+
trackCasc.dcaXYCascToPV(),
319+
trackCasc.dcaZCascToPV(),
320+
trackCasc.sign(),
321+
trackCasc.mLambda(),
322+
trackCasc.mXi(),
323+
trackCasc.transRadius(), trackCasc.cascTransRadius(), trackCasc.decayVtxX(), trackCasc.decayVtxY(), trackCasc.decayVtxZ()));
324+
}
325+
326+
vecOfVecOfTuples.push_back(innerVector);
327+
vecOfVecOfTuplesCasc.push_back(innerVectorCasc);
328+
innerVector.clear();
329+
innerVectorCasc.clear();
330+
331+
df++;
332+
LOGF(info, "collisions: df = %i", df);
333+
if (df < nCollisions)
334+
return;
335+
df = 0;
336+
337+
for (size_t i = 0; i < vecOfTuples.size(); ++i) {
338+
const auto& tuple = vecOfTuples[i];
339+
const auto& innerVector = vecOfVecOfTuples[i];
340+
const auto& innerVectorCasc = vecOfVecOfTuplesCasc[i];
341+
342+
histos.fill(HIST("Event/h1d_ft0_mult_percentile"), std::get<3>(tuple));
343+
resoCollisionsdf(0, std::get<0>(tuple), std::get<1>(tuple), std::get<2>(tuple), std::get<3>(tuple), std::get<4>(tuple), std::get<5>(tuple), 0., 0., 0., 0., 0, std::get<6>(tuple));
344+
// LOGF(info, "collisions: Index = %d ) %f - %f - %f %f %d -- %d", std::get<0>(tuple).globalIndex(),std::get<1>(tuple),std::get<2>(tuple), std::get<3>(tuple), std::get<4>(tuple), std::get<5>(tuple).size(),resoCollisionsdf.lastIndex());
345+
346+
for (const auto& tuple : innerVector) {
347+
reso2trksdf(resoCollisionsdf.lastIndex(),
348+
std::get<0>(tuple),
349+
std::get<1>(tuple),
350+
std::get<2>(tuple),
351+
std::get<3>(tuple),
352+
std::get<4>(tuple),
353+
std::get<5>(tuple),
354+
std::get<6>(tuple),
355+
std::get<7>(tuple),
356+
std::get<8>(tuple),
357+
std::get<9>(tuple),
358+
std::get<10>(tuple),
359+
std::get<11>(tuple),
360+
std::get<12>(tuple),
361+
std::get<13>(tuple),
362+
std::get<14>(tuple),
363+
std::get<15>(tuple));
364+
}
365+
366+
for (const auto& tuple : innerVectorCasc) {
367+
reso2cascadesdf(resoCollisionsdf.lastIndex(),
368+
std::get<0>(tuple),
369+
std::get<1>(tuple),
370+
std::get<2>(tuple),
371+
std::get<3>(tuple),
372+
std::get<4>(tuple),
373+
std::get<5>(tuple),
374+
std::get<6>(tuple),
375+
std::get<7>(tuple),
376+
std::get<8>(tuple),
377+
std::get<9>(tuple),
378+
std::get<10>(tuple),
379+
std::get<11>(tuple),
380+
std::get<12>(tuple),
381+
std::get<13>(tuple),
382+
std::get<14>(tuple),
383+
std::get<15>(tuple),
384+
std::get<16>(tuple),
385+
std::get<17>(tuple),
386+
std::get<18>(tuple),
387+
std::get<19>(tuple),
388+
std::get<20>(tuple),
389+
std::get<21>(tuple),
390+
std::get<22>(tuple),
391+
std::get<23>(tuple),
392+
std::get<24>(tuple),
393+
std::get<25>(tuple),
394+
std::get<26>(tuple),
395+
std::get<27>(tuple),
396+
std::get<28>(tuple),
397+
std::get<29>(tuple),
398+
std::get<30>(tuple),
399+
std::get<31>(tuple),
400+
std::get<32>(tuple),
401+
std::get<33>(tuple),
402+
std::get<34>(tuple),
403+
std::get<35>(tuple),
404+
std::get<36>(tuple),
405+
std::get<37>(tuple),
406+
std::get<38>(tuple),
407+
std::get<39>(tuple),
408+
std::get<40>(tuple));
409+
}
410+
}
411+
412+
vecOfTuples.clear();
413+
vecOfVecOfTuples.clear();
414+
vecOfVecOfTuplesCasc.clear(); //
415+
}
416+
417+
PROCESS_SWITCH(ResonanceMergeDF, processTrackDataDFCasc, "Process for data merged DF for cascade", false);
418+
204419
void processLambdaStarCandidate(aod::ResoCollisions::iterator const& collision, aod::ResoTracks const& tracks)
205420
{
206421

0 commit comments

Comments
 (0)