Skip to content

Commit

Permalink
PWGEM/Dilepton: add a QC task for virtual photon at low mass (#7361)
Browse files Browse the repository at this point in the history
  • Loading branch information
dsekihat authored Aug 20, 2024
1 parent f00ddc5 commit 6ade24d
Show file tree
Hide file tree
Showing 11 changed files with 1,126 additions and 12 deletions.
3 changes: 2 additions & 1 deletion PWGEM/Dilepton/Core/DielectronCut.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,11 @@ void DielectronCut::SetChi2PerClusterITS(float min, float max)
mMaxChi2PerClusterITS = max;
LOG(info) << "Dielectron Cut, set chi2 per cluster ITS range: " << mMinChi2PerClusterITS << " - " << mMaxChi2PerClusterITS;
}
void DielectronCut::SetMeanClusterSizeITSob(float min, float max)
void DielectronCut::SetMeanClusterSizeITS(float min, float max, float maxP)
{
mMinMeanClusterSizeITS = min;
mMaxMeanClusterSizeITS = max;
mMaxP_ITSClusterSize = maxP;
LOG(info) << "Dielectron Cut, set mean cluster size ITS range: " << mMinMeanClusterSizeITS << " - " << mMaxMeanClusterSizeITS;
}
void DielectronCut::SetDca3DRange(float min, float max)
Expand Down
7 changes: 4 additions & 3 deletions PWGEM/Dilepton/Core/DielectronCut.h
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class DielectronCut : public TNamed
std::vector<float> inputFeatures{static_cast<float>(collision.numContrib()), track.p(), track.tgl(),
track.tpcNSigmaEl(), /*track.tpcNSigmaMu(),*/ track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr(),
track.tofNSigmaEl(), /*track.tofNSigmaMu(),*/ track.tofNSigmaPi(), track.tofNSigmaKa(), track.tofNSigmaPr(),
track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl()))};
track.meanClusterSizeITS() * std::cos(std::atan(track.tgl()))};

// calculate classifier
float prob_ele = mPIDModel->evalModel(inputFeatures)[0];
Expand Down Expand Up @@ -341,7 +341,7 @@ class DielectronCut : public TNamed
return mMinChi2PerClusterITS < track.itsChi2NCl() && track.itsChi2NCl() < mMaxChi2PerClusterITS;

case DielectronCuts::kITSCluserSize:
return mMinMeanClusterSizeITS < track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl())) && track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl())) < mMaxMeanClusterSizeITS;
return 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 All @@ -367,7 +367,7 @@ class DielectronCut : public TNamed
void SetChi2PerClusterTPC(float min, float max);
void SetNClustersITS(int min, int max);
void SetChi2PerClusterITS(float min, float max);
void SetMeanClusterSizeITSob(float min, float max);
void SetMeanClusterSizeITS(float min, float max, float maxP = 0.f);

void SetPIDScheme(int scheme);
void SetMinPinTOF(float min);
Expand Down Expand Up @@ -440,6 +440,7 @@ class DielectronCut : public TNamed
bool mApplyPhiV{true};
bool mApplyPF{false};
float mMinMeanClusterSizeITS{-1e10f}, mMaxMeanClusterSizeITS{1e10f}; // max <its cluster size> x cos(Lmabda)
float mMaxP_ITSClusterSize{0.0};

// pid cuts
int mPIDScheme{-1};
Expand Down
2 changes: 1 addition & 1 deletion PWGEM/Dilepton/Core/Dilepton.h
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,7 @@ 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.SetMeanClusterSizeITSob(0, 16);
fDielectronCut.SetMeanClusterSizeITS(0, 16);
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);

Expand Down
2 changes: 1 addition & 1 deletion PWGEM/Dilepton/Core/DileptonMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -490,7 +490,7 @@ 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.SetMeanClusterSizeITSob(0, 16);
fDielectronCut.SetMeanClusterSizeITS(0, 16);
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);

Expand Down
5 changes: 4 additions & 1 deletion PWGEM/Dilepton/Core/PhotonHBT.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,9 @@ struct PhotonHBT {
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
Configurable<float> cfg_min_TOFbeta{"cfg_min_TOFbeta", 0.985, "min TOF beta for single track"}; //|beta - 1| < 0.015 corresponds to 3 sigma in pp
Configurable<float> cfg_max_TOFbeta{"cfg_max_TOFbeta", 1.015, "max TOF beta for single track"}; //|beta - 1| < 0.015 corresponds to 3 sigma in pp
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_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.2, "max p to apply ITS cluster size cut"};

Configurable<int> cfg_pid_scheme{"cfg_pid_scheme", static_cast<int>(DielectronCut::PIDSchemes::kTPChadrejORTOFreq), "pid scheme [kTOFreq : 0, kTPChadrej : 1, kTPChadrejORTOFreq : 2, kTPConly : 3]"};
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -2.0, "min. TPC n sigma for electron inclusion"};
Expand Down Expand Up @@ -463,7 +466,7 @@ 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.SetMeanClusterSizeITSob(0, 16);
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);

Expand Down
2 changes: 1 addition & 1 deletion PWGEM/Dilepton/Core/SingleTrackQC.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ 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.SetMeanClusterSizeITSob(0, 16);
fDielectronCut.SetMeanClusterSizeITS(0, 16);
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);
Expand Down
2 changes: 1 addition & 1 deletion PWGEM/Dilepton/Core/SingleTrackQCMC.h
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ struct SingleTrackQCMC {
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.SetMeanClusterSizeITSob(0, 16);
fDielectronCut.SetMeanClusterSizeITS(0, 16);
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);
Expand Down
10 changes: 10 additions & 0 deletions PWGEM/Dilepton/Tasks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,16 @@ o2physics_add_dpl_workflow(single-electron-qc-mc
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(vp-pair-qc
SOURCES vpPairQC.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(vp-pair-qc-mc
SOURCES vpPairQCMC.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(single-muon-qc
SOURCES singleMuonQC.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::PWGEMDileptonCore
Expand Down
Loading

0 comments on commit 6ade24d

Please sign in to comment.