@@ -49,11 +49,12 @@ struct Alice3DecayerQa {
4949 ConfigurableAxis axisDaughtersIds{" axisDaughtersIds" , {1000 , 0 , 999 }, " DaughtersIds axis for QA histograms" };
5050 ConfigurableAxis axisWeight{" axisWeight" , {2 , 0 , 1 }, " Weight axis for QA histograms" };
5151 ConfigurableAxis axisPos{" axisPos" , {1000 , 0 , 999 }, " Position axis for QA histograms" };
52+ ConfigurableAxis axisEventTime{" axisEventTime" , {1000 , -1e-3 , 1e-3 }, " Event time axis for QA histograms" };
53+ ConfigurableAxis axisProductionTime{" axisProductionTime" , {1000 , 0 , 10 }, " Particle production time axis for QA histograms" };
5254 ConfigurableAxis axisPhi{" axisPhi" , {720 , -360 , 360 }, " Phi axis for QA histograms" };
5355 ConfigurableAxis axisEta{" axisEta" , {80 , -4 , 4 }, " Eta axis for QA histograms" };
5456 ConfigurableAxis axisRapidity{" axisRapidity" , {80 , -4 , 4 }, " Rapidity axis for QA histograms" };
55- ConfigurableAxis axisIsAlive{" axisIsAlive" , {2 , 0 , 1 }, " IsAlive axis for QA histograms" };
56- ConfigurableAxis axisIsPrimary{" axisIsPrimary" , {2 , 0 , 1 }, " IsPrimary axis for QA histograms" };
57+ ConfigurableAxis axisImpactParameter{" axisImpactParameter" , {200 , 0 , 20 }, " Impact parameter axis for QA histograms" };
5758 ConfigurableAxis axisPt{" axisPt" , {VARIABLE_WIDTH , 0 .0f , 0 .1f , 0 .2f , 0 .3f , 0 .4f , 0 .5f , 0 .6f , 0 .7f , 0 .8f , 0 .9f , 1 .0f , 1 .1f , 1 .2f , 1 .3f , 1 .4f , 1 .5f , 1 .6f , 1 .7f , 1 .8f , 1 .9f , 2 .0f , 2 .2f , 2 .4f , 2 .6f , 2 .8f , 3 .0f , 3 .2f , 3 .4f , 3 .6f , 3 .8f , 4 .0f , 4 .4f , 4 .8f , 5 .2f , 5 .6f , 6 .0f , 6 .5f , 7 .0f , 7 .5f , 8 .0f , 9 .0f , 10 .0f , 11 .0f , 12 .0f , 13 .0f , 14 .0f , 15 .0f , 17 .0f , 19 .0f , 21 .0f , 23 .0f , 25 .0f , 30 .0f , 35 .0f , 40 .0f , 50 .0f }, " pt axis for QA histograms" };
5859 ConfigurableAxis axisRadiusLog{"axisRadiusLog", {VARIABLE_WIDTH, 0.0f, 0.01f, 0.0104713f, 0.0109648f, 0.0114815f, 0.0120226f, 0.0125893f, 0.0131826f, 0.0138038f, 0.0144544f, 0.0151356f, 0.0158489f, 0.0165959f, 0.017378f, 0.018197f, 0.0190546f, 0.0199526f, 0.020893f, 0.0218776f, 0.0229087f, 0.0239883f, 0.0251189f, 0.0263027f, 0.0275423f, 0.0288403f, 0.0301995f, 0.0316228f, 0.0331131f, 0.0346737f, 0.0363078f, 0.0380189f, 0.0398107f, 0.0416869f, 0.0436516f, 0.0457088f, 0.047863f, 0.0501187f, 0.0524807f, 0.0549541f, 0.057544f, 0.060256f, 0.0630957f, 0.0660693f, 0.0691831f, 0.0724436f, 0.0758578f, 0.0794328f, 0.0831764f, 0.0870964f, 0.0912011f, 0.0954993f, 0.1f, 0.104713f, 0.109648f, 0.114815f, 0.120226f, 0.125893f, 0.131826f, 0.138038f, 0.144544f, 0.151356f, 0.158489f, 0.165959f, 0.17378f, 0.18197f, 0.190546f, 0.199526f, 0.20893f, 0.218776f, 0.229087f, 0.239883f, 0.251189f, 0.263027f, 0.275423f, 0.288403f, 0.301995f, 0.316228f, 0.331131f, 0.346737f, 0.363078f, 0.380189f, 0.398107f, 0.416869f, 0.436516f, 0.457088f, 0.47863f, 0.501187f, 0.524807f, 0.549541f, 0.57544f, 0.60256f, 0.630957f, 0.660693f, 0.691831f, 0.724436f, 0.758578f, 0.794328f, 0.831764f, 0.870964f, 0.912011f, 0.954993f, 1.0f, 1.04713f, 1.09648f, 1.14815f, 1.20226f, 1.25893f, 1.31826f, 1.38038f, 1.44544f, 1.51356f, 1.58489f, 1.65959f, 1.7378f, 1.8197f, 1.90546f, 1.99526f, 2.0893f, 2.18776f, 2.29087f, 2.39883f, 2.51189f, 2.63027f, 2.75423f, 2.88403f, 3.01995f, 3.16228f, 3.31131f, 3.46737f, 3.63078f, 3.80189f, 3.98107f, 4.16869f, 4.36516f, 4.57088f, 4.7863f, 5.01187f, 5.24807f, 5.49541f, 5.7544f, 6.0256f, 6.30957f, 6.60693f, 6.91831f, 7.24436f, 7.58578f, 7.94328f, 8.31764f, 8.70964f, 9.12011f, 9.54993f, 10.0f, 10.4713f, 10.9648f, 11.4815f, 12.0226f, 12.5893f, 13.1826f, 13.8038f, 14.4544f, 15.1356f, 15.8489f, 16.5959f, 17.378f, 18.197f, 19.0546f, 19.9526f, 20.893f, 21.8776f, 22.9087f, 23.9883f, 25.1189f, 26.3027f, 27.5423f, 28.8403f, 30.1995f, 31.6228f, 33.1131f, 34.6737f, 36.3078f, 38.0189f, 39.8107f, 41.6869f, 43.6516f, 45.7088f, 47.863f, 50.1187f, 52.4807f, 54.9541f, 57.544f, 60.256f, 63.0957f, 66.0693f, 69.1831f, 72.4436f, 75.8578f, 79.4328f, 83.1764f, 87.0964f, 91.2011f, 95.4993f, 100.0f}, "Radial axis"};
5960 ConfigurableAxis axisPtLog{"axisPtLog", {VARIABLE_WIDTH, 0.0f, 0.001f, 0.00104713f, 0.00109648f, 0.00114815f, 0.00120226f, 0.00125893f, 0.00131826f, 0.00138038f, 0.00144544f, 0.00151356f, 0.00158489f, 0.00165959f, 0.0017378f, 0.0018197f, 0.00190546f, 0.00199526f, 0.0020893f, 0.00218776f, 0.00229087f, 0.00239883f, 0.00251189f, 0.00263027f, 0.00275423f, 0.00288403f, 0.00301995f, 0.00316228f, 0.00331131f, 0.00346737f, 0.00363078f, 0.00380189f, 0.00398107f, 0.00416869f, 0.00436516f, 0.00457088f, 0.0047863f, 0.00501187f, 0.00524807f, 0.00549541f, 0.0057544f, 0.0060256f, 0.00630957f, 0.00660693f, 0.00691831f, 0.00724436f, 0.00758578f, 0.00794328f, 0.00831764f, 0.00870964f, 0.00912011f, 0.00954993f, 0.01f, 0.0104713f, 0.0109648f, 0.0114815f, 0.0120226f, 0.0125893f, 0.0131826f, 0.0138038f, 0.0144544f, 0.0151356f, 0.0158489f, 0.0165959f, 0.017378f, 0.018197f, 0.0190546f, 0.0199526f, 0.020893f, 0.0218776f, 0.0229087f, 0.0239883f, 0.0251189f, 0.0263027f, 0.0275423f, 0.0288403f, 0.0301995f, 0.0316228f, 0.0331131f, 0.0346737f, 0.0363078f, 0.0380189f, 0.0398107f, 0.0416869f, 0.0436516f, 0.0457088f, 0.047863f, 0.0501187f, 0.0524807f, 0.0549541f, 0.057544f, 0.060256f, 0.0630957f, 0.0660693f, 0.0691831f, 0.0724436f, 0.0758578f, 0.0794328f, 0.0831764f, 0.0870964f, 0.0912011f, 0.0954993f, 0.1f, 0.104713f, 0.109648f, 0.114815f, 0.120226f, 0.125893f, 0.131826f, 0.138038f, 0.144544f, 0.151356f, 0.158489f, 0.165959f, 0.17378f, 0.18197f, 0.190546f, 0.199526f, 0.20893f, 0.218776f, 0.229087f, 0.239883f, 0.251189f, 0.263027f, 0.275423f, 0.288403f, 0.301995f, 0.316228f, 0.331131f, 0.346737f, 0.363078f, 0.380189f, 0.398107f, 0.416869f, 0.436516f, 0.457088f, 0.47863f, 0.501187f, 0.524807f, 0.549541f, 0.57544f, 0.60256f, 0.630957f, 0.660693f, 0.691831f, 0.724436f, 0.758578f, 0.794328f, 0.831764f, 0.870964f, 0.912011f, 0.954993f, 1.0f, 1.04713f, 1.09648f, 1.14815f, 1.20226f, 1.25893f, 1.31826f, 1.38038f, 1.44544f, 1.51356f, 1.58489f, 1.65959f, 1.7378f, 1.8197f, 1.90546f, 1.99526f, 2.0893f, 2.18776f, 2.29087f, 2.39883f, 2.51189f, 2.63027f, 2.75423f, 2.88403f, 3.01995f, 3.16228f, 3.31131f, 3.46737f, 3.63078f, 3.80189f, 3.98107f, 4.16869f, 4.36516f, 4.57088f, 4.7863f, 5.01187f, 5.24807f, 5.49541f, 5.7544f, 6.0256f, 6.30957f, 6.60693f, 6.91831f, 7.24436f, 7.58578f, 7.94328f, 8.31764f, 8.70964f, 9.12011f, 9.54993f, 10.0f}, "pt axis for QA histograms"};
@@ -79,7 +80,18 @@ struct Alice3DecayerQa {
7980
8081 void init (o2::framework::InitContext&)
8182 {
82- // QA with Table entries
83+ // QA with collision table entries
84+ histos.add (" McCollision/hBCId" , " hBCId" , kTH1D , {axes.axisCollisionId });
85+ histos.add (" McCollision/hGeneratorsID" , " hGeneratorsID" , kTH1D , {axes.axisCollisionId });
86+ histos.add (" McCollision/hPosX" , " hPosX" , kTH1D , {axes.axisPos });
87+ histos.add (" McCollision/hPosY" , " hPosY" , kTH1D , {axes.axisPos });
88+ histos.add (" McCollision/hPosZ" , " hPosZ" , kTH1D , {axes.axisPos });
89+ histos.add (" McCollision/hT" , " hT" , kTH1D , {axes.axisEventTime });
90+ histos.add (" McCollision/hWeight" , " hWeight" , kTH1D , {axes.axisWeight });
91+ histos.add (" McCollision/hImpactParameter" , " hImpactParameter" , kTH1D , {axes.axisImpactParameter });
92+ histos.add (" McCollision/hRventPlaneAngle" , " hRventPlaneAngle" , kTH1D , {axes.axisPhi });
93+
94+ // QA with particle table entries
8395 histos.add (" McParticle/hElPt" , " hElPt" , kTH1D , {axes.axisPt });
8496 histos.add (" McParticle/hMuPt" , " hMuPt" , kTH1D , {axes.axisPt });
8597 histos.add (" McParticle/hPiPt" , " hPiPt" , kTH1D , {axes.axisPt });
@@ -95,7 +107,7 @@ struct Alice3DecayerQa {
95107 histos.add (" McParticle/hVx" , " hVx" , kTH1D , {axes.axisPos });
96108 histos.add (" McParticle/hVy" , " hVy" , kTH1D , {axes.axisPos });
97109 histos.add (" McParticle/hVz" , " hVz" , kTH1D , {axes.axisPos });
98- histos.add (" McParticle/hVt" , " hVt" , kTH1D , {axes.axisPos });
110+ histos.add (" McParticle/hVt" , " hVt" , kTH1D , {axes.axisProductionTime });
99111 histos.add (" McParticle/hPhi" , " hPhi" , kTH1D , {axes.axisPhi });
100112 histos.add (" McParticle/hEta" , " hEta" , kTH1D , {axes.axisEta });
101113 histos.add (" McParticle/hRapidity" , " hRapidity" , kTH1D , {axes.axisRapidity });
@@ -118,6 +130,11 @@ struct Alice3DecayerQa {
118130 histos.add (" XiMinus/hV0DauDecayRadius" , " hV0DauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})" , kTH2D , {axes.axisRadiusLog , axes.axisPtLog });
119131 histos.add (" XiMinus/hPosDauDecayRadius" , " hPosDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})" , kTH2D , {axes.axisRadiusLog , axes.axisPtLog });
120132 histos.add (" XiMinus/hNegDauDecayRadius" , " hNegDauDecayRadius;Decay radius 2D;#it{p}_{T} (GeV/#it{c})" , kTH2D , {axes.axisRadiusLog , axes.axisPtLog });
133+ histos.add (" XiMinus/hXiVt" , " hXiVt;Production time (ns)" , kTH1D , {axes.axisProductionTime });
134+ histos.add (" XiMinus/hBachVt" , " hBachVt;Production time (ns)" , kTH1D , {axes.axisProductionTime });
135+ histos.add (" XiMinus/hV0Vt" , " hV0Vt;Production time (ns)" , kTH1D , {axes.axisProductionTime });
136+ histos.add (" XiMinus/hPosVt" , " hPosVt;Production time (ns)" , kTH1D , {axes.axisProductionTime });
137+ histos.add (" XiMinus/hNegVt" , " hNegVt;Production time (ns)" , kTH1D , {axes.axisProductionTime });
121138
122139 auto hCheckHasK0SDecayed = histos.add <TH1 >(" K0S/hHasDecayed" , " hHasDecayed" , kTH1D , {{2 , -0.5 , 1.5 }});
123140 hCheckHasK0SDecayed->GetXaxis ()->SetBinLabel (1 , " No" );
@@ -132,6 +149,17 @@ struct Alice3DecayerQa {
132149
133150 void process (const aod::McCollision& collision, const aod::McParticles& particles)
134151 {
152+ // Collision Qa
153+ histos.fill (HIST (" McCollision/hBCId" ), collision.bcId ());
154+ histos.fill (HIST (" McCollision/hGeneratorsID" ), collision.generatorsID ());
155+ histos.fill (HIST (" McCollision/hPosX" ), collision.posX ());
156+ histos.fill (HIST (" McCollision/hPosY" ), collision.posY ());
157+ histos.fill (HIST (" McCollision/hPosZ" ), collision.posZ ());
158+ histos.fill (HIST (" McCollision/hT" ), collision.t ());
159+ histos.fill (HIST (" McCollision/hWeight" ), collision.weight ());
160+ histos.fill (HIST (" McCollision/hImpactParameter" ), collision.impactParameter ());
161+ histos.fill (HIST (" McCollision/hRventPlaneAngle" ), collision.eventPlaneAngle ());
162+
135163 // Group with collision
136164 auto trueElectronsGrouped = trueElectrons->sliceByCached (aod::mcparticle::mcCollisionId, collision.globalIndex (), cache);
137165 auto trueMuonsGrouped = trueMuons->sliceByCached (aod::mcparticle::mcCollisionId, collision.globalIndex (), cache);
@@ -142,6 +170,35 @@ struct Alice3DecayerQa {
142170 auto trueLambdasGrouped = trueLambdas->sliceByCached (aod::mcparticle::mcCollisionId, collision.globalIndex (), cache);
143171 auto trueXiMinusGrouped = trueXiMinus->sliceByCached (aod::mcparticle::mcCollisionId, collision.globalIndex (), cache);
144172
173+ // All Particles
174+ for (const auto & particle : particles) {
175+ histos.fill (HIST (" McParticle/hCollisionId" ), particle.mcCollisionId ());
176+ histos.fill (HIST (" McParticle/hPdgCode" ), particle.pdgCode ());
177+ histos.fill (HIST (" McParticle/hStatusCode" ), particle.statusCode ());
178+ histos.fill (HIST (" McParticle/hFlags" ), particle.flags ());
179+ histos.fill (HIST (" McParticle/hWeight" ), particle.weight ());
180+ histos.fill (HIST (" McParticle/hVx" ), particle.vx ());
181+ histos.fill (HIST (" McParticle/hVy" ), particle.vy ());
182+ histos.fill (HIST (" McParticle/hVz" ), particle.vz ());
183+ histos.fill (HIST (" McParticle/hVt" ), particle.vt ());
184+ histos.fill (HIST (" McParticle/hPhi" ), particle.phi ());
185+ histos.fill (HIST (" McParticle/hEta" ), particle.eta ());
186+ histos.fill (HIST (" McParticle/hRapidity" ), particle.y ());
187+ histos.fill (HIST (" McParticle/hPx" ), particle.px ());
188+ histos.fill (HIST (" McParticle/hPy" ), particle.py ());
189+ histos.fill (HIST (" McParticle/hPz" ), particle.pz ());
190+ histos.fill (HIST (" McParticle/hPt" ), particle.pt ());
191+ histos.fill (HIST (" McParticle/hP" ), particle.p ());
192+ histos.fill (HIST (" McParticle/hE" ), particle.e ());
193+ for (const auto & motherParticleId : particle.mothersIds ()) {
194+ histos.fill (HIST (" McParticle/hMothersIds" ), motherParticleId);
195+ }
196+ for (const auto & dauParticleId : particle.daughtersIds ()) {
197+ histos.fill (HIST (" McParticle/hDaughtersIds" ), dauParticleId);
198+ }
199+ }
200+
201+ // Particles processed in OTF
145202 for (const auto & particle : trueElectronsGrouped) {
146203 histos.fill (HIST (" McParticle/hElPt" ), particle.pt ());
147204 }
@@ -157,6 +214,8 @@ struct Alice3DecayerQa {
157214 for (const auto & particle : trueProtonsGrouped) {
158215 histos.fill (HIST (" McParticle/hPrPt" ), particle.pt ());
159216 }
217+
218+ // Check topology from decayer
160219 for (const auto & particle : trueK0ShortGrouped) {
161220 histos.fill (HIST (" K0S/hGeneratedPt" ), particle.pt ());
162221 if (particle.has_daughters ()) {
@@ -181,6 +240,8 @@ struct Alice3DecayerQa {
181240 histos.fill (HIST (" K0S/hHasDecayed" ), 0 );
182241 }
183242 }
243+
244+ // Check topology from decayer
184245 for (const auto & particle : trueLambdasGrouped) {
185246 histos.fill (HIST (" Lambda/hGeneratedPt" ), particle.pt ());
186247 if (particle.has_daughters ()) {
@@ -205,8 +266,11 @@ struct Alice3DecayerQa {
205266 histos.fill (HIST (" Lambda/hHasDecayed" ), 0 );
206267 }
207268 }
269+
270+ // Check topology from decayer
208271 for (const auto & particle : trueXiMinusGrouped) {
209272 histos.fill (HIST (" XiMinus/hGeneratedPt" ), particle.pt ());
273+ histos.fill (HIST (" XiMinus/hXiVt" ), particle.vt ());
210274 if (particle.has_daughters ()) {
211275 histos.fill (HIST (" XiMinus/hHasDecayed" ), 1 );
212276 auto daughters = particle.daughtersIds ();
@@ -223,6 +287,8 @@ struct Alice3DecayerQa {
223287 auto & bachelor = dau0.pdgCode () == PDG_t::kLambda0 ? dau1 : dau0;
224288 histos.fill (HIST (" XiMinus/hBachDauDecayRadius" ), radius (bachelor), bachelor.pt ());
225289 histos.fill (HIST (" XiMinus/hV0DauDecayRadius" ), radius (v0), v0.pt ());
290+ histos.fill (HIST (" XiMinus/hBachVt" ), v0.vt ());
291+ histos.fill (HIST (" XiMinus/hV0Vt" ), bachelor.vt ());
226292
227293 // Lambda -> p pi-
228294 if (v0.has_daughters ()) {
@@ -237,6 +303,8 @@ struct Alice3DecayerQa {
237303 auto & negative = v0dau0.pdgCode () == PDG_t::kProton ? v0dau1 : v0dau0;
238304 histos.fill (HIST (" XiMinus/hPosDauDecayRadius" ), radius (positive), positive.pt ());
239305 histos.fill (HIST (" XiMinus/hNegDauDecayRadius" ), radius (negative), negative.pt ());
306+ histos.fill (HIST (" XiMinus/hPosVt" ), positive.vt ());
307+ histos.fill (HIST (" XiMinus/hNegVt" ), negative.vt ());
240308 }
241309 }
242310 }
@@ -246,33 +314,6 @@ struct Alice3DecayerQa {
246314 histos.fill (HIST (" XiMinus/hHasDecayed" ), 0 );
247315 }
248316 }
249-
250- for (const auto & particle : particles) {
251- histos.fill (HIST (" McParticle/hCollisionId" ), particle.mcCollisionId ());
252- histos.fill (HIST (" McParticle/hPdgCode" ), particle.pdgCode ());
253- histos.fill (HIST (" McParticle/hStatusCode" ), particle.statusCode ());
254- histos.fill (HIST (" McParticle/hFlags" ), particle.flags ());
255- histos.fill (HIST (" McParticle/hWeight" ), particle.weight ());
256- histos.fill (HIST (" McParticle/hVx" ), particle.vx ());
257- histos.fill (HIST (" McParticle/hVy" ), particle.vy ());
258- histos.fill (HIST (" McParticle/hVz" ), particle.vz ());
259- histos.fill (HIST (" McParticle/hVt" ), particle.vt ());
260- histos.fill (HIST (" McParticle/hPhi" ), particle.phi ());
261- histos.fill (HIST (" McParticle/hEta" ), particle.eta ());
262- histos.fill (HIST (" McParticle/hRapidity" ), particle.y ());
263- histos.fill (HIST (" McParticle/hPx" ), particle.px ());
264- histos.fill (HIST (" McParticle/hPy" ), particle.py ());
265- histos.fill (HIST (" McParticle/hPz" ), particle.pz ());
266- histos.fill (HIST (" McParticle/hPt" ), particle.pt ());
267- histos.fill (HIST (" McParticle/hP" ), particle.p ());
268- histos.fill (HIST (" McParticle/hE" ), particle.e ());
269- for (const auto & motherParticleId : particle.mothersIds ()) {
270- histos.fill (HIST (" McParticle/hMothersIds" ), motherParticleId);
271- }
272- for (const auto & dauParticleId : particle.daughtersIds ()) {
273- histos.fill (HIST (" McParticle/hDaughtersIds" ), dauParticleId);
274- }
275- }
276317 }
277318
278319 PROCESS_SWITCH (Alice3DecayerQa, process, " fill MC-with-dau histograms" , true );
0 commit comments