Skip to content

Commit 9088272

Browse files
authored
Update taskSingleMuonMult.cxx
1 parent ec2c0f6 commit 9088272

1 file changed

Lines changed: 50 additions & 55 deletions

File tree

PWGHF/HFL/Tasks/taskSingleMuonMult.cxx

Lines changed: 50 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,29 @@ using namespace o2::framework;
4949
using namespace o2::framework::expressions;
5050
using namespace o2::aod::fwdtrack;
5151

52-
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Ms>;
53-
using MyTracks = soa::Join<aod::FullTracks, aod::TracksExtra, aod::TracksIU, aod::TracksDCA, aod::TrackSelection>;
54-
using MyMuons = soa::Join<aod::FwdTracks, aod::FwdTracksDCA>;
55-
using MyMcMuons = soa::Join<aod::FwdTracks, aod::McFwdTrackLabels, aod::FwdTracksDCA>;
56-
using MFTTracksExtra = soa::Join<aod::MFTTracks>;
57-
5852
struct HfTaskSingleMuonMult {
59-
Configurable<float> etaMin{"etaMin", -3.6, "eta minimum value"};
60-
Configurable<float> etaMax{"etaMax", -2.5, "eta maximum value"};
61-
Configurable<float> pDcaMin{"pDcaMin", 324., "p*DCA maximum value for small Rabs"};
62-
Configurable<float> pDcaMax{"pDcaMax", 594., "p*DCA maximum value for large Rabs"};
63-
Configurable<float> rAbsMin{"rAbsMin", 17.6, "R at absorber end minimum value"};
64-
Configurable<float> rAbsMax{"rAbsMax", 89.5, "R at absorber end maximum value"};
65-
Configurable<float> rAbsMid{"rAbsMid", 26.5, "R at absorber end split point for different p*DCA selections"};
66-
Configurable<float> zVtx{"zVtx", 10., "Z edge of primary vertex [cm]"};
53+
Configurable<float> zVtxMax{"zVtxMax", 10., "maxium z of primary vertex [cm]"};
54+
Configurable<float> ptTrackLow{"ptTrackLow", 0.15, "minimum pt of tracks"};
55+
Configurable<float> etaTrackMax{"etaTrackMax", 0.8, "maximum pseudorapidity of tracks"};
56+
Configurable<float> etaMin{"etaMin", -3.6, "minimum pseudorapidity"};
57+
Configurable<float> etaMax{"etaMax", -2.5, "maximum pseudorapidity"};
58+
Configurable<float> pDcaMin{"pDcaMin", 324., "p*DCA value for small Rabsorb"};
59+
Configurable<float> pDcaMax{"pDcaMax", 594., "p*DCA value for large Rabsorb"};
60+
Configurable<float> rAbsorbMin{"rAbsorbMin", 17.6, "R at absorber end minimum value"};
61+
Configurable<float> rAbsorbMax{"rAbsorbMax", 89.5, "R at absorber end maximum value"};
62+
Configurable<float> rAbsorbMid{"rAbsorbMid", 26.5, "R at absorber end split point for different p*DCA selections"};
6763
Configurable<bool> reduceOrphMft{"reduceOrphMft", true, "reduce orphan MFT tracks"};
6864

65+
// Track Filter
66+
Filter globalTrackFilter = (o2::aod::track::isGlobalTrack == true);
67+
Filter ptTrackFilter = (o2::aod::track::pt) > ptTrackLow;
68+
Filter etaTrackFilter = (nabs(o2::aod::track::eta) < etaTrackMax);
69+
70+
using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFT0Ms>;
71+
using MyMuons = soa::Join<aod::FwdTracks, aod::FwdTracksDCA>;
72+
using MyMcMuons = soa::Join<aod::FwdTracks, aod::McFwdTrackLabels, aod::FwdTracksDCA>;
73+
using MyTracks = soa::Filtered<soa::Join<aod::FullTracks, aod::TracksExtra, aod::TracksIU, aod::TracksDCA, aod::TrackSelection>>;
74+
6975
HistogramRegistry registry{"registry"};
7076
static constexpr std::string_view kTrackType[] = {"TrackType0", "TrackType1", "TrackType2", "TrackType3", "TrackType4"};
7177

@@ -76,12 +82,12 @@ struct HfTaskSingleMuonMult {
7682
AxisSpec axisEventSize{500, 0.5, 500.5, "Event Size"};
7783
AxisSpec axisVtxZ{80, -20., 20., "#it{z}_{vtx} (cm)"};
7884
AxisSpec axisMuTrk{5, 0.5, 5.5, "Muon Selection"};
79-
AxisSpec axisNch{500, 0.5, 500.5, "N_{ch}"};
80-
AxisSpec axisNmu{20, -0.5, 19.5, "N_{#mu}"};
85+
AxisSpec axisNch{500, 0.5, 500.5, "#it{N}_{ch}"};
86+
AxisSpec axisNmu{20, -0.5, 19.5, "#it{N}_{#mu}"};
8187
AxisSpec axisPt{1000, 0., 500., "#it{p}_{T} (GeV/#it{c})"};
8288
AxisSpec axisEta{250, -5., 5., "#it{#eta}"};
8389
AxisSpec axisTheta{500, 170., 180., "#it{#theta}"};
84-
AxisSpec axisRabs{1000, 0., 100., "R_{abs} (cm)"};
90+
AxisSpec axisRabsorb{1000, 0., 100., "#it{R}_{absorb} (cm)"};
8591
AxisSpec axisDCA{500, 0., 5., "#it{DCA}_{xy} (cm)"};
8692
AxisSpec axisChi2MatchMCHMFT{1000, 0., 1000., "MCH-MFT matching #chi^{2}"};
8793
AxisSpec axisSign{5, -2.5, 2.5, "Charge"};
@@ -98,8 +104,8 @@ struct HfTaskSingleMuonMult {
98104
HistogramConfigSpec hVtxZ{HistType::kTH1F, {axisVtxZ}};
99105

100106
HistogramConfigSpec hMuTrkSel{HistType::kTH1F, {axisMuTrk}};
101-
HistogramConfigSpec hTHnMu{HistType::kTHnSparseF, {axisCent, axisNch, axisPt, axisEta, axisTheta, axisRabs, axisDCA, axisPDca, axisChi2MatchMCHMFT, axisTrackType}, 10};
102-
HistogramConfigSpec hTHnMuDeltaPt{HistType::kTHnSparseF, {axisCent, axisNch, axisPt, axisEta, axisTheta, axisRabs, axisDCA, axisPDca, axisChi2MatchMCHMFT, axisDeltaPt}, 10};
107+
HistogramConfigSpec hTHnMu{HistType::kTHnSparseF, {axisCent, axisNch, axisPt, axisEta, axisTheta, axisRabsorb, axisDCA, axisPDca, axisChi2MatchMCHMFT, axisTrackType}, 10};
108+
HistogramConfigSpec hTHnMuDeltaPt{HistType::kTHnSparseF, {axisCent, axisNch, axisPt, axisEta, axisTheta, axisRabsorb, axisDCA, axisPDca, axisChi2MatchMCHMFT, axisDeltaPt}, 10};
103109
HistogramConfigSpec h3DCA{HistType::kTH3F, {axisDCAx, axisDCAx, axisTrackType}};
104110
HistogramConfigSpec hTHnCh{HistType::kTHnSparseF, {axisCent, axisNch, axisPt, axisEta, axisSign}, 5};
105111
HistogramConfigSpec h3MultNchNmu{HistType::kTH3F, {axisCent, axisNch, axisNmu}};
@@ -119,7 +125,7 @@ struct HfTaskSingleMuonMult {
119125
registry.add("h3DCABeforeAccCuts", "", h3DCA);
120126
registry.add("hMuDeltaPtBeforeAccCuts", "", hTHnMuDeltaPt);
121127
registry.add("hMuAfterEtaCuts", "", hTHnMu);
122-
registry.add("hMuAfterRabsCuts", "", hTHnMu);
128+
registry.add("hMuAfterRabsorbCuts", "", hTHnMu);
123129
registry.add("hMuAfterPdcaCuts", "", hTHnMu);
124130
registry.add("hMuAfterAccCuts", "", hTHnMu);
125131
registry.add("h3DCAAfterAccCuts", "", h3DCA);
@@ -138,7 +144,7 @@ struct HfTaskSingleMuonMult {
138144
auto* xMu = hMustat->GetXaxis();
139145
xMu->SetBinLabel(1, "noCut");
140146
xMu->SetBinLabel(2, "etaCut");
141-
xMu->SetBinLabel(3, "RabsCut");
147+
xMu->SetBinLabel(3, "RabsorbCut");
142148
xMu->SetBinLabel(4, "pDcaCut");
143149
xMu->SetBinLabel(5, "chi2Cut");
144150

@@ -148,8 +154,9 @@ struct HfTaskSingleMuonMult {
148154
}
149155
}
150156

151-
template <typename TCollision, typename TTracks, typename TMuons>
152-
void runMuonSel(TCollision const& collision, TTracks const& tracks, TMuons const& muons)
157+
void process(MyCollisions::iterator const& collision,
158+
MyTracks const& tracks,
159+
MyMuons const& muons)
153160
{
154161
registry.fill(HIST("hEvent"), 1);
155162

@@ -158,9 +165,8 @@ struct HfTaskSingleMuonMult {
158165
}
159166
registry.fill(HIST("hEvent"), 2);
160167
registry.fill(HIST("hVtxZBeforeSel"), collision.posZ());
161-
LOGP(debug, "SAMSUL_{} collisions", collision.globalIndex());
162168

163-
if (std::abs(collision.posZ()) > zVtx) {
169+
if (std::abs(collision.posZ()) > zVtxMax) {
164170
return;
165171
}
166172
registry.fill(HIST("hEvent"), 3);
@@ -173,14 +179,10 @@ struct HfTaskSingleMuonMult {
173179
int nMu{0};
174180
constexpr std::size_t nTypes{5};
175181
int nMuTrackType[nTypes] = {0};
176-
constexpr float etaCh{0.8};
177-
constexpr float pTMinCh{0.15};
178182

179183
std::vector<typename std::decay_t<decltype(tracks)>::iterator> chTracks;
180184
for (const auto& track : tracks) {
181-
if (track.isGlobalTrack() && std::abs(track.eta()) < etaCh && track.pt() > pTMinCh) {
182-
chTracks.push_back(track);
183-
}
185+
chTracks.push_back(track);
184186
}
185187
nCh = chTracks.size();
186188
if (nCh < 1) {
@@ -195,22 +197,22 @@ struct HfTaskSingleMuonMult {
195197

196198
// muons
197199
for (const auto& muon : muons) {
198-
const auto pt{muon.pt()}, eta{muon.eta()}, theta{90.0f - ((std::atan(muon.tgl())) * constants::math::Rad2Deg)}, pDca{muon.pDca()}, rAbs{muon.rAtAbsorberEnd()}, chi2{muon.chi2MatchMCHMFT()};
199-
const auto dcaXY(RecoDecay::sqrtSumOfSquares(muon.fwdDcaX(), muon.fwdDcaY()));
200-
const auto muTrackType(muon.trackType());
200+
const auto pt{muon.pt()}, eta{muon.eta()}, theta{90.0f - ((std::atan(muon.tgl())) * constants::math::Rad2Deg)}, pDca{muon.pDca()}, rAbsorb{muon.rAtAbsorberEnd()}, chi2{muon.chi2MatchMCHMFT()};
201+
const auto dcaXY{RecoDecay::sqrtSumOfSquares(muon.fwdDcaX(), muon.fwdDcaY())};
202+
const auto muTrackType{muon.trackType()};
201203

202-
registry.fill(HIST("hMuBeforeMatchMFT"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
204+
registry.fill(HIST("hMuBeforeMatchMFT"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
203205

204206
// histograms before the acceptance cuts
205207
registry.fill(HIST("hMuTrkSel"), 1);
206-
registry.fill(HIST("hMuBeforeAccCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
208+
registry.fill(HIST("hMuBeforeAccCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
207209
registry.fill(HIST("h3DCABeforeAccCuts"), muon.fwdDcaX(), muon.fwdDcaY(), muTrackType);
208210

209211
if (muon.has_matchMCHTrack()) {
210212
auto muonType3 = muon.template matchMCHTrack_as<MyMuons>();
211-
auto dpt(muonType3.pt() - pt);
213+
auto dpt = muonType3.pt() - pt;
212214
if (muTrackType == ForwardTrackTypeEnum::GlobalMuonTrack) {
213-
registry.fill(HIST("hMuDeltaPtBeforeAccCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, dpt);
215+
registry.fill(HIST("hMuDeltaPtBeforeAccCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, dpt);
214216
}
215217
}
216218

@@ -220,42 +222,42 @@ struct HfTaskSingleMuonMult {
220222
continue;
221223
}
222224
registry.fill(HIST("hMuTrkSel"), 2);
223-
registry.fill(HIST("hMuAfterEtaCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
225+
registry.fill(HIST("hMuAfterEtaCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
224226

225-
// Rabs cuts
226-
if ((rAbs < rAbsMin) || (rAbs >= rAbsMax)) {
227+
// Rabsorb cuts
228+
if ((rAbsorb < rAbsorbMin) || (rAbsorb >= rAbsorbMax)) {
227229
continue;
228230
}
229231
registry.fill(HIST("hMuTrkSel"), 3);
230-
registry.fill(HIST("hMuAfterRabsCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
232+
registry.fill(HIST("hMuAfterRabsorbCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
231233

232-
if ((rAbs < rAbsMid) && (pDca >= pDcaMin)) {
234+
if ((rAbsorb < rAbsorbMid) && (pDca >= pDcaMin)) {
233235
continue;
234236
}
235-
if ((rAbs >= rAbsMid) && (pDca >= pDcaMax)) {
237+
if ((rAbsorb >= rAbsorbMid) && (pDca >= pDcaMax)) {
236238
continue;
237239
}
238240
registry.fill(HIST("hMuTrkSel"), 4);
239-
registry.fill(HIST("hMuAfterPdcaCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
241+
registry.fill(HIST("hMuAfterPdcaCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
240242

241243
// MCH-MFT matching chi2
242-
if ((muon.chi2() >= 1e6) || (muon.chi2() < 0)) {
244+
if (muon.chi2() >= 1e6) {
243245
continue;
244246
}
245247
registry.fill(HIST("hMuTrkSel"), 5);
246248

247249
// histograms after acceptance cuts
248-
registry.fill(HIST("hMuAfterAccCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, muTrackType);
250+
registry.fill(HIST("hMuAfterAccCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, muTrackType);
249251
registry.fill(HIST("h3DCAAfterAccCuts"), muon.fwdDcaX(), muon.fwdDcaY(), muTrackType);
250252
nMu++;
251253
nMuTrackType[muTrackType]++;
252254

253255
if (muon.has_matchMCHTrack()) {
254256
auto muonType3 = muon.template matchMCHTrack_as<MyMuons>();
255-
auto dpt(muonType3.pt() - pt);
257+
auto dpt = muonType3.pt() - pt;
256258

257259
if (muTrackType == ForwardTrackTypeEnum::GlobalMuonTrack) {
258-
registry.fill(HIST("hMuDeltaPtAfterAccCuts"), cent, nCh, pt, eta, theta, rAbs, dcaXY, pDca, chi2, dpt);
260+
registry.fill(HIST("hMuDeltaPtAfterAccCuts"), cent, nCh, pt, eta, theta, rAbsorb, dcaXY, pDca, chi2, dpt);
259261
}
260262
}
261263
}
@@ -270,13 +272,6 @@ struct HfTaskSingleMuonMult {
270272
});
271273
chTracks.clear();
272274
}
273-
274-
void process(MyCollisions::iterator const& collision,
275-
MyTracks const& tracks,
276-
MyMuons const& muons)
277-
{
278-
runMuonSel(collision, tracks, muons);
279-
}
280275
};
281276

282277
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)