@@ -61,6 +61,10 @@ struct fitQa {
6161
6262 /* Common histogram properties - TODO: make configurable */
6363
64+ static constexpr int nBinsNContrib = 10000 ;
65+ static constexpr float nContribMin = -0 .;
66+ static constexpr float nContribMax = 10000 .;
67+
6468 // Time axis limits for FT0 and FV0
6569 // Times are in ns, these give a resolution of 20 ps per bin
6670 static constexpr int nBinsT = 500 ;
@@ -97,9 +101,9 @@ struct fitQa {
97101 static constexpr float vtxMinFDD = -60 .;
98102 static constexpr float vtxMaxFDD = 60 .;
99103
100- static constexpr int nBinsTotAmpl = 10000 ;
104+ static constexpr int nBinsTotAmpl = 30000 ;
101105 static constexpr float totAmplMin = 0 .;
102- static constexpr float totAmplMax = 100000 .;
106+ static constexpr float totAmplMax = 300000 .;
103107
104108 /* Helper functions */
105109 static float cm2ns (float cm) { return cm / o2::constants::physics::LightSpeedCm2NS; }
@@ -113,6 +117,7 @@ struct fitQa {
113117
114118 // Quantities
115119 float pv = -200 .f; // /< Primary vertex position in cm (o2::aod::collision::PosZ)
120+ int nContrib = 0 ; // /< Number of contributors to primary vertex (o2::aod::collision::NumContrib)
116121 float ft0timeA = o2::ft0::RecPoints::sDummyCollissionTime ; // /< FT0-A average time in ns (o2::aod::ft0::TimeA)
117122 float ft0timeC = o2::ft0::RecPoints::sDummyCollissionTime ; // /< FT0-A average time in ns (o2::aod::ft0::TimeA)
118123 float ft0timeACorr = o2::ft0::RecPoints::sDummyCollissionTime ; // /< FT0-A average time in ns corrected PV (o2::aod::ft0::T0ACorrected)
@@ -165,8 +170,9 @@ struct fitQa {
165170 OutputObj<TH1F > ooStats{" Stats" }; // /< Event selection statistics
166171
167172 // Collision
168- OutputObj<TH2F > ooPV{" PV" }; // /< Primary vertex (cm)
169- OutputObj<TH2F > ooPVns{" PVns" }; // /< Primary vertex (ns)
173+ OutputObj<TH2F > ooPV{" collPV" }; // /< Primary vertex (cm)
174+ OutputObj<TH2F > ooPVns{" collPVns" }; // /< Primary vertex (ns)
175+ OutputObj<TH2F > ooNcontrib{" collNcontrib" }; // /< Number of contributors
170176
171177 // FT0
172178 OutputObj<TH2F > ooFT0TimeA{" FT0TimeA" }; // /< FT0A average time (ns)
@@ -210,12 +216,20 @@ struct fitQa {
210216 /* 2D */
211217
212218 // FT0
213- OutputObj<TH3F > ooFT0TimeVsFT0Vtx{" FT0TimeVsFT0Vtx" }; // /< FT0 collision time vs FT0 vertex
214- OutputObj<TH3F > ooPVvsFT0Vtx{" PVvsFT0Vtx" }; // /< PV vs FT0 vertex
219+ OutputObj<TH3F > ooFT0TimeVsFT0Vtx{" FT0TimeVsFT0Vtx" }; // /< FT0 collision time vs FT0 vertex
220+ OutputObj<TH3F > ooPVvsFT0Vtx{" PVvsFT0Vtx" }; // /< PV vs FT0 vertex
221+ OutputObj<TH3F > ooFT0TimeResVsNContrib{" FT0TimeResVsNContrib" }; // /< FT0 time resolution vs number of contributors
222+
223+ // FV0
224+ OutputObj<TH3F > ooPVFV0FT0CVtxDiffNSVsNContrib{" PVFV0FT0CVtxDiffNSVsNContrib" }; // /< PV - FV0-FT0C vertex vs number of contributors
215225
216226 // FDD
217- OutputObj<TH3F > ooFDDTimeVsFDDVtx{" FDDTimeVsFDDVtx" }; // /< FDD collision time vs FDD vertex
218- OutputObj<TH3F > ooPVvsFDDVtx{" PVvsFDDVtx" }; // /< PV vs FDD vertex
227+ OutputObj<TH3F > ooFDDTimeVsFDDVtx{" FDDTimeVsFDDVtx" }; // /< FDD collision time vs FDD vertex
228+ OutputObj<TH3F > ooPVvsFDDVtx{" PVvsFDDVtx" }; // /< PV vs FDD vertex
229+ OutputObj<TH3F > ooPVFDDVtxDiffNSVsNContrib{" PVFDDVtxDiffNSVsNContrib" }; // /< PV - FDD vertex vs number of contributors
230+
231+ // FT0, FV0
232+ OutputObj<TH3F > ooFT0TimeAFV0TimeDiffVsNContrib{" FT0TimeAFV0TimeDiffVsNContrib" }; // /< FT0A average time - FV0 average time vs number of contributors
219233
220234 /* 2D Quantities per X bin */
221235
@@ -235,6 +249,7 @@ struct fitQa {
235249 // / Resetting all AO2D quantities and conditions to default values
236250 void resetVariables () {
237251 pv = -200 .f ;
252+ nContrib = 0 ;
238253 ft0timeA = o2::ft0::RecPoints::sDummyCollissionTime ;
239254 ft0timeC = o2::ft0::RecPoints::sDummyCollissionTime ;
240255 ft0timeACorr = o2::ft0::RecPoints::sDummyCollissionTime ;
@@ -300,6 +315,9 @@ struct fitQa {
300315 ooPV.setObject (new TH2F (ooPV.label .c_str (), " Primary vertex;Primary vertex z position (cm)" , nBinsVtx, vtxMin, vtxMax, conditions.size (), 0 , conditions.size ()));
301316 objs[&ooPV] = [&]() { return pv; };
302317
318+ ooNcontrib.setObject (new TH2F (ooNcontrib.label .c_str (), " Number of contributors to primary vertex;Number of contributors to primary vertex" , nBinsNContrib, nContribMin, nContribMax, conditions.size (), 0 , conditions.size ()));
319+ objs[&ooNcontrib] = [&]() { return nContrib; };
320+
303321 ooFT0TimeA.setObject (new TH2F (ooFT0TimeA.label .c_str (), " FT0A time;$\\ langle t_{\\ text{FT0A}} \\ rangle \\ text{ (ns)}$" , nBinsT, tMin, tMax, conditions.size (), 0 , conditions.size ()));
304322 objs[&ooFT0TimeA] = [&]() { return ft0timeA; };
305323
@@ -420,12 +438,24 @@ struct fitQa {
420438 ooPVvsFT0Vtx.setObject (new TH3F (ooPVvsFT0Vtx.label .c_str (), " FT0 vertex vs PV;$(\\ langle t_{\\ text{FT0C}} \\ rangle - \\ langle t_{\\ text{FT0A}} \\ rangle)/2 \\ text{ (cm)}$;Primary vertex z position (cm)" , nBinsVtx, vtxMin, vtxMax, nBinsVtx, vtxMin, vtxMax, conditions.size (), 0 , conditions.size ()));
421439 objs2D[&ooPVvsFT0Vtx] = [&]() { return std::make_pair (objs[&ooFT0Vtx](), objs[&ooPV]()); };
422440
441+ ooFT0TimeResVsNContrib.setObject (new TH3F (ooFT0TimeResVsNContrib.label .c_str (), " FT0 time resolution vs number of contributors;Number of contributors to primary vertex;$\\ text{PV} - (\\ langle t_{\\ text{FT0C}} \\ rangle - \\ langle t_{\\ text{FT0A}} \\ rangle)/2 \\ text{ (ns)}$" , nBinsNContrib / 10 , nContribMin, nContribMax, nBinsTRes, tResMin, tResMax, conditions.size (), 0 , conditions.size ()));
442+ objs2D[&ooFT0TimeResVsNContrib] = [&]() { return std::make_pair (objs[&ooNcontrib](), objs[&ooFT0TimeRes]()); };
443+
444+ ooPVFV0FT0CVtxDiffNSVsNContrib.setObject (new TH3F (ooPVFV0FT0CVtxDiffNSVsNContrib.label .c_str (), " PV - FV0-FT0C vertex vs number of contributors;Number of contributors to primary vertex;$\\ text{PV} - (\\ langle t_{\\ text{FT0C}} \\ rangle - \\ langle t_{\\ text{FV0}} \\ rangle)/2 \\ text{ (ns)}$" , nBinsNContrib / 10 , nContribMin, nContribMax, nBinsTRes, tResMin, tResMax, conditions.size (), 0 , conditions.size ()));
445+ objs2D[&ooPVFV0FT0CVtxDiffNSVsNContrib] = [&]() { return std::make_pair (objs[&ooNcontrib](), objs[&ooPVFV0FT0CVtxDiffNS]()); };
446+
423447 ooFDDTimeVsFDDVtx.setObject (new TH3F (ooFDDTimeVsFDDVtx.label .c_str (), " FDD collision time vs FDD vertex;$(\\ langle t_{\\ text{FDDC}} \\ rangle - \\ langle t_{\\ text{FDDA}} \\ rangle)/2 \\ text{ (cm)}$;$(\\ langle t_{\\ text{FDDA}} \\ rangle + \\ langle t_{\\ text{FDDC}} \\ rangle)/2 \\ text{ (ns)}$" , nBinsVtxFDD, vtxMinFDD, vtxMaxFDD, nBinsTFDD, tMinFDD, tMaxFDD, conditions.size (), 0 , conditions.size ()));
424448 objs2D[&ooFDDTimeVsFDDVtx] = [&]() { return std::make_pair (objs[&ooFDDVtx](), objs[&ooFDDTime]()); };
425449
426450 ooPVvsFDDVtx.setObject (new TH3F (ooPVvsFDDVtx.label .c_str (), " PV vs FDD vertex;$(\\ langle t_{\\ text{FDDC}} \\ rangle - \\ langle t_{\\ text{FDDA}} \\ rangle)/2 \\ text{ (cm)}$;Primary vertex z position (cm)" , nBinsVtxFDD, vtxMinFDD, vtxMaxFDD, nBinsVtx, vtxMin, vtxMax, conditions.size (), 0 , conditions.size ()));
427451 objs2D[&ooPVvsFDDVtx] = [&]() { return std::make_pair (objs[&ooFDDVtx](), objs[&ooPV]()); };
428452
453+ ooPVFDDVtxDiffNSVsNContrib.setObject (new TH3F (ooPVFDDVtxDiffNSVsNContrib.label .c_str (), " PV - FDD vertex vs number of contributors;Number of contributors to primary vertex;$\\ text{PV} - (\\ langle t_{\\ text{FDDC}} \\ rangle - \\ langle t_{\\ text{FDDA}} \\ rangle)/2 \\ text{ (ns)}$" , nBinsNContrib / 10 , nContribMin, nContribMax, nBinsTResFDD, tResMinFDD, tResMaxFDD, conditions.size (), 0 , conditions.size ()));
454+ objs2D[&ooPVFDDVtxDiffNSVsNContrib] = [&]() { return std::make_pair (objs[&ooNcontrib](), objs[&ooPVFDDVtxDiffNS]()); };
455+
456+ ooFT0TimeAFV0TimeDiffVsNContrib.setObject (new TH3F (ooFT0TimeAFV0TimeDiffVsNContrib.label .c_str (), " FT0A time - FV0 time vs number of contributors;Number of contributors to primary vertex;$\\ langle t_{\\ text{FT0A}} \\ rangle - \\ langle t_{\\ text{FV0}} \\ rangle \\ text{ (ns)}$" , nBinsNContrib / 10 , nContribMin, nContribMax, nBinsTRes, tResMin, tResMax, conditions.size (), 0 , conditions.size ()));
457+ objs2D[&ooFT0TimeAFV0TimeDiffVsNContrib] = [&]() { return std::make_pair (objs[&ooNcontrib](), objs[&ooFT0TimeAFV0TimeDiff]()); };
458+
429459 // 2D quantities per X bin
430460
431461 ooFT0AmplPerCh.setObject (new TH3F (ooFT0AmplPerCh.label .c_str (), " FT0 channel amplitudes;Channel ID;Amplitude (ADC)" , nChFT0, 0 , static_cast <float >(nChFT0), nADC, 0 .f , static_cast <float >(nADC), conditions.size (), 0 , conditions.size ()));
@@ -471,6 +501,7 @@ struct fitQa {
471501 hasFDD = collision.has_foundFDD ();
472502
473503 pv = collision.posZ ();
504+ nContrib = collision.numContrib ();
474505 ft0timeACorr = collision.t0ACorrected ();
475506 ft0timeCCorr = collision.t0ACorrected ();
476507 ft0timeRes = collision.t0resolution ();
0 commit comments