88// In applying this license CERN does not waive the privileges and immunities
99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
11- //
12- // Contact: Ionut Cristian Arsene iarsene@cern.ch, i.c.arsene@fys.uio.no
13- // Alexander Tiekoetter (alexander.tiekoetter@cern.ch)
14- // / \file alice3-dq-table-maker.cxx
15- // / \brief DQ table maker for ALICE 3
11+ // / \author Ionut Cristian Arsene <iarsene@cern.ch>, Oslo
12+ // / \author Alexander Tiekoetter <alexander.tiekoetter@cern.ch>, Muenster
13+ // / \brief Skimming Task for DQ Table Maker
14+ // / \file dqTableMaker.cxx
1615
1716#include " PWGDQ/Core/AnalysisCompositeCut.h"
1817#include " PWGDQ/Core/AnalysisCut.h"
@@ -67,12 +66,12 @@ using MyBarrelTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA,
6766using MyEvents = soa::Join<aod::Collisions, aod::CollisionsAlice3, aod::McCollisionLabels>;
6867using MyEventsMC = aod::McCollisions;
6968
70- constexpr static uint32_t gkEventFillMap = VarManager::ObjTypes::Collision;
71- constexpr static uint32_t gkEventMcFillMap = VarManager::ObjTypes::CollisionMC;
69+ constexpr static uint32_t GkEventFillMap = VarManager::ObjTypes::Collision;
70+ constexpr static uint32_t GkEventMcFillMap = VarManager::ObjTypes::CollisionMC;
7271
73- constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID;
72+ constexpr static uint32_t GkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID;
7473
75- struct Alice3DQTableMaker {
74+ struct DqTableMaker {
7675
7776 Produces<ReA3MCEvents> eventMC;
7877 Produces<ReA3MCTracks> trackMC;
@@ -98,24 +97,24 @@ struct Alice3DQTableMaker {
9897
9998 // Event and track AnalysisCut configurables
10099 struct : ConfigurableGroup {
101- Configurable<std::string> fConfigEventCuts {" cfgEventCuts" , " " , " Event selection" };
102- Configurable<std::string> fConfigTrackCuts {" cfgBarrelTrackCuts" , " " , " barrel track cut" };
103- Configurable<std::string> fConfigEventCutsJSON {" cfgEventCutsJSON" , " " , " Additional event selection in JSON format" };
104- Configurable<std::string> fConfigTrackCutsJSON {" cfgBarrelTrackCutsJSON" , " " , " Additional list of barrel track cuts in JSON format" };
100+ Configurable<std::string> cfgEventCuts {" cfgEventCuts" , " " , " Event selection" };
101+ Configurable<std::string> cfgBarrelTrackCuts {" cfgBarrelTrackCuts" , " " , " barrel track cut" };
102+ Configurable<std::string> cfgEventCutsJSON {" cfgEventCutsJSON" , " " , " Additional event selection in JSON format" };
103+ Configurable<std::string> cfgBarrelTrackCutsJSON {" cfgBarrelTrackCutsJSON" , " " , " Additional list of barrel track cuts in JSON format" };
105104 } fConfigCuts ;
106105
107106 // MC signals to be skimmed
108- Configurable<std::string> fConfigMCSignals {" cfgMCsignals" , " " , " Comma separated list of MC signals" };
109- Configurable<std::string> fConfigMCSignalsJSON {" cfgMCsignalsJSON" , " " , " Additional list of MC signals via JSON" };
107+ Configurable<std::string> cfgMCsignals {" cfgMCsignals" , " " , " Comma separated list of MC signals" };
108+ Configurable<std::string> cfgMCsignalsJSON {" cfgMCsignalsJSON" , " " , " Additional list of MC signals via JSON" };
110109
111110 // Steer QA output
112111 struct : ConfigurableGroup {
113- Configurable<bool > fConfigQA {" cfgQA" , false , " If true, fill QA histograms" };
114- Configurable<bool > fConfigDetailedQA {" cfgDetailedQA" , false , " If true, include more QA histograms (BeforeCuts classes)" };
115- Configurable<std::string> fConfigAddEventHistogram {" cfgAddEventHistogram" , " " , " Comma separated list of histograms" };
116- Configurable<std::string> fConfigAddTrackHistogram {" cfgAddTrackHistogram" , " " , " Comma separated list of histograms" };
117- Configurable<std::string> fConfigAddMCTruthHistogram {" cfgAddMCTruthHistogram" , " " , " Comma separated list of histograms" };
118- Configurable<std::string> fConfigAddJSONHistograms {" cfgAddJSONHistograms" , " " , " Histograms in JSON format" };
112+ Configurable<bool > cfgQA {" cfgQA" , false , " If true, fill QA histograms" };
113+ Configurable<bool > cfgDetailedQA {" cfgDetailedQA" , false , " If true, include more QA histograms (BeforeCuts classes)" };
114+ Configurable<std::string> cfgAddEventHistogram {" cfgAddEventHistogram" , " " , " Comma separated list of histograms" };
115+ Configurable<std::string> cfgAddTrackHistogram {" cfgAddTrackHistogram" , " " , " Comma separated list of histograms" };
116+ Configurable<std::string> cfgAddMCTruthHistogram {" cfgAddMCTruthHistogram" , " " , " Comma separated list of histograms" };
117+ Configurable<std::string> cfgAddJSONHistograms {" cfgAddJSONHistograms" , " " , " Histograms in JSON format" };
119118 } fConfigHistOutput ;
120119
121120 AnalysisCompositeCut* fEventCut = nullptr ; // ! Event selection cut
@@ -137,15 +136,15 @@ struct Alice3DQTableMaker {
137136 if (!isProcessSkimmingEnabled)
138137 LOG (fatal) << " No process function was enabled ALICE 3 TableMaker" ;
139138
140- VarManager::SetDefaultVarNames (); // Important that this is called before DefineCuts () !!!
139+ VarManager::SetDefaultVarNames (); // Important that this is called before defineCuts () !!!
141140
142- DefineCuts ();
141+ defineCuts ();
143142
144143 fHistMan = new HistogramManager (" analysisHistos" , " aa" , VarManager::kNVars );
145144 fHistMan ->SetUseDefaultVariableNames (true );
146145 fHistMan ->SetDefaultVarNames (VarManager::fgVariableNames, VarManager::fgVariableUnits);
147146
148- if (fConfigHistOutput .fConfigQA && fConfigHistOutput .fConfigDetailedQA ) {
147+ if (fConfigHistOutput .cfgQA && fConfigHistOutput .cfgDetailedQA ) {
149148 fDoDetailedQA = true ;
150149 }
151150
@@ -155,7 +154,7 @@ struct Alice3DQTableMaker {
155154 histClasses += " Event_BeforeCuts;" ;
156155 }
157156
158- if (fConfigHistOutput .fConfigQA ) {
157+ if (fConfigHistOutput .cfgQA ) {
159158 histClasses += " Event_AfterCuts;" ;
160159 histClasses += " Event_MCTruth;" ;
161160 }
@@ -165,14 +164,14 @@ struct Alice3DQTableMaker {
165164 histClasses += " TrackBarrel_BeforeCuts;" ;
166165 }
167166
168- if (fConfigHistOutput .fConfigQA ) {
167+ if (fConfigHistOutput .cfgQA ) {
169168 for (const auto & cut : fTrackCuts ) {
170169 histClasses += Form (" TrackBarrel_%s;" , cut->GetName ());
171170 }
172171 }
173172 }
174173
175- TString configNamesStr = fConfigMCSignals .value ;
174+ TString configNamesStr = cfgMCsignals .value ;
176175 std::unique_ptr<TObjArray> objArray (configNamesStr.Tokenize (" ," ));
177176
178177 if (objArray->GetEntries () > 0 ) {
@@ -184,7 +183,7 @@ struct Alice3DQTableMaker {
184183 }
185184 }
186185
187- TString addMCSignalsStr = fConfigMCSignalsJSON .value ;
186+ TString addMCSignalsStr = cfgMCsignalsJSON .value ;
188187
189188 if (addMCSignalsStr != " " ) {
190189 std::vector<MCSignal*> addMCSignals = dqmcsignals::GetMCSignalsFromJSON (addMCSignalsStr.Data ());
@@ -197,7 +196,7 @@ struct Alice3DQTableMaker {
197196 }
198197
199198 for (const auto & mcIt : fMCSignals ) {
200- if (fConfigHistOutput .fConfigQA ) {
199+ if (fConfigHistOutput .cfgQA ) {
201200 histClasses += Form (" MCTruth_%s;" , mcIt->GetName ());
202201 }
203202 if (fDoDetailedQA ) {
@@ -209,24 +208,24 @@ struct Alice3DQTableMaker {
209208 }
210209 }
211210
212- DefineHistograms (histClasses);
211+ defineHistograms (histClasses);
213212
214- TString addHistsStr = fConfigHistOutput .fConfigAddJSONHistograms .value ;
215- if (fConfigHistOutput .fConfigQA && addHistsStr != " " ) {
213+ TString addHistsStr = fConfigHistOutput .cfgAddJSONHistograms .value ;
214+ if (fConfigHistOutput .cfgQA && addHistsStr != " " ) {
216215 dqhistograms::AddHistogramsFromJSON (fHistMan , addHistsStr.Data ());
217216 }
218217
219218 VarManager::SetUseVars (fHistMan ->GetUsedVars ()); // provide the list of required variables so that VarManager knows what to fill
220219 fOutputList .setObject (fHistMan ->GetMainHistogramList ());
221220 }
222221
223- void DefineCuts ()
222+ void defineCuts ()
224223 {
225224 fEventCut = new AnalysisCompositeCut (true );
226- TString eventCutStr = fConfigCuts .fConfigEventCuts .value ;
225+ TString eventCutStr = fConfigCuts .cfgEventCuts .value ;
227226 fEventCut ->AddCut (dqcuts::GetAnalysisCut (eventCutStr.Data ()));
228227
229- TString addEvCutsStr = fConfigCuts .fConfigEventCutsJSON .value ;
228+ TString addEvCutsStr = fConfigCuts .cfgEventCutsJSON .value ;
230229 if (addEvCutsStr != " " ) {
231230 std::vector<AnalysisCut*> addEvCuts = dqcuts::GetCutsFromJSON (addEvCutsStr.Data ());
232231 for (const auto & cutIt : addEvCuts) {
@@ -235,15 +234,15 @@ struct Alice3DQTableMaker {
235234 }
236235
237236 // Barrel track cuts
238- TString cutNamesStr = fConfigCuts .fConfigTrackCuts .value ;
237+ TString cutNamesStr = fConfigCuts .cfgBarrelTrackCuts .value ;
239238 if (!cutNamesStr.IsNull ()) {
240239 std::unique_ptr<TObjArray> objArray (cutNamesStr.Tokenize (" ," ));
241240 for (int icut = 0 ; icut < objArray->GetEntries (); ++icut) {
242241 fTrackCuts .push_back (dqcuts::GetCompositeCut (objArray->At (icut)->GetName ()));
243242 }
244243 }
245244 // Additional Barrel track cuts via JSON
246- TString addTrackCutsStr = fConfigCuts .fConfigTrackCutsJSON .value ;
245+ TString addTrackCutsStr = fConfigCuts .cfgBarrelTrackCutsJSON .value ;
247246 if (addTrackCutsStr != " " ) {
248247 std::vector<AnalysisCut*> addTrackCuts = dqcuts::GetCutsFromJSON (addTrackCutsStr.Data ());
249248 for (const auto & t : addTrackCuts) {
@@ -254,34 +253,34 @@ struct Alice3DQTableMaker {
254253 VarManager::SetUseVars (AnalysisCut::fgUsedVars); // provide the list of required variables so that VarManager knows what to fill
255254 }
256255
257- void DefineHistograms (TString histClasses)
256+ void defineHistograms (TString histClasses)
258257 {
259258 std::unique_ptr<TObjArray> objArray (histClasses.Tokenize (" ;" ));
260259 for (int iclass = 0 ; iclass < objArray->GetEntries (); ++iclass) {
261260 TString classStr = objArray->At (iclass)->GetName ();
262- if (fConfigHistOutput .fConfigQA ) {
261+ if (fConfigHistOutput .cfgQA ) {
263262 fHistMan ->AddHistClass (classStr.Data ());
264263 }
265264
266- TString histEventName = fConfigHistOutput .fConfigAddEventHistogram .value ;
265+ TString histEventName = fConfigHistOutput .cfgAddEventHistogram .value ;
267266 if (classStr.Contains (" Event" )) {
268- if (fConfigHistOutput .fConfigQA && !classStr.Contains (" MCTruth" )) {
267+ if (fConfigHistOutput .cfgQA && !classStr.Contains (" MCTruth" )) {
269268 dqhistograms::DefineHistograms (fHistMan , objArray->At (iclass)->GetName (), " event" , histEventName);
270269 } else {
271270 dqhistograms::DefineHistograms (fHistMan , objArray->At (iclass)->GetName (), " event" , " generator" );
272271 }
273272 }
274273
275- TString histTrackName = fConfigHistOutput .fConfigAddTrackHistogram .value ;
274+ TString histTrackName = fConfigHistOutput .cfgAddTrackHistogram .value ;
276275 if (classStr.Contains (" Track" )) {
277- if (fConfigHistOutput .fConfigQA ) {
276+ if (fConfigHistOutput .cfgQA ) {
278277 dqhistograms::DefineHistograms (fHistMan , objArray->At (iclass)->GetName (), " track" , histTrackName);
279278 }
280279 }
281280
282- TString histMCTruthName = fConfigHistOutput .fConfigAddMCTruthHistogram .value ;
281+ TString histMCTruthName = fConfigHistOutput .cfgAddMCTruthHistogram .value ;
283282 if (classStr.Contains (" MCTruth" ) && !classStr.Contains (" Event" )) {
284- if (fConfigHistOutput .fConfigQA ) {
283+ if (fConfigHistOutput .cfgQA ) {
285284 dqhistograms::DefineHistograms (fHistMan , objArray->At (iclass)->GetName (), " mctruth_track" , histMCTruthName);
286285 }
287286 }
@@ -308,9 +307,9 @@ struct Alice3DQTableMaker {
308307 for (auto cut = fTrackCuts .begin (); cut != fTrackCuts .end (); cut++, ibX++) {
309308 histTracks->GetXaxis ()->SetBinLabel (ibX, (*cut)->GetName ());
310309 }
311- constexpr int nV0Tags = 5 ;
312- const char * v0TagNames[nV0Tags ] = {" Photon conversion" , " K^{0}_{s}" , " #Lambda" , " #bar{#Lambda}" , " #Omega" };
313- for (int ibY = 0 ; ibY < nV0Tags ; ibY++) {
310+ constexpr int NV0Tags = 5 ;
311+ const char * v0TagNames[NV0Tags ] = {" Photon conversion" , " K^{0}_{s}" , " #Lambda" , " #bar{#Lambda}" , " #Omega" };
312+ for (int ibY = 0 ; ibY < NV0Tags ; ibY++) {
314313 histTracks->GetXaxis ()->SetBinLabel (fTrackCuts .size () + 1 + ibY, v0TagNames[ibY]);
315314 }
316315 fStatsList ->Add (histTracks);
@@ -334,7 +333,7 @@ struct Alice3DQTableMaker {
334333 VarManager::ResetValues (0 , VarManager::kNVars );
335334
336335 for (const auto & mcCollision : mcCollisions) {
337- VarManager::FillEventAlice3<gkEventMcFillMap >(mcCollision);
336+ VarManager::FillEventAlice3<GkEventMcFillMap >(mcCollision);
338337
339338 fHistMan ->FillHistClass (" Event_MCTruth" , VarManager::fgValues);
340339
@@ -364,8 +363,8 @@ struct Alice3DQTableMaker {
364363 for (const auto & sig : fMCSignals ) {
365364 bool checked = false ;
366365 if constexpr (soa::is_soa_filtered_v<aod::McParticles>) {
367- auto mctrack_raw = mcTracks.rawIteratorAt (mctrack.globalIndex ());
368- checked = sig->CheckSignal (true , mctrack_raw );
366+ auto mcTrackRaw = mcTracks.rawIteratorAt (mctrack.globalIndex ());
367+ checked = sig->CheckSignal (true , mcTrackRaw );
369368 } else {
370369 checked = sig->CheckSignal (true , mctrack);
371370 }
@@ -390,10 +389,10 @@ struct Alice3DQTableMaker {
390389 ++trackCounter;
391390
392391 // fill histograms for each of the signals, if found
393- if (fConfigHistOutput .fConfigQA ) {
392+ if (fConfigHistOutput .cfgQA ) {
394393 VarManager::FillTrackMC (mcTracks, mctrack);
395394 auto mcCollision = mctrack.template mcCollision_as <MyEventsMC>();
396- VarManager::FillEvent<gkEventMcFillMap >(mcCollision);
395+ VarManager::FillEvent<GkEventMcFillMap >(mcCollision);
397396
398397 int j = 0 ;
399398 for (auto signal = fMCSignals .begin (); signal != fMCSignals .end (); ++signal, ++j) {
@@ -418,11 +417,11 @@ struct Alice3DQTableMaker {
418417 (reinterpret_cast <TH2I *>(fStatsList ->At (0 )))->Fill (1.0 , static_cast <float >(o2::aod::evsel::kNsel ));
419418
420419 VarManager::ResetValues (0 , VarManager::kNEventWiseVariables );
421- VarManager::FillEventAlice3<gkEventFillMap >(collision); // extract event information and place it in the fValues array
420+ VarManager::FillEventAlice3<GkEventFillMap >(collision); // extract event information and place it in the fValues array
422421
423422 if (collision.has_mcCollision ()) {
424423 auto mcCollision = collision.template mcCollision_as <MyEventsMC>();
425- VarManager::FillEventAlice3<gkEventMcFillMap >(mcCollision);
424+ VarManager::FillEventAlice3<GkEventMcFillMap >(mcCollision);
426425 }
427426
428427 if (fDoDetailedQA ) {
@@ -477,7 +476,7 @@ struct Alice3DQTableMaker {
477476 trackTempFilterMap = static_cast <uint32_t >(0 );
478477
479478 // Compute track quantities and fill histograms
480- VarManager::FillTrackAlice3<gkTrackFillMapWithCov >(track);
479+ VarManager::FillTrackAlice3<GkTrackFillMapWithCov >(track);
481480
482481 if (fDoDetailedQA ) {
483482 fHistMan ->FillHistClass (" TrackBarrel_BeforeCuts" , VarManager::fgValues);
@@ -487,7 +486,7 @@ struct Alice3DQTableMaker {
487486 for (auto cut = fTrackCuts .begin (); cut != fTrackCuts .end (); cut++, n++) {
488487 if ((*cut)->IsSelected (VarManager::fgValues)) {
489488 trackTempFilterMap |= (static_cast <uint32_t >(1 ) << n);
490- if (fConfigHistOutput .fConfigQA ) {
489+ if (fConfigHistOutput .cfgQA ) {
491490 fHistMan ->FillHistClass (Form (" TrackBarrel_%s" , (*cut)->GetName ()), VarManager::fgValues);
492491 }
493492 (reinterpret_cast <TH1I *>(fStatsList ->At (1 )))->Fill (static_cast <float >(n));
@@ -518,13 +517,13 @@ struct Alice3DQTableMaker {
518517 track.isReconstructed (), track.nSiliconHits (), track.nTPCHits (), track.length (), track.dcaXY (),
519518 track.dcaZ ());
520519
521- if constexpr (static_cast <bool >(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackCov)) {
520+ if constexpr (static_cast <bool >(GkTrackFillMapWithCov & VarManager::ObjTypes::TrackCov)) {
522521 trackBarrelCov (track.cYY (), track.cZY (), track.cZZ (), track.cSnpY (), track.cSnpZ (),
523522 track.cSnpSnp (), track.cTglY (), track.cTglZ (), track.cTglSnp (), track.cTglTgl (),
524523 track.c1PtY (), track.c1PtZ (), track.c1PtSnp (), track.c1PtTgl (), track.c1Pt21Pt2 ());
525524 }
526525
527- if constexpr (static_cast <bool >(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackPID)) {
526+ if constexpr (static_cast <bool >(GkTrackFillMapWithCov & VarManager::ObjTypes::TrackPID)) {
528527
529528 trackPIDTOF (track.tofEventTime (), track.tofEventTimeErr (),
530529 track.nSigmaElectronInnerTOF (), track.nSigmaMuonInnerTOF (), track.nSigmaPionInnerTOF (),
@@ -616,7 +615,7 @@ struct Alice3DQTableMaker {
616615
617616 skimMCParticles (mcParticles, mcCollisions);
618617
619- if constexpr (static_cast <bool >(gkTrackFillMapWithCov )) {
618+ if constexpr (static_cast <bool >(GkTrackFillMapWithCov )) {
620619 fTrackIndexMap .clear ();
621620 trackBasic.reserve (tracksBarrel.size ());
622621 trackBarrel.reserve (tracksBarrel.size ());
@@ -633,7 +632,7 @@ struct Alice3DQTableMaker {
633632 for (auto const & [origIdx, skimIdx] : fCollIndexMap ) {
634633 auto collision = collisions.rawIteratorAt (origIdx);
635634
636- if constexpr (static_cast <bool >(gkTrackFillMapWithCov )) {
635+ if constexpr (static_cast <bool >(GkTrackFillMapWithCov )) {
637636 auto groupedTrackIndices = trackAssocs.sliceBy (trackIndicesPerCollision, origIdx);
638637
639638 skimTracks (collision, tracksBarrel, groupedTrackIndices, mcParticles);
@@ -707,11 +706,11 @@ struct Alice3DQTableMaker {
707706 fullSkimming (collisions, tracksBarrel, trackAssocs, mcCollisions, mcParticles);
708707 }
709708
710- PROCESS_SWITCH (Alice3DQTableMaker , processSkimming, " Build DQ skimmed data model for ALICE3" , true );
709+ PROCESS_SWITCH (DqTableMaker , processSkimming, " Build DQ skimmed data model for ALICE3" , true );
711710};
712711
713712WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
714713{
715714 return WorkflowSpec{
716- adaptAnalysisTask<Alice3DQTableMaker >(cfgc)};
715+ adaptAnalysisTask<DqTableMaker >(cfgc)};
717716}
0 commit comments