Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
185 changes: 185 additions & 0 deletions PWGEM/PhotonMeson/Core/CutsLibrary.cxx
Original file line numberDiff line numberDiff line change
Expand Up@@ -226,6 +226,59 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName)
DalitzEECut* cut = new DalitzEECut(cutName, cutName);
std::string nameStr = cutName;

if (!nameStr.compare("mee_all_tpchadrejortofreq_wo_phiv_lowB")) {
// for pair

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTOFNsigmaElRange(-3, +3);
cut->SetTPCNsigmaMuRange(-2, +2);
cut->SetTPCNsigmaPiRange(-3, +3);
cut->SetTPCNsigmaKaRange(-3, +3);
cut->SetTPCNsigmaPrRange(-3, +3);
cut->SetMuonExclusionTPC(true);
return cut;
}
if (!nameStr.compare("mee_all_tpchadrejortofreq_wpf_lowB")) {
// for pair
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTOFNsigmaElRange(-3, +3);
cut->SetTPCNsigmaMuRange(-2, +2);
cut->SetTPCNsigmaPiRange(-3, +3);
cut->SetTPCNsigmaKaRange(-3, +3);
cut->SetTPCNsigmaPrRange(-3, +3);
cut->SetMuonExclusionTPC(true);
return cut;
}
if (!nameStr.compare("mee_all_tpchadrejortofreq_lowB")) {
// for pair
cut->SetMaxPhivPairMeeDep([](float mee) {
Expand DownExpand Up@@ -429,6 +482,29 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName)
cut->SetTPCNsigmaPiRange(-3, +3);
return cut;
}
if (!nameStr.compare("mee_0_120_tpconly_wpf_lowB")) {
// for pair
cut->SetMeeRange(0., 0.12);
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTPCNsigmaPiRange(-3, +3);
return cut;
}
if (!nameStr.compare("mee_0_120_tpconly_lowB")) {
// for pair
cut->SetMeeRange(0., 0.12);
Expand All@@ -454,6 +530,29 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName)
cut->SetTPCNsigmaPiRange(-3, +3);
return cut;
}
if (!nameStr.compare("mee_120_500_tpconly_wpf_lowB")) {
// for pair
cut->SetMeeRange(0.12, 0.5);
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPConly_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTPCNsigmaPiRange(-3, +3);
return cut;
}
if (!nameStr.compare("mee_120_500_tpconly_lowB")) {
// for pair
cut->SetMeeRange(0.12, 0.5);
Expand DownExpand Up@@ -594,6 +693,92 @@ DalitzEECut* o2::aod::dalitzeecuts::GetCut(const char* cutName)
cut->SetMuonExclusionTPC(true);
return cut;
}

if (!nameStr.compare("mee_0_120_tpchadrejortofreq_wpf_lowB")) {
// for pair
cut->SetMeeRange(0., 0.12);
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTOFNsigmaElRange(-3, +3);
cut->SetTPCNsigmaMuRange(-2, +2);
cut->SetTPCNsigmaPiRange(-3, +3);
cut->SetTPCNsigmaKaRange(-3, +3);
cut->SetTPCNsigmaPrRange(-3, +3);
cut->SetMuonExclusionTPC(true);
return cut;
}
if (!nameStr.compare("mee_120_500_tpchadrejortofreq_wpf_lowB")) {
// for pair
cut->SetMeeRange(0.12, 0.5);
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTOFNsigmaElRange(-3, +3);
cut->SetTPCNsigmaMuRange(-2, +2);
cut->SetTPCNsigmaPiRange(-3, +3);
cut->SetTPCNsigmaKaRange(-3, +3);
cut->SetTPCNsigmaPrRange(-3, +3);
cut->SetMuonExclusionTPC(true);
return cut;
}
if (!nameStr.compare("mee_0_500_tpchadrejortofreq_wpf_lowB")) {
// for pair
cut->SetMeeRange(0., 0.5);
cut->ApplyPrefilter(true);

// for track
cut->SetTrackPtRange(0.05f, 1e10f);
cut->SetTrackEtaRange(-0.9, +0.9);
cut->SetMinNCrossedRowsTPC(80);
cut->SetMinNCrossedRowsOverFindableClustersTPC(0.8);
cut->SetChi2PerClusterTPC(0.0, 4.0);
cut->SetChi2PerClusterITS(0.0, 5.0);
cut->SetNClustersITS(4, 7);
cut->SetMaxDcaXY(1.0);
cut->SetMaxDcaZ(1.0);

// for PID
cut->SetPIDScheme(DalitzEECut::PIDSchemes::kTPChadrejORTOFreq_lowB);
cut->SetTOFbetaRange(true, 0.0, 0.95);
cut->SetTPCNsigmaElRange(-2, +3);
cut->SetTOFNsigmaElRange(-3, +3);
cut->SetTPCNsigmaMuRange(-2, +2);
cut->SetTPCNsigmaPiRange(-3, +3);
cut->SetTPCNsigmaKaRange(-3, +3);
cut->SetTPCNsigmaPrRange(-3, +3);
cut->SetMuonExclusionTPC(true);
return cut;
}

