Skip to content

Commit 41113f5

Browse files
authored
PWGEM/PhotonMeson: update RZ cut in material budget task (AliceO2Group#4358)
1 parent 916d318 commit 41113f5

File tree

5 files changed

+86
-83
lines changed

5 files changed

+86
-83
lines changed

PWGEM/PhotonMeson/Core/CutsLibrary.cxx

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,6 @@ V0PhotonCut* o2::aod::pcmcuts::GetCut(const char* cutName)
3535
cut->SetRxyRange(1, 90);
3636
return cut;
3737
}
38-
if (!nameStr.compare("qc_lc")) { // qc for late conversion
39-
// for track
40-
cut->SetTrackPtRange(0.02f, 1e10f);
41-
// cut->SetTrackEtaRange(-0.9, +0.9);
42-
cut->SetMinNCrossedRowsTPC(20);
43-
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
44-
cut->SetChi2PerClusterTPC(0.0, 4.0);
45-
cut->SetTPCNsigmaElRange(-3, +3);
46-
cut->SetIsWithinBeamPipe(true);
47-
// for v0
48-
cut->SetV0PtRange(0.1f, 1e10f);
49-
cut->SetV0EtaRange(-0.9, +0.9);
50-
cut->SetMinCosPA(0.99);
51-
cut->SetMaxPCA(1.5);
52-
cut->SetRxyRange(42, 90);
53-
cut->SetAPRange(0.95, 0.01);
54-
return cut;
55-
}
5638
if (!nameStr.compare("qc")) {
5739
// for track
5840
cut->SetTrackPtRange(0.02f, 1e10f);

PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,22 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
192192
list->Add(hs_dilepton_lspp_dca_same);
193193
list->Add(hs_dilepton_lsmm_dca_same);
194194

195+
if (TString(subGroup) == "mix") {
196+
THnSparseF* hs_dilepton_uls_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_uls_same->Clone("hs_dilepton_uls_mix"));
197+
THnSparseF* hs_dilepton_lspp_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lspp_same->Clone("hs_dilepton_lspp_mix"));
198+
THnSparseF* hs_dilepton_lsmm_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lsmm_same->Clone("hs_dilepton_lsmm_mix"));
199+
list->Add(hs_dilepton_uls_mix);
200+
list->Add(hs_dilepton_lspp_mix);
201+
list->Add(hs_dilepton_lsmm_mix);
202+
203+
THnSparseF* hs_dilepton_uls_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_uls_dca_same->Clone("hs_dilepton_uls_dca_mix"));
204+
THnSparseF* hs_dilepton_lspp_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lspp_dca_same->Clone("hs_dilepton_lspp_dca_mix"));
205+
THnSparseF* hs_dilepton_lsmm_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lsmm_dca_same->Clone("hs_dilepton_lsmm_dca_mix"));
206+
list->Add(hs_dilepton_uls_dca_mix);
207+
list->Add(hs_dilepton_lspp_dca_mix);
208+
list->Add(hs_dilepton_lsmm_dca_mix);
209+
}
210+
195211
if (TString(subGroup) == "mc") {
196212
// create phiv template
197213
list->Add(new TH2F("hMvsPhiV_Pi0", "m_{ee} vs. #varphi_{V};#varphi_{V} (rad.);m_{ee} (GeV/c^{2})", 32, 0, 3.2, 100, 0.0f, 0.1f)); // ee from pi0 dalitz decay
@@ -201,45 +217,37 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
201217
list->Add(new TH2F("hMvsOPA_Pi0", "m_{ee} vs. opening angle;opening angle (rad.);m_{ee} (GeV/c^{2})", 100, 0, 0.1, 100, 0.0f, 0.1f)); // ee from pi0 dalitz decay
202218
list->Add(new TH2F("hMvsOPA_Eta", "m_{ee} vs. opening angle;opening angle (rad.);m_{ee} (GeV/c^{2})", 100, 0, 0.1, 100, 0.0f, 0.1f)); // ee from eta dalitz decay
203219
list->Add(new TH2F("hMvsOPA_Photon", "m_{ee} vs. opening angle;opening angle (rad.);m_{ee} (GeV/c^{2})", 100, 0, 0.1, 100, 0.0f, 0.1f)); // ee from photon conversion
204-
205-
} // end of mc
220+
} // end of mc
206221
} else if (TString(histClass).Contains("MuMu")) {
207222
const int ndim = 4; // m, pt, dca, phiv
208223
const int nbins[ndim] = {90, 20, 50, 1};
209224
const double xmin[ndim] = {0.2, 0.0, 0.0, 0.0};
210225
const double xmax[ndim] = {1.1, 2.0, 5.0, 3.2};
211226

212-
hs_dilepton_uls_same = new THnSparseF("hs_dilepton_uls_same", "hs_dilepton_uls;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{xy,#mu#mu} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
227+
hs_dilepton_uls_same = new THnSparseF("hs_dilepton_uls_same", "hs_dilepton_uls;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{#mu#mu}^{3D} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
213228
hs_dilepton_uls_same->Sumw2();
214229
list->Add(hs_dilepton_uls_same);
215230

216-
hs_dilepton_lspp_same = new THnSparseF("hs_dilepton_lspp_same", "hs_dilepton_lspp;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{xy,#mu#mu} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
231+
hs_dilepton_lspp_same = new THnSparseF("hs_dilepton_lspp_same", "hs_dilepton_lspp;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{#mu#mu}^{3D} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
217232
hs_dilepton_lspp_same->Sumw2();
218233
list->Add(hs_dilepton_lspp_same);
219234

220-
hs_dilepton_lsmm_same = new THnSparseF("hs_dilepton_lsmm_same", "hs_dilepton_lsmm;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{xy,#mu#mu} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
235+
hs_dilepton_lsmm_same = new THnSparseF("hs_dilepton_lsmm_same", "hs_dilepton_lsmm;m_{#mu#mu} (GeV/c^{2});p_{T,#mu#mu} (GeV/c);DCA_{#mu#mu}^{3D} (#sigma);#varphi_{V} (rad.);", ndim, nbins, xmin, xmax);
221236
hs_dilepton_lsmm_same->Sumw2();
222237
list->Add(hs_dilepton_lsmm_same);
238+
239+
if (TString(subGroup) == "mix") {
240+
THnSparseF* hs_dilepton_uls_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_uls_same->Clone("hs_dilepton_uls_mix"));
241+
THnSparseF* hs_dilepton_lspp_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lspp_same->Clone("hs_dilepton_lspp_mix"));
242+
THnSparseF* hs_dilepton_lsmm_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lsmm_same->Clone("hs_dilepton_lsmm_mix"));
243+
list->Add(hs_dilepton_uls_mix);
244+
list->Add(hs_dilepton_lspp_mix);
245+
list->Add(hs_dilepton_lsmm_mix);
246+
}
223247
} else {
224248
LOGF(info, "EE or MuMu are supported.");
225249
}
226250

227-
if (TString(subGroup) == "mix") {
228-
THnSparseF* hs_dilepton_uls_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_uls_same->Clone("hs_dilepton_uls_mix"));
229-
THnSparseF* hs_dilepton_lspp_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lspp_same->Clone("hs_dilepton_lspp_mix"));
230-
THnSparseF* hs_dilepton_lsmm_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lsmm_same->Clone("hs_dilepton_lsmm_mix"));
231-
list->Add(hs_dilepton_uls_mix);
232-
list->Add(hs_dilepton_lspp_mix);
233-
list->Add(hs_dilepton_lsmm_mix);
234-
235-
THnSparseF* hs_dilepton_uls_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_uls_dca_same->Clone("hs_dilepton_uls_dca_mix"));
236-
THnSparseF* hs_dilepton_lspp_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lspp_dca_same->Clone("hs_dilepton_lspp_dca_mix"));
237-
THnSparseF* hs_dilepton_lsmm_dca_mix = reinterpret_cast<THnSparseF*>(hs_dilepton_lsmm_dca_same->Clone("hs_dilepton_lsmm_dca_mix"));
238-
list->Add(hs_dilepton_uls_dca_mix);
239-
list->Add(hs_dilepton_lspp_dca_mix);
240-
list->Add(hs_dilepton_lsmm_dca_mix);
241-
}
242-
243251
list->Add(new TH1F("hNpair_uls", "Number of ULS pairs per collision", 101, -0.5f, 100.5f));
244252
list->Add(new TH1F("hNpair_lspp", "Number of LS++ pairs per collision", 101, -0.5f, 100.5f));
245253
list->Add(new TH1F("hNpair_lsmm", "Number of LS-- pairs per collision", 101, -0.5f, 100.5f));
@@ -410,16 +418,16 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
410418
list->Add(new TH1F("hZvtx_after", "vertex z; Zvtx (cm)", 100, -50, +50));
411419
list->Add(new TH1F("hNrecPerMCCollision", "Nrec per mc collisions;N_{rec} collisions per MC collisions", 101, -0.5f, 100.5f));
412420

