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
19 changes: 13 additions & 6 deletions PWGEM/Dilepton/Core/DielectronCut.cxx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.

Check failure on line 1 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Provide mandatory file documentation.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand All @@ -8,41 +8,42 @@
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.

Check failure on line 11 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \author is missing, incorrect or misplaced.

Check failure on line 11 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \brief is missing, incorrect or misplaced.

Check failure on line 11 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \file is missing, incorrect or misplaced.
//
// Class for dielectron Cut
//

#include <utility>
#include <set>
#include "PWGEM/Dilepton/Core/DielectronCut.h"

#include "Framework/Logger.h"
#include "PWGEM/Dilepton/Core/DielectronCut.h"

#include <set>
#include <utility>

ClassImp(DielectronCut);

const std::pair<int8_t, std::set<uint8_t>> DielectronCut::its_ib_any_Requirement = {1, {0, 1, 2}}; // hits on any ITS ib layers.

Check failure on line 25 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
const std::pair<int8_t, std::set<uint8_t>> DielectronCut::its_ib_1st_Requirement = {1, {0}}; // hit on 1st ITS ib layers.

Check failure on line 26 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.

void DielectronCut::SetPairPtRange(float minPt, float maxPt)

Check failure on line 28 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
{
mMinPairPt = minPt;
mMaxPairPt = maxPt;
LOG(info) << "Dielectron Cut, set pair pt range: " << mMinPairPt << " - " << mMaxPairPt;
}
void DielectronCut::SetPairYRange(float minY, float maxY)

Check failure on line 34 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
{
mMinPairY = minY;
mMaxPairY = maxY;
LOG(info) << "Dielectron Cut, set pair y range: " << mMinPairY << " - " << mMaxPairY;
}
void DielectronCut::SetPairDCARange(float min, float max)

Check failure on line 40 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
{
mMinPairDCA3D = min;
mMaxPairDCA3D = max;
LOG(info) << "Dielectron Cut, set pair 3d dca range: " << mMinPairDCA3D << " - " << mMaxPairDCA3D;
}
void DielectronCut::SetMeeRange(float min, float max)

Check failure on line 46 in PWGEM/Dilepton/Core/DielectronCut.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/function-variable]

Use lowerCamelCase for names of functions and variables.
{
mMinMee = min;
mMaxMee = max;
Expand Down Expand Up @@ -141,12 +142,12 @@
mMaxChi2PerClusterITS = max;
LOG(info) << "Dielectron Cut, set chi2 per cluster ITS range: " << mMinChi2PerClusterITS << " - " << mMaxChi2PerClusterITS;
}
void DielectronCut::SetMeanClusterSizeITS(float min, float max, float minP, float maxP)
void DielectronCut::SetMeanClusterSizeITS(float min, float max)
{
mMinMeanClusterSizeITS = min;
mMaxMeanClusterSizeITS = max;
mMinP_ITSClusterSize = minP;
mMaxP_ITSClusterSize = maxP;
// mMinP_ITSClusterSize = minP;
// mMaxP_ITSClusterSize = maxP;
LOG(info) << "Dielectron Cut, set mean cluster size ITS range: " << mMinMeanClusterSizeITS << " - " << mMaxMeanClusterSizeITS;
}
void DielectronCut::SetChi2TOF(float min, float max)
Expand Down Expand Up @@ -341,3 +342,9 @@
mRequireITSib1st = flag;
LOG(info) << "Dielectron Cut, require ITS ib 1st: " << mRequireITSib1st;
}
void DielectronCut::IncludeITSsa(bool flag, float max)
{
mIncludeITSsa = flag;
mMaxPtITSsa = max;
LOG(info) << "Dielectron Cut, include ITSsa tracks: " << mIncludeITSsa << ", mMaxPtITSsa = " << mMaxPtITSsa;
}
97 changes: 58 additions & 39 deletions PWGEM/Dilepton/Core/DielectronCut.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,22 @@
#ifndef PWGEM_DILEPTON_CORE_DIELECTRONCUT_H_
#define PWGEM_DILEPTON_CORE_DIELECTRONCUT_H_

#include <algorithm>
#include <set>
#include <vector>
#include <utility>
#include <string>
#include "TNamed.h"
#include "Math/Vector4D.h"

#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
#include "PWGEM/Dilepton/Utils/PairUtilities.h"

#include "Framework/Logger.h"
#include "Framework/DataTypes.h"
#include "CommonConstants/PhysicsConstants.h"
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
#include "Framework/DataTypes.h"
#include "Framework/Logger.h"

#include "Math/Vector4D.h"
#include "TNamed.h"

#include <algorithm>
#include <set>
#include <string>
#include <utility>
#include <vector>