if (!nameStr.compare("mmumu_0_1100_lowB")) {
// for pair
cut->SetMeeRange(0., 1.1);
Expand Down
5 changes: 5 additions & 0 deletions PWGEM/PhotonMeson/Core/DalitzEECut.cxx
Original file line numberDiff line numberDiff line change
Expand Up@@ -106,6 +106,11 @@ void DalitzEECut::SetMaxDcaXYPtDep(std::function<float(float)> ptDepCut)
mMaxDcaXYPtDep = ptDepCut;
LOG(info) << "DalitzEE Cut, set max DCA xy pt dep: " << mMaxDcaXYPtDep(1.0);
}
void DalitzEECut::ApplyPrefilter(bool flag)
{
mApplyPF = flag;
LOG(info) << "DalitzEE Cut, apply prefilter: " << mApplyPF;
}

void DalitzEECut::SetPIDScheme(PIDSchemes scheme)
{
Expand Down
10 changes: 10 additions & 0 deletions PWGEM/PhotonMeson/Core/DalitzEECut.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -60,6 +60,7 @@ class DalitzEECut : public TNamed
kDCAz,
kITSNCls,
kITSChi2NDF,
kPrefilter,
kNCuts
};
static const char* mCutNames[static_cast<int>(DalitzEECuts::kNCuts)];
Expand DownExpand Up@@ -169,6 +170,10 @@ class DalitzEECut : public TNamed
return false;
}

if (mApplyPF && !IsSelectedTrack(track, DalitzEECuts::kPrefilter)) {
return false;
}

// PID cuts here.
if (!PassPID(track)) {
return false;
Expand DownExpand Up@@ -352,6 +357,9 @@ class DalitzEECut : public TNamed
case DalitzEECuts::kITSChi2NDF:
return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;

case DalitzEECuts::kPrefilter:
return track.pfb() <= 0;

default:
return false;
}
Expand DownExpand Up@@ -391,6 +399,7 @@ class DalitzEECut : public TNamed
void SetMaxDcaXY(float maxDcaXY);
void SetMaxDcaZ(float maxDcaZ);
void SetMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
void ApplyPrefilter(bool flag);

/// @brief Print the track selection
void print() const;
Expand DownExpand Up@@ -419,6 +428,7 @@ class DalitzEECut : public TNamed
float mMaxDcaXY{1.0f}; // max dca in xy plane
float mMaxDcaZ{1.0f}; // max dca in z direction
std::function<float(float)> mMaxDcaXYPtDep{}; // max dca in xy plane as function of pT
bool mApplyPF{false};