413-
if (TString(subGroup) == "ConversionStudy") {
414-
list->Add(new TH2F("hPhotonRxy", "conversion point in XY MC;V_{x} (cm);V_{y} (cm)", 2000, -100.0f, 100.0f, 2000, -100.0f, 100.0f));
415-
list->Add(new TH2F("hPhotonRZ", "conversion point in RZ MC;V_{z} (cm);R_{xy} (cm)", 5000, -250.0f, 250.0f, 1000, 0.f, 100.0f));
416-
list->Add(new TH2F("hPhotonPhivsRxy", "conversion point of #varphi vs. R_{xy} MC;#varphi (rad.);R_{xy} (cm);N_{e}", 360, 0.0f, TMath::TwoPi(), 200, 0, 200));
417-
}
418-
419421
if (TString(subGroup) == "Photon") {
420422
list->Add(new TH1F("hPt_Photon", "photon pT;p_{T} (GeV/c)", 2000, 0.0f, 20));
421423
list->Add(new TH1F("hY_Photon", "photon y;rapidity y", 40, -2.0f, 2.0f));
422424
list->Add(new TH1F("hPhi_Photon", "photon #varphi;#varphi (rad.)", 180, 0, TMath::TwoPi()));
425+
list->Add(new TH1F("hPt_ConvertedPhoton", "converted photon pT;p_{T} (GeV/c)", 2000, 0.0f, 20));
426+
list->Add(new TH1F("hY_ConvertedPhoton", "converted photon y;rapidity y", 40, -2.0f, 2.0f));
427+
list->Add(new TH1F("hPhi_ConvertedPhoton", "converted photon #varphi;#varphi (rad.)", 180, 0, TMath::TwoPi()));
428+
list->Add(new TH2F("hPhotonRxy", "conversion point in XY MC;V_{x} (cm);V_{y} (cm)", 2000, -100.0f, 100.0f, 2000, -100.0f, 100.0f));
429+
list->Add(new TH2F("hPhotonRZ", "conversion point in RZ MC;V_{z} (cm);R_{xy} (cm)", 2000, -100.0f, 100.0f, 1000, 0.f, 100.0f));
430+
list->Add(new TH2F("hPhotonPhivsRxy", "conversion point of #varphi vs. R_{xy} MC;#varphi (rad.);R_{xy} (cm);N_{e}", 360, 0.0f, TMath::TwoPi(), 100, 0, 100));
423431
}
424432

