@@ -115,6 +115,7 @@ struct ConfCollisionBinning : o2::framework::ConfigurableGroup {
115115
116116struct ConfCollisionQaBinning : o2::framework::ConfigurableGroup {
117117 std::string prefix = std::string(" CollisionQaBinning" );
118+ o2::framework::Configurable<bool > plot2d{" plot2d" , true , " Enable 2d QA histograms" };
118119 o2::framework::ConfigurableAxis vtx{" vtx" , {120 , 0 .f , 12 .f }, " Vertex position binning" };
119120 o2::framework::ConfigurableAxis vtxXY{" vtxXY" , {100 , -1 .f , 1 .f }, " Vertex X/Y binning" };
120121 o2::framework::ConfigurableAxis sphericity{" sphericity" , {100 , 0 .f , 1 .f }, " Spericity Binning" };
@@ -126,52 +127,89 @@ class CollisionHistManager
126127{
127128 public:
128129 CollisionHistManager () = default ;
129- virtual ~CollisionHistManager () = default ;
130+ ~CollisionHistManager () = default ;
130131 // / Initializes histograms for the task
131132 // / \param registry Histogram registry to be passed
132- void init (o2::framework::HistogramRegistry* registry, std::map<ColHist, std::vector<o2::framework::AxisSpec>> Specs)
133+ void init (o2::framework::HistogramRegistry* registry, std::map<ColHist, std::vector<o2::framework::AxisSpec>> const & Specs)
133134 {
134135 mHistogramRegistry = registry;
135136 if constexpr (isFlagSet (mode, modes::Mode::kAnalysis )) {
136- std::string analysisDir = std::string (ColAnalysisDir);
137- mHistogramRegistry ->add (analysisDir + getHistNameV2 (kPosZ , HistTable), getHistDesc (kPosZ , HistTable), getHistType (kPosZ , HistTable), {Specs[kPosZ ]});
138- mHistogramRegistry ->add (analysisDir + getHistNameV2 (kMult , HistTable), getHistDesc (kMult , HistTable), getHistType (kMult , HistTable), {Specs[kMult ]});
139- mHistogramRegistry ->add (analysisDir + getHistNameV2 (kCent , HistTable), getHistDesc (kCent , HistTable), getHistType (kCent , HistTable), {Specs[kCent ]});
140- mHistogramRegistry ->add (analysisDir + getHistNameV2 (kMagField , HistTable), getHistDesc (kMagField , HistTable), getHistType (kMagField , HistTable), {Specs[kMagField ]});
137+ initAnalysis (Specs);
141138 }
142-
143139 if constexpr (isFlagSet (mode, modes::Mode::kQa )) {
144- std::string qaDir = std::string (ColQaDir);
145-
146- mHistogramRegistry ->add (qaDir + getHistNameV2 (kPosX , HistTable), getHistDesc (kPosX , HistTable), getHistType (kPosX , HistTable), {Specs[kPosX ]});
147- mHistogramRegistry ->add (qaDir + getHistNameV2 (kPosY , HistTable), getHistDesc (kPosY , HistTable), getHistType (kPosY , HistTable), {Specs[kPosY ]});
148- mHistogramRegistry ->add (qaDir + getHistNameV2 (kPos , HistTable), getHistDesc (kPos , HistTable), getHistType (kPos , HistTable), {Specs[kPos ]});
149- mHistogramRegistry ->add (qaDir + getHistNameV2 (kSphericity , HistTable), getHistDesc (kSphericity , HistTable), getHistType (kSphericity , HistTable), {Specs[kSphericity ]});
150- mHistogramRegistry ->add (qaDir + getHistNameV2 (kOccupancy , HistTable), getHistDesc (kOccupancy , HistTable), getHistType (kOccupancy , HistTable), {Specs[kOccupancy ]});
151- mHistogramRegistry ->add (qaDir + getHistNameV2 (kPoszVsMult , HistTable), getHistDesc (kPoszVsMult , HistTable), getHistType (kPoszVsMult , HistTable), {Specs[kPoszVsMult ]});
152- mHistogramRegistry ->add (qaDir + getHistNameV2 (kPoszVsCent , HistTable), getHistDesc (kPoszVsCent , HistTable), getHistType (kPoszVsCent , HistTable), {Specs[kPoszVsCent ]});
153- mHistogramRegistry ->add (qaDir + getHistNameV2 (kCentVsMult , HistTable), getHistDesc (kCentVsMult , HistTable), getHistType (kCentVsMult , HistTable), {Specs[kCentVsMult ]});
154- mHistogramRegistry ->add (qaDir + getHistNameV2 (kMultVsSphericity , HistTable), getHistDesc (kMultVsSphericity , HistTable), getHistType (kMultVsSphericity , HistTable), {Specs[kMultVsSphericity ]});
155- mHistogramRegistry ->add (qaDir + getHistNameV2 (kCentVsSphericity , HistTable), getHistDesc (kCentVsSphericity , HistTable), getHistType (kCentVsSphericity , HistTable), {Specs[kCentVsSphericity ]});
140+ initQa (Specs);
156141 }
157- } // namespace o2::analysis::femtounited
142+ }
143+
144+ template <typename T>
145+ void enableOptionalHistograms (T const & ConfBinningQa)
146+ {
147+ mPlot2d = ConfBinningQa.plot2d .value ;
148+ }
149+
150+ template <typename T>
151+ void init (o2::framework::HistogramRegistry* registry, std::map<ColHist, std::vector<o2::framework::AxisSpec>> const & Specs, T const & ConfBinningQa)
152+ {
153+ enableOptionalHistograms (ConfBinningQa);
154+ init (registry, Specs);
155+ }
158156
159157 template <typename T>
160158 void fill (T const & col)
161159 {
162160 if constexpr (isFlagSet (mode, modes::Mode::kAnalysis )) {
163- mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kPosZ , HistTable)), col.posZ ());
164- mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kMult , HistTable)), col.mult ());
165- mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kCent , HistTable)), col.cent ());
166- mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kMagField , HistTable)), col.magField ());
161+ fillAnalysis (col);
167162 }
168-
169163 if constexpr (isFlagSet (mode, modes::Mode::kQa )) {
170- mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPosX , HistTable)), col.posX ());
171- mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPosY , HistTable)), col.posY ());
172- mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPos , HistTable)), std::hypot (col.posX (), col.posY (), col.posZ ()));
173- mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kSphericity , HistTable)), col.sphericity ());
174- mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kOccupancy , HistTable)), col.trackOccupancyInTimeRange ());
164+ fillQa (col);
165+ }
166+ }
167+
168+ private:
169+ void initAnalysis (std::map<ColHist, std::vector<o2::framework::AxisSpec>> const & Specs)
170+ {
171+ std::string analysisDir = std::string (ColAnalysisDir);
172+ mHistogramRegistry ->add (analysisDir + getHistNameV2 (kPosZ , HistTable), getHistDesc (kPosZ , HistTable), getHistType (kPosZ , HistTable), {Specs.at (kPosZ )});
173+ mHistogramRegistry ->add (analysisDir + getHistNameV2 (kMult , HistTable), getHistDesc (kMult , HistTable), getHistType (kMult , HistTable), {Specs.at (kMult )});
174+ mHistogramRegistry ->add (analysisDir + getHistNameV2 (kCent , HistTable), getHistDesc (kCent , HistTable), getHistType (kCent , HistTable), {Specs.at (kCent )});
175+ mHistogramRegistry ->add (analysisDir + getHistNameV2 (kMagField , HistTable), getHistDesc (kMagField , HistTable), getHistType (kMagField , HistTable), {Specs.at (kMagField )});
176+ }
177+
178+ void initQa (std::map<ColHist, std::vector<o2::framework::AxisSpec>> const & Specs)
179+ {
180+ std::string qaDir = std::string (ColQaDir);
181+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kPosX , HistTable), getHistDesc (kPosX , HistTable), getHistType (kPosX , HistTable), {Specs.at (kPosX )});
182+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kPosY , HistTable), getHistDesc (kPosY , HistTable), getHistType (kPosY , HistTable), {Specs.at (kPosY )});
183+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kPos , HistTable), getHistDesc (kPos , HistTable), getHistType (kPos , HistTable), {Specs.at (kPos )});
184+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kSphericity , HistTable), getHistDesc (kSphericity , HistTable), getHistType (kSphericity , HistTable), {Specs.at (kSphericity )});
185+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kOccupancy , HistTable), getHistDesc (kOccupancy , HistTable), getHistType (kOccupancy , HistTable), {Specs.at (kOccupancy )});
186+ if (mPlot2d ) {
187+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kPoszVsMult , HistTable), getHistDesc (kPoszVsMult , HistTable), getHistType (kPoszVsMult , HistTable), {Specs.at (kPoszVsMult )});
188+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kPoszVsCent , HistTable), getHistDesc (kPoszVsCent , HistTable), getHistType (kPoszVsCent , HistTable), {Specs.at (kPoszVsCent )});
189+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kCentVsMult , HistTable), getHistDesc (kCentVsMult , HistTable), getHistType (kCentVsMult , HistTable), {Specs.at (kCentVsMult )});
190+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kMultVsSphericity , HistTable), getHistDesc (kMultVsSphericity , HistTable), getHistType (kMultVsSphericity , HistTable), {Specs.at (kMultVsSphericity )});
191+ mHistogramRegistry ->add (qaDir + getHistNameV2 (kCentVsSphericity , HistTable), getHistDesc (kCentVsSphericity , HistTable), getHistType (kCentVsSphericity , HistTable), {Specs.at (kCentVsSphericity )});
192+ }
193+ }
194+
195+ template <typename T>
196+ void fillAnalysis (T const & col)
197+ {
198+ mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kPosZ , HistTable)), col.posZ ());
199+ mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kMult , HistTable)), col.mult ());
200+ mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kCent , HistTable)), col.cent ());
201+ mHistogramRegistry ->fill (HIST (ColAnalysisDir) + HIST (getHistName (kMagField , HistTable)), col.magField ());
202+ }
203+
204+ template <typename T>
205+ void fillQa (T const & col)
206+ {
207+ mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPosX , HistTable)), col.posX ());
208+ mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPosY , HistTable)), col.posY ());
209+ mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPos , HistTable)), std::hypot (col.posX (), col.posY (), col.posZ ()));
210+ mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kSphericity , HistTable)), col.sphericity ());
211+ mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kOccupancy , HistTable)), col.trackOccupancyInTimeRange ());
212+ if (mPlot2d ) {
175213 mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPoszVsMult , HistTable)), col.posZ (), col.mult ());
176214 mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kPoszVsCent , HistTable)), col.posZ (), col.cent ());
177215 mHistogramRegistry ->fill (HIST (ColQaDir) + HIST (getHistName (kCentVsMult , HistTable)), col.cent (), col.mult ());
@@ -180,8 +218,8 @@ class CollisionHistManager
180218 }
181219 }
182220
183- private:
184221 o2::framework::HistogramRegistry* mHistogramRegistry = nullptr ;
222+ bool mPlot2d = true ;
185223}; // namespace femtounitedcolhistmanager
186224}; // namespace colhistmanager
187225}; // namespace o2::analysis::femto
0 commit comments