Skip to content

Commit c95149b

Browse files
authored
[PWGEM/Dilepton] add TOF chi2 in QC task (#9104)
1 parent c4ae430 commit c95149b

File tree

9 files changed

+73
-20
lines changed

9 files changed

+73
-20
lines changed

PWGEM/Dilepton/Core/PhotonHBT.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ struct PhotonHBT {
157157
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
158158
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
159159
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
160+
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
160161
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
161162
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
162163

@@ -495,6 +496,7 @@ struct PhotonHBT {
495496
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
496497
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
497498
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
499+
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
498500
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
499501
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
500502
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
@@ -521,21 +523,17 @@ struct PhotonHBT {
521523

522524
if (pcmcuts.cfg_require_v0_with_itstpc) {
523525
fV0PhotonCut.SetRequireITSTPC(true);
524-
fV0PhotonCut.SetMaxPCA(1.0);
525526
fV0PhotonCut.SetRxyRange(4, 40);
526527
}
527528
if (pcmcuts.cfg_require_v0_with_itsonly) {
528529
fV0PhotonCut.SetRequireITSonly(true);
529-
fV0PhotonCut.SetMaxPCA(1.0);
530530
fV0PhotonCut.SetRxyRange(4, 24);
531531
}
532532
if (pcmcuts.cfg_require_v0_with_tpconly) {
533533
fV0PhotonCut.SetRequireTPConly(true);
534-
fV0PhotonCut.SetMaxPCA(3.0);
535534
fV0PhotonCut.SetRxyRange(32, 90);
536535
}
537536
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
538-
fV0PhotonCut.SetMaxPCA(0.3);
539537
fV0PhotonCut.SetOnWwireIB(true);
540538
fV0PhotonCut.SetOnWwireOB(false);
541539
fV0PhotonCut.SetRxyRange(7, 14);

PWGEM/Dilepton/Tasks/eventQC.cxx

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ struct eventQC {
8282
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
8383
Configurable<bool> cfgRequirekNoCollInRofStandard{"cfgRequirekNoCollInRofStandard", false, "require no other collisions in this Readout Frame with per-collision multiplicity above threshold"};
8484
Configurable<bool> cfgRequirekNoCollInRofStrict{"cfgRequirekNoCollInRofStrict", false, "require no other collisions in this Readout Frame"};
85+
Configurable<bool> cfgRequirekNoHighMultCollInPrevRof{"cfgRequirekNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
8586
} eventcuts;
8687

8788
struct : ConfigurableGroup {
@@ -98,6 +99,7 @@ struct eventQC {
9899
Configurable<int> cfg_min_ncluster_itsib{"cfg_min_ncluster_itsib", 1, "min ncluster its"};
99100
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
100101
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 5.0, "max chi2/NclsITS"};
102+
Configurable<float> cfg_max_chi2tof{"cfg_max_chi2tof", 1e+10, "max chi2/NclsTOF"};
101103
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.2, "max dca XY for single track in cm"};
102104
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.2, "max dca Z for single track in cm"};
103105
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -1e+10, "min n sigma e in TPC"};
@@ -129,7 +131,7 @@ struct eventQC {
129131
{
130132
// event info
131133

132-
const int nbin_ev = 13;
134+
const int nbin_ev = 17;
133135
auto hCollisionCounter = fRegistry.add<TH1>("Event/before/hCollisionCounter", "collision counter;;Number of events", kTH1F, {{nbin_ev, 0.5, nbin_ev + 0.5}}, false);
134136
hCollisionCounter->GetXaxis()->SetBinLabel(1, "all");
135137
hCollisionCounter->GetXaxis()->SetBinLabel(2, "FT0AND");
@@ -143,7 +145,11 @@ struct eventQC {
143145
hCollisionCounter->GetXaxis()->SetBinLabel(10, "sel8");
144146
hCollisionCounter->GetXaxis()->SetBinLabel(11, "|Z_{vtx}| < 10 cm");
145147
hCollisionCounter->GetXaxis()->SetBinLabel(12, "NoCollInTimeRangeStandard");
146-
hCollisionCounter->GetXaxis()->SetBinLabel(13, "accepted");
148+
hCollisionCounter->GetXaxis()->SetBinLabel(13, "NoCollInTimeRangeStrict");
149+
hCollisionCounter->GetXaxis()->SetBinLabel(14, "NoCollInRofStandard");
150+
hCollisionCounter->GetXaxis()->SetBinLabel(15, "NoCollInRofStrict");
151+
hCollisionCounter->GetXaxis()->SetBinLabel(16, "NoHighMultCollInPrevRof");
152+
hCollisionCounter->GetXaxis()->SetBinLabel(17, "accepted");
147153

148154
fRegistry.add("Event/before/hZvtx", "vertex z; Z_{vtx} (cm)", kTH1F, {{100, -50, +50}}, false);
149155
fRegistry.add("Event/before/hMultNTracksPV", "hMultNTracksPV; N_{track} to PV", kTH1F, {{6001, -0.5, 6000.5}}, false);
@@ -350,6 +356,18 @@ struct eventQC {
350356
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
351357
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 12.0);
352358
}
359+
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) {
360+
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 13.0);
361+
}
362+
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
363+
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 14.0);
364+
}
365+
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStrict)) {
366+
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 15.0);
367+
}
368+
if (collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
369+
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 16.0);
370+
}
353371
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hZvtx"), collision.posZ());
354372

