@@ -492,67 +492,6 @@ struct DQMuonsSelection {
492492 PROCESS_SWITCH (DQMuonsSelection, processDummy, " Dummy function" , false );
493493};
494494
495- /*
496- struct DQTrackToCollisionAssociation {
497-
498- Produces<TrackAssoc> association;
499- Produces<TrackCompColls> reverseIndices;
500- Produces<FwdTrackAssoc> fwdassociation;
501- Produces<FwdTrkCompColls> fwdreverseIndices;
502-
503- // NOTE: the options for the collision associator are common for both the barrel and muon
504- // We should add separate ones if needed
505- Configurable<float> nSigmaForTimeCompat{"nSigmaForTimeCompat", 4.f, "number of sigmas for time compatibility"};
506- Configurable<float> timeMargin{"timeMargin", 0.f, "time margin in ns added to uncertainty because of uncalibrated TPC"};
507- Configurable<bool> usePVAssociation{"usePVAssociation", true, "if the track is a PV contributor, use the collision time for it"};
508- Configurable<bool> includeUnassigned{"includeUnassigned", false, "consider also tracks which are not assigned to any collision"};
509- Configurable<bool> fillTableOfCollIdsPerTrack{"fillTableOfCollIdsPerTrack", false, "fill additional table with vector of collision ids per track"};
510- Configurable<int> bcWindowForOneSigma{"bcWindowForOneSigma", 60, "BC window to be multiplied by the number of sigmas to define maximum window to be considered"};
511-
512- CollisionAssociation<true> collisionAssociatorBarrel;
513- CollisionAssociation<false> collisionAssociatorMuon;
514-
515- Filter filterBarrelTrackSelected = aod::dqppfilter::isDQBarrelSelected > uint32_t(0);
516- Filter filterMuonTrackSelected = aod::dqppfilter::isDQMuonSelected > uint32_t(0);
517-
518- void init(o2::framework::InitContext const&)
519- {
520- // set options in track-to-collision association
521- collisionAssociatorBarrel.setNumSigmaForTimeCompat(nSigmaForTimeCompat);
522- collisionAssociatorBarrel.setTimeMargin(timeMargin);
523- collisionAssociatorBarrel.setTrackSelectionOptionForStdAssoc(track_association::TrackSelection::None);
524- collisionAssociatorBarrel.setUsePvAssociation(usePVAssociation);
525- collisionAssociatorBarrel.setIncludeUnassigned(includeUnassigned);
526- collisionAssociatorBarrel.setFillTableOfCollIdsPerTrack(fillTableOfCollIdsPerTrack);
527- collisionAssociatorBarrel.setBcWindow(bcWindowForOneSigma);
528- // set options in muon-to-collision association
529- collisionAssociatorMuon.setNumSigmaForTimeCompat(nSigmaForTimeCompat);
530- collisionAssociatorMuon.setTimeMargin(timeMargin);
531- collisionAssociatorMuon.setTrackSelectionOptionForStdAssoc(track_association::TrackSelection::None);
532- collisionAssociatorMuon.setUsePvAssociation(false);
533- collisionAssociatorMuon.setIncludeUnassigned(includeUnassigned);
534- collisionAssociatorMuon.setFillTableOfCollIdsPerTrack(fillTableOfCollIdsPerTrack);
535- collisionAssociatorMuon.setBcWindow(bcWindowForOneSigma);
536- }
537-
538- void processAssocWithTime(Collisions const& collisions,
539- MyBarrelTracksSelected const& tracksUnfiltered, soa::Filtered<MyBarrelTracksSelected> const& tracks,
540- FwdTracks const& muons,
541- AmbiguousTracks const& ambiguousTracks, AmbiguousFwdTracks const& ambiguousFwdTracks, BCs const& bcs)
542- {
543- collisionAssociatorBarrel.runAssocWithTime(collisions, tracksUnfiltered, tracks, ambiguousTracks, bcs, association, reverseIndices);
544- collisionAssociatorMuon.runAssocWithTime(collisions, muons, muons, ambiguousFwdTracks, bcs, fwdassociation, fwdreverseIndices);
545- };
546- void processDummy(Collisions&)
547- {
548- // do nothing
549- }
550-
551- PROCESS_SWITCH(DQTrackToCollisionAssociation, processAssocWithTime, "Produce track-to-collision associations based on time", false);
552- PROCESS_SWITCH(DQTrackToCollisionAssociation, processDummy, "Dummy function", false);
553- };
554- */
555-
556495struct DQFilterPPTask {
557496 Produces<aod::DQEventFilter> eventFilter;
558497 Produces<aod::DqFilters> dqtable;
@@ -596,6 +535,10 @@ struct DQFilterPPTask {
596535 std::map<uint64_t , uint64_t > fFiltersMap ; // map of filters for events that passed at least one filter
597536 std::map<uint64_t , std::vector<bool >> fCEFPfilters ; // map of CEFP filters for events that passed at least one filter
598537
538+ uint32_t fPairingLSBarrel ; // used to set in which cut setting LS pairs will be analysed
539+ uint32_t fPairingLSMuon ; // used to set in which cut setting LS pairs will be analysed
540+ uint32_t fPairingLSBarrelMuon ; // used to set in which cut setting LS pairs will be analysed
541+
599542 void DefineCuts ()
600543 {
601544 TString barrelSelsStr = fConfigBarrelSelections .value ;
@@ -699,6 +642,39 @@ struct DQFilterPPTask {
699642 }
700643 DefineCuts ();
701644
645+ // check which selection should use like sign (LS) (--/++) barrel track pairs
646+ fPairingLSBarrel = 0 ;
647+ TString barrelLSstr = fConfigFilterLsBarrelTracksPairs .value ;
648+ std::unique_ptr<TObjArray> objArrayLS (barrelLSstr.Tokenize (" ," ));
649+ for (int icut = 0 ; icut < fNBarrelCuts ; icut++) {
650+ TString objStr = objArrayLS->At (icut)->GetName ();
651+ if (!objStr.CompareTo (" true" )) {
652+ fPairingLSBarrel |= (static_cast <uint32_t >(1 ) << icut);
653+ }
654+ }
655+
656+ // check which selection should use like sign (LS) (--/++) muon track pairs
657+ fPairingLSMuon = 0 ;
658+ TString musonLSstr = fConfigFilterLsMuonsPairs .value ;
659+ std::unique_ptr<TObjArray> objArrayMuonLS (musonLSstr.Tokenize (" ," ));
660+ for (int icut = 0 ; icut < fNMuonCuts ; icut++) {
661+ TString objStr = objArrayMuonLS->At (icut)->GetName ();
662+ if (!objStr.CompareTo (" true" )) {
663+ fPairingLSMuon |= (static_cast <uint32_t >(1 ) << icut);
664+ }
665+ }
666+
667+ // check which selection should use like sign (LS) (--/++) muon-barrel pairs
668+ fPairingLSBarrelMuon = 0 ; // reset the decisions for electron-muons
669+ TString electronMuonLSstr = fConfigFilterLsElectronMuonsPairs .value ;
670+ std::unique_ptr<TObjArray> objArrayElectronMuonLS (electronMuonLSstr.Tokenize (" ," ));
671+ for (int icut = 0 ; icut < fNElectronMuonCuts ; icut++) {
672+ TString objStr = objArrayElectronMuonLS->At (icut)->GetName ();
673+ if (!objStr.CompareTo (" true" )) {
674+ fPairingLSBarrelMuon |= (static_cast <uint32_t >(1 ) << icut);
675+ }
676+ }
677+
702678 if (fConfigQA ) {
703679 // initialize the variable manager
704680 VarManager::SetDefaultVarNames ();
@@ -748,7 +724,6 @@ struct DQFilterPPTask {
748724
749725 std::vector<int > objCountersBarrel (fNBarrelCuts , 0 ); // init all counters to zero
750726 uint32_t pairingMask = 0 ; // in order to know which of the selections actually require pairing
751- uint32_t pairingLS = 0 ; // used to set in which cut setting LS pairs will be analysed
752727 uint32_t pairFilter = 0 ;
753728 // count the number of barrel tracks fulfilling each cut
754729 if constexpr (static_cast <bool >(TTrackFillMap)) {
@@ -770,16 +745,6 @@ struct DQFilterPPTask {
770745 }
771746 }
772747
773- // check which selection should use like sign (LS) (--/++) barrel track pairs
774- TString barrelLSstr = fConfigFilterLsBarrelTracksPairs .value ;
775- std::unique_ptr<TObjArray> objArrayLS (barrelLSstr.Tokenize (" ," ));
776- for (int icut = 0 ; icut < fNBarrelCuts ; icut++) {
777- TString objStr = objArrayLS->At (icut)->GetName ();
778- if (!objStr.CompareTo (" true" )) {
779- pairingLS |= (static_cast <uint32_t >(1 ) << icut);
780- }
781- }
782-
783748 // run pairing if there is at least one selection that requires it
784749 if (pairingMask > 0 ) {
785750 // run pairing on the collision grouped associations
@@ -798,7 +763,7 @@ struct DQFilterPPTask {
798763 VarManager::FillPair<VarManager::kDecayToEE , TTrackFillMap>(t1, t2); // compute pair quantities
799764 for (int icut = 0 ; icut < fNBarrelCuts ; icut++) {
800765 // select like-sign pairs if trigger has set boolean true within fConfigFilterLsBarrelTracksPairs
801- if (!(pairingLS & (static_cast <uint32_t >(1 ) << icut))) {
766+ if (!(fPairingLSBarrel & (static_cast <uint32_t >(1 ) << icut))) {
802767 if (t1.sign () * t2.sign () > 0 ) {
803768 continue ;
804769 }
@@ -812,6 +777,7 @@ struct DQFilterPPTask {
812777 }
813778 objCountersBarrel[icut] += 1 ; // count the pair
814779 if (fConfigQA ) { // fill histograms if QA is enabled
780+ // cout << "=========== filling pair for collision " << collision.globalIndex() << endl;
815781 fHistMan ->FillHistClass (fBarrelPairHistNames [icut].Data (), VarManager::fgValues);
816782 }
817783 }
@@ -841,17 +807,6 @@ struct DQFilterPPTask {
841807 }
842808 }
843809
844- // check which selection should use like sign (LS) (--/++) muon track pairs
845- pairingLS = 0 ; // reset the decisions for muons
846- TString musonLSstr = fConfigFilterLsMuonsPairs .value ;
847- std::unique_ptr<TObjArray> objArrayMuonLS (musonLSstr.Tokenize (" ," ));
848- for (int icut = 0 ; icut < fNMuonCuts ; icut++) {
849- TString objStr = objArrayMuonLS->At (icut)->GetName ();
850- if (!objStr.CompareTo (" true" )) {
851- pairingLS |= (static_cast <uint32_t >(1 ) << icut);
852- }
853- }
854-
855810 // run pairing if there is at least one selection that requires it
856811 pairFilter = 0 ;
857812 if (pairingMask > 0 ) {
@@ -875,7 +830,7 @@ struct DQFilterPPTask {
875830 }
876831 for (int icut = 0 ; icut < fNMuonCuts ; icut++) {
877832 // select like-sign pairs if trigger has set boolean true within fConfigFilterLsMuonsPairs
878- if (!(pairingLS & (static_cast <uint32_t >(1 ) << icut))) {
833+ if (!(fPairingLSMuon & (static_cast <uint32_t >(1 ) << icut))) {
879834 if (t1.sign () * t2.sign () > 0 ) {
880835 continue ;
881836 }
@@ -908,16 +863,6 @@ struct DQFilterPPTask {
908863 }
909864 }
910865 }
911- // check which selection should use like sign (LS) (--/++) muon track pairs
912- pairingLS = 0 ; // reset the decisions for electron-muons
913- TString electronMuonLSstr = fConfigFilterLsElectronMuonsPairs .value ;
914- std::unique_ptr<TObjArray> objArrayElectronMuonLS (electronMuonLSstr.Tokenize (" ," ));
915- for (int icut = 0 ; icut < fNElectronMuonCuts ; icut++) {
916- TString objStr = objArrayElectronMuonLS->At (icut)->GetName ();
917- if (!objStr.CompareTo (" true" )) {
918- pairingLS |= (static_cast <uint32_t >(1 ) << icut);
919- }
920- }
921866
922867 // run pairing if there is at least one selection that requires it
923868 pairFilter = 0 ;
@@ -936,7 +881,7 @@ struct DQFilterPPTask {
936881 VarManager::FillPair<VarManager::kElectronMuon , TTrackFillMap>(t1, t2); // compute pair quantities
937882 for (int icut = 0 ; icut < fNElectronMuonCuts ; icut++) {
938883 // select like-sign pairs if trigger has set boolean true within fConfigFilterLsElectronMuonsPairs
939- if (!(pairingLS & (static_cast <uint32_t >(1 ) << icut))) {
884+ if (!(fPairingLSBarrelMuon & (static_cast <uint32_t >(1 ) << icut))) {
940885 if (t1.sign () * t2.sign () > 0 ) {
941886 continue ;
942887 }
0 commit comments