@@ -425,14 +425,14 @@ bool cleanFDD(T& bc, float maxFITtime, float limitA, float limitC)
425425// lims[4]: FDDC
426426
427427template <typename T>
428- bool cleanFIT (T& bc, float maxFITtime, std::vector<float > lims)
428+ bool cleanFIT (T& bc, float maxFITtime, std::vector<float > const & lims)
429429{
430430 return cleanFV0 (bc, maxFITtime, lims[0 ]) &&
431431 cleanFT0 (bc, maxFITtime, lims[1 ], lims[2 ]) &&
432432 cleanFDD (bc, maxFITtime, lims[3 ], lims[4 ]);
433433}
434434template <typename T>
435- bool cleanFITCollision (T& col, float maxFITtime, std::vector<float > lims)
435+ bool cleanFITCollision (T& col, float maxFITtime, std::vector<float > const & lims)
436436{
437437 bool isCleanFV0 = true ;
438438 if (col.has_foundFV0 ()) {
@@ -453,7 +453,7 @@ bool cleanFITCollision(T& col, float maxFITtime, std::vector<float> lims)
453453
454454// -----------------------------------------------------------------------------
455455template <typename T>
456- bool cleanFITA (T& bc, float maxFITtime, std::vector<float > lims)
456+ bool cleanFITA (T& bc, float maxFITtime, std::vector<float > const & lims)
457457{
458458 return cleanFV0 (bc, maxFITtime, lims[0 ]) &&
459459 cleanFT0A (bc, maxFITtime, lims[1 ]) &&
@@ -462,7 +462,7 @@ bool cleanFITA(T& bc, float maxFITtime, std::vector<float> lims)
462462
463463// -----------------------------------------------------------------------------
464464template <typename T>
465- bool cleanFITC (T& bc, float maxFITtime, std::vector<float > lims)
465+ bool cleanFITC (T& bc, float maxFITtime, std::vector<float > const & lims)
466466{
467467 return cleanFT0C (bc, maxFITtime, lims[2 ]) &&
468468 cleanFDDC (bc, maxFITtime, lims[4 ]);
@@ -506,7 +506,7 @@ bool TCE(T& bc)
506506
507507// -----------------------------------------------------------------------------
508508template <typename T>
509- bool TOR (T& bc, float maxFITtime, std::vector<float > lims)
509+ bool TOR (T& bc, float maxFITtime, std::vector<float > const & lims)
510510{
511511 auto torA = !cleanFT0A (bc, maxFITtime, lims[1 ]);
512512 auto torC = !cleanFT0C (bc, maxFITtime, lims[2 ]);
@@ -565,27 +565,48 @@ inline void buildFT0FV0Words(TFT0 const& ft0, TFV0A const& fv0a,
565565 constexpr int kFV0Offset = 208 ;
566566
567567 auto ampsA = ft0.amplitudeA ();
568- const int nA = std::min<int >(ampsA.size (), 96 );
568+ auto chanA = ft0.channelA ();
569+ const int nA = std::min<int >(ampsA.size (), chanA.size ());
569570 for (int i = 0 ; i < nA; ++i) {
570571 const auto a = ampsA[i];
571- setBit (thr1, kFT0AOffset + i, a >= thr1_FT0A);
572- setBit (thr2, kFT0AOffset + i, a >= thr2_FT0A);
572+ const int c = chanA[i];
573+
574+ if (c < 0 || c >= 96 ) {
575+ continue ;
576+ }
577+
578+ setBit (thr1, kFT0AOffset + c, a >= thr1_FT0A);
579+ setBit (thr2, kFT0AOffset + c, a >= thr2_FT0A);
573580 }
574581
575582 auto ampsC = ft0.amplitudeC ();
576- const int nC = std::min<int >(ampsC.size (), 112 );
583+ auto chanC = ft0.channelC ();
584+ const int nC = std::min<int >(ampsC.size (), chanC.size ());
577585 for (int i = 0 ; i < nC; ++i) {
578586 const auto a = ampsC[i];
579- setBit (thr1, kFT0COffset + i, a >= thr1_FT0C);
580- setBit (thr2, kFT0COffset + i, a >= thr2_FT0C);
587+ const int c = chanC[i];
588+
589+ if (c < 0 || c >= 112 ) {
590+ continue ;
591+ }
592+
593+ setBit (thr1, kFT0COffset + c, a >= thr1_FT0C);
594+ setBit (thr2, kFT0COffset + c, a >= thr2_FT0C);
581595 }
582596
583597 auto ampsV = fv0a.amplitude ();
584- const int nV = std::min<int >(ampsV.size (), 48 );
598+ auto chanV = fv0a.channel ();
599+ const int nV = std::min<int >(ampsV.size (), chanV.size ());
585600 for (int i = 0 ; i < nV; ++i) {
586601 const auto a = ampsV[i];
587- setBit (thr1, kFV0Offset + i, a >= thr1_FV0A);
588- setBit (thr2, kFV0Offset + i, a >= thr2_FV0A);
602+ const int c = chanV[i];
603+
604+ if (c < 0 || c >= 48 ) {
605+ continue ;
606+ }
607+
608+ setBit (thr1, kFV0Offset + c, a >= thr1_FV0A);
609+ setBit (thr2, kFV0Offset + c, a >= thr2_FV0A);
589610 }
590611}
591612
@@ -777,24 +798,15 @@ template <typename T>
777798bool goodCollision (T const & coll, DGCutparHolder const & diffCuts)
778799// Return true if collision is accepted according to user-chosen rules from event selection task
779800{
780- bool accepted = true ;
781- std::vector<int > sels = diffCuts.collisionSel ();
782- if (sels[0 ])
783- accepted = accepted && cutNoTimeFrameBorder (coll);
784- if (sels[1 ])
785- accepted = accepted && cutNoSameBunchPileup (coll);
786- if (sels[2 ])
787- accepted = accepted && cutNoITSROFrameBorder (coll);
788- if (sels[3 ])
789- accepted = accepted && cutIsGoodZvtxFT0vsPV (coll);
790- if (sels[4 ])
791- accepted = accepted && cutIsVertexITSTPC (coll);
792- if (sels[5 ])
793- accepted = accepted && cutIsVertexTRDmatched (coll);
794- if (sels[6 ])
795- accepted = accepted && cutIsVertexTOFmatched (coll);
796-
797- return accepted;
801+ auto const sels = diffCuts.collisionSel ();
802+
803+ return (!sels[0 ] || cutNoTimeFrameBorder (coll)) &&
804+ (!sels[1 ] || cutNoSameBunchPileup (coll)) &&
805+ (!sels[2 ] || cutNoITSROFrameBorder (coll)) &&
806+ (!sels[3 ] || cutIsGoodZvtxFT0vsPV (coll)) &&
807+ (!sels[4 ] || cutIsVertexITSTPC (coll)) &&
808+ (!sels[5 ] || cutIsVertexTRDmatched (coll)) &&
809+ (!sels[6 ] || cutIsVertexTOFmatched (coll));
798810}
799811
800812// -----------------------------------------------------------------------------
0 commit comments