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
48 changes: 23 additions & 25 deletions PWGEM/Dilepton/Core/DielectronCut.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ class DielectronCut : public TNamed
template <bool dont_require_pteta = false, typename TTrack>
bool IsSelectedTrack(TTrack const& track) const
{
if (!track.hasITS()) {
if (!track.hasITS() || !track.hasTPC()) {
return false;
}

Expand Down Expand Up @@ -225,34 +225,32 @@ class DielectronCut : public TNamed
}
}

if (!mIncludeITSsa && (!track.hasITS() || !track.hasTPC())) { // track has to be ITS-TPC matched track
// if (!mIncludeITSsa && (!track.hasITS() || !track.hasTPC())) { // track has to be ITS-TPC matched track
// return false;
// }

// if ((track.hasITS() && !track.hasTPC() && !track.hasTRD() && !track.hasTOF()) && track.pt() > mMaxPtITSsa) { // ITSsa
// return false;
// }

// TPC cuts
if (!IsSelectedTrack(track, DielectronCuts::kTPCNCls)) {
return false;
}

if ((track.hasITS() && !track.hasTPC() && !track.hasTRD() && !track.hasTOF()) && track.pt() > mMaxPtITSsa) { // ITSsa
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRows)) {
return false;
}

// TPC cuts
if (track.hasTPC()) {
if (!IsSelectedTrack(track, DielectronCuts::kTPCNCls)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRows)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRowsOverNCls)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCFracSharedClusters)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kRelDiffPin)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCChi2NDF)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRowsOverNCls)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCFracSharedClusters)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kRelDiffPin)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCChi2NDF)) {
return false;
}

