@@ -167,9 +167,11 @@ struct TableMaker {
167167 OutputObj<TList> fStatsList {" Statistics" }; // ! skimming statistics
168168 HistogramManager* fHistMan ;
169169
170- Configurable<std::string> fConfigEventCuts {" cfgEventCuts" , " eventStandard" , " Event selection" };
171- Configurable<std::string> fConfigTrackCuts {" cfgBarrelTrackCuts" , " jpsiO2MCdebugCuts2" , " Comma separated list of barrel track cuts" };
172- Configurable<std::string> fConfigMuonCuts {" cfgMuonCuts" , " muonQualityCuts" , " Comma separated list of muon cuts" };
170+ struct : ConfigurableGroup {
171+ Configurable<std::string> fConfigEventCuts {" cfgEventCuts" , " eventStandard" , " Event selection" };
172+ Configurable<std::string> fConfigTrackCuts {" cfgBarrelTrackCuts" , " jpsiO2MCdebugCuts2" , " Comma separated list of barrel track cuts" };
173+ Configurable<std::string> fConfigMuonCuts {" cfgMuonCuts" , " muonQualityCuts" , " Comma separated list of muon cuts" };
174+ } configCuts;
173175 struct : ConfigurableGroup {
174176 Configurable<std::string> fConfigAddEventHistogram {" cfgAddEventHistogram" , " " , " Comma separated list of histograms" };
175177 Configurable<std::string> fConfigAddTrackHistogram {" cfgAddTrackHistogram" , " " , " Comma separated list of histograms" };
@@ -178,8 +180,10 @@ struct TableMaker {
178180 Configurable<float > fConfigBarrelTrackPtLow {" cfgBarrelLowPt" , 1 .0f , " Low pt cut for tracks in the barrel" };
179181 Configurable<float > fConfigBarrelTrackMaxAbsEta {" cfgBarrelMaxAbsEta" , 0 .9f , " Eta absolute value cut for tracks in the barrel" };
180182 Configurable<float > fConfigMuonPtLow {" cfgMuonLowPt" , 1 .0f , " Low pt cut for muons" };
181- Configurable<float > fConfigMinTpcSignal {" cfgMinTpcSignal" , 30.0 , " Minimum TPC signal" };
182- Configurable<float > fConfigMaxTpcSignal {" cfgMaxTpcSignal" , 300.0 , " Maximum TPC signal" };
183+ struct : ConfigurableGroup {
184+ Configurable<float > fConfigMinTpcSignal {" cfgMinTpcSignal" , 30.0 , " Minimum TPC signal" };
185+ Configurable<float > fConfigMaxTpcSignal {" cfgMaxTpcSignal" , 300.0 , " Maximum TPC signal" };
186+ } configTpcSignal;
183187 Configurable<bool > fConfigQA {" cfgQA" , false , " If true, fill QA histograms" };
184188 Configurable<bool > fConfigDetailedQA {" cfgDetailedQA" , false , " If true, include more QA histograms (BeforeCuts classes)" };
185189 Configurable<bool > fIsRun2 {" cfgIsRun2" , false , " Whether we analyze Run-2 or Run-3 data" };
@@ -225,14 +229,15 @@ struct TableMaker {
225229
226230 Preslice<MyBarrelTracks> perCollisionTracks = aod::track::collisionId;
227231 Preslice<MyMuons> perCollisionMuons = aod::fwdtrack::collisionId;
232+ PresliceUnsorted<MyMuonsRealignWithCov> perCollisionMuonsRealign = aod::fwdtrackrealign::collisionId;
228233 Preslice<aod::TrackAssoc> trackIndicesPerCollision = aod::track_association::collisionId;
229234 Preslice<aod::FwdTrackAssoc> fwdtrackIndicesPerCollision = aod::track_association::collisionId;
230-
235+ PresliceUnsorted<MyMuonsRealignWithCov> fwdtrackRealignPerMuon = aod::fwdtrackrealign::fwdtrackId;
231236 bool fDoDetailedQA = false ; // Bool to set detailed QA true, if QA is set true
232237 int fCurrentRun ; // needed to detect if the run changed and trigger update of calibrations etc.
233238
234239 // TODO: filter on TPC dedx used temporarily until electron PID will be improved
235- Filter barrelSelectedTracks = ifnode(fIsRun2 .node() == true , aod::track::trackType == uint8_t (aod::track::Run2Track), aod::track::trackType == uint8_t (aod::track::Track)) && o2::aod::track::pt >= fConfigBarrelTrackPtLow && nabs(o2::aod::track::eta) <= fConfigBarrelTrackMaxAbsEta && o2::aod::track::tpcSignal >= fConfigMinTpcSignal && o2::aod::track::tpcSignal <= fConfigMaxTpcSignal && o2::aod::track::tpcChi2NCl < 4 .0f && o2::aod::track::itsChi2NCl < 36 .0f ;
240+ Filter barrelSelectedTracks = ifnode(fIsRun2 .node() == true , aod::track::trackType == uint8_t (aod::track::Run2Track), aod::track::trackType == uint8_t (aod::track::Track)) && o2::aod::track::pt >= fConfigBarrelTrackPtLow && nabs(o2::aod::track::eta) <= fConfigBarrelTrackMaxAbsEta && o2::aod::track::tpcSignal >= configTpcSignal. fConfigMinTpcSignal && o2::aod::track::tpcSignal <= configTpcSignal. fConfigMaxTpcSignal && o2::aod::track::tpcChi2NCl < 4 .0f && o2::aod::track::itsChi2NCl < 36 .0f ;
236241
237242 Filter muonFilter = o2::aod::fwdtrack::pt >= fConfigMuonPtLow ;
238243
@@ -350,11 +355,11 @@ struct TableMaker {
350355 {
351356 // Event cuts
352357 fEventCut = new AnalysisCompositeCut (true );
353- TString eventCutStr = fConfigEventCuts .value ;
358+ TString eventCutStr = configCuts. fConfigEventCuts .value ;
354359 fEventCut ->AddCut (dqcuts::GetAnalysisCut (eventCutStr.Data ()));
355360
356361 // Barrel track cuts
357- TString cutNamesStr = fConfigTrackCuts .value ;
362+ TString cutNamesStr = configCuts. fConfigTrackCuts .value ;
358363 if (!cutNamesStr.IsNull ()) {
359364 std::unique_ptr<TObjArray> objArray (cutNamesStr.Tokenize (" ," ));
360365 for (int icut = 0 ; icut < objArray->GetEntries (); ++icut) {
@@ -363,7 +368,7 @@ struct TableMaker {
363368 }
364369
365370 // Muon cuts
366- cutNamesStr = fConfigMuonCuts .value ;
371+ cutNamesStr = configCuts. fConfigMuonCuts .value ;
367372 if (!cutNamesStr.IsNull ()) {
368373 std::unique_ptr<TObjArray> objArray (cutNamesStr.Tokenize (" ," ));
369374 for (int icut = 0 ; icut < objArray->GetEntries (); ++icut) {
@@ -1127,7 +1132,7 @@ struct TableMaker {
11271132 // Update muon information using realigned tracks
11281133 if (static_cast <int >(muon.trackType ()) > 2 ) {
11291134 // Update only MCH or MCH-MID tracks with realigned information
1130- auto muonRealignSelected = tracksMuonRealign.select (aod::fwdtrackrealign::fwdtrackId == muonId.fwdtrackId () && aod::fwdtrackrealign::collisionId == collision. globalIndex ());
1135+ auto muonRealignSelected = tracksMuonRealign.sliceBy (fwdtrackRealignPerMuon, muonId.fwdtrackId ());
11311136 if (muonRealignSelected.size () == 1 ) {
11321137 for (const auto & muonRealign : muonRealignSelected) {
11331138 VarManager::FillTrack<TMuonRealignFillMap>(muonRealign);
@@ -1176,7 +1181,7 @@ struct TableMaker {
11761181 // Update muon information using realigned tracks
11771182 if (static_cast <int >(muon.trackType ()) > 2 ) {
11781183 // Update only MCH or MCH-MID tracks with realigned information
1179- auto muonRealignSelected = tracksMuonRealign.select (aod::fwdtrackrealign::fwdtrackId == muonId.fwdtrackId () && aod::fwdtrackrealign::collisionId == collision. globalIndex ());
1184+ auto muonRealignSelected = tracksMuonRealign.sliceBy (fwdtrackRealignPerMuon, muonId.fwdtrackId ());
11801185 if (muonRealignSelected.size () == 1 ) {
11811186 for (const auto & muonRealign : muonRealignSelected) {
11821187 LOGF (debug, " Muon original - collisionId:%d x:%g y:%g z:%g phi:%g tgl:%g signed1pt:%g pt:%g p:%g eta:%g chi2:%g" , muon.collisionId (), muon.x (), muon.y (), muon.z (), muon.phi (), muon.tgl (), muon.signed1Pt (), muon.pt (), muon.p (), muon.eta (), muon.chi2 ());
@@ -1687,7 +1692,8 @@ struct TableMaker {
16871692 {
16881693 for (auto & collision : collisions) {
16891694 auto muonIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
1690- fullSkimmingIndices<gkEventFillMap, 0u , gkMuonFillMapWithCovAmbi, gkMuonRealignFillMapWithCov>(collision, bcs, nullptr , tracksMuon, tracksMuonRealign, nullptr , muonIdsThisCollision);
1695+ auto muonsRealignThisCollision = tracksMuonRealign.sliceBy (perCollisionMuonsRealign, collision.globalIndex ());
1696+ fullSkimmingIndices<gkEventFillMap, 0u , gkMuonFillMapWithCovAmbi, gkMuonRealignFillMapWithCov>(collision, bcs, nullptr , tracksMuon, muonsRealignThisCollision, nullptr , muonIdsThisCollision);
16911697 }
16921698 }
16931699
0 commit comments