Skip to content

Commit b65483d

Browse files
committed
PWGEM/Dilepton: add a QC task for virtual photon at low mass
1 parent f00ddc5 commit b65483d

11 files changed

Lines changed: 1126 additions & 12 deletions

File tree

PWGEM/Dilepton/Core/DielectronCut.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,11 @@ void DielectronCut::SetChi2PerClusterITS(float min, float max)
103103
mMaxChi2PerClusterITS = max;
104104
LOG(info) << "Dielectron Cut, set chi2 per cluster ITS range: " << mMinChi2PerClusterITS << " - " << mMaxChi2PerClusterITS;
105105
}
106-
void DielectronCut::SetMeanClusterSizeITSob(float min, float max)
106+
void DielectronCut::SetMeanClusterSizeITS(float min, float max, float maxP)
107107
{
108108
mMinMeanClusterSizeITS = min;
109109
mMaxMeanClusterSizeITS = max;
110+
mMaxP_ITSClusterSize = maxP;
110111
LOG(info) << "Dielectron Cut, set mean cluster size ITS range: " << mMinMeanClusterSizeITS << " - " << mMaxMeanClusterSizeITS;
111112
}
112113
void DielectronCut::SetDca3DRange(float min, float max)

PWGEM/Dilepton/Core/DielectronCut.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ class DielectronCut : public TNamed
225225
std::vector<float> inputFeatures{static_cast<float>(collision.numContrib()), track.p(), track.tgl(),
226226
track.tpcNSigmaEl(), /*track.tpcNSigmaMu(),*/ track.tpcNSigmaPi(), track.tpcNSigmaKa(), track.tpcNSigmaPr(),
227227
track.tofNSigmaEl(), /*track.tofNSigmaMu(),*/ track.tofNSigmaPi(), track.tofNSigmaKa(), track.tofNSigmaPr(),
228-
track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl()))};
228+
track.meanClusterSizeITS() * std::cos(std::atan(track.tgl()))};
229229

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

343343
case DielectronCuts::kITSCluserSize:
344-
return mMinMeanClusterSizeITS < track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl())) && track.meanClusterSizeITSob() * std::cos(std::atan(track.tgl())) < mMaxMeanClusterSizeITS;
344+
return track.p() < mMaxP_ITSClusterSize ? mMinMeanClusterSizeITS < track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())) && track.meanClusterSizeITS() * std::cos(std::atan(track.tgl())) < mMaxMeanClusterSizeITS : true;
345345

346346
case DielectronCuts::kPrefilter:
347347
return track.pfb() <= 0;
@@ -367,7 +367,7 @@ class DielectronCut : public TNamed
367367
void SetChi2PerClusterTPC(float min, float max);
368368
void SetNClustersITS(int min, int max);
369369
void SetChi2PerClusterITS(float min, float max);
370-
void SetMeanClusterSizeITSob(float min, float max);
370+
void SetMeanClusterSizeITS(float min, float max, float maxP = 0.f);
371371

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

444445
// pid cuts
445446
int mPIDScheme{-1};

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ struct Dilepton {
530530
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
531531
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
532532
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
533-
fDielectronCut.SetMeanClusterSizeITSob(0, 16);
533+
fDielectronCut.SetMeanClusterSizeITS(0, 16);
534534
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
535535
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
536536

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,7 @@ struct DileptonMC {
490490
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
491491
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
492492
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
493-
fDielectronCut.SetMeanClusterSizeITSob(0, 16);
493+
fDielectronCut.SetMeanClusterSizeITS(0, 16);
494494
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
495495
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
496496

PWGEM/Dilepton/Core/PhotonHBT.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ struct PhotonHBT {
188188
Configurable<float> cfg_max_dcaz{"cfg_max_dcaz", 1.0, "max dca Z for single track in cm"};
189189
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
190190
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
191+
Configurable<float> cfg_min_its_cluster_size{"cfg_min_its_cluster_size", 0.f, "min ITS cluster size"};
192+
Configurable<float> cfg_max_its_cluster_size{"cfg_max_its_cluster_size", 16.f, "max ITS cluster size"};
193+
Configurable<float> cfg_max_p_its_cluster_size{"cfg_max_p_its_cluster_size", 0.2, "max p to apply ITS cluster size cut"};
191194

192195
Configurable<int> cfg_pid_scheme{"cfg_pid_scheme", static_cast<int>(DielectronCut::PIDSchemes::kTPChadrejORTOFreq), "pid scheme [kTOFreq : 0, kTPChadrej : 1, kTPChadrejORTOFreq : 2, kTPConly : 3]"};
193196
Configurable<float> cfg_min_TPCNsigmaEl{"cfg_min_TPCNsigmaEl", -2.0, "min. TPC n sigma for electron inclusion"};
@@ -463,7 +466,7 @@ struct PhotonHBT {
463466
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
464467
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
465468
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
466-
fDielectronCut.SetMeanClusterSizeITSob(0, 16);
469+
fDielectronCut.SetMeanClusterSizeITS(dielectroncuts.cfg_min_its_cluster_size, dielectroncuts.cfg_max_its_cluster_size, dielectroncuts.cfg_max_p_its_cluster_size);
467470
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
468471
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
469472

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ struct SingleTrackQC {
307307
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
308308
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
309309
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
310-
fDielectronCut.SetMeanClusterSizeITSob(0, 16);
310+
fDielectronCut.SetMeanClusterSizeITS(0, 16);
311311
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
312312
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
313313
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ struct SingleTrackQCMC {
351351
fDielectronCut.SetChi2PerClusterTPC(0.0, dielectroncuts.cfg_max_chi2tpc);
352352
fDielectronCut.SetChi2PerClusterITS(0.0, dielectroncuts.cfg_max_chi2its);
353353
fDielectronCut.SetNClustersITS(dielectroncuts.cfg_min_ncluster_its, 7);
354-
fDielectronCut.SetMeanClusterSizeITSob(0, 16);
354+
fDielectronCut.SetMeanClusterSizeITS(0, 16);
355355
fDielectronCut.SetMaxDcaXY(dielectroncuts.cfg_max_dcaxy);
356356
fDielectronCut.SetMaxDcaZ(dielectroncuts.cfg_max_dcaz);
357357
fDielectronCut.RequireITSibAny(dielectroncuts.cfg_require_itsib_any);

PWGEM/Dilepton/Tasks/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ o2physics_add_dpl_workflow(single-electron-qc-mc
5555
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
5656
COMPONENT_NAME Analysis)
5757

58+
o2physics_add_dpl_workflow(vp-pair-qc
59+
SOURCES vpPairQC.cxx
60+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
61+
COMPONENT_NAME Analysis)
62+
63+
o2physics_add_dpl_workflow(vp-pair-qc-mc
64+
SOURCES vpPairQCMC.cxx
65+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::MLCore O2Physics::PWGEMDileptonCore
66+
COMPONENT_NAME Analysis)
67+
5868
o2physics_add_dpl_workflow(single-muon-qc
5969
SOURCES singleMuonQC.cxx
6070
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::PWGEMDileptonCore

0 commit comments

Comments
 (0)