using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
using namespace o2::aod::pwgem::dilepton::utils::pairutil;
Expand Down Expand Up @@ -64,7 +65,7 @@ class DielectronCut : public TNamed
kDCAz,
kITSNCls,
kITSChi2NDF,
kITSClusterSize,
// kITSClusterSize,
kPrefilter,
kNCuts
};
Expand Down Expand Up @@ -149,7 +150,7 @@ class DielectronCut : public TNamed
template <bool dont_require_pteta = false, bool isML = false, typename TTrack, typename TCollision = int>
bool IsSelectedTrack(TTrack const& track, TCollision const& collision = 0) const
{
if (!track.hasITS() || !track.hasTPC()) { // track has to be ITS-TPC matched track
if (!track.hasITS()) {
return false;
}

Expand Down Expand Up @@ -182,9 +183,10 @@ class DielectronCut : public TNamed
if (!IsSelectedTrack(track, DielectronCuts::kITSChi2NDF)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kITSClusterSize)) {
return false;
}

// if (!IsSelectedTrack(track, DielectronCuts::kITSClusterSize)) {
// return false;
// }

if (mRequireITSibAny) {
auto hits_ib = std::count_if(its_ib_any_Requirement.second.begin(), its_ib_any_Requirement.second.end(), [&](auto&& requiredLayer) { return track.itsClusterMap() & (1 << requiredLayer); });
Expand All @@ -200,24 +202,34 @@ class DielectronCut : public TNamed
}
}

// TPC cuts
if (!IsSelectedTrack(track, DielectronCuts::kTPCNCls)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRows)) {
if (!mIncludeITSsa && (!track.hasITS() || !track.hasTPC())) { // track has to be ITS-TPC matched track
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRowsOverNCls)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCFracSharedClusters)) {
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kRelDiffPin)) {

if ((track.hasITS() && !track.hasTPC() && !track.hasTRD() && !track.hasTOF()) && track.pt() > mMaxPtITSsa) { // ITSsa
return false;
}
if (!IsSelectedTrack(track, DielectronCuts::kTPCChi2NDF)) {
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 (mApplyPF && !IsSelectedTrack(track, DielectronCuts::kPrefilter)) {
Expand All @@ -230,8 +242,15 @@ class DielectronCut : public TNamed
return false;
}
} else {
if (!PassPID(track)) {
return false;
if (track.hasITS() && !track.hasTPC() && !track.hasTRD() && !track.hasTOF()) { // ITSsa
float meanClusterSizeITS = track.meanClusterSizeITS() * std::cos(std::atan(track.tgl()));
if (meanClusterSizeITS < mMinMeanClusterSizeITS || mMaxMeanClusterSizeITS < meanClusterSizeITS) {
return false;
}
} else { // not ITSsa
if (!PassPID(track)) {
return false;
}
}
}

Expand Down Expand Up @@ -400,9 +419,6 @@ class DielectronCut : public TNamed
case DielectronCuts::kITSChi2NDF:
return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;

case DielectronCuts::kITSClusterSize:
return ((mMinP_ITSClusterSize < track.p() && track.p() < mMaxP_ITSClusterSize) ? (mMinMeanClusterSizeITS < track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())) && track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())) < mMaxMeanClusterSizeITS) : true);

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

Expand Down Expand Up @@ -433,7 +449,7 @@ class DielectronCut : public TNamed
void SetChi2PerClusterTPC(float min, float max);
void SetNClustersITS(int min, int max);
void SetChi2PerClusterITS(float min, float max);
void SetMeanClusterSizeITS(float min, float max, float minP = 0.f, float maxP = 0.f);
void SetMeanClusterSizeITS(float min, float max);
void SetChi2TOF(float min, float max);

void SetPIDScheme(int scheme);
Expand Down Expand Up @@ -470,6 +486,7 @@ class DielectronCut : public TNamed
void SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
void ApplyPrefilter(bool flag);
void ApplyPhiV(bool flag);
void IncludeITSsa(bool flag, float maxpt);

