@@ -64,6 +64,7 @@ struct DalitzEEQCMC {
6464 Configurable<float > cfgCentMin{" cfgCentMin" , 0 , " min. centrality" };
6565 Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
6666 Configurable<float > maxY{" maxY" , 0.9 , " maximum rapidity for reconstructed particles" };
67+ Configurable<bool > cfgRequireTrueAssociation{" cfgRequireTrueAssociation" , false , " flag to require true mc collision association" };
6768
6869 EMPhotonEventCut fEMEventCut ;
6970 struct : ConfigurableGroup {
@@ -159,18 +160,29 @@ struct DalitzEEQCMC {
159160 fRegistry .add (" Track/hQoverPt" , " q/pT;q/p_{T} (GeV/c)^{-1}" , kTH1F , {{400 , -20 , 20 }}, false );
160161 fRegistry .add (" Track/hEtaPhi" , " #eta vs. #varphi;#varphi (rad.);#eta" , kTH2F , {{180 , 0 , 2 * M_PI}, {40 , -2 .0f , 2 .0f }}, false );
161162 fRegistry .add (" Track/hDCAxyz" , " DCA xy vs. z;DCA_{xy} (cm);DCA_{z} (cm)" , kTH2F , {{200 , -1 .0f , 1 .0f }, {200 , -1 .0f , 1 .0f }}, false );
163+ fRegistry .add (" Track/hDCAxyzSigma" , " DCA xy vs. z;DCA_{xy} (#sigma);DCA_{z} (#sigma)" , kTH2F , {{200 , -10 .0f , 10 .0f }, {200 , -10 .0f , 10 .0f }}, false );
164+ fRegistry .add (" Track/hDCAxyRes_Pt" , " DCA_{xy} resolution vs. pT;p_{T} (GeV/c);DCA_{xy} resolution (#mum)" , kTH2F , {{200 , 0 , 10 }, {500 , 0 ., 500 }}, false );
165+ fRegistry .add (" Track/hDCAzRes_Pt" , " DCA_{z} resolution vs. pT;p_{T} (GeV/c);DCA_{z} resolution (#mum)" , kTH2F , {{200 , 0 , 10 }, {500 , 0 ., 500 }}, false );
162166 fRegistry .add (" Track/hNclsTPC" , " number of TPC clusters" , kTH1F , {{161 , -0.5 , 160.5 }}, false );
163167 fRegistry .add (" Track/hNcrTPC" , " number of TPC crossed rows" , kTH1F , {{161 , -0.5 , 160.5 }}, false );
164168 fRegistry .add (" Track/hChi2TPC" , " chi2/number of TPC clusters" , kTH1F , {{100 , 0 , 10 }}, false );
169+ fRegistry .add (" Track/hTPCNcr2Nf" , " TPC Ncr/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
170+ fRegistry .add (" Track/hTPCNcls2Nf" , " TPC Ncls/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
171+ fRegistry .add (" Track/hTPCNclsShared" , " TPC Ncls shared/Ncls;p_{T} (GeV/c);N_{cls}^{shared}/N_{cls} in TPC" , kTH2F , {{1000 , 0 , 10 }, {100 , 0 , 1 }}, false );
172+
165173 fRegistry .add (" Track/hTPCdEdx" , " TPC dE/dx;p_{in} (GeV/c);TPC dE/dx (a.u.)" , kTH2F , {{1000 , 0 , 10 }, {200 , 0 , 200 }}, false );
166174 fRegistry .add (" Track/hTPCNsigmaEl" , " TPC n sigma el;p_{in} (GeV/c);n #sigma_{e}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
167175 fRegistry .add (" Track/hTPCNsigmaPi" , " TPC n sigma pi;p_{in} (GeV/c);n #sigma_{#pi}^{TPC}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
168- fRegistry .add (" Track/hTPCNcr2Nf" , " TPC Ncr/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
169- fRegistry .add (" Track/hTPCNcls2Nf" , " TPC Ncls/Nfindable" , kTH1F , {{200 , 0 , 2 }}, false );
176+
170177 fRegistry .add (" Track/hNclsITS" , " number of ITS clusters" , kTH1F , {{8 , -0.5 , 7.5 }}, false );
171178 fRegistry .add (" Track/hChi2ITS" , " chi2/number of ITS clusters" , kTH1F , {{100 , 0 , 10 }}, false );
172179 fRegistry .add (" Track/hITSClusterMap" , " ITS cluster map" , kTH1F , {{128 , -0.5 , 127.5 }}, false );
173180 fRegistry .add (" Track/hMeanClusterSizeITS" , " mean cluster size ITS;<cluster size> on ITS #times cos(#lambda)" , kTH1F , {{32 , 0 , 16 }}, false );
181+
182+ fRegistry .add (" Track/hChi2TOF" , " chi2 of TOF" , kTH1F , {{100 , 0 , 10 }}, false );
183+ fRegistry .add (" Track/hTOFbeta" , " TOF beta;p_{pv} (GeV/c);#beta" , kTH2F , {{1000 , 0 , 10 }, {240 , 0 , 1.2 }}, false );
184+ fRegistry .add (" Track/hTOFNsigmaEl" , " TOF n sigma el;p_{pv} (GeV/c);n #sigma_{e}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
185+ fRegistry .add (" Track/hTOFNsigmaPi" , " TOF n sigma pi;p_{pv} (GeV/c);n #sigma_{#pi}^{TOF}" , kTH2F , {{1000 , 0 , 10 }, {100 , -5 , +5 }}, false );
174186 }
175187
176188 void init (InitContext&)
@@ -300,7 +312,7 @@ struct DalitzEEQCMC {
300312 }
301313
302314 template <typename TCollision, typename TTrack1, typename TTrack2, typename TMCParticles>
303- bool fillTruePairInfo (TCollision const &, TTrack1 const & t1, TTrack2 const & t2, TMCParticles const & mcparticles)
315+ bool fillTruePairInfo (TCollision const & collision , TTrack1 const & t1, TTrack2 const & t2, TMCParticles const & mcparticles)
304316 {
305317 if (!fDileptonCut .IsSelectedTrack (t1) || !fDileptonCut .IsSelectedTrack (t2)) {
306318 return false ;
@@ -314,8 +326,7 @@ struct DalitzEEQCMC {
314326 auto t2mc = t2.template emmcparticle_as <TMCParticles>();
315327
316328 int mother_id = FindLF (t1mc, t2mc, mcparticles);
317- int hfee_type = IsHF (t1mc, t2mc, mcparticles);
318- if (mother_id < 0 && hfee_type < 0 ) {
329+ if (mother_id < 0 ) {
319330 return false ;
320331 }
321332 ROOT::Math::PtEtaPhiMVector v1 (t1.pt (), t1.eta (), t1.phi (), o2::constants::physics::MassElectron);
@@ -328,6 +339,10 @@ struct DalitzEEQCMC {
328339
329340 if (mother_id > -1 && t1mc.pdgCode () * t2mc.pdgCode () < 0 ) {
330341 auto mcmother = mcparticles.iteratorAt (mother_id);
342+ if (cfgRequireTrueAssociation && (mcmother.emmceventId () != collision.emmceventId ())) {
343+ return false ;
344+ }
345+
331346 if (mcmother.isPhysicalPrimary () || mcmother.producedByGenerator ()) {
332347 if ((t1mc.isPhysicalPrimary () || t1mc.producedByGenerator ()) && (t2mc.isPhysicalPrimary () || t2mc.producedByGenerator ())) {
333348 switch (abs (mcmother.pdgCode ())) {
@@ -405,18 +420,25 @@ struct DalitzEEQCMC {
405420 fRegistry .fill (HIST (" Track/hQoverPt" ), track.sign () / track.pt ());
406421 fRegistry .fill (HIST (" Track/hEtaPhi" ), track.phi (), track.eta ());
407422 fRegistry .fill (HIST (" Track/hDCAxyz" ), track.dcaXY (), track.dcaZ ());
423+ fRegistry .fill (HIST (" Track/hDCAxyzSigma" ), track.dcaXY () / sqrt (track.cYY ()), track.dcaZ () / sqrt (track.cZZ ()));
424+ fRegistry .fill (HIST (" Track/hDCAxyRes_Pt" ), track.pt (), sqrt (track.cYY ()) * 1e+4 ); // convert cm to um
425+ fRegistry .fill (HIST (" Track/hDCAzRes_Pt" ), track.pt (), sqrt (track.cZZ ()) * 1e+4 ); // convert cm to um
408426 fRegistry .fill (HIST (" Track/hNclsITS" ), track.itsNCls ());
409427 fRegistry .fill (HIST (" Track/hNclsTPC" ), track.tpcNClsFound ());
410428 fRegistry .fill (HIST (" Track/hNcrTPC" ), track.tpcNClsCrossedRows ());
411429 fRegistry .fill (HIST (" Track/hTPCNcr2Nf" ), track.tpcCrossedRowsOverFindableCls ());
412430 fRegistry .fill (HIST (" Track/hTPCNcls2Nf" ), track.tpcFoundOverFindableCls ());
431+ fRegistry .fill (HIST (" Track/hTPCNclsShared" ), track.pt (), track.tpcFractionSharedCls ());
413432 fRegistry .fill (HIST (" Track/hChi2TPC" ), track.tpcChi2NCl ());
414433 fRegistry .fill (HIST (" Track/hChi2ITS" ), track.itsChi2NCl ());
415434 fRegistry .fill (HIST (" Track/hITSClusterMap" ), track.itsClusterMap ());
416- fRegistry .fill (HIST (" Track/hMeanClusterSizeITS" ), track.meanClusterSizeITS () * std::cos (std::atan (track.tgl ())));
435+ fRegistry .fill (HIST (" Track/hMeanClusterSizeITS" ), track.p (), track. meanClusterSizeITS () * std::cos (std::atan (track.tgl ())));
417436 fRegistry .fill (HIST (" Track/hTPCdEdx" ), track.tpcInnerParam (), track.tpcSignal ());
418437 fRegistry .fill (HIST (" Track/hTPCNsigmaEl" ), track.tpcInnerParam (), track.tpcNSigmaEl ());
419438 fRegistry .fill (HIST (" Track/hTPCNsigmaPi" ), track.tpcInnerParam (), track.tpcNSigmaPi ());
439+ fRegistry .fill (HIST (" Track/hTOFNsigmaEl" ), track.p (), track.tofNSigmaEl ());
440+ fRegistry .fill (HIST (" Track/hTOFNsigmaPi" ), track.p (), track.tofNSigmaPi ());
441+ fRegistry .fill (HIST (" Track/hTOFbeta" ), track.p (), track.beta ());
420442 }
421443
422444 std::vector<int > used_trackIds;
@@ -509,8 +531,7 @@ struct DalitzEEQCMC {
509531 }
510532
511533 int mother_id = FindLF (t1, t2, mcparticles);
512- int hfee_type = IsHF (t1, t2, mcparticles);
513- if (mother_id < 0 && hfee_type < 0 ) {
534+ if (mother_id < 0 ) {
514535 continue ;
515536 }
516537 ROOT::Math::PtEtaPhiMVector v1 (t1.pt (), t1.eta (), t1.phi (), o2::constants::physics::MassElectron);
0 commit comments