Skip to content

Commit 2d0c61b

Browse files
authored
[PWGEM] Add the possibility to select Phi regions (#11978)
1 parent f06546a commit 2d0c61b

File tree

6 files changed

+37
-18
lines changed

6 files changed

+37
-18
lines changed

PWGEM/Dilepton/Core/DielectronCut.cxx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,13 @@ void DielectronCut::SetTrackEtaRange(float minEta, float maxEta)
9191
mMaxTrackEta = maxEta;
9292
LOG(info) << "Dielectron Cut, set track eta range: " << mMinTrackEta << " - " << mMaxTrackEta;
9393
}
94-
void DielectronCut::SetTrackPhiRange(float minPhi, float maxPhi)
94+
void DielectronCut::SetTrackPhiRange(float minPhi, float maxPhi, bool mirror, bool reject)
9595
{
9696
mMinTrackPhi = minPhi;
9797
mMaxTrackPhi = maxPhi;
98-
LOG(info) << "Dielectron Cut, set track phi range (rad.): " << mMinTrackPhi << " - " << mMaxTrackPhi;
98+
mMirrorTrackPhi = mirror;
99+
mRejectTrackPhi = reject;
100+
LOG(info) << "Dielectron Cut, set track phi range (rad.): " << mMinTrackPhi << " - " << mMaxTrackPhi << " with mirror: " << mMirrorTrackPhi << " and rejection: " << mRejectTrackPhi;
99101
}
100102
void DielectronCut::SetMinNClustersTPC(int minNClustersTPC)
101103
{

PWGEM/Dilepton/Core/DielectronCut.h

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,15 @@ class DielectronCut : public TNamed
384384
return track.eta() > mMinTrackEta && track.eta() < mMaxTrackEta;
385385

386386
case DielectronCuts::kTrackPhiRange:
387-
return track.phi() > mMinTrackPhi && track.phi() < mMaxTrackPhi;
387+
if (!mMirrorTrackPhi) {
388+
bool is_in_phi_range = track.phi() > mMinTrackPhi && track.phi() < mMaxTrackPhi;
389+
return mRejectTrackPhi ? !is_in_phi_range : is_in_phi_range;
390+
} else {
391+
double minTrackPhiMirror = mMinTrackPhi + TMath::Pi();
392+
double maxTrackPhiMirror = mMaxTrackPhi + TMath::Pi();
393+
bool is_in_phi_range = (track.phi() > mMinTrackPhi && track.phi() < mMaxTrackPhi) || (track.phi() > minTrackPhiMirror && track.phi() < maxTrackPhiMirror);
394+
return mRejectTrackPhi ? !is_in_phi_range : is_in_phi_range;
395+
}
388396

389397
case DielectronCuts::kTPCNCls:
390398
return track.tpcNClsFound() >= mMinNClustersTPC;
@@ -440,7 +448,7 @@ class DielectronCut : public TNamed
440448

441449
void SetTrackPtRange(float minPt = 0.f, float maxPt = 1e10f);
442450
void SetTrackEtaRange(float minEta = -1e10f, float maxEta = 1e10f);
443-
void SetTrackPhiRange(float minPhi = 0.f, float maxPhi = 2.f * M_PI);
451+
void SetTrackPhiRange(float minPhi = 0.f, float maxPhi = 2.f * M_PI, bool mirror = false, bool reject = false);
444452
void SetMinNClustersTPC(int minNClustersTPC);
445453
void SetMinNCrossedRowsTPC(int minNCrossedRowsTPC);
446454
void SetMinNCrossedRowsOverFindableClustersTPC(float minNCrossedRowsOverFindableClustersTPC);
@@ -514,9 +522,10 @@ class DielectronCut : public TNamed
514522
bool mRequireDiffSides{false}; // flag to require 2 tracks to be from different sides. (A-C combination). If one wants 2 tracks to be in the same side (A-A or C-C), one can simply use track eta cut.
515523

516524
// kinematic cuts
517-
float mMinTrackPt{0.f}, mMaxTrackPt{1e10f}; // range in pT
518-
float mMinTrackEta{-1e10f}, mMaxTrackEta{1e10f}; // range in eta
519-
float mMinTrackPhi{0.f}, mMaxTrackPhi{2.f * M_PI}; // range in phi
525+
float mMinTrackPt{0.f}, mMaxTrackPt{1e10f}; // range in pT
526+
float mMinTrackEta{-1e10f}, mMaxTrackEta{1e10f}; // range in eta
527+
float mMinTrackPhi{0.f}, mMaxTrackPhi{2.f * M_PI}; // range in phi
528+
bool mMirrorTrackPhi{false}, mRejectTrackPhi{false}; // phi cut mirror by Pi, rejected/accepted
520529

521530
// track quality cuts
522531
int mMinNClustersTPC{0}; // min number of TPC clusters

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ struct Dilepton {
197197
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for single track"};
198198
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "min phi for single track"};
199199
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for single track"};
200+
Configurable<bool> cfg_mirror_phi_track{"cfg_mirror_phi_track", false, "mirror the phi cut around Pi, min and max Phi should be in 0-Pi"};
201+
Configurable<bool> cfg_reject_phi_track{"cfg_reject_phi_track", false, "reject the phi interval"};
200202
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
201203
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
202204
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 100, "min ncrossed rows"};
@@ -675,7 +677,7 @@ struct Dilepton {
675677
// for track
676678
fDielectronCut.SetTrackPtRange(dielectroncuts.cfg_min_pt_track, dielectroncuts.cfg_max_pt_track);
677679
fDielectronCut.SetTrackEtaRange(dielectroncuts.cfg_min_eta_track, dielectroncuts.cfg_max_eta_track);
678-
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track);
680+
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track, dielectroncuts.cfg_mirror_phi_track, dielectroncuts.cfg_reject_phi_track);
679681
fDielectronCut.SetMinNClustersTPC(dielectroncuts.cfg_min_ncluster_tpc);
680682
fDielectronCut.SetMinNCrossedRowsTPC(dielectroncuts.cfg_min_ncrossedrows);
681683
fDielectronCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,12 @@ struct DileptonMC {
187187

188188
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for single track"};
189189
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 1e+10, "max pT for single track"};
190-
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "max eta for single track"};
190+
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "min eta for single track"};
191191
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for single track"};
192-
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "max phi for single track"};
192+
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "min phi for single track"};
193193
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for single track"};
194+
Configurable<bool> cfg_mirror_phi_track{"cfg_mirror_phi_track", false, "mirror the phi cut around Pi, min and max Phi should be in 0-Pi"};
195+
Configurable<bool> cfg_reject_phi_track{"cfg_reject_phi_track", false, "reject the phi interval"};
194196
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
195197
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
196198
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 100, "min ncrossed rows"};
@@ -649,8 +651,8 @@ struct DileptonMC {
649651

650652
// for track
651653
fDielectronCut.SetTrackPtRange(dielectroncuts.cfg_min_pt_track, dielectroncuts.cfg_max_pt_track);
652-
fDielectronCut.SetTrackEtaRange(-dielectroncuts.cfg_max_eta_track, +dielectroncuts.cfg_max_eta_track);
653-
fDielectronCut.SetTrackPhiRange(-dielectroncuts.cfg_max_phi_track, +dielectroncuts.cfg_max_phi_track);
654+
fDielectronCut.SetTrackEtaRange(dielectroncuts.cfg_min_eta_track, +dielectroncuts.cfg_max_eta_track);
655+
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track, dielectroncuts.cfg_mirror_phi_track, dielectroncuts.cfg_reject_phi_track);
654656
fDielectronCut.SetMinNClustersTPC(dielectroncuts.cfg_min_ncluster_tpc);
655657
fDielectronCut.SetMinNCrossedRowsTPC(dielectroncuts.cfg_min_ncrossedrows);
656658
fDielectronCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,12 @@ struct SingleTrackQC {
125125

126126
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for single track"};
127127
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 1e+10, "max pT for single track"};
128-
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "max eta for single track"};
128+
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "min eta for single track"};
129129
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for single track"};
130-
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "max phi for single track"};
130+
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "min phi for single track"};
131131
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for single track"};
132+
Configurable<bool> cfg_mirror_phi_track{"cfg_mirror_phi_track", false, "mirror the phi cut around Pi, min and max phi should be in 0-Pi"};
133+
Configurable<bool> cfg_reject_phi_track{"cfg_reject_phi_track", false, "reject the phi interval"};
132134
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
133135
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
134136
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 100, "min ncrossed rows"};
@@ -383,7 +385,7 @@ struct SingleTrackQC {
383385
// for track
384386
fDielectronCut.SetTrackPtRange(dielectroncuts.cfg_min_pt_track, dielectroncuts.cfg_max_pt_track);
385387
fDielectronCut.SetTrackEtaRange(dielectroncuts.cfg_min_eta_track, dielectroncuts.cfg_max_eta_track);
386-
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track);
388+
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track, dielectroncuts.cfg_mirror_phi_track, dielectroncuts.cfg_reject_phi_track);
387389
fDielectronCut.SetMinNClustersTPC(dielectroncuts.cfg_min_ncluster_tpc);
388390
fDielectronCut.SetMinNCrossedRowsTPC(dielectroncuts.cfg_min_ncrossedrows);
389391
fDielectronCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,12 @@ struct SingleTrackQCMC {
132132
std::string prefix = "dielectroncut_group";
133133
Configurable<float> cfg_min_pt_track{"cfg_min_pt_track", 0.2, "min pT for single track"};
134134
Configurable<float> cfg_max_pt_track{"cfg_max_pt_track", 1e+10, "max pT for single track"};
135-
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "max eta for single track"};
135+
Configurable<float> cfg_min_eta_track{"cfg_min_eta_track", -0.8, "min eta for single track"};
136136
Configurable<float> cfg_max_eta_track{"cfg_max_eta_track", +0.8, "max eta for single track"};
137-
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "max phi for single track"};
137+
Configurable<float> cfg_min_phi_track{"cfg_min_phi_track", 0.f, "min phi for single track"};
138138
Configurable<float> cfg_max_phi_track{"cfg_max_phi_track", 6.3, "max phi for single track"};
139+
Configurable<bool> cfg_mirror_phi_track{"cfg_mirror_phi_track", false, "mirror the phi cut around Pi, min and max Phi should be in 0-Pi"};
140+
Configurable<bool> cfg_reject_phi_track{"cfg_reject_phi_track", false, "reject the phi interval"};
139141
Configurable<int> cfg_min_ncluster_tpc{"cfg_min_ncluster_tpc", 0, "min ncluster tpc"};
140142
Configurable<int> cfg_min_ncluster_its{"cfg_min_ncluster_its", 5, "min ncluster its"};
141143
Configurable<int> cfg_min_ncrossedrows{"cfg_min_ncrossedrows", 100, "min ncrossed rows"};
@@ -453,7 +455,7 @@ struct SingleTrackQCMC {
453455
// for track
454456
fDielectronCut.SetTrackPtRange(dielectroncuts.cfg_min_pt_track, dielectroncuts.cfg_max_pt_track);
455457
fDielectronCut.SetTrackEtaRange(dielectroncuts.cfg_min_eta_track, dielectroncuts.cfg_max_eta_track);
456-
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track);
458+
fDielectronCut.SetTrackPhiRange(dielectroncuts.cfg_min_phi_track, dielectroncuts.cfg_max_phi_track, dielectroncuts.cfg_mirror_phi_track, dielectroncuts.cfg_reject_phi_track);
457459
fDielectronCut.SetMinNClustersTPC(dielectroncuts.cfg_min_ncluster_tpc);
458460
fDielectronCut.SetMinNCrossedRowsTPC(dielectroncuts.cfg_min_ncrossedrows);
459461
fDielectronCut.SetMinNCrossedRowsOverFindableClustersTPC(0.8);

0 commit comments

Comments
 (0)