// pid cuts
PIDSchemes mPIDScheme{PIDSchemes::kUnDef};
Expand Down
13 changes: 5 additions & 8 deletions PWGEM/PhotonMeson/Core/HistogramsLibrary.cxx
Original file line numberDiff line numberDiff line change
Expand Up@@ -416,16 +416,13 @@ void o2::aod::emphotonhistograms::DefineHistograms(THashList* list, const char*
for (int i = 0; i < nmgg04; i++) {
mgg04[i] = 0.002 * i;
}
const int npTgg10 = 71;
const int npTgg10 = 61;
float pTgg10[npTgg10] = {};
for (int i = 0; i < 10; i++) {
pTgg10[i] = 0.01 * (i - 0) + 0.0; // from 0 to 0.1 GeV/c, every 0.01 GeV/c
}
for (int i = 10; i < 60; i++) {
pTgg10[i] = 0.1 * (i - 10) + 0.1; // from 0.1 to 5 GeV/c, every 0.1 GeV/c
for (int i = 0; i < 50; i++) {
pTgg10[i] = 0.1 * (i - 0) + 0.0; // from 0 to 5 GeV/c, every 0.1 GeV/c
}
for (int i = 60; i < npTgg10; i++) {
pTgg10[i] = 0.5 * (i - 60) + 5.0; // from 5 to 10 GeV/c, evety 0.5 GeV/c
for (int i = 50; i < npTgg10; i++) {
pTgg10[i] = 0.5 * (i - 50) + 5.0; // from 5 to 10 GeV/c, evety 0.5 GeV/c
}
if (TString(histClass) == "tagging_pi0") {
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));
Expand Down
14 changes: 12 additions & 2 deletions PWGEM/PhotonMeson/DataModel/gammaTables.h
Original file line numberDiff line numberDiff line change
Expand Up@@ -30,8 +30,8 @@ namespace o2::aod

namespace emreducedevent
{
DECLARE_SOA_INDEX_COLUMN(Collision, collision); //!
DECLARE_SOA_COLUMN(Tag, tag, uint64_t); //! Bit-field for storing event information (e.g. high level info, cut decisions)
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
DECLARE_SOA_COLUMN(Tag, tag, uint64_t); //! Bit-field for storing event information (e.g. high level info, cut decisions)
DECLARE_SOA_COLUMN(NgammaPCM, ngpcm, int);
DECLARE_SOA_COLUMN(NgammaPHOS, ngphos, int);
DECLARE_SOA_COLUMN(NgammaEMC, ngemc, int);
Expand DownExpand Up@@ -315,6 +315,7 @@ DECLARE_SOA_INDEX_COLUMN(EMReducedEvent, emreducedevent); //!
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
DECLARE_SOA_COLUMN(TrackId, trackId, int); //!
DECLARE_SOA_COLUMN(Sign, sign, int); //!
DECLARE_SOA_COLUMN(PrefilterBit, pfb, uint8_t); //!
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { return pt * std::cos(phi); });
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float { return pt * std::sin(phi); });
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float eta) -> float { return pt * std::sinh(eta); });
Expand DownExpand Up@@ -347,6 +348,10 @@ DECLARE_SOA_TABLE(EMPrimaryElectronEMReducedEventIds, "AOD", "PRMELEMEVENTID", e
// iterators
using EMPrimaryElectronEMReducedEventId = EMPrimaryElectronEMReducedEventIds::iterator;

DECLARE_SOA_TABLE(EMPrimaryElectronsPrefilterBit, "AOD", "PRMELEPFB", emprimaryelectron::PrefilterBit); // To be joined with EMPrimaryElectrons table at analysis level.
// iterators
using EMPrimaryElectronPrefilterBit = EMPrimaryElectronsPrefilterBit::iterator;

namespace dalitzee
{
DECLARE_SOA_INDEX_COLUMN(EMReducedEvent, emreducedevent); //!
Expand DownExpand Up@@ -380,6 +385,7 @@ DECLARE_SOA_INDEX_COLUMN(EMReducedEvent, emreducedevent); //!
DECLARE_SOA_COLUMN(CollisionId, collisionId, int); //!
DECLARE_SOA_COLUMN(TrackId, trackId, int); //!
DECLARE_SOA_COLUMN(Sign, sign, int); //!
DECLARE_SOA_COLUMN(PrefilterBit, pfb, uint8_t); //!
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, [](float pt, float phi) -> float { return pt * std::cos(phi); });
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, [](float pt, float phi) -> float { return pt * std::sin(phi); });
DECLARE_SOA_DYNAMIC_COLUMN(Pz, pz, [](float pt, float eta) -> float { return pt * std::sinh(eta); });
Expand DownExpand Up@@ -412,6 +418,10 @@ DECLARE_SOA_TABLE(EMPrimaryMuonEMReducedEventIds, "AOD", "PRMMUEMEVENTID", empri
// iterators
using EMPrimaryMuonEMReducedEventId = EMPrimaryMuonEMReducedEventIds::iterator;

DECLARE_SOA_TABLE(EMPrimaryMuonsPrefilterBit, "AOD", "PRMMUPFB", emprimarymuon::PrefilterBit); // To be joined with EMPrimaryMuons table at analysis level.
// iterators
using EMPrimaryMuonPrefilterBit = EMPrimaryMuonsPrefilterBit::iterator;

namespace dalitzmumu
{
DECLARE_SOA_INDEX_COLUMN(EMReducedEvent, emreducedevent); //!
Expand Down
Loading