void SetPIDMlResponse(o2::analysis::MlResponseDielectronSingleTrack<float>* mlResponse)
{
Expand Down Expand Up @@ -523,8 +540,10 @@ class DielectronCut : public TNamed
std::function<float(float)> mMaxDcaXYPtDep{}; // max dca in xy plane as function of pT
bool mApplyPhiV{true};
bool mApplyPF{false};
float mMinMeanClusterSizeITS{-1e10f}, mMaxMeanClusterSizeITS{1e10f}; // max <its cluster size> x cos(Lmabda)
float mMinP_ITSClusterSize{0.0}, mMaxP_ITSClusterSize{0.0};
float mMinMeanClusterSizeITS{0.0}, mMaxMeanClusterSizeITS{1e10f}; // <its cluster size> x cos(lmabda)
// float mMinP_ITSClusterSize{0.0}, mMaxP_ITSClusterSize{0.0};
bool mIncludeITSsa{false};
float mMaxPtITSsa{0.15};

// pid cuts
int mPIDScheme{-1};
Expand Down
7 changes: 4 additions & 3 deletions PWGEM/Dilepton/Core/Dilepton.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,6 @@ struct Dilepton {
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"};
Configurable<float> cfg_max_its_cluster_size{"cfg_max_its_cluster_size", 16.f, "max ITS cluster size"};
Configurable<float> cfg_min_p_its_cluster_size{"cfg_min_p_its_cluster_size", 0.0, "min p to apply ITS cluster size cut"};
Configurable<float> cfg_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.0, "max p to apply ITS cluster size cut"};
Configurable<float> cfg_min_rel_diff_pin{"cfg_min_rel_diff_pin", -1e+10, "min rel. diff. between pin and ppv"};
Configurable<float> cfg_max_rel_diff_pin{"cfg_max_rel_diff_pin", +1e+10, "max rel. diff. between pin and ppv"};

Expand Down Expand Up @@ -239,6 +237,8 @@ struct Dilepton {
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
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 @@ -683,13 +683,14 @@ struct Dilepton {
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_min_p_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size);
fDielectronCut.SetTrackMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetTrackMaxDcaZ(dielectroncuts.cfg_max_dcaz);
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);
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
7 changes: 4 additions & 3 deletions PWGEM/Dilepton/Core/DileptonMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,6 @@ struct DileptonMC {
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"};
Configurable<float> cfg_max_its_cluster_size{"cfg_max_its_cluster_size", 16.f, "max ITS cluster size"};
Configurable<float> cfg_min_p_its_cluster_size{"cfg_min_p_its_cluster_size", 0.0, "min p to apply ITS cluster size cut"};
Configurable<float> cfg_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.0, "max p to apply ITS cluster size cut"};
Configurable<float> cfg_min_rel_diff_pin{"cfg_min_rel_diff_pin", -1e+10, "min rel. diff. between pin and ppv"};
Configurable<float> cfg_max_rel_diff_pin{"cfg_max_rel_diff_pin", +1e+10, "max rel. diff. between pin and ppv"};

Expand Down Expand Up @@ -230,6 +228,8 @@ struct DileptonMC {
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
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 @@ -648,13 +648,14 @@ struct DileptonMC {
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_min_p_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size);
fDielectronCut.SetTrackMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetTrackMaxDcaZ(dielectroncuts.cfg_max_dcaz);
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);
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
7 changes: 4 additions & 3 deletions PWGEM/Dilepton/Core/PhotonHBT.h
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,6 @@ struct PhotonHBT {
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 0.2, "max dca Z for single track in cm"};
Configurable<float> cfg_min_its_cluster_size{"cfg_min_its_cluster_size", 0.f, "min ITS cluster size"};
Configurable<float> cfg_max_its_cluster_size{"cfg_max_its_cluster_size", 16.f, "max ITS cluster size"};
Configurable<float> cfg_min_p_its_cluster_size{"cfg_min_p_its_cluster_size", 0.0, "min p to apply ITS cluster size cut"};
Configurable<float> cfg_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.0, "max p to apply ITS cluster size cut"};
Configurable<float> cfg_min_rel_diff_pin{"cfg_min_rel_diff_pin", -1e+10, "min rel. diff. between pin and ppv"};
Configurable<float> cfg_max_rel_diff_pin{"cfg_max_rel_diff_pin", +1e+10, "max rel. diff. between pin and ppv"};
Configurable<bool> cfg_require_itsib_any{"cfg_require_itsib_any", false, "flag to require ITS ib any hits"};
Expand Down Expand Up @@ -240,6 +238,8 @@ struct PhotonHBT {
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
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 @@ -568,11 +568,12 @@ struct PhotonHBT {
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_min_p_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size);
fDielectronCut.SetTrackMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetTrackMaxDcaZ(dielectroncuts.cfg_max_dcaz);
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
7 changes: 4 additions & 3 deletions PWGEM/Dilepton/Core/SingleTrackQC.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,6 @@ struct SingleTrackQC {
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"};
Configurable<float> cfg_max_its_cluster_size{"cfg_max_its_cluster_size", 16.f, "max ITS cluster size"};
Configurable<float> cfg_min_p_its_cluster_size{"cfg_min_p_its_cluster_size", 0.0, "min p to apply ITS cluster size cut"};
Configurable<float> cfg_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.0, "max p to apply ITS cluster size cut"};
Configurable<float> cfg_min_rel_diff_pin{"cfg_min_rel_diff_pin", -1e+10, "min rel. diff. between pin and ppv"};
Configurable<float> cfg_max_rel_diff_pin{"cfg_max_rel_diff_pin", +1e+10, "max rel. diff. between pin and ppv"};

Expand Down Expand Up @@ -171,6 +169,8 @@ struct SingleTrackQC {
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
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 @@ -391,13 +391,14 @@ struct SingleTrackQC {
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_min_p_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size);
fDielectronCut.SetTrackMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetTrackMaxDcaZ(dielectroncuts.cfg_max_dcaz);
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);
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
Loading
Loading