Skip to content

Commit fbd8df9

Browse files
authored
Latest updates of diffQA tasks (AliceO2Group#821)
1 parent 3d2d173 commit fbd8df9

7 files changed

Lines changed: 118 additions & 66 deletions

File tree

EventFiltering/PWGUD/cutHolder.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ void cutHolder::SetMinNBCs(int nminbcs)
2020
{
2121
mMinNBCs = nminbcs;
2222
}
23+
void cutHolder::SetGlobalTracksOnly(bool globalTracksOnly)
24+
{
25+
mGlobalTracksOnly = globalTracksOnly;
26+
}
2327
void cutHolder::SetNTracks(int MinNTracks, int MaxNTracks)
2428
{
2529
mMinNTracks = MinNTracks;
@@ -72,6 +76,7 @@ void cutHolder::SetFITAmpLimits(std::vector<float> FITAmpLimits)
7276
// getter
7377
int cutHolder::NDtcoll() const { return mNDtcoll; }
7478
int cutHolder::minNBCs() const { return mMinNBCs; }
79+
bool cutHolder::globalTracksOnly() const { return mGlobalTracksOnly; }
7580
int cutHolder::minNTracks() const { return mMinNTracks; }
7681
int cutHolder::maxNTracks() const { return mMaxNTracks; }
7782
int cutHolder::minNetCharge() const { return mMinNetCharge; }

EventFiltering/PWGUD/cutHolder.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class cutHolder
2222
public:
2323
// constructor
2424
cutHolder(int ndtcoll = 4, int nMinBCs = 7,
25+
bool globalTracksOnly = false,
2526
int MinNTracks = 0, int MaxNTracks = 10000,
2627
int MinNetCharge = 0, int MaxNetCharge = 0,
2728
int pidHypo = 211,
@@ -30,13 +31,14 @@ class cutHolder
3031
float minEta = -1.0, float maxEta = 1.0,
3132
float minIVM = 0.0, float maxIVM = 1000.,
3233
float maxNSigmaTPC = 1000., float maxNSigmaTOF = 1000.,
33-
std::vector<float> FITAmpLimits = {0., 0., 0., 0., 0.}) : mNDtcoll{ndtcoll}, mMinNBCs{nMinBCs}, mMinNTracks{MinNTracks}, mMaxNTracks{MaxNTracks}, mMinNetCharge{MinNetCharge}, mMaxNetCharge{MaxNetCharge}, mPidHypo{pidHypo}, mMinVertexPosz{MinPosz}, mMaxVertexPosz{MaxPosz}, mMinPt{minPt}, mMaxPt{maxPt}, mMinEta{minEta}, mMaxEta{maxEta}, mMinIVM{minIVM}, mMaxIVM{maxIVM}, mMaxNSigmaTPC{maxNSigmaTPC}, mMaxNSigmaTOF{maxNSigmaTOF}, mFITAmpLimits{FITAmpLimits}
34+
std::vector<float> FITAmpLimits = {0., 0., 0., 0., 0.}) : mNDtcoll{ndtcoll}, mMinNBCs{nMinBCs}, mGlobalTracksOnly{globalTracksOnly}, mMinNTracks{MinNTracks}, mMaxNTracks{MaxNTracks}, mMinNetCharge{MinNetCharge}, mMaxNetCharge{MaxNetCharge}, mPidHypo{pidHypo}, mMinVertexPosz{MinPosz}, mMaxVertexPosz{MaxPosz}, mMinPt{minPt}, mMaxPt{maxPt}, mMinEta{minEta}, mMaxEta{maxEta}, mMinIVM{minIVM}, mMaxIVM{maxIVM}, mMaxNSigmaTPC{maxNSigmaTPC}, mMaxNSigmaTOF{maxNSigmaTOF}, mFITAmpLimits{FITAmpLimits}
3435
{
3536
}
3637

3738
// setter
3839
void SetNDtcoll(int);
3940
void SetMinNBCs(int);
41+
void SetGlobalTracksOnly(bool);
4042
void SetNTracks(int MinNTracks, int MaxNTracks);
4143
void SetNetCharge(int minNetCharge, int maxNetCharge);
4244
void SetPidHypothesis(int pidHypo);
@@ -51,6 +53,7 @@ class cutHolder
5153
// getter
5254
int NDtcoll() const;
5355
int minNBCs() const;
56+
bool globalTracksOnly() const;
5457
int minNTracks() const;
5558
int maxNTracks() const;
5659
int minNetCharge() const;
@@ -73,6 +76,9 @@ class cutHolder
7376
int mNDtcoll;
7477
int mMinNBCs;
7578

79+
// require all vertex tracks to be global tracks
80+
bool mGlobalTracksOnly;
81+
7682
// number of tracks
7783
int mMinNTracks, mMaxNTracks; // Number of allowed tracks
7884

EventFiltering/PWGUD/diffHelpers.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,20 @@ struct DGSelector {
9595
return 2;
9696
}
9797

98-
// no global tracks which are no vtx tracks
98+
// no global tracks which are not vtx tracks
99+
// no vtx tracks which are not global tracks
99100
for (auto& track : tracks) {
100101
if (track.isGlobalTrack() && !track.isPVContributor()) {
101102
return 3;
102103
}
104+
if (diffCuts.globalTracksOnly() && !track.isGlobalTrack() && track.isPVContributor()) {
105+
return 4;
106+
}
103107
}
104108

105109
// number of vertex tracks
106110
if (collision.numContrib() < diffCuts.minNTracks() || collision.numContrib() > diffCuts.maxNTracks()) {
107-
return 4;
111+
return 5;
108112
}
109113

110114
// PID, pt, and eta of tracks, invariant mass, and net charge
@@ -124,18 +128,18 @@ struct DGSelector {
124128

125129
// PID
126130
if (!hasGoodPID(diffCuts, track)) {
127-
return 5;
131+
return 6;
128132
}
129133

130134
// pt
131135
lvtmp.SetXYZM(track.px(), track.py(), track.pz(), mass2Use);
132136
if (lvtmp.Perp() < diffCuts.minPt() || lvtmp.Perp() > diffCuts.maxPt()) {
133-
return 6;
137+
return 7;
134138
}
135139

136140
// eta
137141
if (lvtmp.Eta() < diffCuts.minEta() || lvtmp.Eta() > diffCuts.maxEta()) {
138-
return 7;
142+
return 8;
139143
}
140144
netCharge += track.sign();
141145
ivm += lvtmp;
@@ -144,11 +148,11 @@ struct DGSelector {
144148

145149
// net charge
146150
if (netCharge < diffCuts.minNetCharge() || netCharge > diffCuts.maxNetCharge()) {
147-
return 8;
151+
return 9;
148152
}
149153
// invariant mass
150154
if (ivm.M() < diffCuts.minIVM() || ivm.M() > diffCuts.maxIVM()) {
151-
return 9;
155+
return 10;
152156
}
153157

154158
// if we arrive here then the event is good!

EventFiltering/PWGUD/diffractionFilter.cxx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,18 @@ struct DGFilterRun3 {
7676
DGSelector dgSelector;
7777

7878
// histograms with cut statistics
79+
// bin:
80+
// 0: DG candidate
81+
// 1: not clean FIT
82+
// 2: number of FwdTracks > 0
83+
// 3: not all global tracks are vtx tracks
84+
// 4: not all vtx tracks are global tracks
85+
// 5: number of vtx tracks out of range
86+
// 6: has not good PID information
87+
// 7: track pt out of range
88+
// 8: track eta out of range
89+
// 9: net charge out of range
90+
// 10: IVM out of range
7991
static constexpr std::string_view histNames[4] = {"aftercut2pi", "aftercut4pi", "aftercut2K", "aftercut4K"};
8092
HistogramRegistry registry{
8193
"registry",

PWGUD/Tasks/diffMCHelpers.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ using namespace o2::framework;
3434
// The collision time t_coll is determined by the tracks which are used to
3535
// reconstruct the vertex. t_coll has an uncertainty dt_coll.
3636
// Any BC with a BC time t_BC falling within a time window of +- ndt*dt_coll
37-
// around t_coll could potentially be the true BC. ndt is typically 4.
37+
// around t_coll could potentially be the true BC. ndt is typically 4. The
38+
// total width of the time window is required to be at least 2*nMinBCs* LHCBunchSpacingNS
3839

3940
template <typename T>
4041
T MCcompatibleBCs(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels>::iterator const& collision, int ndt, T const& bcs, int nMinBCs = 7)
@@ -46,6 +47,8 @@ T MCcompatibleBCs(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels
4647
// due to the filling scheme the most probably BC may not be the one estimated from the collision time
4748
uint64_t mostProbableBC = bcIter.globalBC();
4849
uint64_t meanBC = mostProbableBC - std::lround(collision.collisionTime() / o2::constants::lhc::LHCBunchSpacingNS);
50+
51+
// enforce minimum number for deltaBC
4952
int deltaBC = std::ceil(collision.collisionTimeRes() / o2::constants::lhc::LHCBunchSpacingNS * ndt);
5053
if (deltaBC < nMinBCs) {
5154
deltaBC = nMinBCs;

PWGUD/Tasks/diffMCQA.cxx

Lines changed: 50 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,17 @@ struct DiffMCQA {
8181
// bin 7: no global tracks which are no vtx tracks
8282
// bin 8: no vtx tracks which are no global tracks
8383
// bin 9: at least one vtx tracks with TOF hit
84-
// bin 10: possible ambiguous tracks
85-
// bin 11: possible ambiguous FwdTracks
86-
// bin 12: number of tracks >= minimum number
87-
// bin 13: number of tracks <= maximum number
88-
// bin 14: minimum pt <= pt of vtx tracks <= maximum pt
89-
// bin 15: minimum eta <= eta of vtx tracks <= maximum eta
90-
// bin 16: net charge >= minimum net charge
91-
// bin 17: net charge <= maximum net charge
92-
// bin 18: IVM >= minimum IVM
93-
// bin 19: IVM <= maximum IVM
84+
// bin 10: all vtx tracks with TOF hit
85+
// bin 11: possible ambiguous tracks
86+
// bin 12: possible ambiguous FwdTracks
87+
// bin 13: number of tracks >= minimum number
88+
// bin 14: number of tracks <= maximum number
89+
// bin 15: minimum pt <= pt of vtx tracks <= maximum pt
90+
// bin 16: minimum eta <= eta of vtx tracks <= maximum eta
91+
// bin 17: net charge >= minimum net charge
92+
// bin 18: net charge <= maximum net charge
93+
// bin 19: IVM >= minimum IVM
94+
// bin 20: IVM <= maximum IVM
9495
//
9596
// 3 diverent versions of histograms:
9697
// Diff1: Pythia MBR
@@ -101,7 +102,7 @@ struct DiffMCQA {
101102
"registry",
102103
{
103104
// non diffractive events
104-
{"Stat", "#Stat", {HistType::kTH1F, {{20, -0.5, 19.5}}}},
105+
{"Stat", "#Stat", {HistType::kTH1F, {{21, -0.5, 20.5}}}},
105106
{"cleanFIT", "#cleanFIT", {HistType::kTH2F, {{10, -0.5, 9.5}, {2, -0.5, 1.5}}}},
106107
{"Tracks", "#Tracks", {HistType::kTH1F, {{50, 0.5, 50.5}}}},
107108
{"vtxTracks", "#vtxTracks", {HistType::kTH1F, {{50, 0.5, 50.5}}}},
@@ -117,6 +118,7 @@ struct DiffMCQA {
117118
{"etaptDG", "#etaptDG", {HistType::kTH2F, {{80, -2., 2.}, {100, 0., 5.}}}},
118119
{"dEdxTPCDG", "#dEdxTPCDG", {HistType::kTH2F, {{100, 0., 5.0}, {3000, 0., 30000.}}}},
119120
{"dEdxTOFDG", "#dEdxTOFDG", {HistType::kTH2F, {{100, 0., 5.0}, {1000, 0., 500000.}}}},
121+
{"netChargeDG", "#netChargeDG", {HistType::kTH1F, {{21, -10.5, 10.5}}}},
120122
{"IVMptSysDG", "#IVMptSysDG", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
121123
{"IVMptTrkDG", "#IVMptTrkDG", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
122124
// PYTHIA8 diffractive events
@@ -136,6 +138,7 @@ struct DiffMCQA {
136138
{"etaptDGDiff1", "#etaptDGDiff1", {HistType::kTH2F, {{80, -2., 2.}, {100, 0., 5.}}}},
137139
{"dEdxTPCDGDiff1", "#dEdxTPCDGDiff1", {HistType::kTH2F, {{100, 0., 5.0}, {3000, 0., 30000.}}}},
138140
{"dEdxTOFDGDiff1", "#dEdxTOFDGDiff1", {HistType::kTH2F, {{100, 0., 5.0}, {1000, 0., 500000.}}}},
141+
{"netChargeDGDiff1", "#netChargeDGDiff1", {HistType::kTH1F, {{21, -10.5, 10.5}}}},
139142
{"IVMptSysDGDiff1", "#IVMptSysDGDiff1", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
140143
{"IVMptTrkDGDiff1", "#IVMptTrkDGDiff1", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
141144
// GRANIITTI diffractive events
@@ -155,6 +158,7 @@ struct DiffMCQA {
155158
{"etaptDGDiff2", "#etaptDGDiff2", {HistType::kTH2F, {{80, -2., 2.}, {100, 0., 5.}}}},
156159
{"dEdxTPCDGDiff2", "#dEdxTPCDGDiff2", {HistType::kTH2F, {{100, 0., 5.0}, {3000, 0., 30000.}}}},
157160
{"dEdxTOFDGDiff2", "#dEdxTOFDGDiff2", {HistType::kTH2F, {{100, 0., 5.0}, {1000, 0., 500000.}}}},
161+
{"netChargeDGDiff2", "#netChargeDGDiff2", {HistType::kTH1F, {{21, -10.5, 10.5}}}},
158162
{"IVMptSysDGDiff2", "#IVMptSysDGDiff2", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
159163
{"IVMptTrkDGDiff2", "#IVMptTrkDGDiff2", {HistType::kTH2F, {{100, 0., 5.}, {350, 0., 3.5}}}},
160164
}};
@@ -436,14 +440,20 @@ struct DiffMCQA {
436440
registry.get<TH1>(HIST("Stat"))->Fill(8., vtxAndGlobal * 1.);
437441
}
438442
isDGcandidate &= globalAndVtx;
443+
if (diffCuts.globalTracksOnly()) {
444+
isDGcandidate &= vtxAndGlobal;
445+
}
439446

440447
// at least one vtx track with TOF hit
441448
if (isPythiaDiff) {
442449
registry.get<TH1>(HIST("StatDiff1"))->Fill(9., (isDGcandidate && (rgtrwTOF > 0.)) * 1.);
450+
registry.get<TH1>(HIST("StatDiff1"))->Fill(10., (isDGcandidate && (rgtrwTOF == 1.)) * 1.);
443451
} else if (isGraniittiDiff) {
444452
registry.get<TH1>(HIST("StatDiff2"))->Fill(9., (isDGcandidate && (rgtrwTOF > 0.)) * 1.);
453+
registry.get<TH1>(HIST("StatDiff2"))->Fill(10., (isDGcandidate && (rgtrwTOF == 1.)) * 1.);
445454
} else {
446455
registry.get<TH1>(HIST("Stat"))->Fill(9., (isDGcandidate && (rgtrwTOF > 0.)) * 1.);
456+
registry.get<TH1>(HIST("Stat"))->Fill(10., (isDGcandidate && (rgtrwTOF == 1.)) * 1.);
447457
}
448458

449459
// check a given bc for possible ambiguous Tracks
@@ -455,11 +465,11 @@ struct DiffMCQA {
455465
}
456466
}
457467
if (isPythiaDiff) {
458-
registry.get<TH1>(HIST("StatDiff1"))->Fill(10., withAmbTracks * 1.);
468+
registry.get<TH1>(HIST("StatDiff1"))->Fill(11., withAmbTracks * 1.);
459469
} else if (isGraniittiDiff) {
460-
registry.get<TH1>(HIST("StatDiff2"))->Fill(10., withAmbTracks * 1.);
470+
registry.get<TH1>(HIST("StatDiff2"))->Fill(11., withAmbTracks * 1.);
461471
} else {
462-
registry.get<TH1>(HIST("Stat"))->Fill(10., withAmbTracks * 1.);
472+
registry.get<TH1>(HIST("Stat"))->Fill(11., withAmbTracks * 1.);
463473
}
464474

465475
// check a given bc for possible ambiguous FwdTracks
@@ -471,29 +481,29 @@ struct DiffMCQA {
471481
}
472482
}
473483
if (isPythiaDiff) {
474-
registry.get<TH1>(HIST("StatDiff1"))->Fill(11., withAmbFwdTracks * 1.);
484+
registry.get<TH1>(HIST("StatDiff1"))->Fill(12., withAmbFwdTracks * 1.);
475485
} else if (isGraniittiDiff) {
476-
registry.get<TH1>(HIST("StatDiff2"))->Fill(11., withAmbFwdTracks * 1.);
486+
registry.get<TH1>(HIST("StatDiff2"))->Fill(12., withAmbFwdTracks * 1.);
477487
} else {
478-
registry.get<TH1>(HIST("Stat"))->Fill(11., withAmbFwdTracks * 1.);
488+
registry.get<TH1>(HIST("Stat"))->Fill(12., withAmbFwdTracks * 1.);
479489
}
480490

481491
// number of vertex tracks <= n
482492
isDGcandidate &= (collision.numContrib() >= diffCuts.minNTracks());
483493
if (isPythiaDiff) {
484-
registry.get<TH1>(HIST("StatDiff1"))->Fill(12., isDGcandidate * 1.);
494+
registry.get<TH1>(HIST("StatDiff1"))->Fill(13., isDGcandidate * 1.);
485495
} else if (isGraniittiDiff) {
486-
registry.get<TH1>(HIST("StatDiff2"))->Fill(12., isDGcandidate * 1.);
496+
registry.get<TH1>(HIST("StatDiff2"))->Fill(13., isDGcandidate * 1.);
487497
} else {
488-
registry.get<TH1>(HIST("Stat"))->Fill(12., isDGcandidate * 1.);
498+
registry.get<TH1>(HIST("Stat"))->Fill(13., isDGcandidate * 1.);
489499
}
490500
isDGcandidate &= (collision.numContrib() <= diffCuts.maxNTracks());
491501
if (isPythiaDiff) {
492-
registry.get<TH1>(HIST("StatDiff1"))->Fill(13., isDGcandidate * 1.);
502+
registry.get<TH1>(HIST("StatDiff1"))->Fill(14., isDGcandidate * 1.);
493503
} else if (isGraniittiDiff) {
494-
registry.get<TH1>(HIST("StatDiff2"))->Fill(13., isDGcandidate * 1.);
504+
registry.get<TH1>(HIST("StatDiff2"))->Fill(14., isDGcandidate * 1.);
495505
} else {
496-
registry.get<TH1>(HIST("Stat"))->Fill(13., isDGcandidate * 1.);
506+
registry.get<TH1>(HIST("Stat"))->Fill(14., isDGcandidate * 1.);
497507
}
498508

499509
// net charge and invariant mass
@@ -529,69 +539,74 @@ struct DiffMCQA {
529539
}
530540
}
531541
isDGcandidate &= goodpts;
532-
if (isPythiaDiff) {
533-
registry.get<TH1>(HIST("StatDiff1"))->Fill(14., isDGcandidate * 1.);
534-
} else if (isGraniittiDiff) {
535-
registry.get<TH1>(HIST("StatDiff2"))->Fill(14., isDGcandidate * 1.);
536-
} else {
537-
registry.get<TH1>(HIST("Stat"))->Fill(14., isDGcandidate * 1.);
538-
}
539-
isDGcandidate &= goodetas;
540542
if (isPythiaDiff) {
541543
registry.get<TH1>(HIST("StatDiff1"))->Fill(15., isDGcandidate * 1.);
542544
} else if (isGraniittiDiff) {
543545
registry.get<TH1>(HIST("StatDiff2"))->Fill(15., isDGcandidate * 1.);
544546
} else {
545547
registry.get<TH1>(HIST("Stat"))->Fill(15., isDGcandidate * 1.);
546548
}
547-
isDGcandidate &= (netCharge >= diffCuts.minNetCharge());
549+
isDGcandidate &= goodetas;
548550
if (isPythiaDiff) {
549551
registry.get<TH1>(HIST("StatDiff1"))->Fill(16., isDGcandidate * 1.);
550552
} else if (isGraniittiDiff) {
551553
registry.get<TH1>(HIST("StatDiff2"))->Fill(16., isDGcandidate * 1.);
552554
} else {
553555
registry.get<TH1>(HIST("Stat"))->Fill(16., isDGcandidate * 1.);
554556
}
555-
isDGcandidate &= (netCharge <= diffCuts.maxNetCharge());
557+
isDGcandidate &= (netCharge >= diffCuts.minNetCharge());
556558
if (isPythiaDiff) {
557559
registry.get<TH1>(HIST("StatDiff1"))->Fill(17., isDGcandidate * 1.);
558560
} else if (isGraniittiDiff) {
559561
registry.get<TH1>(HIST("StatDiff2"))->Fill(17., isDGcandidate * 1.);
560562
} else {
561563
registry.get<TH1>(HIST("Stat"))->Fill(17., isDGcandidate * 1.);
562564
}
563-
isDGcandidate &= (ivm.M() >= diffCuts.minIVM());
565+
isDGcandidate &= (netCharge <= diffCuts.maxNetCharge());
564566
if (isPythiaDiff) {
565567
registry.get<TH1>(HIST("StatDiff1"))->Fill(18., isDGcandidate * 1.);
566568
} else if (isGraniittiDiff) {
567569
registry.get<TH1>(HIST("StatDiff2"))->Fill(18., isDGcandidate * 1.);
568570
} else {
569571
registry.get<TH1>(HIST("Stat"))->Fill(18., isDGcandidate * 1.);
570572
}
571-
isDGcandidate &= (ivm.M() <= diffCuts.maxIVM());
573+
isDGcandidate &= (ivm.M() >= diffCuts.minIVM());
572574
if (isPythiaDiff) {
573575
registry.get<TH1>(HIST("StatDiff1"))->Fill(19., isDGcandidate * 1.);
574576
} else if (isGraniittiDiff) {
575577
registry.get<TH1>(HIST("StatDiff2"))->Fill(19., isDGcandidate * 1.);
576578
} else {
577579
registry.get<TH1>(HIST("Stat"))->Fill(19., isDGcandidate * 1.);
578580
}
581+
isDGcandidate &= (ivm.M() <= diffCuts.maxIVM());
582+
if (isPythiaDiff) {
583+
registry.get<TH1>(HIST("StatDiff1"))->Fill(20., isDGcandidate * 1.);
584+
} else if (isGraniittiDiff) {
585+
registry.get<TH1>(HIST("StatDiff2"))->Fill(20., isDGcandidate * 1.);
586+
} else {
587+
registry.get<TH1>(HIST("Stat"))->Fill(20., isDGcandidate * 1.);
588+
}
579589

590+
// update some DG histograms
580591
if (isDGcandidate) {
581592
if (isPythiaDiff) {
582593
registry.get<TH2>(HIST("vtxPosxyDGDiff1"))->Fill(collision.posX(), collision.posY());
583594
registry.get<TH1>(HIST("vtxPoszDGDiff1"))->Fill(collision.posZ());
595+
registry.get<TH1>(HIST("netChargeDGDiff1"))->Fill(netCharge);
584596
registry.get<TH2>(HIST("IVMptSysDGDiff1"))->Fill(ivm.M(), ivm.Perp());
585597
} else if (isGraniittiDiff) {
586598
registry.get<TH2>(HIST("vtxPosxyDGDiff2"))->Fill(collision.posX(), collision.posY());
587599
registry.get<TH1>(HIST("vtxPoszDGDiff2"))->Fill(collision.posZ());
600+
registry.get<TH1>(HIST("netChargeDGDiff2"))->Fill(netCharge);
588601
registry.get<TH2>(HIST("IVMptSysDGDiff2"))->Fill(ivm.M(), ivm.Perp());
589602
} else {
590603
registry.get<TH2>(HIST("vtxPosxyDG"))->Fill(collision.posX(), collision.posY());
591604
registry.get<TH1>(HIST("vtxPoszDG"))->Fill(collision.posZ());
605+
registry.get<TH1>(HIST("netChargeDG"))->Fill(netCharge);
592606
registry.get<TH2>(HIST("IVMptSysDG"))->Fill(ivm.M(), ivm.Perp());
593607
}
594608

609+
// fill dEdx of DG event tracks
595610
for (auto& track : tracks) {
596611
if (track.isPVContributor()) {
597612
if (isPythiaDiff) {

0 commit comments

Comments
 (0)