Skip to content

Commit

Permalink
[PWGEM/Dilepton] add TOF chi2 in QC task (AliceO2Group#9104)
Browse files Browse the repository at this point in the history
  • Loading branch information
dsekihat authored Dec 22, 2024
1 parent c4ae430 commit c95149b
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 20 deletions.
6 changes: 2 additions & 4 deletions PWGEM/Dilepton/Core/PhotonHBT.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ struct PhotonHBT {
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};

Expand Down Expand Up @@ -495,6 +496,7 @@ struct PhotonHBT {
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
Expand All @@ -521,21 +523,17 @@ struct PhotonHBT {

if (pcmcuts.cfg_require_v0_with_itstpc) {
fV0PhotonCut.SetRequireITSTPC(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 40);
}
if (pcmcuts.cfg_require_v0_with_itsonly) {
fV0PhotonCut.SetRequireITSonly(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 24);
}
if (pcmcuts.cfg_require_v0_with_tpconly) {
fV0PhotonCut.SetRequireTPConly(true);
fV0PhotonCut.SetMaxPCA(3.0);
fV0PhotonCut.SetRxyRange(32, 90);
}
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
fV0PhotonCut.SetMaxPCA(0.3);
fV0PhotonCut.SetOnWwireIB(true);
fV0PhotonCut.SetOnWwireOB(false);
fV0PhotonCut.SetRxyRange(7, 14);
Expand Down
34 changes: 28 additions & 6 deletions PWGEM/Dilepton/Tasks/eventQC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ struct eventQC {
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
Configurable<bool> cfgRequirekNoCollInRofStandard{"cfgRequirekNoCollInRofStandard", false, "require no other collisions in this Readout Frame with per-collision multiplicity above threshold"};
Configurable<bool> cfgRequirekNoCollInRofStrict{"cfgRequirekNoCollInRofStrict", false, "require no other collisions in this Readout Frame"};
Configurable<bool> cfgRequirekNoHighMultCollInPrevRof{"cfgRequirekNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
} eventcuts;

struct : ConfigurableGroup {
Expand All @@ -98,6 +99,7 @@ struct eventQC {
Configurable<int> cfg_min_ncluster_itsib{"cfg_min_ncluster_itsib", 1, "min ncluster its"};
Configurable<float> cfg_max_chi2tpc{"cfg_max_chi2tpc", 4.0, "max chi2/NclsTPC"};
Configurable<float> cfg_max_chi2its{"cfg_max_chi2its", 5.0, "max chi2/NclsITS"};
Configurable<float> cfg_max_chi2tof{"cfg_max_chi2tof", 1e+10, "max chi2/NclsTOF"};
Configurable<float> cfg_max_dcaxy{"cfg_max_dcaxy", 0.2, "max dca XY for single track in cm"};
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.2, "max dca Z for single track in cm"};
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -1e+10, "min n sigma e in TPC"};
Expand Down Expand Up @@ -129,7 +131,7 @@ struct eventQC {
{
// event info

const int nbin_ev = 13;
const int nbin_ev = 17;
auto hCollisionCounter = fRegistry.add<TH1>("Event/before/hCollisionCounter", "collision counter;;Number of events", kTH1F, {{nbin_ev, 0.5, nbin_ev + 0.5}}, false);
hCollisionCounter->GetXaxis()->SetBinLabel(1, "all");
hCollisionCounter->GetXaxis()->SetBinLabel(2, "FT0AND");
Expand All @@ -143,7 +145,11 @@ struct eventQC {
hCollisionCounter->GetXaxis()->SetBinLabel(10, "sel8");
hCollisionCounter->GetXaxis()->SetBinLabel(11, "|Z_{vtx}| < 10 cm");
hCollisionCounter->GetXaxis()->SetBinLabel(12, "NoCollInTimeRangeStandard");
hCollisionCounter->GetXaxis()->SetBinLabel(13, "accepted");
hCollisionCounter->GetXaxis()->SetBinLabel(13, "NoCollInTimeRangeStrict");
hCollisionCounter->GetXaxis()->SetBinLabel(14, "NoCollInRofStandard");
hCollisionCounter->GetXaxis()->SetBinLabel(15, "NoCollInRofStrict");
hCollisionCounter->GetXaxis()->SetBinLabel(16, "NoHighMultCollInPrevRof");
hCollisionCounter->GetXaxis()->SetBinLabel(17, "accepted");

fRegistry.add("Event/before/hZvtx", "vertex z; Z_{vtx} (cm)", kTH1F, {{100, -50, +50}}, false);
fRegistry.add("Event/before/hMultNTracksPV", "hMultNTracksPV; N_{track} to PV", kTH1F, {{6001, -0.5, 6000.5}}, false);
Expand Down Expand Up @@ -350,6 +356,18 @@ struct eventQC {
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 12.0);
}
if (collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStrict)) {
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 13.0);
}
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStandard)) {
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 14.0);
}
if (collision.selection_bit(o2::aod::evsel::kNoCollInRofStrict)) {
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 15.0);
}
if (collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hCollisionCounter"), 16.0);
}
fRegistry.fill(HIST("Event/") + HIST(event_types[ev_id]) + HIST("hZvtx"), collision.posZ());

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

