@@ -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