@@ -131,9 +131,10 @@ struct UpcCandProducer {
131131 Configurable<bool > fRequireNoTimeFrameBorder {" requireNoTimeFrameBorder" , true , " Require kNoTimeFrameBorder selection bit" };
132132 Configurable<bool > fRequireNoITSROFrameBorder {" requireNoITSROFrameBorder" , true , " Require kNoITSROFrameBorder selection bit" };
133133
134- Configurable<std::string> rctLabel{" rctLabel" , " CBT_muon " , " RCT label to use, options: CBT, CBT_hadronPID, CBT_electronPID, CBT_calo, CBT_muon, CBT_muon_glo" };
134+ Configurable<std::string> rctLabel{" rctLabel" , " muon " , " RCT label to use, options: CBT, CBT_hadronPID, CBT_electronPID, CBT_calo, CBT_muon, CBT_muon_glo, muon = FV0 + MID + MCH, muon_glo = muon + MFT, none = do not use RCT flags " };
135135 Configurable<bool > checkZDC{" checkZDC" , false , " Consider ZDC quality" };
136136 Configurable<bool > useLAasBad{" useLAasBad" , false , " Consider Lim acc flag as Bad" };
137+ bool useRCTflags = true ;
137138
138139 // QA histograms
139140 HistogramRegistry histRegistry{" HistRegistry" , {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -159,7 +160,39 @@ struct UpcCandProducer {
159160 upcCuts = (UPCCutparHolder)inputCuts;
160161
161162 // initialize RCT flag checker
162- myRCTChecker.init (rctLabel.value , checkZDC.value , useLAasBad.value );
163+ if (rctLabel.value != " none" && rctLabel.value != " muon" && rctLabel.value != " muon_glo" ) {
164+ myRCTChecker.init (rctLabel.value , checkZDC.value , useLAasBad.value );
165+ }
166+ else if (rctLabel.value == " none" ){
167+ useRCTflags = false ;
168+ myRCTChecker.init (" CBT_muon" );
169+ }
170+ else if (rctLabel.value == " muon" ){
171+ std::initializer_list<RCTSelectionFlags> flags = {kFV0Bad , kMCHBad , kMIDBad };
172+ if (checkZDC.value && useLAasBad.value ){
173+ flags = {kFV0Bad , kMCHBad , kMIDBad , kZDCBad , kMCHLimAccMCRepr , kMIDLimAccMCRepr };
174+ }
175+ else if (checkZDC.value ){
176+ flags = {kFV0Bad , kMCHBad , kMIDBad , kZDCBad };
177+ }
178+ else if (useLAasBad.value ){
179+ flags = {kFV0Bad , kMCHBad , kMIDBad , kMCHLimAccMCRepr , kMIDLimAccMCRepr };
180+ }
181+ myRCTChecker.init (flags);
182+ }
183+ else if (rctLabel.value == " muon_glo" ){
184+ std::initializer_list<RCTSelectionFlags> flags = {kFV0Bad , kMCHBad , kMIDBad , kMFTBad };
185+ if (checkZDC.value && useLAasBad.value ){
186+ flags = {kFV0Bad , kMCHBad , kMIDBad , kMFTBad , kZDCBad , kMCHLimAccMCRepr , kMIDLimAccMCRepr , kMFTLimAccMCRepr };
187+ }
188+ else if (checkZDC.value ){
189+ flags = {kFV0Bad , kMCHBad , kMIDBad , kMFTBad , kZDCBad };
190+ }
191+ else if (useLAasBad.value ){
192+ flags = {kFV0Bad , kMCHBad , kMIDBad , kMFTBad , kMCHLimAccMCRepr , kMIDLimAccMCRepr , kMFTLimAccMCRepr };
193+ }
194+ myRCTChecker.init (flags);
195+ }
163196
164197 const AxisSpec axisTrgCounters{10 , 0.5 , 10.5 , " " };
165198 histRegistry.add (" hCountersTrg" , " " , kTH1F , {axisTrgCounters});
@@ -704,7 +737,7 @@ struct UpcCandProducer {
704737 const auto & col = trk.collision ();
705738 auto bcRCT = col.bc_as <TBCs>();
706739 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (1 );
707- if (!myRCTChecker (bcRCT)) {
740+ if (!myRCTChecker (bcRCT) && useRCTflags ) {
708741 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (3 );
709742 continue ;
710743 }
@@ -754,7 +787,7 @@ struct UpcCandProducer {
754787 const auto & col = trk.collision ();
755788 auto bcRCT = col.bc_as <TBCs>();
756789 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (1 );
757- if (!myRCTChecker (bcRCT)) {
790+ if (!myRCTChecker (bcRCT) && useRCTflags ) {
758791 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (3 );
759792 continue ;
760793 }
@@ -801,7 +834,7 @@ struct UpcCandProducer {
801834 const auto & col = trk.collision ();
802835 auto bcRCT = col.bc_as <TBCs>();
803836 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (1 );
804- if (!myRCTChecker (bcRCT)) {
837+ if (!myRCTChecker (bcRCT) && useRCTflags ) {
805838 histRegistry.get <TH1>(HIST (" RCTSelCounter" ))->Fill (3 );
806839 continue ;
807840 }
0 commit comments