1414// / \file alice3-dq-table-maker.cxx
1515// / \brief DQ table maker for ALICE 3
1616
17- #include < map>
18- #include < memory>
19- #include < string>
20- #include < unordered_map>
21- #include < utility>
22- #include < vector>
23-
2417#include " PWGDQ/Core/AnalysisCompositeCut.h"
2518#include " PWGDQ/Core/AnalysisCut.h"
2619#include " PWGDQ/Core/CutsLibrary.h"
3326#include " PWGDQ/DataModel/ReducedInfoTables.h"
3427#include " PWGDQ/DataModel/ReducedTablesAlice3.h"
3528
36- #include " ALICE3/DataModel/OTFTOF.h"
37- #include " ALICE3/DataModel/OTFRICH.h"
3829#include " ALICE3/DataModel/OTFPIDTrk.h"
30+ #include " ALICE3/DataModel/OTFRICH.h"
31+ #include " ALICE3/DataModel/OTFTOF.h"
3932#include " ALICE3/DataModel/collisionAlice3.h"
4033#include " ALICE3/DataModel/tracksAlice3.h"
41-
4234#include " Common/CCDB/TriggerAliases.h"
4335#include " Common/DataModel/Centrality.h"
4436#include " Common/DataModel/CollisionAssociationTables.h"
6759#include " ReconstructionDataFormats/VtxTrackIndex.h"
6860#include " ReconstructionDataFormats/VtxTrackRef.h"
6961
70- #include " TList.h"
7162#include " THashList.h"
63+ #include " TList.h"
64+
65+ #include < map>
66+ #include < memory>
67+ #include < string>
68+ #include < unordered_map>
69+ #include < utility>
70+ #include < vector>
7271
7372using namespace o2 ;
7473using namespace o2 ::framework;
7574using namespace o2 ::framework::expressions;
7675using namespace o2 ::aod;
7776
78- using MyBarrelTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA,
79- aod::TracksCov, aod::TracksAlice3, aod::TracksExtraA3,
77+ using MyBarrelTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA,
78+ aod::TracksCov, aod::TracksAlice3, aod::TracksExtraA3,
8079 aod::UpgradeTofs, aod::UpgradeRichs, aod::UpgradeRichSignals,
81- aod::UpgradeTrkPids, aod::UpgradeTrkPidSignals,
80+ aod::UpgradeTrkPids, aod::UpgradeTrkPidSignals,
8281 aod::McTrackLabels>;
8382
8483using MyEvents = soa::Join<aod::Collisions, aod::CollisionsAlice3, aod::McCollisionLabels>;
@@ -90,7 +89,7 @@ constexpr static uint32_t gkEventMcFillMap = VarManager::ObjTypes::CollisionMC;
9089constexpr static uint32_t gkTrackFillMapWithCov = VarManager::ObjTypes::Track | VarManager::ObjTypes::TrackExtra | VarManager::ObjTypes::TrackDCA | VarManager::ObjTypes::TrackSelection | VarManager::ObjTypes::TrackCov | VarManager::ObjTypes::TrackPID;
9190
9291struct Alice3DQTableMaker {
93-
92+
9493 Produces<ReducedA3MCEvents> eventMC;
9594 Produces<ReducedA3MCTracks> trackMC;
9695
@@ -105,12 +104,11 @@ struct Alice3DQTableMaker {
105104 Produces<ReducedA3TracksBarrelCov> trackBarrelCov;
106105 Produces<ReducedA3TracksAssoc> trackBarrelAssoc;
107106 Produces<ReducedA3TracksBarrelLabels> trackBarrelLabels;
108-
107+
109108 Produces<ReducedA3PIDTOF> trackPIDTOF;
110109 Produces<ReducedA3PIDRich> trackPIDRich;
111110 Produces<ReducedA3PIDRichSignals> trackPIDRichSig;
112111 Produces<ReducedA3PIDOT> trackPIDOT;
113-
114112
115113 OutputObj<THashList> fOutputList {" output" };
116114 OutputObj<TList> fStatsList {" Statistics" }; // ! skimming statistics
@@ -150,16 +148,16 @@ struct Alice3DQTableMaker {
150148 std::map<uint64_t , int > fLabelsMap ;
151149 std::map<uint64_t , int > fLabelsMapReversed ;
152150 std::map<uint64_t , uint16_t > fMCFlags ;
153- std::map<uint32_t , uint32_t > fCollIndexMap ; // key: old collision index, value: skimmed collision index
154- std::map<uint32_t , uint32_t > fTrackIndexMap ; // key: old track global index, value: new track global index
151+ std::map<uint32_t , uint32_t > fCollIndexMap ; // key: old collision index, value: skimmed collision index
152+ std::map<uint32_t , uint32_t > fTrackIndexMap ; // key: old track global index, value: new track global index
155153
156154 void init (InitContext& context)
157155 {
158156 bool isProcessSkimmingEnabled = context.mOptions .get <bool >(" processSkimming" );
159157
160- if (!isProcessSkimmingEnabled)
158+ if (!isProcessSkimmingEnabled)
161159 LOG (fatal) << " No process function was enabled ALICE 3 TableMaker" ;
162-
160+
163161 VarManager::SetDefaultVarNames (); // Important that this is called before DefineCuts() !!!
164162
165163 DefineCuts ();
@@ -177,17 +175,17 @@ struct Alice3DQTableMaker {
177175 if (fDoDetailedQA ) {
178176 histClasses += " Event_BeforeCuts;" ;
179177 }
180-
178+
181179 if (fConfigHistOutput .fConfigQA ) {
182180 histClasses += " Event_AfterCuts;" ;
183181 histClasses += " Event_MCTruth;" ;
184182 }
185183
186- if (isProcessSkimmingEnabled) {
184+ if (isProcessSkimmingEnabled) {
187185 if (fDoDetailedQA ) {
188186 histClasses += " TrackBarrel_BeforeCuts;" ;
189187 }
190-
188+
191189 if (fConfigHistOutput .fConfigQA ) {
192190 for (auto & cut : fTrackCuts ) {
193191 histClasses += Form (" TrackBarrel_%s;" , cut->GetName ());
@@ -219,7 +217,7 @@ struct Alice3DQTableMaker {
219217 }
220218 }
221219
222- for (auto & mcIt : fMCSignals ) {
220+ for (auto & mcIt : fMCSignals ) {
223221 if (fConfigHistOutput .fConfigQA ) {
224222 histClasses += Form (" MCTruth_%s;" , mcIt->GetName ());
225223 }
@@ -233,10 +231,9 @@ struct Alice3DQTableMaker {
233231 }
234232
235233 DefineHistograms (histClasses);
236-
234+
237235 TString addHistsStr = fConfigHistOutput .fConfigAddJSONHistograms .value ;
238- if (fConfigHistOutput .fConfigQA && addHistsStr != " " )
239- {
236+ if (fConfigHistOutput .fConfigQA && addHistsStr != " " ) {
240237 dqhistograms::AddHistogramsFromJSON (fHistMan , addHistsStr.Data ());
241238 }
242239
@@ -281,7 +278,7 @@ struct Alice3DQTableMaker {
281278 void DefineHistograms (TString histClasses)
282279 {
283280 std::unique_ptr<TObjArray> objArray (histClasses.Tokenize (" ;" ));
284- for (Int_t iclass = 0 ; iclass < objArray->GetEntries (); ++iclass) {
281+ for (int iclass = 0 ; iclass < objArray->GetEntries (); ++iclass) {
285282 TString classStr = objArray->At (iclass)->GetName ();
286283 if (fConfigHistOutput .fConfigQA ) {
287284 fHistMan ->AddHistClass (classStr.Data ());
@@ -434,7 +431,7 @@ struct Alice3DQTableMaker {
434431
435432 // Loop over collisions
436433 for (const auto & collision : collisions) {
437-
434+
438435 (reinterpret_cast <TH2I*>(fStatsList ->At (0 )))->Fill (1.0 , static_cast <float >(o2::aod::evsel::kNsel ));
439436
440437 VarManager::ResetValues (0 , VarManager::kNEventWiseVariables );
@@ -444,7 +441,7 @@ struct Alice3DQTableMaker {
444441 auto mcCollision = collision.template mcCollision_as <MyEventsMC>();
445442 VarManager::FillEventAlice3<gkEventMcFillMap>(mcCollision);
446443 }
447-
444+
448445 if (fDoDetailedQA ) {
449446 fHistMan ->FillHistClass (" Event_BeforeCuts" , VarManager::fgValues);
450447 }
@@ -459,9 +456,9 @@ struct Alice3DQTableMaker {
459456 // Fill historams after event cuts
460457 fHistMan ->FillHistClass (" Event_AfterCuts" , VarManager::fgValues);
461458
462- event (collision.posX (), collision.posY (), collision.posZ (), collision.numContrib (),
459+ event (collision.posX (), collision.posY (), collision.posZ (), collision.numContrib (),
463460 collision.collisionTime (), collision.collisionTimeRes (), collision.multDensity ());
464-
461+
465462 eventVtxCov (collision.covXX (), collision.covXY (), collision.covXZ (), collision.covYY (), collision.covYZ (), collision.covZZ (), collision.chi2 ());
466463 eventMClabels (collision.mcCollisionId (), collision.mcMask ());
467464 eventInfo (collision.globalIndex ());
@@ -489,7 +486,7 @@ struct Alice3DQTableMaker {
489486 for (const auto & assoc : assocs) {
490487
491488 auto track = assoc.template track_as <MyBarrelTracks>();
492-
489+
493490 if (fCollIndexMap .find (track.collisionId ()) == fCollIndexMap .end ()) {
494491 continue ;
495492 }
@@ -534,12 +531,12 @@ struct Alice3DQTableMaker {
534531
535532 // NOTE: trackBarrelInfo stores the index of the collision as in AO2D (for use in some cases where the analysis on skims is done
536533 // in workflows where the original AO2Ds are also present)
537- // trackBarrelInfo(track.collisionId(), collision.posX(), collision.posY(), collision.posZ(), track.globalIndex());
534+ // trackBarrelInfo(track.collisionId(), collision.posX(), collision.posY(), collision.posZ(), track.globalIndex());
538535 trackBasic (reducedEventIdx, trackFilteringTag, track.pt (), track.eta (), track.phi (), track.sign (), 0 );
539536
540537 trackBarrel (track.x (), track.alpha (), track.y (), track.z (), track.snp (), track.tgl (), track.signed1Pt (),
541538 track.flags (), track.itsClusterMap (), track.itsChi2NCl (),
542- track.isReconstructed (), track.nSiliconHits (), track.nTPCHits (), track.length (), track.dcaXY (),
539+ track.isReconstructed (), track.nSiliconHits (), track.nTPCHits (), track.length (), track.dcaXY (),
543540 track.dcaZ ());
544541
545542 if constexpr (static_cast <bool >(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackCov)) {
@@ -549,26 +546,26 @@ struct Alice3DQTableMaker {
549546 }
550547
551548 if constexpr (static_cast <bool >(gkTrackFillMapWithCov & VarManager::ObjTypes::TrackPID)) {
552-
549+
553550 trackPIDTOF (track.tofEventTime (), track.tofEventTimeErr (),
554551 track.nSigmaElectronInnerTOF (), track.nSigmaMuonInnerTOF (), track.nSigmaPionInnerTOF (),
555- track.nSigmaKaonInnerTOF (), track.nSigmaProtonInnerTOF (), track.nSigmaDeuteronInnerTOF (),
552+ track.nSigmaKaonInnerTOF (), track.nSigmaProtonInnerTOF (), track.nSigmaDeuteronInnerTOF (),
556553 track.nSigmaTritonInnerTOF (), track.nSigmaHelium3InnerTOF (), track.nSigmaAlphaInnerTOF (),
557554 track.innerTOFTrackTimeReco (), track.innerTOFTrackLengthReco (),
558555 track.nSigmaElectronOuterTOF (), track.nSigmaMuonOuterTOF (), track.nSigmaPionOuterTOF (),
559- track.nSigmaKaonOuterTOF (), track.nSigmaProtonOuterTOF (), track.nSigmaDeuteronOuterTOF (),
556+ track.nSigmaKaonOuterTOF (), track.nSigmaProtonOuterTOF (), track.nSigmaDeuteronOuterTOF (),
560557 track.nSigmaTritonOuterTOF (), track.nSigmaHelium3OuterTOF (), track.nSigmaAlphaOuterTOF (),
561558 track.outerTOFTrackTimeReco (), track.outerTOFTrackLengthReco ());
562559
563560 trackPIDRich (track.nSigmaElectronRich (), track.nSigmaMuonRich (), track.nSigmaPionRich (),
564561 track.nSigmaKaonRich (), track.nSigmaProtonRich (), track.nSigmaDeuteronRich (),
565562 track.nSigmaTritonRich (), track.nSigmaHelium3Rich (), track.nSigmaAlphaRich ());
566-
567- trackPIDRichSig (track.hasSig (), track.hasSigInGas (),
563+
564+ trackPIDRichSig (track.hasSig (), track.hasSigInGas (),
568565 track.hasSigEl (), track.hasSigMu (), track.hasSigPi (),
569566 track.hasSigKa (), track.hasSigPr (), track.hasSigDe (),
570567 track.hasSigTr (), track.hasSigHe3 (), track.hasSigAl ());
571-
568+
572569 trackPIDOT (track.timeOverThresholdBarrel (),
573570 track.nSigmaTrkEl (), track.nSigmaTrkMu (), track.nSigmaTrkPi (),
574571 track.nSigmaTrkKa (), track.nSigmaTrkPr (), track.nSigmaTrkDe (),
@@ -626,7 +623,7 @@ struct Alice3DQTableMaker {
626623 Preslice<MyBarrelTracks> perCollisionTracks = aod::track::collisionId;
627624
628625 void fullSkimming (MyEvents const & collisions,
629- MyBarrelTracks const & tracksBarrel, aod::TrackAssoc const & trackAssocs,
626+ MyBarrelTracks const & tracksBarrel, aod::TrackAssoc const & trackAssocs,
630627 MyEventsMC const & mcCollisions, aod::McParticles const & mcParticles)
631628 {
632629 eventMC.reserve (mcCollisions.size ());
@@ -637,10 +634,10 @@ struct Alice3DQTableMaker {
637634 eventVtxCov.reserve (collisions.size ());
638635 eventMClabels.reserve (collisions.size ());
639636 eventInfo.reserve (collisions.size ());
640-
637+
641638 skimCollisions (collisions);
642639
643- if (fCollIndexMap .size () == 0 )
640+ if (fCollIndexMap .size () == 0 )
644641 return ;
645642
646643 skimMCParticles (mcParticles, mcCollisions);
@@ -660,8 +657,7 @@ struct Alice3DQTableMaker {
660657
661658 if (fCollIndexMap .size () > 0 ) {
662659
663- for (auto const & [origIdx, skimIdx] : fCollIndexMap )
664- {
660+ for (auto const & [origIdx, skimIdx] : fCollIndexMap ) {
665661 auto collision = collisions.rawIteratorAt (origIdx);
666662
667663 if constexpr (static_cast <bool >(gkTrackFillMapWithCov)) {
@@ -685,8 +681,8 @@ struct Alice3DQTableMaker {
685681 mothers.push_back (fLabelsMap .find (m)->second );
686682 }
687683 } else {
688- cout << " Mother label (" << m << " ) exceeds the McParticles size (" << mcParticles.size () << " )" << endl ;
689- cout << " Check the MC generator" << endl ;
684+ LOG (warn) << " Mother label (" << m << " ) exceeds the McParticles size (" << mcParticles.size () << " )" ;
685+ LOG (warn) << " Check the MC generator" ;
690686 }
691687 }
692688 }
@@ -702,8 +698,8 @@ struct Alice3DQTableMaker {
702698 daughters.push_back (fLabelsMap .find (d)->second );
703699 }
704700 } else {
705- cout << " Daughter label (" << d << " ) exceeds the McParticles size (" << mcParticles.size () << " )" << endl ;
706- cout << " Check the MC generator" << endl ;
701+ LOG (warn) << " Daughter label (" << d << " ) exceeds the McParticles size (" << mcParticles.size () << " )" ;
702+ LOG (warn) << " Check the MC generator" ;
707703 }
708704 }
709705 }
@@ -732,7 +728,7 @@ struct Alice3DQTableMaker {
732728 }
733729
734730 void processSkimming (MyEvents const & collisions,
735- MyBarrelTracks const & tracksBarrel, aod::TrackAssoc const & trackAssocs,
731+ MyBarrelTracks const & tracksBarrel, aod::TrackAssoc const & trackAssocs,
736732 MyEventsMC const & mcCollisions, aod::McParticles const & mcParticles)
737733 {
738734 fullSkimming (collisions, tracksBarrel, trackAssocs, mcCollisions, mcParticles);
@@ -744,6 +740,5 @@ struct Alice3DQTableMaker {
744740WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
745741{
746742 return WorkflowSpec{
747- adaptAnalysisTask<Alice3DQTableMaker>(cfgc)
748- };
749- }
743+ adaptAnalysisTask<Alice3DQTableMaker>(cfgc)};
744+ }
0 commit comments