Skip to content

Commit 2b916ff

Browse files
authored
adding vertex and cent. cuts to the table producer, fixing a bug with cent. and kT binning and few more minor changes (#4417)
1 parent 64c5258 commit 2b916ff

File tree

4 files changed

+116
-94
lines changed

4 files changed

+116
-94
lines changed

PWGCF/Femto3D/Core/femto3dPairTask.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ bool FemtoPair<TrackType>::IsClosePair(const float& deta, const float& dphi, con
203203
{
204204
if (_first == NULL || _second == NULL)
205205
return true;
206-
if (!(_magfield1 * _magfield2))
206+
if (_magfield1 * _magfield2 == 0)
207207
return true;
208208
if (abs(GetEtaDiff()) < deta && abs(GetPhiStarDiff(radius)) < dphi)
209209
return true;
@@ -216,9 +216,9 @@ float FemtoPair<TrackType>::GetKstar() const
216216
{
217217
if (_first == NULL || _second == NULL)
218218
return -1000;
219-
if (!(_magfield1 * _magfield2))
219+
if (_magfield1 * _magfield2 == 0)
220220
return -1000;
221-
if (!(_PDG1 * _PDG2))
221+
if (_PDG1 * _PDG2 == 0)
222222
return -1000;
223223

224224
TLorentzVector first4momentum;
@@ -234,9 +234,9 @@ TVector3 FemtoPair<TrackType>::Get3dKstar() const
234234
{
235235
if (_first == NULL || _second == NULL)
236236
return TVector3(-1000, -1000, -1000);
237-
if (!(_magfield1 * _magfield2))
237+
if (_magfield1 * _magfield2 == 0)
238238
return TVector3(-1000, -1000, -1000);
239-
if (!(_PDG1 * _PDG2))
239+
if (_PDG1 * _PDG2 == 0)
240240
return TVector3(-1000, -1000, -1000);
241241

242242
TLorentzVector first4momentum;
@@ -252,9 +252,9 @@ float FemtoPair<TrackType>::GetKt() const
252252
{
253253
if (_first == NULL || _second == NULL)
254254
return -1000;
255-
if (!(_magfield1 * _magfield2))
255+
if (_magfield1 * _magfield2 == 0)
256256
return -1000;
257-
if (!(_PDG1 * _PDG2))
257+
if (_PDG1 * _PDG2 == 0)
258258
return -1000;
259259

260260
return 0.5 * std::sqrt(std::pow(_first->px() + _second->px(), 2) + std::pow(_first->py() + _second->py(), 2));
@@ -265,9 +265,9 @@ float FemtoPair<TrackType>::GetMt() const
265265
{
266266
if (_first == NULL || _second == NULL)
267267
return -1000;
268-
if (!(_magfield1 * _magfield2))
268+
if (_magfield1 * _magfield2 == 0)
269269
return -1000;
270-
if (!(_PDG1 * _PDG2))
270+
if (_PDG1 * _PDG2 == 0)
271271
return -1000;
272272

273273
TLorentzVector first4momentum;

PWGCF/Femto3D/DataModel/singletrackselector.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,13 @@ DECLARE_SOA_COLUMN(TPCInnerParam, tpcInnerParam, float); // Momentum at inner wa
187187
DECLARE_SOA_COLUMN(TPCSignal, tpcSignal, float); // dE/dx TPC
188188
DECLARE_SOA_COLUMN(Beta, beta, float); // TOF beta
189189

190+
DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! Track rapidity, computed under the mass assumption given as input
191+
[](float p, float eta, float mass) -> float {
192+
const auto pz = p * std::tanh(eta);
193+
const auto energy = std::sqrt(p * p + mass * mass);
194+
return 0.5f * log((energy + pz) / (energy - pz));
195+
});
196+
190197
} // namespace singletrackselector
191198

192199
DECLARE_SOA_TABLE_FULL(SingleTrackSels, "SelTracks", "AOD", "SINGLETRACKSEL", // Table of the variables for single track selection.
@@ -229,6 +236,7 @@ DECLARE_SOA_TABLE_FULL(SingleTrackSels, "SelTracks", "AOD", "SINGLETRACKSEL", //
229236
singletrackselector::TOFNSigmaDe<singletrackselector::StoredTOFNSigmaDe>,
230237
singletrackselector::TPCNSigmaDe<singletrackselector::StoredTPCNSigmaDe>,
231238

239+
singletrackselector::Rapidity<singletrackselector::P, singletrackselector::Eta>,
232240
singletrackselector::Energy<singletrackselector::P>,
233241
singletrackselector::Pt<singletrackselector::P, singletrackselector::Eta>,
234242
singletrackselector::Px<singletrackselector::P, singletrackselector::Eta, singletrackselector::Phi>,

PWGCF/Femto3D/TableProducer/singleTrackSelector.cxx

Lines changed: 95 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ struct singleTrackSelector {
6464
Configurable<float> _dcaXY{"dcaXY", 1000.f, "Maximum dca of track in xy"};
6565
Configurable<float> _dcaZ{"dcaZ", 1000.f, "Maximum dca of track in xy"};
6666
Configurable<float> _maxTofChi2{"maxTofChi2", 10.f, "Maximum TOF Chi2 value -> to remove mismatched tracks"};
67+
Configurable<float> _vertexZ{"VertexZ", 15.0, "abs vertexZ value limit"};
68+
Configurable<std::pair<float, float>> _centCut{"centCut", std::pair<float, float>{0.f, 100.f}, "[min., max.] centrality range to keep events within"};
6769

6870
using Trks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidEvTimeFlags, aod::TracksDCA,
6971
aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullKa,
@@ -83,7 +85,7 @@ struct singleTrackSelector {
8385
Filter eventFilter = (applyEvSel.node() == 0) ||
8486
((applyEvSel.node() == 1) && (aod::evsel::sel7 == true)) ||
8587
((applyEvSel.node() == 2) && (aod::evsel::sel8 == true));
86-
Filter vertexFilter = ((o2::aod::collision::posZ < 15.f) && (o2::aod::collision::posZ > -15.f));
88+
Filter vertexFilter = nabs(o2::aod::collision::posZ) < _vertexZ;
8789
Filter trackFilter = ((o2::aod::track::itsChi2NCl <= 36.f) && (o2::aod::track::itsChi2NCl >= 0.f) && (o2::aod::track::tpcChi2NCl >= 0.f) && (o2::aod::track::tpcChi2NCl <= 4.f));
8890

8991
Filter pFilter = o2::aod::track::p > _min_P&& o2::aod::track::p < _max_P;
@@ -222,29 +224,33 @@ struct singleTrackSelector {
222224
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
223225
initCCDB(bc);
224226

225-
int multValue = -1;
227+
float centValue = collision.centRun2V0M();
228+
if (centValue >= _centCut.value.first && centValue <= _centCut.value.second) {
226229

227-
switch (multTableToUse) {
228-
case 0:
229-
multValue = collision.multTPC();
230-
break;
231-
case 1:
232-
multValue = collision.multNTracksPV();
233-
break;
234-
case 2:
235-
multValue = collision.multNTracksPVeta1();
236-
break;
237-
default:
238-
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
239-
break;
240-
}
230+
int multValue = -1;
231+
232+
switch (multTableToUse) {
233+
case 0:
234+
multValue = collision.multTPC();
235+
break;
236+
case 1:
237+
multValue = collision.multNTracksPV();
238+
break;
239+
case 2:
240+
multValue = collision.multNTracksPVeta1();
241+
break;
242+
default:
243+
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
244+
break;
245+
}
241246

242-
tableRowColl(multValue,
243-
collision.centRun2V0M(),
244-
collision.posZ(),
245-
d_bz);
247+
tableRowColl(multValue,
248+
centValue,
249+
collision.posZ(),
250+
d_bz);
246251

247-
fillTrackTables<false>(tracks);
252+
fillTrackTables<false>(tracks);
253+
}
248254
}
249255
PROCESS_SWITCH(singleTrackSelector, processDataRun2, "process data Run2", false);
250256

@@ -254,7 +260,6 @@ struct singleTrackSelector {
254260
initCCDB(bc);
255261

256262
float centValue = -100.0f;
257-
int multValue = -1;
258263

259264
switch (centTableToUse) {
260265
case 0:
@@ -279,28 +284,31 @@ struct singleTrackSelector {
279284
LOGF(fatal, "Invalid flag for cent./mult.perc. estimator has been choosen. Please check.");
280285
break;
281286
}
287+
if (centValue >= _centCut.value.first && centValue <= _centCut.value.second) {
288+
int multValue = -1;
282289

283-
switch (multTableToUse) {
284-
case 0:
285-
multValue = collision.multTPC();
286-
break;
287-
case 1:
288-
multValue = collision.multNTracksPV();
289-
break;
290-
case 2:
291-
multValue = collision.multNTracksPVeta1();
292-
break;
293-
default:
294-
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
295-
break;
296-
}
290+
switch (multTableToUse) {
291+
case 0:
292+
multValue = collision.multTPC();
293+
break;
294+
case 1:
295+
multValue = collision.multNTracksPV();
296+
break;
297+
case 2:
298+
multValue = collision.multNTracksPVeta1();
299+
break;
300+
default:
301+
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
302+
break;
303+
}
297304

298-
tableRowColl(multValue,
299-
centValue,
300-
collision.posZ(),
301-
d_bz);
305+
tableRowColl(multValue,
306+
centValue,
307+
collision.posZ(),
308+
d_bz);
302309

303-
fillTrackTables<false>(tracks);
310+
fillTrackTables<false>(tracks);
311+
}
304312
}
305313
PROCESS_SWITCH(singleTrackSelector, processDataRun3, "process data Run3", true);
306314

@@ -309,29 +317,32 @@ struct singleTrackSelector {
309317
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
310318
initCCDB(bc);
311319

312-
int multValue = -1;
320+
float centValue = collision.centRun2V0M();
321+
if (centValue >= _centCut.value.first && centValue <= _centCut.value.second) {
322+
int multValue = -1;
313323

314-
switch (multTableToUse) {
315-
case 0:
316-
multValue = collision.multTPC();
317-
break;
318-
case 1:
319-
multValue = collision.multNTracksPV();
320-
break;
321-
case 2:
322-
multValue = collision.multNTracksPVeta1();
323-
break;
324-
default:
325-
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
326-
break;
327-
}
324+
switch (multTableToUse) {
325+
case 0:
326+
multValue = collision.multTPC();
327+
break;
328+
case 1:
329+
multValue = collision.multNTracksPV();
330+
break;
331+
case 2:
332+
multValue = collision.multNTracksPVeta1();
333+
break;
334+
default:
335+
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
336+
break;
337+
}
328338

329-
tableRowColl(multValue,
330-
collision.centRun2V0M(),
331-
collision.posZ(),
332-
d_bz);
339+
tableRowColl(multValue,
340+
centValue,
341+
collision.posZ(),
342+
d_bz);
333343

334-
fillTrackTables<true>(tracks);
344+
fillTrackTables<true>(tracks);
345+
}
335346
}
336347
PROCESS_SWITCH(singleTrackSelector, processMCRun2, "process MC Run2", false);
337348

@@ -341,7 +352,6 @@ struct singleTrackSelector {
341352
initCCDB(bc);
342353

343354
float centValue = -100.0f;
344-
int multValue = -1;
345355

346356
switch (centTableToUse) {
347357
case 0:
@@ -367,27 +377,31 @@ struct singleTrackSelector {
367377
break;
368378
}
369379

370-
switch (multTableToUse) {
371-
case 0:
372-
multValue = collision.multTPC();
373-
break;
374-
case 1:
375-
multValue = collision.multNTracksPV();
376-
break;
377-
case 2:
378-
multValue = collision.multNTracksPVeta1();
379-
break;
380-
default:
381-
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
382-
break;
383-
}
380+
if (centValue >= _centCut.value.first && centValue <= _centCut.value.second) {
381+
int multValue = -1;
384382

385-
tableRowColl(multValue,
386-
centValue,
387-
collision.posZ(),
388-
d_bz);
383+
switch (multTableToUse) {
384+
case 0:
385+
multValue = collision.multTPC();
386+
break;
387+
case 1:
388+
multValue = collision.multNTracksPV();
389+
break;
390+
case 2:
391+
multValue = collision.multNTracksPVeta1();
392+
break;
393+
default:
394+
LOGF(fatal, "Invalid flag for mult. estimator has been choosen. Please check.");
395+
break;
396+
}
397+
398+
tableRowColl(multValue,
399+
centValue,
400+
collision.posZ(),
401+
d_bz);
389402

390-
fillTrackTables<true>(tracks);
403+
fillTrackTables<true>(tracks);
404+
}
391405
}
392406
PROCESS_SWITCH(singleTrackSelector, processMCRun3, "process MC Run3", false);
393407
};

PWGCF/Femto3D/Tasks/femto3dPairTask.cxx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ struct FemtoCorrelations {
223223
Pair->SetPair(tracks[ii], tracks[iii]);
224224
float pair_kT = Pair->GetKt();
225225

226-
if (pair_kT < *_kTbins.value.begin() || pair_kT > *(_kTbins.value.end() - 1))
226+
if (pair_kT < *_kTbins.value.begin() || pair_kT >= *(_kTbins.value.end() - 1))
227227
continue;
228228

229229
int kTbin = o2::aod::singletrackselector::getBinIndex<int>(pair_kT, _kTbins);
@@ -269,7 +269,7 @@ struct FemtoCorrelations {
269269
Pair->SetPair(ii, iii);
270270
float pair_kT = Pair->GetKt();
271271

272-
if (pair_kT < *_kTbins.value.begin() || pair_kT > *(_kTbins.value.end() - 1))
272+
if (pair_kT < *_kTbins.value.begin() || pair_kT >= *(_kTbins.value.end() - 1))
273273
continue;
274274

275275
int kTbin = o2::aod::singletrackselector::getBinIndex<int>(pair_kT, _kTbins);
@@ -317,7 +317,7 @@ struct FemtoCorrelations {
317317
continue;
318318
if (track.tpcNClsShared() > _tpcNClsShared || track.itsNCls() < _itsNCls)
319319
continue;
320-
if (track.singleCollSel().multPerc() < *_centBins.value.begin() || track.singleCollSel().multPerc() > *(_centBins.value.end() - 1))
320+
if (track.singleCollSel().multPerc() < *_centBins.value.begin() || track.singleCollSel().multPerc() >= *(_centBins.value.end() - 1))
321321
continue;
322322

323323
if (track.sign() == _sign_1 && (track.p() < _PIDtrshld_1 ? o2::aod::singletrackselector::TPCselection(track, TPCcuts_1) : o2::aod::singletrackselector::TOFselection(track, TOFcuts_1, _tpcNSigmaResidual_1))) { // filling the map: eventID <-> selected particles1
@@ -368,7 +368,7 @@ struct FemtoCorrelations {
368368
}
369369

370370
for (auto collision : collisions) {
371-
if (collision.multPerc() < *_centBins.value.begin() || collision.multPerc() > *(_centBins.value.end() - 1))
371+
if (collision.multPerc() < *_centBins.value.begin() || collision.multPerc() >= *(_centBins.value.end() - 1))
372372
continue;
373373

374374
if (selectedtracks_1.find(collision.globalIndex()) == selectedtracks_1.end()) {

0 commit comments

Comments
 (0)