if (mApplyPF && !IsSelectedTrack(track, DielectronCuts::kPrefilter)) {
Expand Down
10 changes: 4 additions & 6 deletions PWGEM/Dilepton/Core/Dilepton.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,8 @@ struct Dilepton {
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 TOF"};
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_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"};
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", false, "flag to require ITS ib any hits"};
Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", true, "flag to require ITS ib 1st hit"};
Configurable<float> cfg_min_its_cluster_size{"cfg_min_its_cluster_size", 0.f, "min ITS cluster size"};
Expand All @@ -237,8 +237,6 @@ struct Dilepton {
Configurable<float> cfg_min_pin_pirejTPC{"cfg_min_pin_pirejTPC", 0.f, "min. pin for pion rejection in TPC"};
Configurable<float> cfg_max_pin_pirejTPC{"cfg_max_pin_pirejTPC", 1e+10, "max. pin for pion rejection in TPC"};
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};

// configuration for PID ML
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
Expand Down Expand Up @@ -730,7 +728,6 @@ struct Dilepton {
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
fDielectronCut.SetChi2TOF(0, dielectroncuts.cfg_max_chi2tof);
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);

// for eID
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);
Expand Down Expand Up @@ -1143,7 +1140,8 @@ struct Dilepton {

SliceCache cache;
Preslice<MyElectrons> perCollision_electron = aod::emprimaryelectron::emeventId;
Filter trackFilter_electron = dielectroncuts.cfg_min_pt_track < o2::aod::track::pt && dielectroncuts.cfg_min_eta_track < o2::aod::track::eta && o2::aod::track::eta < dielectroncuts.cfg_max_eta_track && nabs(o2::aod::track::dcaXY) < dielectroncuts.cfg_max_dcaxy && nabs(o2::aod::track::dcaZ) < dielectroncuts.cfg_max_dcaz;
Filter trackFilter_electron = dielectroncuts.cfg_min_pt_track < o2::aod::track::pt && dielectroncuts.cfg_min_eta_track < o2::aod::track::eta && o2::aod::track::eta < dielectroncuts.cfg_max_eta_track && nabs(o2::aod::track::dcaXY) < dielectroncuts.cfg_max_dcaxy && nabs(o2::aod::track::dcaZ) < dielectroncuts.cfg_max_dcaz && o2::aod::track::itsChi2NCl < dielectroncuts.cfg_max_chi2its && o2::aod::track::tpcChi2NCl < dielectroncuts.cfg_max_chi2tpc;
Filter pidFilter_electron = dielectroncuts.cfg_min_TPCNsigmaEl < o2::aod::pidtpc::tpcNSigmaEl && o2::aod::pidtpc::tpcNSigmaEl < dielectroncuts.cfg_max_TPCNsigmaEl;
Filter ttcaFilter_electron = ifnode(dielectroncuts.enableTTCA.node(), o2::aod::emprimaryelectron::isAssociatedToMPC == true || o2::aod::emprimaryelectron::isAssociatedToMPC == false, o2::aod::emprimaryelectron::isAssociatedToMPC == true);
Filter prefilter_derived_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter_derived.node() && dielectroncuts.cfg_prefilter_bits_derived.node() >= static_cast<uint16_t>(1),
ifnode((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int(o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee))) > static_cast<uint16_t>(0), (o2::aod::emprimaryelectron::pfbderived & static_cast<uint16_t>(1 << int(o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee))) <= static_cast<uint16_t>(0), true) &&
Expand Down
10 changes: 4 additions & 6 deletions PWGEM/Dilepton/Core/DileptonMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,8 @@ struct DileptonMC {
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 TOF"};
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_max_dcaxy{"cfg_max_dcaxy", 1.0, "max dca XY for single track in cm"};
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", false, "flag to require ITS ib any hits"};
Configurable<bool> cfg_require_itsib_1st{"cfg_require_itsib_1st", true, "flag to require ITS ib 1st hit"};
Configurable<float> cfg_min_its_cluster_size{"cfg_min_its_cluster_size", 0.f, "min ITS cluster size"};
Expand All @@ -239,8 +239,6 @@ struct DileptonMC {
Configurable<float> cfg_min_pin_pirejTPC{"cfg_min_pin_pirejTPC", 0.f, "min. pin for pion rejection in TPC"};
Configurable<float> cfg_max_pin_pirejTPC{"cfg_max_pin_pirejTPC", 1e+10, "max. pin for pion rejection in TPC"};
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};

// configuration for PID ML
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
Expand Down Expand Up @@ -737,7 +735,6 @@ struct DileptonMC {
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
fDielectronCut.SetChi2TOF(0.0, dielectroncuts.cfg_max_chi2tof);
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);

// for eID
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);
Expand Down Expand Up @@ -2484,7 +2481,8 @@ struct DileptonMC {

SliceCache cache;
Preslice<MyMCElectrons> perCollision_electron = aod::emprimaryelectron::emeventId;
Filter trackFilter_electron = nabs(o2::aod::track::dcaXY) < dielectroncuts.cfg_max_dcaxy && nabs(o2::aod::track::dcaZ) < dielectroncuts.cfg_max_dcaz;
Filter trackFilter_electron = nabs(o2::aod::track::dcaXY) < dielectroncuts.cfg_max_dcaxy && nabs(o2::aod::track::dcaZ) < dielectroncuts.cfg_max_dcaz && o2::aod::track::itsChi2NCl < dielectroncuts.cfg_max_chi2its && o2::aod::track::tpcChi2NCl < dielectroncuts.cfg_max_chi2tpc;
Filter pidFilter_electron = dielectroncuts.cfg_min_TPCNsigmaEl < o2::aod::pidtpc::tpcNSigmaEl && o2::aod::pidtpc::tpcNSigmaEl < dielectroncuts.cfg_max_TPCNsigmaEl;
Filter ttcaFilter_electron = ifnode(dielectroncuts.enableTTCA.node(), o2::aod::emprimaryelectron::isAssociatedToMPC == true || o2::aod::emprimaryelectron::isAssociatedToMPC == false, o2::aod::emprimaryelectron::isAssociatedToMPC == true);
Filter prefilter_derived_electron = ifnode(dielectroncuts.cfg_apply_cuts_from_prefilter_derived.node() && dielectroncuts.cfg_prefilter_bits_derived.node() >= static_cast<uint16_t>(1),
ifnode((dielectroncuts.cfg_prefilter_bits_derived.node() & static_cast<uint16_t>(1 << int(o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee))) > static_cast<uint16_t>(0), (o2::aod::emprimaryelectron::pfbderived & static_cast<uint16_t>(1 << int(o2::aod::pwgem::dilepton::utils::pairutil::DileptonPrefilterBitDerived::kMee))) <= static_cast<uint16_t>(0), true) &&
Expand Down
10 changes: 0 additions & 10 deletions PWGEM/Dilepton/TableProducer/createEMEventDilepton.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
/// \author Daiki Sekihata, daiki.sekihata@cern.ch

#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
#include "PWGEM/PhotonMeson/DataModel/gammaTables.h"

#include "Common/CCDB/EventSelectionParams.h"
#include "Common/DataModel/Centrality.h"
Expand Down Expand Up @@ -294,16 +293,13 @@ struct CreateEMEventDilepton {
PROCESS_SWITCH(CreateEMEventDilepton, processDummy, "processDummy", true);
};
struct AssociateDileptonToEMEvent {
Produces<o2::aod::V0KFEMEventIds> v0kfeventid;
Produces<o2::aod::EMPrimaryElectronEMEventIds> prmeleventid;
Produces<o2::aod::EMPrimaryMuonEMEventIds> prmmueventid;
Produces<o2::aod::EMPrimaryTrackEMEventIds> prmtrackeventid;

Preslice<aod::V0PhotonsKF> perCollision_pcm = aod::v0photonkf::collisionId;
PresliceUnsorted<aod::EMPrimaryElectrons> perCollision_el = aod::emprimaryelectron::collisionId;
PresliceUnsorted<aod::EMPrimaryMuons> perCollision_mu = aod::emprimarymuon::collisionId;
Preslice<aod::EMPrimaryTracks> perCollision_track = aod::emprimarytrack::collisionId;
// Preslice<aod::EMPrimaryTrackEMEventIdsTMP> perCollision_track = aod::track::collisionId;

void init(o2::framework::InitContext&) {}

Expand All @@ -323,11 +319,6 @@ struct AssociateDileptonToEMEvent {
// This struct is for both data and MC.
// Note that reconstructed collisions without mc collisions are already rejected in CreateEMEventDilepton in MC.

// void processPCM(aod::EMEvents const& collisions, aod::V0PhotonsKF const& photons)
// {
// fillEventId(collisions, photons, v0kfeventid, perCollision_pcm);
// }

void processElectron(aod::EMEvents const& collisions, aod::EMPrimaryElectrons const& tracks)
{
fillEventId(collisions, tracks, prmeleventid, perCollision_el);
Expand All @@ -345,7 +336,6 @@ struct AssociateDileptonToEMEvent {

void processDummy(aod::EMEvents const&) {}

// PROCESS_SWITCH(AssociateDileptonToEMEvent, processPCM, "process indexing for PCM", false);
PROCESS_SWITCH(AssociateDileptonToEMEvent, processElectron, "process indexing for electrons", false);
PROCESS_SWITCH(AssociateDileptonToEMEvent, processFwdMuon, "process indexing for forward muons", false);
PROCESS_SWITCH(AssociateDileptonToEMEvent, processChargedTrack, "process indexing for charged tracks", false);
Expand Down
Loading
Loading