@@ -204,43 +204,43 @@ struct TauEventTableProducer {
204204
205205 } // end init
206206
207- template <typename C>
208- bool isGoodFITtime (C const & coll, float maxFITtime)
209- {
207+ template <typename C>
208+ bool isGoodFITtime (C const & coll, float maxFITtime)
209+ {
210210
211- // FTOA
212- if ((std::abs (coll.timeFT0A ()) > maxFITtime) && coll.timeFT0A () > -998 .)
213- return false ;
211+ // FTOA
212+ if ((std::abs (coll.timeFT0A ()) > maxFITtime) && coll.timeFT0A () > -998 .)
213+ return false ;
214214
215- // FTOC
216- if ((std::abs (coll.timeFT0C ()) > maxFITtime) && coll.timeFT0A () > -998 .)
217- return false ;
215+ // FTOC
216+ if ((std::abs (coll.timeFT0C ()) > maxFITtime) && coll.timeFT0A () > -998 .)
217+ return false ;
218218
219- return true ;
220- }
219+ return true ;
220+ }
221221
222- template <typename C>
223- bool isGoodROFtime (C const & coll)
224- {
222+ template <typename C>
223+ bool isGoodROFtime (C const & coll)
224+ {
225225
226- // Occupancy
227- if (coll.occupancyInTime () > cutSample.cutEvOccupancy )
228- return false ;
226+ // Occupancy
227+ if (coll.occupancyInTime () > cutSample.cutEvOccupancy )
228+ return false ;
229229
230- // kNoCollInTimeRangeStandard
231- if (cutSample.cutEvTrs && !coll.trs ())
232- return false ;
230+ // kNoCollInTimeRangeStandard
231+ if (cutSample.cutEvTrs && !coll.trs ())
232+ return false ;
233233
234- // kNoCollInRofStandard
235- if (cutSample.cutEvTrofs && !coll.trofs ())
236- return false ;
234+ // kNoCollInRofStandard
235+ if (cutSample.cutEvTrofs && !coll.trofs ())
236+ return false ;
237237
238- // kNoHighMultCollInPrevRof
239- if (cutSample.cutEvHmpr && !coll.hmpr ())
240- return false ;
238+ // kNoHighMultCollInPrevRof
239+ if (cutSample.cutEvHmpr && !coll.hmpr ())
240+ return false ;
241241
242- return true ;
243- }
242+ return true ;
243+ }
244244
245245 std::vector<std::pair<int8_t , std::set<uint8_t >>> cutMyRequiredITSHits{};
246246
@@ -366,7 +366,7 @@ struct TauEventTableProducer {
366366 return false ;
367367 return true ;
368368 }
369-
369+
370370 void processDataSG (FullSGUDCollision const & collision,
371371 FullUDTracks const & tracks)
372372 {
@@ -392,84 +392,84 @@ struct TauEventTableProducer {
392392 if (cutSample.useRecoFlag && (collision.flags () != cutSample.cutRecoFlag ))
393393 return ;
394394
395- int countTracksPerCollision = 0 ;
396- int countGoodNonPVtracks = 0 ;
397- int countGoodPVtracks = 0 ;
398- std::vector<int > vecTrkIdx;
399- // Loop over tracks with selections
400- for (const auto & track : tracks) {
401- countTracksPerCollision++;
402- if (!isGlobalTrackReinstatement (track))
403- continue ;
404- if (!track.isPVContributor ()) {
405- countGoodNonPVtracks++;
406- continue ;
407- }
408- countGoodPVtracks++;
409- vecTrkIdx.push_back (track.index ());
410- } // Loop over tracks with selections
411-
412- // Apply weak condition on track PID
413- int countPVGTel = 0 ;
414- int countPVGTmupi = 0 ;
415- if (countGoodPVtracks == 2 ) {
416- for (const auto & vecMember : vecTrkIdx) {
417- const auto & thisTrk = tracks.iteratorAt (vecMember);
418- if (isElectronCandidate (thisTrk)) {
419- countPVGTel++;
420- continue ;
421- }
422- if (isMuPionCandidate (thisTrk)) {
423- countPVGTmupi++;
424- }
425- }
426- }
427-
428- if (cutPreselect.preselUseTrackPID ? ((countPVGTel == 2 && countPVGTmupi == 0 ) || (countPVGTel == 1 && countPVGTmupi == 1 )) : countGoodPVtracks == cutPreselect.preselNgoodPVtracs ) {
429- const auto & trk1 = tracks.iteratorAt (vecTrkIdx[0 ]);
430- const auto & trk2 = tracks.iteratorAt (vecTrkIdx[1 ]);
431-
432- float px[2 ] = {trk1.px (), trk2.px ()};
433- float py[2 ] = {trk1.py (), trk2.py ()};
434- float pz[2 ] = {trk1.pz (), trk2.pz ()};
435- int sign[2 ] = {trk1.sign (), trk2.sign ()};
436- float dcaxy[2 ] = {trk1.dcaXY (), trk2.dcaXY ()};
437- float dcaz[2 ] = {trk1.dcaZ (), trk2.dcaZ ()};
438- float trkTimeRes[2 ] = {trk1.trackTimeRes (), trk2.trackTimeRes ()};
439- uint32_t itsClusterSizesTrk1 = trk1.itsClusterSizes ();
440- uint32_t itsClusterSizesTrk2 = trk2.itsClusterSizes ();
441- float tpcSignal[2 ] = {trk1.tpcSignal (), trk2.tpcSignal ()};
442- float tpcEl[2 ] = {trk1.tpcNSigmaEl (), trk2.tpcNSigmaEl ()};
443- float tpcMu[2 ] = {trk1.tpcNSigmaMu (), trk2.tpcNSigmaMu ()};
444- float tpcPi[2 ] = {trk1.tpcNSigmaPi (), trk2.tpcNSigmaPi ()};
445- float tpcKa[2 ] = {trk1.tpcNSigmaKa (), trk2.tpcNSigmaKa ()};
446- float tpcPr[2 ] = {trk1.tpcNSigmaPr (), trk2.tpcNSigmaPr ()};
447- float tpcIP[2 ] = {trk1.tpcInnerParam (), trk2.tpcInnerParam ()};
448- float tofSignal[2 ] = {trk1.tofSignal (), trk2.tofSignal ()};
449- float tofEl[2 ] = {trk1.tofNSigmaEl (), trk2.tofNSigmaEl ()};
450- float tofMu[2 ] = {trk1.tofNSigmaMu (), trk2.tofNSigmaMu ()};
451- float tofPi[2 ] = {trk1.tofNSigmaPi (), trk2.tofNSigmaPi ()};
452- float tofKa[2 ] = {trk1.tofNSigmaKa (), trk2.tofNSigmaKa ()};
453- float tofPr[2 ] = {trk1.tofNSigmaPr (), trk2.tofNSigmaPr ()};
454- float tofEP[2 ] = {trk1.tofExpMom (), trk2.tofExpMom ()};
455- float ZNinfo[4 ] = {-999 ., -999 ., -999 ., -999 .};
456- if constexpr (requires { collision.udZdcsReduced (); }) {
457- ZNinfo[0 ] = collision.energyCommonZNA ();
458- ZNinfo[1 ] = collision.energyCommonZNC ();
459- ZNinfo[2 ] = collision.timeZNA ();
460- ZNinfo[3 ] = collision.timeZNC ();
461- }
462-
463- tauTwoTracks (collision.runNumber (), collision.globalBC (), countTracksPerCollision, collision.numContrib (), countGoodNonPVtracks, collision.posX (), collision.posY (), collision.posZ (),
464- collision.flags (), collision.occupancyInTime (), collision.hadronicRate (), collision.trs (), collision.trofs (), collision.hmpr (),
465- collision.tfb (), collision.itsROFb (), collision.sbp (), collision.zVtxFT0vPV (), collision.vtxITSTPC (),
466- collision.totalFT0AmplitudeA (), collision.totalFT0AmplitudeC (), collision.totalFV0AmplitudeA (), ZNinfo[0 ], ZNinfo[1 ],
467- collision.timeFT0A (), collision.timeFT0C (), collision.timeFV0A (), ZNinfo[2 ], ZNinfo[3 ],
468- px, py, pz, sign, dcaxy, dcaz, trkTimeRes,
469- itsClusterSizesTrk1, itsClusterSizesTrk2,
470- tpcSignal, tpcEl, tpcMu, tpcPi, tpcKa, tpcPr, tpcIP,
471- tofSignal, tofEl, tofMu, tofPi, tofKa, tofPr, tofEP);
472- }
395+ int countTracksPerCollision = 0 ;
396+ int countGoodNonPVtracks = 0 ;
397+ int countGoodPVtracks = 0 ;
398+ std::vector<int > vecTrkIdx;
399+ // Loop over tracks with selections
400+ for (const auto & track : tracks) {
401+ countTracksPerCollision++;
402+ if (!isGlobalTrackReinstatement (track))
403+ continue ;
404+ if (!track.isPVContributor ()) {
405+ countGoodNonPVtracks++;
406+ continue ;
407+ }
408+ countGoodPVtracks++;
409+ vecTrkIdx.push_back (track.index ());
410+ } // Loop over tracks with selections
411+
412+ // Apply weak condition on track PID
413+ int countPVGTel = 0 ;
414+ int countPVGTmupi = 0 ;
415+ if (countGoodPVtracks == 2 ) {
416+ for (const auto & vecMember : vecTrkIdx) {
417+ const auto & thisTrk = tracks.iteratorAt (vecMember);
418+ if (isElectronCandidate (thisTrk)) {
419+ countPVGTel++;
420+ continue ;
421+ }
422+ if (isMuPionCandidate (thisTrk)) {
423+ countPVGTmupi++;
424+ }
425+ }
426+ }
427+
428+ if (cutPreselect.preselUseTrackPID ? ((countPVGTel == 2 && countPVGTmupi == 0 ) || (countPVGTel == 1 && countPVGTmupi == 1 )) : countGoodPVtracks == cutPreselect.preselNgoodPVtracs ) {
429+ const auto & trk1 = tracks.iteratorAt (vecTrkIdx[0 ]);
430+ const auto & trk2 = tracks.iteratorAt (vecTrkIdx[1 ]);
431+
432+ float px[2 ] = {trk1.px (), trk2.px ()};
433+ float py[2 ] = {trk1.py (), trk2.py ()};
434+ float pz[2 ] = {trk1.pz (), trk2.pz ()};
435+ int sign[2 ] = {trk1.sign (), trk2.sign ()};
436+ float dcaxy[2 ] = {trk1.dcaXY (), trk2.dcaXY ()};
437+ float dcaz[2 ] = {trk1.dcaZ (), trk2.dcaZ ()};
438+ float trkTimeRes[2 ] = {trk1.trackTimeRes (), trk2.trackTimeRes ()};
439+ uint32_t itsClusterSizesTrk1 = trk1.itsClusterSizes ();
440+ uint32_t itsClusterSizesTrk2 = trk2.itsClusterSizes ();
441+ float tpcSignal[2 ] = {trk1.tpcSignal (), trk2.tpcSignal ()};
442+ float tpcEl[2 ] = {trk1.tpcNSigmaEl (), trk2.tpcNSigmaEl ()};
443+ float tpcMu[2 ] = {trk1.tpcNSigmaMu (), trk2.tpcNSigmaMu ()};
444+ float tpcPi[2 ] = {trk1.tpcNSigmaPi (), trk2.tpcNSigmaPi ()};
445+ float tpcKa[2 ] = {trk1.tpcNSigmaKa (), trk2.tpcNSigmaKa ()};
446+ float tpcPr[2 ] = {trk1.tpcNSigmaPr (), trk2.tpcNSigmaPr ()};
447+ float tpcIP[2 ] = {trk1.tpcInnerParam (), trk2.tpcInnerParam ()};
448+ float tofSignal[2 ] = {trk1.tofSignal (), trk2.tofSignal ()};
449+ float tofEl[2 ] = {trk1.tofNSigmaEl (), trk2.tofNSigmaEl ()};
450+ float tofMu[2 ] = {trk1.tofNSigmaMu (), trk2.tofNSigmaMu ()};
451+ float tofPi[2 ] = {trk1.tofNSigmaPi (), trk2.tofNSigmaPi ()};
452+ float tofKa[2 ] = {trk1.tofNSigmaKa (), trk2.tofNSigmaKa ()};
453+ float tofPr[2 ] = {trk1.tofNSigmaPr (), trk2.tofNSigmaPr ()};
454+ float tofEP[2 ] = {trk1.tofExpMom (), trk2.tofExpMom ()};
455+ float ZNinfo[4 ] = {-999 ., -999 ., -999 ., -999 .};
456+ if constexpr (requires { collision.udZdcsReduced (); }) {
457+ ZNinfo[0 ] = collision.energyCommonZNA ();
458+ ZNinfo[1 ] = collision.energyCommonZNC ();
459+ ZNinfo[2 ] = collision.timeZNA ();
460+ ZNinfo[3 ] = collision.timeZNC ();
461+ }
462+
463+ tauTwoTracks (collision.runNumber (), collision.globalBC (), countTracksPerCollision, collision.numContrib (), countGoodNonPVtracks, collision.posX (), collision.posY (), collision.posZ (),
464+ collision.flags (), collision.occupancyInTime (), collision.hadronicRate (), collision.trs (), collision.trofs (), collision.hmpr (),
465+ collision.tfb (), collision.itsROFb (), collision.sbp (), collision.zVtxFT0vPV (), collision.vtxITSTPC (),
466+ collision.totalFT0AmplitudeA (), collision.totalFT0AmplitudeC (), collision.totalFV0AmplitudeA (), ZNinfo[0 ], ZNinfo[1 ],
467+ collision.timeFT0A (), collision.timeFT0C (), collision.timeFV0A (), ZNinfo[2 ], ZNinfo[3 ],
468+ px, py, pz, sign, dcaxy, dcaz, trkTimeRes,
469+ itsClusterSizesTrk1, itsClusterSizesTrk2,
470+ tpcSignal, tpcEl, tpcMu, tpcPi, tpcKa, tpcPr, tpcIP,
471+ tofSignal, tofEl, tofMu, tofPi, tofKa, tofPr, tofEP);
472+ }
473473
474474 } // end processDataSG
475475
0 commit comments