Skip to content

Commit 8fe71f8

Browse files
committed
2025Apr23: Updates for event-mixing
1 parent 328200f commit 8fe71f8

File tree

2 files changed

+413
-135
lines changed

2 files changed

+413
-135
lines changed

PWGLF/TableProducer/Resonances/resonanceMergeDF.cxx

Lines changed: 225 additions & 5 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),
@@ -157,7 +170,7 @@ struct ResonanceMergeDF {
157170
(int8_t)(track.tpcSignal() * 10),
158171
track.trackFlags()));
159172
}
160-
173+
161174
vecOfVecOfTuples.push_back(innerVector);
162175
innerVector.clear();
163176
df++;
@@ -193,14 +206,221 @@ struct ResonanceMergeDF {
193206
std::get<14>(tuple),
194207
std::get<15>(tuple));
195208
}
209+
196210
}
197211

198212
vecOfTuples.clear();
199-
vecOfVecOfTuples.clear(); //
213+
vecOfVecOfTuples.clear();
200214
}
201215

202216
PROCESS_SWITCH(ResonanceMergeDF, processTrackDataDF, "Process for data merged DF", true);
203217

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

0 commit comments

Comments
 (0)