Skip to content

Commit e76e9fb

Browse files
dsekihatalibuild
andauthored
[PWGEM/Dilepton] add kIsVertexTOFmatched for event selection (#11638)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 62fffc9 commit e76e9fb

File tree

10 files changed

+220
-182
lines changed

10 files changed

+220
-182
lines changed

PWGEM/Dilepton/Core/Dilepton.h

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,48 @@
1717
#ifndef PWGEM_DILEPTON_CORE_DILEPTON_H_
1818
#define PWGEM_DILEPTON_CORE_DILEPTON_H_
1919

20-
#include <array>
21-
#include <iterator>
22-
#include <string>
23-
#include <algorithm>
24-
#include <map>
25-
#include <vector>
26-
#include <tuple>
27-
#include <utility>
28-
#include "TH1D.h"
29-
#include "TString.h"
30-
#include "Math/Vector4D.h"
20+
#include "PWGEM/Dilepton/Core/DielectronCut.h"
21+
#include "PWGEM/Dilepton/Core/DimuonCut.h"
22+
#include "PWGEM/Dilepton/Core/EMEventCut.h"
23+
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
24+
#include "PWGEM/Dilepton/Utils/EMFwdTrack.h"
25+
#include "PWGEM/Dilepton/Utils/EMTrack.h"
26+
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
27+
#include "PWGEM/Dilepton/Utils/EventHistograms.h"
28+
#include "PWGEM/Dilepton/Utils/EventMixingHandler.h"
29+
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
30+
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
3131

32-
#include "Framework/runDataProcessing.h"
33-
#include "Framework/AnalysisTask.h"
34-
#include "Framework/ASoAHelpers.h"
32+
#include "Common/CCDB/RCTSelectionFlags.h"
3533
#include "Common/Core/RecoDecay.h"
3634
#include "Common/Core/trackUtilities.h"
35+
#include "Tools/ML/MlResponse.h"
36+
37+
#include "CCDB/BasicCCDBManager.h"
3738
#include "CommonConstants/LHCConstants.h"
38-
#include "DataFormatsParameters/GRPLHCIFData.h"
3939
#include "DataFormatsParameters/GRPECSObject.h"
40+
#include "DataFormatsParameters/GRPLHCIFData.h"
41+
#include "DataFormatsParameters/GRPMagField.h"
42+
#include "DataFormatsParameters/GRPObject.h"
43+
#include "DetectorsBase/GeometryManager.h"
44+
#include "DetectorsBase/Propagator.h"
45+
#include "Framework/ASoAHelpers.h"
46+
#include "Framework/AnalysisTask.h"
47+
#include "Framework/runDataProcessing.h"
4048
#include "MathUtils/Utils.h"
4149

42-
#include "DetectorsBase/Propagator.h"
43-
#include "DetectorsBase/GeometryManager.h"
44-
#include "DataFormatsParameters/GRPObject.h"
45-
#include "DataFormatsParameters/GRPMagField.h"
46-
#include "CCDB/BasicCCDBManager.h"
47-
#include "Tools/ML/MlResponse.h"
48-
#include "Common/CCDB/RCTSelectionFlags.h"
50+
#include "Math/Vector4D.h"
51+
#include "TH1D.h"
52+
#include "TString.h"
4953

50-
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
51-
#include "PWGEM/Dilepton/Core/DielectronCut.h"
52-
#include "PWGEM/Dilepton/Core/DimuonCut.h"
53-
#include "PWGEM/Dilepton/Core/EMEventCut.h"
54-
#include "PWGEM/Dilepton/Utils/EMTrack.h"
55-
#include "PWGEM/Dilepton/Utils/EMFwdTrack.h"
56-
#include "PWGEM/Dilepton/Utils/EventMixingHandler.h"
57-
#include "PWGEM/Dilepton/Utils/EventHistograms.h"
58-
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
59-
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
60-
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
54+
#include <algorithm>
55+
#include <array>
56+
#include <iterator>
57+
#include <map>
58+
#include <string>
59+
#include <tuple>
60+
#include <utility>
61+
#include <vector>
6162

6263
using namespace o2;
6364
using namespace o2::aod;
@@ -139,7 +140,8 @@ struct Dilepton {
139140
Configurable<bool> cfgRequireNoTFB{"cfgRequireNoTFB", false, "require No time frame border in event cut"};
140141
Configurable<bool> cfgRequireNoITSROFB{"cfgRequireNoITSROFB", false, "require no ITS readout frame border in event cut"};
141142
Configurable<bool> cfgRequireNoSameBunchPileup{"cfgRequireNoSameBunchPileup", false, "require no same bunch pileup in event cut"};
142-
Configurable<bool> cfgRequireVertexITSTPC{"cfgRequireVertexITSTPC", false, "require Vertex ITSTPC in event cut"}; // ITS-TPC matched track contributes PV.
143+
Configurable<bool> cfgRequireVertexITSTPC{"cfgRequireVertexITSTPC", false, "require Vertex ITSTPC in event cut"}; // ITS-TPC matched track contributes PV.
144+
Configurable<bool> cfgRequireVertexTOFmatched{"cfgRequireVertexTOFmatched", false, "require Vertex TOFmatched in event cut"}; // ITS-TPC-TOF matched track contributes PV.
143145
Configurable<bool> cfgRequireGoodZvtxFT0vsPV{"cfgRequireGoodZvtxFT0vsPV", false, "require good Zvtx between FT0 vs. PV in event cut"};
144146
Configurable<int> cfgTrackOccupancyMin{"cfgTrackOccupancyMin", -2, "min. occupancy"};
145147
Configurable<int> cfgTrackOccupancyMax{"cfgTrackOccupancyMax", 1000000000, "max. occupancy"};
@@ -642,6 +644,7 @@ struct Dilepton {
642644
fEMEventCut.SetRequireNoITSROFB(eventcuts.cfgRequireNoITSROFB);
643645
fEMEventCut.SetRequireNoSameBunchPileup(eventcuts.cfgRequireNoSameBunchPileup);
644646
fEMEventCut.SetRequireVertexITSTPC(eventcuts.cfgRequireVertexITSTPC);
647+
fEMEventCut.SetRequireVertexTOFmatched(eventcuts.cfgRequireVertexTOFmatched);
645648
fEMEventCut.SetRequireGoodZvtxFT0vsPV(eventcuts.cfgRequireGoodZvtxFT0vsPV);
646649
fEMEventCut.SetRequireNoCollInTimeRangeStandard(eventcuts.cfgRequireNoCollInTimeRangeStandard);
647650
fEMEventCut.SetRequireNoCollInTimeRangeStrict(eventcuts.cfgRequireNoCollInTimeRangeStrict);

PWGEM/Dilepton/Core/DileptonMC.h

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -17,40 +17,40 @@
1717
#ifndef PWGEM_DILEPTON_CORE_DILEPTONMC_H_
1818
#define PWGEM_DILEPTON_CORE_DILEPTONMC_H_
1919

20-
#include <map>
21-
#include <string>
22-
#include <vector>
23-
#include <utility>
20+
#include "PWGEM/Dilepton/Core/DielectronCut.h"
21+
#include "PWGEM/Dilepton/Core/DimuonCut.h"
22+
#include "PWGEM/Dilepton/Core/EMEventCut.h"
23+
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
24+
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
25+
#include "PWGEM/Dilepton/Utils/EventHistograms.h"
26+
#include "PWGEM/Dilepton/Utils/MCUtilities.h"
27+
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
28+
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
2429

25-
#include "TString.h"
26-
#include "Math/Vector4D.h"
27-
#include "Framework/runDataProcessing.h"
28-
#include "Framework/AnalysisTask.h"
29-
#include "Framework/ASoAHelpers.h"
30+
#include "Common/CCDB/RCTSelectionFlags.h"
31+
#include "Common/Core/RecoDecay.h"
32+
#include "Common/Core/trackUtilities.h"
33+
#include "Tools/ML/MlResponse.h"
34+
35+
#include "CCDB/BasicCCDBManager.h"
3036
#include "CommonConstants/LHCConstants.h"
31-
#include "DataFormatsParameters/GRPLHCIFData.h"
3237
#include "DataFormatsParameters/GRPECSObject.h"
33-
34-
#include "DetectorsBase/Propagator.h"
35-
#include "DetectorsBase/GeometryManager.h"
36-
#include "DataFormatsParameters/GRPObject.h"
38+
#include "DataFormatsParameters/GRPLHCIFData.h"
3739
#include "DataFormatsParameters/GRPMagField.h"
38-
#include "CCDB/BasicCCDBManager.h"
39-
#include "Tools/ML/MlResponse.h"
40-
#include "Common/CCDB/RCTSelectionFlags.h"
40+
#include "DataFormatsParameters/GRPObject.h"
41+
#include "DetectorsBase/GeometryManager.h"
42+
#include "DetectorsBase/Propagator.h"
43+
#include "Framework/ASoAHelpers.h"
44+
#include "Framework/AnalysisTask.h"
45+
#include "Framework/runDataProcessing.h"
4146

42-
#include "Common/Core/RecoDecay.h"
43-
#include "Common/Core/trackUtilities.h"
47+
#include "Math/Vector4D.h"
48+
#include "TString.h"
4449

45-
#include "PWGEM/Dilepton/DataModel/dileptonTables.h"
46-
#include "PWGEM/Dilepton/Core/DielectronCut.h"
47-
#include "PWGEM/Dilepton/Core/DimuonCut.h"
48-
#include "PWGEM/Dilepton/Core/EMEventCut.h"
49-
#include "PWGEM/Dilepton/Utils/MCUtilities.h"
50-
#include "PWGEM/Dilepton/Utils/EventHistograms.h"
51-
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
52-
#include "PWGEM/Dilepton/Utils/PairUtilities.h"
53-
#include "PWGEM/Dilepton/Utils/MlResponseDielectronSingleTrack.h"
50+
#include <map>
51+
#include <string>
52+
#include <utility>
53+
#include <vector>
5454

5555
using namespace o2;
5656
using namespace o2::aod;
@@ -131,7 +131,8 @@ struct DileptonMC {
131131
Configurable<bool> cfgRequireNoTFB{"cfgRequireNoTFB", false, "require No time frame border in event cut"};
132132
Configurable<bool> cfgRequireNoITSROFB{"cfgRequireNoITSROFB", false, "require no ITS readout frame border in event cut"};
133133
Configurable<bool> cfgRequireNoSameBunchPileup{"cfgRequireNoSameBunchPileup", false, "require no same bunch pileup in event cut"};
134-
Configurable<bool> cfgRequireVertexITSTPC{"cfgRequireVertexITSTPC", false, "require Vertex ITSTPC in event cut"}; // ITS-TPC matched track contributes PV.
134+
Configurable<bool> cfgRequireVertexITSTPC{"cfgRequireVertexITSTPC", false, "require Vertex ITSTPC in event cut"}; // ITS-TPC matched track contributes PV.
135+
Configurable<bool> cfgRequireVertexTOFmatched{"cfgRequireVertexTOFmatched", false, "require Vertex TOFmatched in event cut"}; // ITS-TPC-TOF matched track contributes PV.
135136
Configurable<bool> cfgRequireGoodZvtxFT0vsPV{"cfgRequireGoodZvtxFT0vsPV", false, "require good Zvtx between FT0 vs. PV in event cut"};
136137
Configurable<int> cfgTrackOccupancyMin{"cfgTrackOccupancyMin", -2, "min. occupancy"};
137138
Configurable<int> cfgTrackOccupancyMax{"cfgTrackOccupancyMax", 1000000000, "max. occupancy"};
@@ -608,6 +609,7 @@ struct DileptonMC {
608609
fEMEventCut.SetRequireNoITSROFB(eventcuts.cfgRequireNoITSROFB);
609610
fEMEventCut.SetRequireNoSameBunchPileup(eventcuts.cfgRequireNoSameBunchPileup);
610611
fEMEventCut.SetRequireVertexITSTPC(eventcuts.cfgRequireVertexITSTPC);
612+
fEMEventCut.SetRequireVertexTOFmatched(eventcuts.cfgRequireVertexTOFmatched);
611613
fEMEventCut.SetRequireGoodZvtxFT0vsPV(eventcuts.cfgRequireGoodZvtxFT0vsPV);
612614
fEMEventCut.SetRequireNoCollInTimeRangeStandard(eventcuts.cfgRequireNoCollInTimeRangeStandard);
613615
fEMEventCut.SetRequireNoCollInTimeRangeStrict(eventcuts.cfgRequireNoCollInTimeRangeStrict);

PWGEM/Dilepton/Core/DimuonCut.h

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,21 @@
1616
#ifndef PWGEM_DILEPTON_CORE_DIMUONCUT_H_
1717
#define PWGEM_DILEPTON_CORE_DIMUONCUT_H_
1818

19+
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
20+
21+
#include "CommonConstants/PhysicsConstants.h"
22+
#include "Framework/DataTypes.h"
23+
#include "Framework/Logger.h"
24+
#include "MathUtils/Utils.h"
25+
26+
#include "Math/Vector4D.h"
27+
#include "TNamed.h"
28+
1929
#include <algorithm>
2030
#include <set>
21-
#include <vector>
22-
#include <utility>
2331
#include <string>
24-
#include "TNamed.h"
25-
#include "Math/Vector4D.h"
26-
27-
#include "MathUtils/Utils.h"
28-
#include "Framework/Logger.h"
29-
#include "Framework/DataTypes.h"
30-
#include "CommonConstants/PhysicsConstants.h"
31-
#include "PWGEM/Dilepton/Utils/EMTrackUtilities.h"
32+
#include <utility>
33+
#include <vector>
3234

3335
using namespace o2::aod::pwgem::dilepton::utils::emtrackutil;
3436

@@ -195,7 +197,7 @@ class DimuonCut : public TNamed
195197
return track.chi2() < mMaxChi2;
196198

197199
case DimuonCuts::kMatchingChi2MCHMFT:
198-
return track.chi2MatchMCHMFT() < mMaxMatchingChi2MCHMFT;
200+
return track.chi2MatchMCHMFT() / (2.f * (track.nClusters() + track.nClustersMFT()) - 5.f) < mMaxMatchingChi2MCHMFT;
199201

200202
case DimuonCuts::kMatchingChi2MCHMID:
201203
return track.chi2MatchMCHMID() < mMaxMatchingChi2MCHMID;

PWGEM/Dilepton/Core/EMEventCut.cxx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
// Class for em event selection
1414
//
1515

16-
#include "Framework/Logger.h"
1716
#include "PWGEM/Dilepton/Core/EMEventCut.h"
1817

18+
#include "Framework/Logger.h"
19+
1920
ClassImp(EMEventCut);
2021

2122
void EMEventCut::SetRequireSel8(bool flag)
@@ -61,6 +62,12 @@ void EMEventCut::SetRequireVertexITSTPC(bool flag)
6162
LOG(info) << "EM Event Cut, require vertex reconstructed by ITS-TPC matched track: " << mRequireVertexITSTPC;
6263
}
6364

65+
void EMEventCut::SetRequireVertexTOFmatched(bool flag)
66+
{
67+
mRequireVertexTOFmatched = flag;
68+
LOG(info) << "EM Event Cut, require vertex reconstructed by ITS-TPC matched track: " << mRequireVertexTOFmatched;
69+
}
70+
6471
void EMEventCut::SetRequireGoodZvtxFT0vsPV(bool flag)
6572
{
6673
mRequireGoodZvtxFT0vsPV = flag;

PWGEM/Dilepton/Core/EMEventCut.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
#ifndef PWGEM_DILEPTON_CORE_EMEVENTCUT_H_
1717
#define PWGEM_DILEPTON_CORE_EMEVENTCUT_H_
1818

19-
#include "TNamed.h"
2019
#include "Common/CCDB/EventSelectionParams.h"
2120
#include "Common/CCDB/TriggerAliases.h"
2221

22+
#include "TNamed.h"
23+
2324
using namespace std;
2425

2526
class EMEventCut : public TNamed
@@ -37,6 +38,7 @@ class EMEventCut : public TNamed
3738
kNoITSROFB, // no ITS read out frame border
3839
kNoSameBunchPileup,
3940
kIsVertexITSTPC,
41+
kIsVertexTOFmatched,
4042
kIsGoodZvtxFT0vsPV,
4143
kNoCollInTimeRangeStandard,
4244
kNoCollInTimeRangeStrict,
@@ -73,6 +75,9 @@ class EMEventCut : public TNamed
7375
if (mRequireVertexITSTPC && !IsSelected(collision, EMEventCuts::kIsVertexITSTPC)) {
7476
return false;
7577
}
78+
if (mRequireVertexTOFmatched && !IsSelected(collision, EMEventCuts::kIsVertexTOFmatched)) {
79+
return false;
80+
}
7681
if (mRequireGoodZvtxFT0vsPV && !IsSelected(collision, EMEventCuts::kIsGoodZvtxFT0vsPV)) {
7782
return false;
7883
}
@@ -128,6 +133,9 @@ class EMEventCut : public TNamed
128133
case EMEventCuts::kIsVertexITSTPC:
129134
return collision.selection_bit(o2::aod::evsel::kIsVertexITSTPC);
130135

136+
case EMEventCuts::kIsVertexTOFmatched:
137+
return collision.selection_bit(o2::aod::evsel::kIsVertexTOFmatched);
138+
131139
case EMEventCuts::kIsGoodZvtxFT0vsPV:
132140
return collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV);
133141

@@ -168,6 +176,7 @@ class EMEventCut : public TNamed
168176
void SetRequireNoITSROFB(bool flag);
169177
void SetRequireNoSameBunchPileup(bool flag);
170178
void SetRequireVertexITSTPC(bool flag);
179+
void SetRequireVertexTOFmatched(bool flag);
171180
void SetRequireGoodZvtxFT0vsPV(bool flag);
172181
void SetRequireNoCollInTimeRangeStandard(bool flag);
173182
void SetRequireNoCollInTimeRangeStrict(bool flag);
@@ -186,6 +195,7 @@ class EMEventCut : public TNamed
186195
bool mRequireNoITSROFB{false};
187196
bool mRequireNoSameBunchPileup{false};
188197
bool mRequireVertexITSTPC{false};
198+
bool mRequireVertexTOFmatched{false};
189199
bool mRequireGoodZvtxFT0vsPV{false};
190200
bool mRequireNoCollInTimeRangeStandard{false};
191201
bool mRequireNoCollInTimeRangeStrict{false};

0 commit comments

Comments
 (0)