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