Skip to content

Commit fe060dc

Browse files
authored
PWGEM/PhotonMeson: update pcb to remove bad quality photons (#4431)
1 parent f2ef06b commit fe060dc

6 files changed

Lines changed: 54 additions & 36 deletions

File tree

PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -502,13 +502,13 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
502502
const int nm_hbt = 6;
503503
double m_hbt[nm_hbt] = {0.0, 0.14, 0.5, 1.1, 2.0, 2.7};
504504

505-
const int ndim = 9; // m1, m2, kt, qinv, qlong_cms, qout_cms, qside_cms, qt_cms, qlong_lcms
506-
const int nbins[ndim] = {nm_hbt - 1, nm_hbt - 1, 10, 40, 80, 80, 80, 40, 80};
507-
const double xmin[ndim] = {0.0, 0.0, 0.0, 0.0, -0.4, -0.4, -0.4, 0.0, -0.4};
508-
const double xmax[ndim] = {2.7, 2.7, 1.0, 0.4, +0.4, +0.4, +0.4, +0.4, +0.4};
505+
const int ndim = 8; // m1, m2, kt, qinv, qlong_cms, qout_cms, qside_cms, qlong_lcms
506+
const int nbins[ndim] = {nm_hbt - 1, nm_hbt - 1, 10, 40, 80, 80, 80, 80};
507+
const double xmin[ndim] = {0.0, 0.0, 0.0, 0.0, -0.4, -0.4, -0.4, -0.4};
508+
const double xmax[ndim] = {2.7, 2.7, 1.0, 0.4, +0.4, +0.4, +0.4, +0.4};
509509

510-
THnSparseF* hs_q_same = new THnSparseF("hs_q_same", "hs_q_same;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{T}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax);
511-
THnSparseF* hs_q_mix = new THnSparseF("hs_q_mix", "hs_q_mix;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{T}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax);
510+
THnSparseF* hs_q_same = new THnSparseF("hs_q_same", "hs_q_same;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax);
511+
THnSparseF* hs_q_mix = new THnSparseF("hs_q_mix", "hs_q_mix;m_{1} (GeV/c^{2});m_{2} (GeV/c^{2});k_{T} (GeV/c);q_{inv} (GeV/c);q_{long}^{CMS} (GeV/c);q_{out}^{CMS} (GeV/c);q_{side}^{CMS} (GeV/c);q_{long}^{LCMS} (GeV/c);", ndim, nbins, xmin, xmax);
512512
hs_q_same->Sumw2();
513513
hs_q_mix->Sumw2();
514514
hs_q_same->SetBinEdges(0, m_hbt);

PWGEM/PhotonMeson/TableProducer/photonconversionbuilder.cxx

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,11 @@ struct PhotonConversionBuilder {
9090
Configurable<float> maxX{"maxX", 83.1, "max X for track IU"};
9191

9292
// v0 cuts
93-
Configurable<float> min_v0cospa{"min_v0cospa", 0.95, "V0 CosPA"}; // double -> N.B. dcos(x)/dx = 0 at x=0)
94-
Configurable<float> max_dcav0dau{"max_dcav0dau", 3.0, "max distance btween 2 legs"};
93+
Configurable<float> min_v0cospa_tpconly{"min_v0cospa_tpconly", 0.95, "min V0 CosPA to V0s with TPConly tracks"}; // double -> N.B. dcos(x)/dx = 0 at x=0)
94+
Configurable<float> min_v0cospa_its{"min_v0cospa_its", 0.99, "min V0 CosPA to V0s with ITs hits"}; // double -> N.B. dcos(x)/dx = 0 at x=0)
95+
Configurable<float> max_dcav0dau_tpconly{"max_dcav0dau_tpconly", 3.0, "max distance btween 2 legs to V0s with TPConly tracks"};
96+
Configurable<float> max_dcav0dau_its{"max_dcav0dau_its", 0.5, "max distance btween 2 legs to V0s with ITS hits"};
97+
Configurable<float> max_dcav0dau_itsibss{"max_dcav0dau_itsibss", 1.0, "max distance btween 2 legs to V0s with ITS hits on ITSib SS"};
9598
Configurable<float> min_v0radius{"min_v0radius", 1.0, "min v0 radius"};
9699
Configurable<float> margin_r_its{"margin_r_its", 3.0, "margin for r cut in cm"};
97100
Configurable<float> margin_r_tpconly{"margin_r_tpconly", 7.0, "margin for r cut in cm"};
@@ -103,7 +106,7 @@ struct PhotonConversionBuilder {
103106
Configurable<float> max_eta_v0{"max_eta_v0", 0.9, "max eta for v0 photons at SV"};
104107
Configurable<float> kfMassConstrain{"kfMassConstrain", -1.f, "mass constrain for the KFParticle mother particle"};
105108
Configurable<float> max_r_req_its{"max_r_req_its", 16.0, "max Rxy for V0 with ITS hits"};
106-
Configurable<float> min_r_tpconly{"min_r_tpconly", 32.0, "min Rxy for V0 with TPConly tracks"};
109+
Configurable<float> min_r_tpconly{"min_r_tpconly", 36.0, "min Rxy for V0 with TPConly tracks"};
107110
Configurable<float> max_dcatopv_xy_v0{"max_dcatopv_xy_v0", +1e+10, "max. DCAxy to PV for V0"};
108111
Configurable<float> max_dcatopv_z_v0{"max_dcatopv_z_v0", +1e+10, "max. DCAz to PV for V0"};
109112

@@ -357,8 +360,14 @@ struct PhotonConversionBuilder {
357360
gammaKF_DecayVtx.TransportToPoint(xyz);
358361

359362
float cospa_kf = cpaFromKF(gammaKF_DecayVtx, KFPV);
360-
if (cospa_kf < min_v0cospa) {
361-
return;
363+
if (!ele.hasITS() && !pos.hasITS()) {
364+
if (cospa_kf < min_v0cospa_tpconly) {
365+
return;
366+
}
367+
} else {
368+
if (cospa_kf < min_v0cospa_its) {
369+
return;
370+
}
362371
}
363372

364373
float rxy = RecoDecay::sqrtSumOfSquares(gammaKF_DecayVtx.GetX(), gammaKF_DecayVtx.GetY());
@@ -424,8 +433,20 @@ struct PhotonConversionBuilder {
424433
kfp_ele_DecayVtx.TransportToPoint(xyz); // Don't set Primary Vertex
425434

426435
float pca_kf = kfp_pos_DecayVtx.GetDistanceFromParticle(kfp_ele_DecayVtx);
427-
if (pca_kf > max_dcav0dau) {
428-
return;
436+
if (!ele.hasITS() && !pos.hasITS()) {
437+
if (pca_kf > max_dcav0dau_tpconly) {
438+
return;
439+
}
440+
} else {
441+
if (rxy < max_r_req_its) {
442+
if (pca_kf > max_dcav0dau_itsibss) {
443+
return;
444+
}
445+
} else if (rxy < min_r_tpconly) {
446+
if (pca_kf > max_dcav0dau_its) {
447+
return;
448+
}
449+
}
429450
}
430451

431452
float pos_pt = RecoDecay::sqrtSumOfSquares(kfp_pos_DecayVtx.GetPx(), kfp_pos_DecayVtx.GetPy());

PWGEM/PhotonMeson/Tasks/PhotonHBT.cxx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ struct PhotonHBT {
299299
ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2);
300300
float qinv = -q12.M();
301301
float kt = k12.Pt();
302-
float qt = q12.Pt();
302+
// float qt = q12.Pt();
303303
float qlong_cms = q12.Pz();
304304

305305
ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector
@@ -331,8 +331,7 @@ struct PhotonHBT {
331331
values[4] = qlong_cms;
332332
values[5] = qout_cms;
333333
values[6] = qside_cms;
334-
values[7] = qt;
335-
values[8] = qlong_lcms;
334+
values[7] = qlong_lcms;
336335
reinterpret_cast<THnSparseF*>(list_pair_ss->FindObject(Form("%s_%s", cut.GetName(), cut.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_same"))->Fill(values);
337336
} // end of combination
338337
} // end of pair cut loop
@@ -369,7 +368,7 @@ struct PhotonHBT {
369368
ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2);
370369
float qinv = -q12.M();
371370
float kt = k12.Pt();
372-
float qt = q12.Pt();
371+
// float qt = q12.Pt();
373372
float qlong_cms = q12.Pz();
374373

375374
ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector
@@ -393,8 +392,7 @@ struct PhotonHBT {
393392
values[4] = qlong_cms;
394393
values[5] = qout_cms;
395394
values[6] = qside_cms;
396-
values[7] = qt;
397-
values[8] = qlong_lcms;
395+
values[7] = qlong_lcms;
398396
reinterpret_cast<THnSparseF*>(list_pair_ss->FindObject(Form("%s_%s", cut1.GetName(), cut2.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_same"))->Fill(values);
399397
} // end of combination
400398
} // end of pair cut loop
@@ -454,7 +452,7 @@ struct PhotonHBT {
454452
ROOT::Math::PtEtaPhiMVector k12 = 0.5 * (v1 + v2);
455453
float qinv = -q12.M();
456454
float kt = k12.Pt();
457-
float qt = q12.Pt();
455+
// float qt = q12.Pt();
458456
float qlong_cms = q12.Pz();
459457

460458
ROOT::Math::XYZVector q_3d = q12.Vect(); // 3D q vector
@@ -478,8 +476,7 @@ struct PhotonHBT {
478476
values[4] = qlong_cms;
479477
values[5] = qout_cms;
480478
values[6] = qside_cms;
481-
values[7] = qt;
482-
values[8] = qlong_lcms;
479+
values[7] = qlong_lcms;
483480
reinterpret_cast<THnSparseF*>(list_pair_ss->FindObject(Form("%s_%s", cut1.GetName(), cut2.GetName()))->FindObject(paircut.GetName())->FindObject("hs_q_mix"))->Fill(values);
484481
} // end of different photon combinations
485482
} // end of pair cut loop

PWGEM/PhotonMeson/Tasks/TaggingPi0.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ struct TaggingPi0 {
9292
if (context.mOptions.get<bool>("processPCMPCMibw")) {
9393
fPairNames.push_back("PCMPCMibw");
9494
}
95-
if (context.mOptions.get<bool>("processPCMDalitz")) {
96-
fPairNames.push_back("PCMDalitz");
95+
if (context.mOptions.get<bool>("processPCMDalitzEE")) {
96+
fPairNames.push_back("PCMDalitzEE");
9797
}
9898
if (context.mOptions.get<bool>("processPCMPHOS")) {
9999
fPairNames.push_back("PCMPHOS");
@@ -140,7 +140,7 @@ struct TaggingPi0 {
140140
} // end of cut1 loop
141141
}
142142

143-
static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitz", "PHOSEMC", "PCMPCMibw"};
143+
static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitzEE", "PCMDalitzMuMu", "PHOSEMC"};
144144
void addhistograms()
145145
{
146146
fMainList->SetOwner(true);
@@ -171,7 +171,7 @@ struct TaggingPi0 {
171171
if (pairname == "PCMEMC") {
172172
add_pair_histograms(list_pair, pairname, fPCMCuts, fEMCCuts, fPairCuts);
173173
}
174-
if (pairname == "PCMDalitz") {
174+
if (pairname == "PCMDalitzEE") {
175175
add_pair_histograms(list_pair, pairname, fPCMCuts, fDalitzEECuts, fPairCuts);
176176
}
177177

@@ -467,7 +467,7 @@ struct TaggingPi0 {
467467
SameEventPairing<PairType::kPCMPCMibw>(collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr);
468468
MixedEventPairing<PairType::kPCMPCMibw>(filtered_collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr);
469469
}
470-
void processPCMDalitz(MyCollisions const& collisions, MyFilteredCollisions const& filtered_collisions, MyV0Photons const& v0photons, aod::V0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
470+
void processPCMDalitzEE(MyCollisions const& collisions, MyFilteredCollisions const& filtered_collisions, MyV0Photons const& v0photons, aod::V0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyPrimaryElectrons const& emprimaryelectrons)
471471
{
472472
SameEventPairing<PairType::kPCMDalitzEE>(collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons);
473473
MixedEventPairing<PairType::kPCMDalitzEE>(filtered_collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons);
@@ -491,7 +491,7 @@ struct TaggingPi0 {
491491
}
492492

493493
PROCESS_SWITCH(TaggingPi0, processPCMPCMibw, "pairing PCM-PCMibw", false);
494-
PROCESS_SWITCH(TaggingPi0, processPCMDalitz, "pairing PCM-Dalitz", false);
494+
PROCESS_SWITCH(TaggingPi0, processPCMDalitzEE, "pairing PCM-Dalitz", false);
495495
PROCESS_SWITCH(TaggingPi0, processPCMPHOS, "pairing PCM-PHOS", false);
496496
PROCESS_SWITCH(TaggingPi0, processPCMEMC, "pairing PCM-EMCal", false);
497497
PROCESS_SWITCH(TaggingPi0, processDummy, "Dummy function", true);

PWGEM/PhotonMeson/Tasks/TaggingPi0MC.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ struct TaggingPi0MC {
9595
if (context.mOptions.get<bool>("processPCMPCMibw")) {
9696
fPairNames.push_back("PCMPCMibw");
9797
}
98-
if (context.mOptions.get<bool>("processPCMDalitz")) {
99-
fPairNames.push_back("PCMDalitz");
98+
if (context.mOptions.get<bool>("processPCMDalitzEE")) {
99+
fPairNames.push_back("PCMDalitzEE");
100100
}
101101
if (context.mOptions.get<bool>("processPCMPHOS")) {
102102
fPairNames.push_back("PCMPHOS");
@@ -144,7 +144,7 @@ struct TaggingPi0MC {
144144
} // end of cut1 loop
145145
}
146146

147-
static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitz", "PHOSEMC", "PCMPCMibw"};
147+
static constexpr std::string_view pairnames[8] = {"PCMPCM", "PHOSPHOS", "EMCEMC", "PCMPHOS", "PCMEMC", "PCMDalitzEE", "PCMDalitzMuMu", "PHOSEMC"};
148148
void addhistograms()
149149
{
150150
fMainList->SetOwner(true);
@@ -176,7 +176,7 @@ struct TaggingPi0MC {
176176
if (pairname == "PCMPCMibw") {
177177
add_pair_histograms(list_pair, pairname, fPCMCuts, fPCMibwCuts, fPairCuts);
178178
}
179-
if (pairname == "PCMDalitz") {
179+
if (pairname == "PCMDalitzEE") {
180180
add_pair_histograms(list_pair, pairname, fPCMCuts, fDalitzEECuts, fPairCuts);
181181
}
182182
if (pairname == "PCMPHOS") {
@@ -500,7 +500,7 @@ struct TaggingPi0MC {
500500
{
501501
TruePairing<PairType::kPCMPCMibw>(collisions, v0photons, v0photons, perCollision_pcm, perCollision_pcm, fPCMCuts, fPCMibwCuts, fPairCuts, legs, nullptr, mcparticles, mccollisions);
502502
}
503-
void processPCMDalitz(MyCollisions const& collisions, MyV0Photons const& v0photons, MyMCV0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyMCTracks const& emprimaryelectrons, aod::EMMCParticles const& mcparticles, aod::EMReducedMCEvents const& mccollisions)
503+
void processPCMDalitzEE(MyCollisions const& collisions, MyV0Photons const& v0photons, MyMCV0Legs const& legs, MyFilteredDalitzEEs const& dielectrons, MyMCTracks const& emprimaryelectrons, aod::EMMCParticles const& mcparticles, aod::EMReducedMCEvents const& mccollisions)
504504
{
505505
TruePairing<PairType::kPCMDalitzEE>(collisions, v0photons, dielectrons, perCollision_pcm, perCollision_dalitz, fPCMCuts, fDalitzEECuts, fPairCuts, legs, emprimaryelectrons, mcparticles, mccollisions);
506506
}
@@ -518,7 +518,7 @@ struct TaggingPi0MC {
518518
void processDummy(MyCollisions const& collision) {}
519519

520520
PROCESS_SWITCH(TaggingPi0MC, processPCMPCMibw, "pairing PCM-PCMibw", false);
521-
PROCESS_SWITCH(TaggingPi0MC, processPCMDalitz, "pairing PCM-Dalitz", false);
521+
PROCESS_SWITCH(TaggingPi0MC, processPCMDalitzEE, "pairing PCM-Dalitz", false);
522522
PROCESS_SWITCH(TaggingPi0MC, processPCMPHOS, "pairing PCM-PHOS", false);
523523
PROCESS_SWITCH(TaggingPi0MC, processPCMEMC, "pairing PCM-EMCal", false);
524524
PROCESS_SWITCH(TaggingPi0MC, processDummy, "Dummy function", true);

PWGEM/PhotonMeson/Tasks/dalitzEEQC.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ struct DalitzEEQC {
5151
std::vector<DalitzEECut> fDalitzEECuts;
5252

5353
Configurable<int> cfgCentEstimator{"cfgCentEstimator", 2, "FT0M:0, FT0A:1, FT0C:2"};
54-
Configurable<std::vector<float>> cfgArrCentMin{"cfgArrCentMin", {0.0f, 10.0f, 20.0f, 40.0f, 60.0f, 80.0f}, "cent min array"}; // overlap (e.g. 0, 0) is not allowed.
55-
Configurable<std::vector<float>> cfgArrCentMax{"cfgArrCentMax", {10.0f, 20.0f, 40.0f, 60.0f, 80.0f, 999.f}, "cent max array"}; // overlap (e.g. 10, 20) is not allowed.
54+
Configurable<std::vector<float>> cfgArrCentMin{"cfgArrCentMin", {0.0f, 10.0f, 20.0f, 40.0f, 60.0f, 80.0f}, "cent min array"};
55+
Configurable<std::vector<float>> cfgArrCentMax{"cfgArrCentMax", {10.0f, 20.0f, 40.0f, 60.0f, 80.0f, 999.f}, "cent max array"};
5656
std::vector<float> vec_cent_min;
5757
std::vector<float> vec_cent_max;
5858

0 commit comments

Comments
 (0)