425433
if (TString(subGroup) == "Pi0Eta") {
@@ -455,25 +463,25 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
455463
pTgg10[i] = 0.5 * (i - 50) + 5.0; // from 5 to 10 GeV/c, evety 0.5 GeV/c
456464
}
457465
if (TString(histClass) == "tagging_pi0") {
458-
list->Add(new TH2F("hMggPt_Same", "m_{ee#gamma} vs. p_{T,ee};m_{ee#gamma} (GeV/c^{2});p_{T,ee} (GeV/c)", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10));
459-
list->Add(new TH2F("hMggPt_Mixed", "m_{ee#gamma} vs. p_{T,ee};m_{ee#gamma} (GeV/c^{2});p_{T,ee} (GeV/c)", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10));
466+
list->Add(new TH2F("hMggPt_Same", "m_{ee#gamma} vs. p_{T,#gamma};m_{ee#gamma} (GeV/c^{2});p_{T,#gamma} (GeV/c)", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10));
467+
list->Add(new TH2F("hMggPt_Mixed", "m_{ee#gamma} vs. p_{T,#gamma};m_{ee#gamma} (GeV/c^{2});p_{T,#gamma} (GeV/c)", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10));
460468
reinterpret_cast<TH2F*>(list->FindObject("hMggPt_Same"))->Sumw2();
461469
reinterpret_cast<TH2F*>(list->FindObject("hMggPt_Mixed"))->Sumw2();
462470
}
463471
if (TString(histClass) == "tagging_pi0_mc") {
464472
if (TString(subGroup) == "pcm") {
465-
list->Add(new TH1F("hPt_v0photon_Pi0_Primary", "reconstcuted v0 photon from primary #pi^{0};p_{T,ee} (GeV/c);N_{ee}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
473+
list->Add(new TH1F("hPt_v0photon_Pi0_Primary", "reconstcuted v0 photon from primary #pi^{0};p_{T,#gamma} (GeV/c);N_{#gamma}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
466474
reinterpret_cast<TH1F*>(list->FindObject("hPt_v0photon_Pi0_Primary"))->Sumw2();
467-
list->Add(new TH1F("hPt_v0photon_Pi0_FromWD", "reconstcuted v0 photon from #pi^{0} from WD;p_{T,ee} (GeV/c);N_{ee}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
475+
list->Add(new TH1F("hPt_v0photon_Pi0_FromWD", "reconstcuted v0 photon from #pi^{0} from WD;p_{T,#gamma} (GeV/c);N_{#gamma}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
468476
reinterpret_cast<TH1F*>(list->FindObject("hPt_v0photon_Pi0_FromWD"))->Sumw2();
469-
list->Add(new TH1F("hPt_v0photon_Pi0_hs", "reconstcuted v0 photon from #pi^{0} from hadronic shower in materials;p_{T,ee} (GeV/c);N_{ee}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
477+
list->Add(new TH1F("hPt_v0photon_Pi0_hs", "reconstcuted v0 photon from #pi^{0} from hadronic shower in materials;p_{T,#gamma} (GeV/c);N_{#gamma}^{#pi^{0}}", npTgg10 - 1, pTgg10)); // denominator for conditional probability
470478
reinterpret_cast<TH1F*>(list->FindObject("hPt_v0photon_Pi0_hs"))->Sumw2();
471479
} else if (TString(subGroup) == "pair") {
472-
list->Add(new TH2F("hMggPt_Pi0_Primary", "reconstructed m_{ee#gamma} vs. p_{T,ee} from primary #pi^{0};m_{ee#gamma} (GeV/c^{2});p_{T,ee} (GeV/c);N_{ee}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
480+
list->Add(new TH2F("hMggPt_Pi0_Primary", "reconstructed m_{ee#gamma} vs. p_{T,#gamma} from primary #pi^{0};m_{ee#gamma} (GeV/c^{2});p_{T,#gamma} (GeV/c);N_{#gamma}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
473481
reinterpret_cast<TH2F*>(list->FindObject("hMggPt_Pi0_Primary"))->Sumw2();
474-
list->Add(new TH2F("hMggPt_Pi0_FromWD", "reconstructed m_{ee#gamma} vs. p_{T,ee} from #pi^{0} from WD;m_{ee#gamma} (GeV/c^{2});p_{T,ee} (GeV/c);N_{ee}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
482+
list->Add(new TH2F("hMggPt_Pi0_FromWD", "reconstructed m_{ee#gamma} vs. p_{T,#gamma} from #pi^{0} from WD;m_{ee#gamma} (GeV/c^{2});p_{T,#gamma} (GeV/c);N_{#gamma}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
475483
reinterpret_cast<TH2F*>(list->FindObject("hMggPt_Pi0_FromWD"))->Sumw2();
476-
list->Add(new TH2F("hMggPt_Pi0_hs", "reconstructed m_{ee#gamma} vs. p_{T,ee} from #pi^{0} from hadronic shower in material;m_{ee#gamma} (GeV/c^{2});p_{T,ee} (GeV/c);N_{ee}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
484+
list->Add(new TH2F("hMggPt_Pi0_hs", "reconstructed m_{ee#gamma} vs. p_{T,#gamma} from #pi^{0} from hadronic shower in material;m_{ee#gamma} (GeV/c^{2});p_{T,#gamma} (GeV/c);N_{#gamma}^{tagged #pi^{0}}", nmgg04 - 1, mgg04, npTgg10 - 1, pTgg10)); // numerator for conditional probability
477485
reinterpret_cast<TH2F*>(list->FindObject("hMggPt_Pi0_hs"))->Sumw2();
478486
}
479487
}

PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,9 @@ struct PhotonConversionBuilder {
346346
if (rxy_tmp > maxX + margin_r_tpconly) {
347347
return;
348348
}
349+
if (rxy_tmp < abs(xyz[2]) * TMath::Tan(2 * TMath::ATan(TMath::Exp(-max_eta_v0))) - margin_z) {
350+
return; // RZ line cut
351+
}
349352

350353
KFPTrack kfp_track_pos = createKFPTrackFromTrack(pos);
351354
KFPTrack kfp_track_ele = createKFPTrackFromTrack(ele);

PWGEM/PhotonMeson/Tasks/MaterialBudgetMC.cxx

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ struct MaterialBudgetMC {
6060
Configurable<std::string> CentEstimator{"CentEstimator", "FT0M", "centrality estimator"};
6161

6262
Configurable<float> maxY{"maxY", 0.9, "maximum rapidity for generated particles"};
63+
Configurable<float> maxRgen{"maxRgen", 90.f, "maximum radius for generated particles"};
64+
Configurable<float> margin_z_mc{"margin_z_mc", 7.0, "margin for z cut in cm for MC"};
6365
Configurable<std::string> fConfigTagCuts{"cfgTagCuts", "qc", "Comma separated list of V0 photon cuts for tag"};
6466
Configurable<std::string> fConfigProbeCuts{"cfgProbeCuts", "qc,wwire_ib", "Comma separated list of V0 photon cuts for probe"};
6567
Configurable<std::string> fConfigPairCuts{"cfgPairCuts", "nocut", "Comma separated list of pair cuts"};
@@ -159,8 +161,7 @@ struct MaterialBudgetMC {
159161

160162
o2::aod::emphotonhistograms::AddHistClass(fMainList, "Generated");
161163
THashList* list_gen = reinterpret_cast<THashList*>(fMainList->FindObject("Generated"));
162-
o2::aod::emphotonhistograms::DefineHistograms(list_gen, "Generated", "Photon");
163-
o2::aod::emphotonhistograms::DefineHistograms(list_gen, "Generated", "ConversionStudy");
164+
o2::aod::emphotonhistograms::DefineHistograms(list_gen, "Generated", "");
164165
}
165166

166167
void DefineTagCuts()
@@ -394,31 +395,7 @@ struct MaterialBudgetMC {
394395
}
395396
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hCollisionCounter"))->Fill(4.0);
396397
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hZvtx_after"))->Fill(mccollision.posZ());
397-
398-
auto mctracks_coll = mcparticles.sliceBy(perMcCollision, mccollision.globalIndex());
399-
for (auto& mctrack : mctracks_coll) {
400-
if (abs(mctrack.y()) > maxY) {
401-
continue;
402-
}
403-
if (abs(mctrack.pdgCode()) == 22 && IsPhysicalPrimary(mctrack.emreducedmcevent(), mctrack, mcparticles)) {
404-
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPt_Photon"))->Fill(mctrack.pt());
405-
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hY_Photon"))->Fill(mctrack.y());
406-
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPhi_Photon"))->Fill(mctrack.phi());
407-
}
408-
409-
int photonid = IsEleFromPC(mctrack, mcparticles);
410-
if (photonid > 0) {
411-
auto mcphoton = mcparticles.iteratorAt(photonid);
412-
if (!IsPhysicalPrimary(mcphoton.emreducedmcevent(), mcphoton, mcparticles)) {
413-
continue;
414-
}
415-
float rxy = sqrt(pow(mctrack.vx(), 2) + pow(mctrack.vy(), 2));
416-
reinterpret_cast<TH2F*>(fMainList->FindObject("Generated")->FindObject("hPhotonRZ"))->Fill(mctrack.vz(), rxy);
417-
reinterpret_cast<TH2F*>(fMainList->FindObject("Generated")->FindObject("hPhotonRxy"))->Fill(mctrack.vx(), mctrack.vy());
418-
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPhotonPhivsRxy"))->Fill(mctrack.phi(), rxy);
419-
}
420-
}
421-
}
398+
} // end of collision loop
422399
}
423400

424401
void processDummy(MyCollisions::iterator const& collision) {}

PWGEM/PhotonMeson/Tasks/pcmQCMC.cxx

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ struct PCMQCMC {
5858
using MyMCV0Legs = soa::Join<aod::V0Legs, aod::V0LegMCLabels>;
5959

6060
Configurable<std::string> fConfigPCMCuts{"cfgPCMCuts", "analysis,qc,nocut", "Comma separated list of v0 photon cuts"};
61-
Configurable<float> maxY{"maxY", 0.9, "maximum rapidity for generated particles"};
61+
Configurable<float> maxY{"maxY", 0.9f, "maximum rapidity for generated particles"};
62+
Configurable<float> maxRgen{"maxRgen", 90.f, "maximum radius for generated particles"};
63+
Configurable<float> margin_z_mc{"margin_z_mc", 7.0, "margin for z cut in cm for MC"};
6264

6365
std::vector<V0PhotonCut> fPCMCuts;
6466

@@ -271,9 +273,40 @@ struct PCMQCMC {
271273
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPt_Photon"))->Fill(mctrack.pt());
272274
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hY_Photon"))->Fill(mctrack.y());
273275
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPhi_Photon"))->Fill(mctrack.phi());
276+
277+
bool is_ele_fromPC = false;
278+
bool is_pos_fromPC = false;
279+
auto daughtersIds = mctrack.daughtersIds(); // always size = 2. first and last index. one should run loop from the first index to the last index.
280+
for (auto& daughterId : daughtersIds) {
281+
if (daughterId < 0) {
282+
continue;
283+
}
284+
auto daughter = mcparticles.iteratorAt(daughterId); // always electron and positron
285+
float rxy_gen_e = sqrt(pow(daughter.vx(), 2) + pow(daughter.vy(), 2));
286+
if (rxy_gen_e > maxRgen || rxy_gen_e < abs(daughter.vz()) * TMath::Tan(2 * TMath::ATan(TMath::Exp(-maxY))) - margin_z_mc) {
287+
continue;
288+
}
289+
290+
if (daughter.pdgCode() == 11) { // electron from photon conversion
291+
is_ele_fromPC = true;
292+
} else if (daughter.pdgCode() == -11) { // positron from photon conversion
293+
is_pos_fromPC = true;
294+
}
295+
} // end of daughter loop
296+
if (is_ele_fromPC && is_pos_fromPC) { // ele and pos from photon conversion
297+
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPt_ConvertedPhoton"))->Fill(mctrack.pt());
298+
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hY_ConvertedPhoton"))->Fill(mctrack.y());
299+
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPhi_ConvertedPhoton"))->Fill(mctrack.phi());
300+
301+
auto daughter = mcparticles.iteratorAt(daughtersIds[0]); // choose ele or pos.
302+
float rxy_gen_e = sqrt(pow(daughter.vx(), 2) + pow(daughter.vy(), 2));
303+
reinterpret_cast<TH2F*>(fMainList->FindObject("Generated")->FindObject("hPhotonRZ"))->Fill(daughter.vz(), rxy_gen_e);
304+
reinterpret_cast<TH2F*>(fMainList->FindObject("Generated")->FindObject("hPhotonRxy"))->Fill(daughter.vx(), daughter.vy());
305+
reinterpret_cast<TH1F*>(fMainList->FindObject("Generated")->FindObject("hPhotonPhivsRxy"))->Fill(daughter.phi(), rxy_gen_e);
306+
}
274307
}
275-
}
276-
}
308+
} // end of mctrack loop per collision
309+
} // end of collision loop
277310
}
278311

279312
void processDummy(MyCollisions const& collisions)

0 commit comments

Comments
 (0)