if (trackcuts.cfg_requireTOF && !track.hasTOF()) {
if (trackcuts.cfg_requireTOF && !(track.hasTOF() && track.tofChi2() < trackcuts.cfg_max_chi2tof)) {
return false;
}

if (track.hasTOF() && (track.tofNSigmaEl() < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl())) {
if (track.hasTOF() && ((track.tofNSigmaEl() < trackcuts.cfg_min_TOFNsigmaEl || trackcuts.cfg_max_TOFNsigmaEl < track.tofNSigmaEl()) || trackcuts.cfg_max_chi2tof < track.tofChi2())) {
return false;
}

Expand Down Expand Up @@ -629,6 +647,10 @@ struct eventQC {
return false;
}

if (eventcuts.cfgRequirekNoHighMultCollInPrevRof && !collision.selection_bit(o2::aod::evsel::kNoHighMultCollInPrevRof)) {
return false;
}

if (!(eventcuts.cfgTrackOccupancyMin <= collision.trackOccupancyInTimeRange() && collision.trackOccupancyInTimeRange() < eventcuts.cfgTrackOccupancyMax)) {
return false;
}
Expand Down Expand Up @@ -669,8 +691,8 @@ struct eventQC {
continue;
}
fillEventInfo<1>(collision);
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 13); // accepted
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 13); // accepted
fRegistry.fill(HIST("Event/before/hCollisionCounter"), 17); // accepted
fRegistry.fill(HIST("Event/after/hCollisionCounter"), 17); // accepted

int nGlobalTracks = 0, nGlobalTracksPV = 0;
auto tracks_per_coll = tracks.sliceBy(perCol, collision.globalIndex());
Expand Down
2 changes: 2 additions & 0 deletions PWGEM/PhotonMeson/Core/Pi0EtaToGammaGamma.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ struct Pi0EtaToGammaGamma {
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};