355373
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hMultNTracksPV"), collision.multNTracksPV());
@@ -571,11 +589,11 @@ struct eventQC {
571589
return false;
572590
}
573591

574-
if (trackcuts.cfg_requireTOF && !track.hasTOF()) {
592+
if (trackcuts.cfg_requireTOF && !(track.hasTOF() && track.tofChi2() < trackcuts.cfg_max_chi2tof)) {
575593
return false;
576594
}
577595

578-
if (track.hasTOF() && (track.tofNSigmaEl() < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl())) {
596+
if (track.hasTOF() && ((track.tofNSigmaEl() < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl()) || trackcuts.cfg_max_chi2tof < track.tofChi2())) {
579597
return false;
580598
}
581599

@@ -629,6 +647,10 @@ struct eventQC {
629647
return false;
630648
}
631649

650+
if (eventcuts.cfgRequirekNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
651+
return false;
652+
}
653+
632654
if (!(eventcuts.cfgTrackOccupancyMin <= collision.trackOccupancyInTimeRange() && collision.trackOccupancyInTimeRange() < eventcuts.cfgTrackOccupancyMax)) {
633655
return false;
634656
}
@@ -669,8 +691,8 @@ struct eventQC {
669691
continue;
670692
}
671693
fillEventInfo<1>(collision);
672-
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 13); // accepted
673-
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 13); // accepted
694+
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 17); // accepted
695+
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 17); // accepted
674696

675697
int nGlobalTracks = 0, nGlobalTracksPV = 0;
676698
auto tracks_per_coll = tracks.sliceBy(perCol, collision.globalIndex());

PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ struct Pi0EtaToGammaGamma {
137137
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
138138
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
139139
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
140+
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
140141
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
141142
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
142143

@@ -337,6 +338,7 @@ struct Pi0EtaToGammaGamma {
337338
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
338339
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
339340
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
341+
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
340342
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
341343
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
342344
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);

PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ struct Pi0EtaToGammaGammaMC {
125125
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
126126
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
127127
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
128+
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
128129
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
129130
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
130131

@@ -301,6 +302,7 @@ struct Pi0EtaToGammaGammaMC {
301302
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
302303
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
303304
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
305+
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
304306
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
305307
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
306308
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);

PWGEM/PhotonMeson/Core/V0PhotonCut.cxx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@
1010
// or submit itself to any jurisdiction.
1111

1212
//
13-
// Class for track selection
13+
// Class for v0 photon selection
1414
//
1515

16+
#include <set>
17+
#include <utility>
18+
1619
#include "Framework/Logger.h"
1720
#include "PWGEM/PhotonMeson/Core/V0PhotonCut.h"
1821

@@ -79,6 +82,11 @@ void V0PhotonCut::SetMaxPCA(float max)
7982
mMaxPCA = max;
8083
LOG(info) << "V0 Photon Cut, set max distance between 2 legs: " << mMaxPCA;
8184
}
85+
void V0PhotonCut::SetMaxChi2KF(float max)
86+
{
87+
mMaxChi2KF = max;
88+
LOG(info) << "V0 Photon Cut, set max chi2/ndf with KF: " << mMaxChi2KF;
89+
}
8290
void V0PhotonCut::SetMaxMarginZ(float max)
8391
{
8492
mMaxMarginZ = max;

PWGEM/PhotonMeson/Core/V0PhotonCut.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class V0PhotonCut : public TNamed
4545
kRxy,
4646
kCosPA,
4747
kPCA,
48+
kChi2KF,
4849
kRZLine,
4950
kOnWwireIB,
5051
kOnWwireOB,
@@ -103,6 +104,9 @@ class V0PhotonCut : public TNamed
103104
if (!IsSelectedV0(v0, V0PhotonCuts::kPCA)) {
104105
return false;
105106
}
107+
if (!IsSelectedV0(v0, V0PhotonCuts::kChi2KF)) {
108+
return false;
109+
}
106110
if (!IsSelectedV0(v0, V0PhotonCuts::kRZLine)) {
107111
return false;
108112
}
@@ -280,6 +284,9 @@ class V0PhotonCut : public TNamed
280284
case V0PhotonCuts::kPCA:
281285
return v0.pca() <= mMaxPCA;
282286

287+
case V0PhotonCuts::kChi2KF:
288+
return v0.chiSquareNDF() <= mMaxChi2KF;
289+
283290
case V0PhotonCuts::kRZLine:
284291
return v0.v0radius() > abs(v0.vz()) * std::tan(2 * std::atan(std::exp(-mMaxV0Eta))) - mMaxMarginZ;
285292

@@ -437,6 +444,7 @@ class V0PhotonCut : public TNamed
437444
void SetRxyRange(float min = 0.f, float max = 180.f);
438445
void SetMinCosPA(float min = 0.95);
439446
void SetMaxPCA(float max = 2.f);
447+
void SetMaxChi2KF(float max = 1e+10);
440448
void SetMaxMarginZ(float max = 7.f);
441449
void SetMaxMeePsiPairDep(std::function<float(float)> psiDepCut);
442450
void SetOnWwireIB(bool flag = false);
@@ -483,6 +491,7 @@ class V0PhotonCut : public TNamed
483491
float mMinRxy{0.f}, mMaxRxy{180.f};
484492
float mMinCosPA{0.95};
485493
float mMaxPCA{2.f};
494+
float mMaxChi2KF{1e+10};
486495
float mMaxMarginZ{7.f};
487496
std::function<float(float)> mMaxMeePsiPairDep{}; // max mee as a function of psipair
488497
bool mIsOnWwireIB{false};

PWGEM/PhotonMeson/DataModel/gammaTables.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ DECLARE_SOA_COLUMN(CosPA, cospa, float); //!
230230
DECLARE_SOA_COLUMN(PCA, pca, float); //!
231231
DECLARE_SOA_COLUMN(Alpha, alpha, float); //!
232232
DECLARE_SOA_COLUMN(QtArm, qtarm, float); //!
233-
DECLARE_SOA_COLUMN(ChiSquareNDF, chiSquareNDF, float); // Chi2 / NDF of the reconstructed V0
233+
DECLARE_SOA_COLUMN(ChiSquareNDF, chiSquareNDF, float); //! Chi2 / NDF of the reconstructed V0
234234
DECLARE_SOA_COLUMN(SigmaPx2, sigmaPx2, float); //! error^2 of px in covariant matrix
235235
DECLARE_SOA_COLUMN(SigmaPy2, sigmaPy2, float); //! error^2 of py in covariant matrix
236236
DECLARE_SOA_COLUMN(SigmaPz2, sigmaPz2, float); //! error^2 of pz in covariant matrix

PWGEM/PhotonMeson/Tasks/pcmQC.cxx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ struct PCMQC {
6161
Configurable<float> cfgFT0COccupancyMin{"cfgFT0COccupancyMin", -2, "min. FT0C occupancy"};
6262
Configurable<float> cfgFT0COccupancyMax{"cfgFT0COccupancyMax", 1000000000, "max. FT0C occupancy"};
6363
Configurable<bool> cfgRequireNoCollInTimeRangeStandard{"cfgRequireNoCollInTimeRangeStandard", false, "require no collision in time range standard"};
64+
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
65+
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
66+
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
67+
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
6468
} eventcuts;
6569

6670
V0PhotonCut fV0PhotonCut;
@@ -79,6 +83,7 @@ struct PCMQC {
7983
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
8084
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
8185
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
86+
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
8287
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
8388
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
8489
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
@@ -187,6 +192,10 @@ struct PCMQC {
187192
fEMEventCut.SetRequireVertexITSTPC(eventcuts.cfgRequireVertexITSTPC);
188193
fEMEventCut.SetRequireGoodZvtxFT0vsPV(eventcuts.cfgRequireGoodZvtxFT0vsPV);
189194
fEMEventCut.SetRequireNoCollInTimeRangeStandard(eventcuts.cfgRequireNoCollInTimeRangeStandard);
195+
fEMEventCut.SetRequireNoCollInTimeRangeStrict(eventcuts.cfgRequireNoCollInTimeRangeStrict);
196+
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
197+
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
198+
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
190199
}
191200

192201
void DefinePCMCut()
@@ -198,6 +207,7 @@ struct PCMQC {
198207
fV0PhotonCut.SetV0EtaRange(pcmcuts.cfg_min_eta_v0, pcmcuts.cfg_max_eta_v0);
199208
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
200209
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
210+
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
201211
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
202212
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
203213
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
@@ -224,21 +234,17 @@ struct PCMQC {
224234

225235
if (pcmcuts.cfg_require_v0_with_itstpc) {
226236
fV0PhotonCut.SetRequireITSTPC(true);
227-
fV0PhotonCut.SetMaxPCA(1.0);
228237
fV0PhotonCut.SetRxyRange(4, 40);
229238
}
230239
if (pcmcuts.cfg_require_v0_with_itsonly) {
231240
fV0PhotonCut.SetRequireITSonly(true);
232-
fV0PhotonCut.SetMaxPCA(1.0);
233241
fV0PhotonCut.SetRxyRange(4, 24);
234242
}
235243
if (pcmcuts.cfg_require_v0_with_tpconly) {
236244
fV0PhotonCut.SetRequireTPConly(true);
237-
fV0PhotonCut.SetMaxPCA(3.0);
238245
fV0PhotonCut.SetRxyRange(32, 90);
239246
}
240247
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
241-
fV0PhotonCut.SetMaxPCA(0.3);
242248
fV0PhotonCut.SetOnWwireIB(true);
243249
fV0PhotonCut.SetOnWwireOB(false);
244250
fV0PhotonCut.SetRxyRange(7, 14);

PWGEM/PhotonMeson/Tasks/pcmQCMC.cxx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ struct PCMQCMC {
7575
Configurable<float> cfgFT0COccupancyMin{"cfgFT0COccupancyMin", -2, "min. FT0C occupancy"};
7676
Configurable<float> cfgFT0COccupancyMax{"cfgFT0COccupancyMax", 1000000000, "max. FT0C occupancy"};
7777
Configurable<bool> cfgRequireNoCollInTimeRangeStandard{"cfgRequireNoCollInTimeRangeStandard", false, "require no collision in time range standard"};
78+
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
79+
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
80+
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
81+
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
7882
} eventcuts;
7983

8084
V0PhotonCut fV0PhotonCut;
@@ -93,6 +97,7 @@ struct PCMQCMC {
9397
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
9498
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
9599
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
100+
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
96101
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
97102
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};
98103
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
@@ -244,6 +249,10 @@ struct PCMQCMC {
244249
fEMEventCut.SetRequireVertexITSTPC(eventcuts.cfgRequireVertexITSTPC);
245250
fEMEventCut.SetRequireGoodZvtxFT0vsPV(eventcuts.cfgRequireGoodZvtxFT0vsPV);
246251
fEMEventCut.SetRequireNoCollInTimeRangeStandard(eventcuts.cfgRequireNoCollInTimeRangeStandard);
252+
fEMEventCut.SetRequireNoCollInTimeRangeStrict(eventcuts.cfgRequireNoCollInTimeRangeStrict);
253+
fEMEventCut.SetRequireNoCollInITSROFStandard(eventcuts.cfgRequireNoCollInITSROFStandard);
254+
fEMEventCut.SetRequireNoCollInITSROFStrict(eventcuts.cfgRequireNoCollInITSROFStrict);
255+
fEMEventCut.SetRequireNoHighMultCollInPrevRof(eventcuts.cfgRequireNoHighMultCollInPrevRof);
247256
}
248257

249258
void DefinePCMCut()
@@ -255,6 +264,7 @@ struct PCMQCMC {
255264
fV0PhotonCut.SetV0EtaRange(pcmcuts.cfg_min_eta_v0, pcmcuts.cfg_max_eta_v0);
256265
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
257266
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
267+
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
258268
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
259269
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
260270
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
@@ -281,21 +291,17 @@ struct PCMQCMC {
281291

282292
if (pcmcuts.cfg_require_v0_with_itstpc) {
283293
fV0PhotonCut.SetRequireITSTPC(true);
284-
fV0PhotonCut.SetMaxPCA(1.0);
285294
fV0PhotonCut.SetRxyRange(4, 40);
286295
}
287296
if (pcmcuts.cfg_require_v0_with_itsonly) {
288297
fV0PhotonCut.SetRequireITSonly(true);
289-
fV0PhotonCut.SetMaxPCA(1.0);
290298
fV0PhotonCut.SetRxyRange(4, 24);
291299
}
292300
if (pcmcuts.cfg_require_v0_with_tpconly) {
293301
fV0PhotonCut.SetRequireTPConly(true);
294-
fV0PhotonCut.SetMaxPCA(3.0);
295302
fV0PhotonCut.SetRxyRange(32, 90);
296303
}
297304
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
298-
fV0PhotonCut.SetMaxPCA(0.3);
299305
fV0PhotonCut.SetOnWwireIB(true);
300306
fV0PhotonCut.SetOnWwireOB(false);
301307
fV0PhotonCut.SetRxyRange(7, 14);

0 commit comments

Comments
 (0)