Skip to content

Commit 0992bab

Browse files
committed
PWGEM/Dilepton: update for ITSsa and include headers
1 parent 9db231f commit 0992bab

20 files changed

+249
-167
lines changed

PWGEM/Dilepton/Core/DielectronCut.cxx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@
1313
// Class for dielectron Cut
1414
//
1515

16-
#include <utility>
17-
#include <set>
16+
#include "PWGEM/Dilepton/Core/DielectronCut.h"
1817

1918
#include "Framework/Logger.h"
20-
#include "PWGEM/Dilepton/Core/DielectronCut.h"
19+
20+
#include <set>
21+
#include <utility>
2122

2223
ClassImp(DielectronCut);
2324

@@ -341,3 +342,9 @@ void DielectronCut::RequireITSib1st(bool flag)
341342
mRequireITSib1st = flag;
342343
LOG(info) << "Dielectron Cut, require ITS ib 1st: " << mRequireITSib1st;
343344
}
345+
void DielectronCut::IncludeITSsa(bool flag, float max)
346+
{
347+
mIncludeITSsa = flag;
348+
mMaxPtITSsa = max;
349+
LOG(info) << "Dielectron Cut, include ITSsa tracks: " << mIncludeITSsa << ", mMaxPtITSsa = " << mMaxPtITSsa;
350+
}

PWGEM/Dilepton/Core/DielectronCut.h

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,22 @@
1616
#ifndef PWGEM_DILEPTON_CORE_DIELECTRONCUT_H_
1717
#define PWGEM_DILEPTON_CORE_DIELECTRONCUT_H_
1818

19-
#include <algorithm>
20-
#include <set>
21-
#include <vector>
22-
#include <utility>
23-
#include <string>
24-
#include "TNamed.h"
25-
#include "Math/Vector4D.h"
26-
19+
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
2720
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
21+
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
2822

29-
#include "Framework/Logger.h"
30-
#include "Framework/DataTypes.h"
3123
#include "CommonConstants/PhysicsConstants.h"
32-
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
33-
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
24+
#include "Framework/DataTypes.h"
25+
#include "Framework/Logger.h"
26+
27+
#include "Math/Vector4D.h"
28+
#include "TNamed.h"
29+
30+
#include <algorithm>
31+
#include <set>
32+
#include <string>
33+
#include <utility>
34+
#include <vector>
3435

3536
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
3637
using namespace o2::aod::pwgem::dilepton::utils::pairutil;
@@ -149,7 +150,7 @@ class DielectronCut : public TNamed
149150
template <bool dont_require_pteta = false, bool isML = false, typename TTrack, typename TCollision = int>
150151
bool IsSelectedTrack(TTrack const& track, TCollision const& collision = 0) const
151152
{
152-
if (!track.hasITS() || !track.hasTPC()) { // track has to be ITS-TPC matched track
153+
if (!track.hasITS()) {
153154
return false;
154155
}
155156

@@ -200,24 +201,34 @@ class DielectronCut : public TNamed
200201
}
201202
}
202203