Expand Down Expand Up @@ -337,6 +338,7 @@ struct Pi0EtaToGammaGamma {
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
Expand Down
2 changes: 2 additions & 0 deletions PWGEM/PhotonMeson/Core/Pi0EtaToGammaGammaMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ struct Pi0EtaToGammaGammaMC {
Configurable<float> cfg_max_qt_ap{"cfg_max_qt_ap", 0.01, "max qT for AP cut"};
Configurable<float> cfg_min_cospa{"cfg_min_cospa", 0.997, "min V0 CosPA"};
Configurable<float> cfg_max_pca{"cfg_max_pca", 3.0, "max distance btween 2 legs"};
Configurable<float> cfg_max_chi2kf{"cfg_max_chi2kf", 1e+10, "max chi2/ndf with KF"};
Configurable<bool> cfg_require_v0_with_correct_xz{"cfg_require_v0_with_correct_xz", true, "flag to select V0s with correct xz"};
Configurable<bool> cfg_reject_v0_on_itsib{"cfg_reject_v0_on_itsib", true, "flag to reject V0s on ITSib"};

Expand Down Expand Up @@ -301,6 +302,7 @@ struct Pi0EtaToGammaGammaMC {
fV0PhotonCut.SetV0EtaRange(-pcmcuts.cfg_max_eta_v0, +pcmcuts.cfg_max_eta_v0);
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
Expand Down
10 changes: 9 additions & 1 deletion PWGEM/PhotonMeson/Core/V0PhotonCut.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@
// or submit itself to any jurisdiction.

//
// Class for track selection
// Class for v0 photon selection
//

#include <set>
#include <utility>

#include "Framework/Logger.h"
#include "PWGEM/PhotonMeson/Core/V0PhotonCut.h"

Expand Down Expand Up @@ -79,6 +82,11 @@ void V0PhotonCut::SetMaxPCA(float max)
mMaxPCA = max;
LOG(info) << "V0 Photon Cut, set max distance between 2 legs: " << mMaxPCA;
}
void V0PhotonCut::SetMaxChi2KF(float max)
{
mMaxChi2KF = max;
LOG(info) << "V0 Photon Cut, set max chi2/ndf with KF: " << mMaxChi2KF;
}
void V0PhotonCut::SetMaxMarginZ(float max)
{
mMaxMarginZ = max;
Expand Down
9 changes: 9 additions & 0 deletions PWGEM/PhotonMeson/Core/V0PhotonCut.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class V0PhotonCut : public TNamed
kRxy,
kCosPA,
kPCA,
kChi2KF,
kRZLine,
kOnWwireIB,
kOnWwireOB,
Expand Down Expand Up @@ -103,6 +104,9 @@ class V0PhotonCut : public TNamed
if (!IsSelectedV0(v0, V0PhotonCuts::kPCA)) {
return false;
}
if (!IsSelectedV0(v0, V0PhotonCuts::kChi2KF)) {
return false;
}
if (!IsSelectedV0(v0, V0PhotonCuts::kRZLine)) {
return false;
}
Expand Down Expand Up @@ -280,6 +284,9 @@ class V0PhotonCut : public TNamed
case V0PhotonCuts::kPCA:
return v0.pca() <= mMaxPCA;

case V0PhotonCuts::kChi2KF:
return v0.chiSquareNDF() <= mMaxChi2KF;

case V0PhotonCuts::kRZLine:
return v0.v0radius() > abs(v0.vz()) * std::tan(2 * std::atan(std::exp(-mMaxV0Eta))) - mMaxMarginZ;

Expand Down Expand Up @@ -437,6 +444,7 @@ class V0PhotonCut : public TNamed
void SetRxyRange(float min = 0.f, float max = 180.f);
void SetMinCosPA(float min = 0.95);
void SetMaxPCA(float max = 2.f);
void SetMaxChi2KF(float max = 1e+10);
void SetMaxMarginZ(float max = 7.f);
void SetMaxMeePsiPairDep(std::function<float(float)> psiDepCut);
void SetOnWwireIB(bool flag = false);
Expand Down Expand Up @@ -483,6 +491,7 @@ class V0PhotonCut : public TNamed
float mMinRxy{0.f}, mMaxRxy{180.f};
float mMinCosPA{0.95};
float mMaxPCA{2.f};
float mMaxChi2KF{1e+10};
float mMaxMarginZ{7.f};
std::function<float(float)> mMaxMeePsiPairDep{}; // max mee as a function of psipair
bool mIsOnWwireIB{false};
Expand Down
2 changes: 1 addition & 1 deletion PWGEM/PhotonMeson/DataModel/gammaTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ DECLARE_SOA_COLUMN(CosPA, cospa, float); //!
DECLARE_SOA_COLUMN(PCA, pca, float); //!
DECLARE_SOA_COLUMN(Alpha, alpha, float); //!
DECLARE_SOA_COLUMN(QtArm, qtarm, float); //!
DECLARE_SOA_COLUMN(ChiSquareNDF, chiSquareNDF, float); // Chi2 / NDF of the reconstructed V0
DECLARE_SOA_COLUMN(ChiSquareNDF, chiSquareNDF, float); //! Chi2 / NDF of the reconstructed V0
DECLARE_SOA_COLUMN(SigmaPx2, sigmaPx2, float); //! error^2 of px in covariant matrix
DECLARE_SOA_COLUMN(SigmaPy2, sigmaPy2, float); //! error^2 of py in covariant matrix
DECLARE_SOA_COLUMN(SigmaPz2, sigmaPz2, float); //! error^2 of pz in covariant matrix
Expand Down
14 changes: 10 additions & 4 deletions PWGEM/PhotonMeson/Tasks/pcmQC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ struct PCMQC {
Configurable<float> cfgFT0COccupancyMin{"cfgFT0COccupancyMin", -2, "min. FT0C occupancy"};
Configurable<float> cfgFT0COccupancyMax{"cfgFT0COccupancyMax", 1000000000, "max. FT0C occupancy"};
Configurable<bool> cfgRequireNoCollInTimeRangeStandard{"cfgRequireNoCollInTimeRangeStandard", false, "require no collision in time range standard"};
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
} eventcuts;

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

void DefinePCMCut()
Expand All @@ -198,6 +207,7 @@ struct PCMQC {
fV0PhotonCut.SetV0EtaRange(pcmcuts.cfg_min_eta_v0, pcmcuts.cfg_max_eta_v0);
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
Expand All @@ -224,21 +234,17 @@ struct PCMQC {

if (pcmcuts.cfg_require_v0_with_itstpc) {
fV0PhotonCut.SetRequireITSTPC(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 40);
}
if (pcmcuts.cfg_require_v0_with_itsonly) {
fV0PhotonCut.SetRequireITSonly(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 24);
}
if (pcmcuts.cfg_require_v0_with_tpconly) {
fV0PhotonCut.SetRequireTPConly(true);
fV0PhotonCut.SetMaxPCA(3.0);
fV0PhotonCut.SetRxyRange(32, 90);
}
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
fV0PhotonCut.SetMaxPCA(0.3);
fV0PhotonCut.SetOnWwireIB(true);
fV0PhotonCut.SetOnWwireOB(false);
fV0PhotonCut.SetRxyRange(7, 14);
Expand Down
14 changes: 10 additions & 4 deletions PWGEM/PhotonMeson/Tasks/pcmQCMC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ struct PCMQCMC {
Configurable<float> cfgFT0COccupancyMin{"cfgFT0COccupancyMin", -2, "min. FT0C occupancy"};
Configurable<float> cfgFT0COccupancyMax{"cfgFT0COccupancyMax", 1000000000, "max. FT0C occupancy"};
Configurable<bool> cfgRequireNoCollInTimeRangeStandard{"cfgRequireNoCollInTimeRangeStandard", false, "require no collision in time range standard"};
Configurable<bool> cfgRequireNoCollInTimeRangeStrict{"cfgRequireNoCollInTimeRangeStrict", false, "require no collision in time range strict"};
Configurable<bool> cfgRequireNoCollInITSROFStandard{"cfgRequireNoCollInITSROFStandard", false, "require no collision in time range standard"};
Configurable<bool> cfgRequireNoCollInITSROFStrict{"cfgRequireNoCollInITSROFStrict", false, "require no collision in time range strict"};
Configurable<bool> cfgRequireNoHighMultCollInPrevRof{"cfgRequireNoHighMultCollInPrevRof", false, "require no HM collision in previous ITS ROF"};
} eventcuts;

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

void DefinePCMCut()
Expand All @@ -255,6 +264,7 @@ struct PCMQCMC {
fV0PhotonCut.SetV0EtaRange(pcmcuts.cfg_min_eta_v0, pcmcuts.cfg_max_eta_v0);
fV0PhotonCut.SetMinCosPA(pcmcuts.cfg_min_cospa);
fV0PhotonCut.SetMaxPCA(pcmcuts.cfg_max_pca);
fV0PhotonCut.SetMaxChi2KF(pcmcuts.cfg_max_chi2kf);
fV0PhotonCut.SetRxyRange(pcmcuts.cfg_min_v0radius, pcmcuts.cfg_max_v0radius);
fV0PhotonCut.SetAPRange(pcmcuts.cfg_max_alpha_ap, pcmcuts.cfg_max_qt_ap);
fV0PhotonCut.RejectITSib(pcmcuts.cfg_reject_v0_on_itsib);
Expand All @@ -281,21 +291,17 @@ struct PCMQCMC {

if (pcmcuts.cfg_require_v0_with_itstpc) {
fV0PhotonCut.SetRequireITSTPC(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 40);
}
if (pcmcuts.cfg_require_v0_with_itsonly) {
fV0PhotonCut.SetRequireITSonly(true);
fV0PhotonCut.SetMaxPCA(1.0);
fV0PhotonCut.SetRxyRange(4, 24);
}
if (pcmcuts.cfg_require_v0_with_tpconly) {
fV0PhotonCut.SetRequireTPConly(true);
fV0PhotonCut.SetMaxPCA(3.0);
fV0PhotonCut.SetRxyRange(32, 90);
}
if (pcmcuts.cfg_require_v0_on_wwire_ib) {
fV0PhotonCut.SetMaxPCA(0.3);
fV0PhotonCut.SetOnWwireIB(true);
fV0PhotonCut.SetOnWwireOB(false);
fV0PhotonCut.SetRxyRange(7, 14);
Expand Down

0 comments on commit c95149b

Please sign in to comment.