203-
// TPC cuts
204-
if (!IsSelectedTrack(track, DielectronCuts::kTPCNCls)) {
205-
return false;
206-
}
207-
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRows)) {
208-
return false;
209-
}
210-
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRowsOverNCls)) {
204+
if (!mIncludeITSsa && (!track.hasITS() || !track.hasTPC())) { // track has to be ITS-TPC matched track
211205
return false;
212206
}
213-
if (!IsSelectedTrack(track, DielectronCuts::kTPCFracSharedClusters)) {
214-
return false;
215-
}
216-
if (!IsSelectedTrack(track, DielectronCuts::kRelDiffPin)) {
207+
208+
if ((track.hasITS() && !track.hasTPC() && !track.hasTRD() && !track.hasTOF()) && track.pt() > mMaxPtITSsa) { // ITSsa
217209
return false;
218210
}
219-
if (!IsSelectedTrack(track, DielectronCuts::kTPCChi2NDF)) {
220-
return false;
211+
212+
// TPC cuts
213+
if (track.hasTPC()) {
214+
if (!IsSelectedTrack(track, DielectronCuts::kTPCNCls)) {
215+
return false;
216+
}
217+
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRows)) {
218+
return false;
219+
}
220+
if (!IsSelectedTrack(track, DielectronCuts::kTPCCrossedRowsOverNCls)) {
221+
return false;
222+
}
223+
if (!IsSelectedTrack(track, DielectronCuts::kTPCFracSharedClusters)) {
224+
return false;
225+
}
226+
if (!IsSelectedTrack(track, DielectronCuts::kRelDiffPin)) {
227+
return false;
228+
}
229+
if (!IsSelectedTrack(track, DielectronCuts::kTPCChi2NDF)) {
230+
return false;
231+
}
221232
}
222233

223234
if (mApplyPF && !IsSelectedTrack(track, DielectronCuts::kPrefilter)) {
@@ -470,6 +481,7 @@ class DielectronCut : public TNamed
470481
void SetTrackMaxDcaXYPtDep(std::function<float(float)> ptDepCut);
471482
void ApplyPrefilter(bool flag);
472483
void ApplyPhiV(bool flag);
484+
void IncludeITSsa(bool flag, float maxpt);
473485

474486
void SetPIDMlResponse(o2::analysis::MlResponseDielectronSingleTrack<float>* mlResponse)
475487
{
@@ -525,6 +537,8 @@ class DielectronCut : public TNamed
525537
bool mApplyPF{false};
526538
float mMinMeanClusterSizeITS{-1e10f}, mMaxMeanClusterSizeITS{1e10f}; // max <its cluster size> x cos(Lmabda)
527539
float mMinP_ITSClusterSize{0.0}, mMaxP_ITSClusterSize{0.0};
540+
bool mIncludeITSsa{false};
541+
float mMaxPtITSsa{0.15};
528542

529543
// pid cuts
530544
int mPIDScheme{-1};

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,8 @@ struct Dilepton {
239239
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
240240
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
241241
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
242+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
243+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
242244

243245
// configuration for PID ML
244246
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -690,6 +692,7 @@ struct Dilepton {
690692
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
691693
fDielectronCut.SetChi2TOF(0, dielectroncuts.cfg_max_chi2tof);
692694
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
695+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
693696

694697
// for eID
695698
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ struct DileptonMC {
230230
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
231231
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
232232
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
233+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
234+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
233235

234236
// configuration for PID ML
235237
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -655,6 +657,7 @@ struct DileptonMC {
655657
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
656658
fDielectronCut.SetChi2TOF(0.0, dielectroncuts.cfg_max_chi2tof);
657659
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
660+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
658661

659662
// for eID
660663
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/Core/PhotonHBT.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ struct PhotonHBT {
240240
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
241241
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
242242
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
243+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
244+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
243245

244246
// configuration for PID ML
245247
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -573,6 +575,7 @@ struct PhotonHBT {
573575
fDielectronCut.SetTrackMaxDcaZ(dielectroncuts.cfg_max_dcaz);
574576
fDielectronCut.SetChi2TOF(0.0, dielectroncuts.cfg_max_chi2tof);
575577
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
578+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
576579

577580
// for eID
578581
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/Core/SingleTrackQC.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ struct SingleTrackQC {
171171
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
172172
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
173173
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
174+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
175+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
174176

175177
// configuration for PID ML
176178
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -398,6 +400,7 @@ struct SingleTrackQC {
398400
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
399401
fDielectronCut.SetChi2TOF(0.0, dielectroncuts.cfg_max_chi2tof);
400402
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
403+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
401404

402405
// for eID
403406
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/Core/SingleTrackQCMC.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,8 @@ struct SingleTrackQCMC {
178178
Configurable<float> cfg_min_p_ITSNsigmaPr{"cfg_min_p_ITSNsigmaPr", 0.0, "min p for proton exclusion in ITS"};
179179
Configurable<float> cfg_max_p_ITSNsigmaPr{"cfg_max_p_ITSNsigmaPr", 0.0, "max p for proton exclusion in ITS"};
180180
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
181+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
182+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
181183

182184
// configuration for PID ML
183185
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -457,6 +459,7 @@ struct SingleTrackQCMC {
457459
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
458460
fDielectronCut.SetChi2TOF(0.0, dielectroncuts.cfg_max_chi2tof);
459461
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
462+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
460463

461464
// for eID
462465
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/TableProducer/skimmerPrimaryElectron.cxx

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ struct skimmerPrimaryElectron {
8181
Configurable<int> min_ncluster_itsib{"min_ncluster_itsib", 1, "min ncluster itsib"};
8282
Configurable<float> maxchi2tpc{"maxchi2tpc", 5.0, "max. chi2/NclsTPC"};
8383
Configurable<float> maxchi2its{"maxchi2its", 6.0, "max. chi2/NclsITS"};
84-
Configurable<float> minpt_itstpc{"minpt_itstpc", 0.1, "min pt for ITS-TPC track"};
85-
Configurable<float> minpt_itssa{"minpt_itssa", 0.05, "min pt for ITSsa track"};
84+
Configurable<float> minpt{"minpt", 0.15, "min pt for ITS-TPC track"};
8685
Configurable<float> maxeta{"maxeta", 0.9, "eta acceptance"};
8786
Configurable<float> dca_xy_max{"dca_xy_max", 1.0, "max DCAxy in cm"};
8887
Configurable<float> dca_z_max{"dca_z_max", 1.0, "max DCAz in cm"};
@@ -348,11 +347,11 @@ struct skimmerPrimaryElectron {
348347
return false;
349348
}
350349

351-
if ((track.hasITS() && track.hasTPC()) && track_par_cov_recalc.getPt() < minpt_itstpc) {
350+
if ((track.hasITS() && track.hasTPC()) && track_par_cov_recalc.getPt() < minpt) {
352351
return false;
353352
}
354353

355-
if ((track.hasITS() && !track.hasTPC() && !track.hasTOF() && !track.hasTRD()) && (track_par_cov_recalc.getPt() < minpt_itssa || maxpt_itssa < track_par_cov_recalc.getPt())) {
354+
if ((track.hasITS() && !track.hasTPC() && !track.hasTOF() && !track.hasTRD()) && maxpt_itssa < track_par_cov_recalc.getPt()) {
356355
return false;
357356
}
358357

@@ -558,7 +557,7 @@ struct skimmerPrimaryElectron {
558557

559558
Preslice<aod::TrackAssoc> trackIndicesPerCollision = aod::track_association::collisionId;
560559
std::vector<std::pair<int, int>> stored_trackIds;
561-
Filter trackFilter = o2::aod::track::pt > minpt_itssa&& nabs(o2::aod::track::eta) < maxeta&& o2::aod::track::itsChi2NCl < maxchi2its&& ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) == true;
560+
Filter trackFilter = o2::aod::track::pt > minpt&& nabs(o2::aod::track::eta) < maxeta&& o2::aod::track::itsChi2NCl < maxchi2its&& ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) == true;
562561
using MyFilteredTracks = soa::Filtered<MyTracks>;
563562

564563
Partition<MyFilteredTracks> posTracks = o2::aod::track::signed1Pt > 0.f;
@@ -779,8 +778,7 @@ struct prefilterPrimaryElectron {
779778
Configurable<bool> fillQAHistogram{"fillQAHistogram", false, "flag to fill QA histograms"};
780779
Configurable<float> max_dcaxy{"max_dcaxy", 0.3, "DCAxy To PV for loose track sample"};
781780
Configurable<float> max_dcaz{"max_dcaz", 0.3, "DCAz To PV for loose track sample"};
782-
Configurable<float> minpt_itstpc{"minpt_itstpc", 0.1, "min pt for ITS-TPC track"};
783-
Configurable<float> minpt_itssa{"minpt_itssa", 0.05, "min pt for ITSsa track"};
781+
Configurable<float> minpt{"minpt", 0.1, "min pt for ITS-TPC track"};
784782
Configurable<float> maxeta{"maxeta", 1.2, "eta acceptance for loose track sample"};
785783
Configurable<int> min_ncluster_tpc{"min_ncluster_tpc", 0, "min ncluster tpc"};
786784
Configurable<int> mincrossedrows{"mincrossedrows", 70, "min crossed rows"};
@@ -954,11 +952,11 @@ struct prefilterPrimaryElectron {
954952
return false;
955953
}
956954

957-
if ((track.hasITS() && track.hasTPC()) && track_par_cov_recalc.getPt() < minpt_itstpc) {
955+
if ((track.hasITS() && track.hasTPC()) && track_par_cov_recalc.getPt() < minpt) {
958956
return false;
959957
}
960958

961-
if ((track.hasITS() && !track.hasTPC() && !track.hasTOF() && !track.hasTRD()) && (track_par_cov_recalc.getPt() < minpt_itssa || maxpt_itssa < track_par_cov_recalc.getPt())) {
959+
if ((track.hasITS() && !track.hasTPC() && !track.hasTOF() && !track.hasTRD()) && maxpt_itssa < track_par_cov_recalc.getPt()) {
962960
return false;
963961
}
964962

@@ -1021,7 +1019,7 @@ struct prefilterPrimaryElectron {
10211019

10221020
Preslice<aod::TrackAssoc> trackIndicesPerCollision = aod::track_association::collisionId;
10231021

1024-
Filter trackFilter = o2::aod::track::pt > minpt_itssa&& nabs(o2::aod::track::eta) < maxeta&& o2::aod::track::itsChi2NCl < maxchi2its&& ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) == true;
1022+
Filter trackFilter = o2::aod::track::pt > minpt&& nabs(o2::aod::track::eta) < maxeta&& o2::aod::track::itsChi2NCl < maxchi2its&& ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) == true;
10251023
using MyFilteredTracks = soa::Filtered<MyTracks>;
10261024
Partition<MyFilteredTracks> posTracks = o2::aod::track::signed1Pt > 0.f;
10271025
Partition<MyFilteredTracks> negTracks = o2::aod::track::signed1Pt < 0.f;

PWGEM/Dilepton/Tasks/prefilterDielectron.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ struct prefilterDielectron {
146146
Configurable<float> cfg_min_TOFNsigmaEl{"cfg_min_TOFNsigmaEl", -3.0, "min. TOF n sigma for electron inclusion"};
147147
Configurable<float> cfg_max_TOFNsigmaEl{"cfg_max_TOFNsigmaEl", +3.0, "max. TOF n sigma for electron inclusion"};
148148
Configurable<bool> enableTTCA{"enableTTCA", true, "Flag to enable or disable TTCA"};
149+
Configurable<bool> includeITSsa{"includeITSsa", false, "Flag to enable ITSsa tracks"};
150+
Configurable<float> cfg_max_pt_track_ITSsa{"cfg_max_pt_track_ITSsa", 0.15, "max pt for ITSsa tracks"};
149151

150152
// configuration for PID ML
151153
Configurable<std::vector<std::string>> onnxFileNames{"onnxFileNames", std::vector<std::string>{"filename"}, "ONNX file names for each bin (if not from CCDB full path)"};
@@ -287,6 +289,7 @@ struct prefilterDielectron {
287289
fDielectronCut.RequireITSib1st(dielectroncuts.cfg_require_itsib_1st);
288290
fDielectronCut.SetChi2TOF(0, dielectroncuts.cfg_max_chi2tof);
289291
fDielectronCut.SetRelDiffPin(dielectroncuts.cfg_min_rel_diff_pin, dielectroncuts.cfg_max_rel_diff_pin);
292+
fDielectronCut.IncludeITSsa(dielectroncuts.includeITSsa, dielectroncuts.cfg_max_pt_track_ITSsa);
290293

291294
// for eID
292295
fDielectronCut.SetPIDScheme(dielectroncuts.cfg_pid_scheme);

PWGEM/Dilepton/Utils/MCUtilities.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#include <string>
1919
#include <vector>
2020
#include <algorithm>
21+
#include "Framework/Logger.h"
22+
#include "Framework/AnalysisDataModel.h"
2123

2224
//_______________________________________________________________________
2325
namespace o2::aod::pwgem::dilepton::utils::mcutil

0 commit comments

Comments
 (0)