Skip to content

Commit 69b7d25

Browse files
authored
Merge branch 'master' into spincorrmix
2 parents 4f3bb05 + 2143ef7 commit 69b7d25

25 files changed

+2056
-563
lines changed

PWGEM/Dilepton/Core/DimuonCut.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ class DimuonCut : public TNamed
194194
return track.nClusters() >= mMinNClustersMCHMID;
195195

196196
case DimuonCuts::kChi2:
197-
return track.chi2() / (2.f * (track.nClusters() + track.nClustersMFT()) - 5.f) < mMaxChi2;
197+
return (track.trackType() == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) ? track.chi2() / (2.f * (track.nClusters() + track.nClustersMFT()) - 5.f) : track.chi2()) < mMaxChi2;
198198

199199
case DimuonCuts::kMatchingChi2MCHMFT:
200200
return track.chi2MatchMCHMFT() < mMaxMatchingChi2MCHMFT;

PWGEM/Dilepton/TableProducer/skimmerPrimaryMuon.cxx

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ struct skimmerPrimaryMuon {
183183
if (maxDCAxy < dcaXY) {
184184
return false;
185185
}
186-
if (chi2_per_ndf < 0.f || maxChi2GL < chi2_per_ndf) {
186+
if (maxChi2GL < chi2_per_ndf) {
187187
return false;
188188
}
189189
if (rAtAbsorberEnd < minRabsGL || maxRabs < rAtAbsorberEnd) {
@@ -193,7 +193,7 @@ struct skimmerPrimaryMuon {
193193
if (eta < minEtaSA || maxEtaSA < eta) {
194194
return false;
195195
}
196-
if (chi2_per_ndf < 0.f || maxChi2SA < chi2_per_ndf) {
196+
if (maxChi2SA < chi2_per_ndf) {
197197
return false;
198198
}
199199
} else {
@@ -214,14 +214,17 @@ struct skimmerPrimaryMuon {
214214
return;
215215
}
216216

217-
o2::dataformats::GlobalFwdTrack propmuonAtPV = propagateMuon(fwdtrack, collision, propagationPoint::kToVertex);
218-
o2::dataformats::GlobalFwdTrack propmuonAtDCA = propagateMuon(fwdtrack, collision, propagationPoint::kToDCA);
217+
if (fwdtrack.chi2() < 0.f) { // this should never happen. only for protection.
218+
return;
219+
}
219220

221+
o2::dataformats::GlobalFwdTrack propmuonAtPV = propagateMuon(fwdtrack, collision, propagationPoint::kToVertex);
220222
float pt = propmuonAtPV.getPt();
221223
float eta = propmuonAtPV.getEta();
222224
float phi = propmuonAtPV.getPhi();
223225
o2::math_utils::bringTo02Pi(phi);
224226

227+
o2::dataformats::GlobalFwdTrack propmuonAtDCA = propagateMuon(fwdtrack, collision, propagationPoint::kToDCA);
225228
float cXXatDCA = propmuonAtDCA.getSigma2X();
226229
float cYYatDCA = propmuonAtDCA.getSigma2Y();
227230
float cXYatDCA = propmuonAtDCA.getSigmaXY();
@@ -255,24 +258,41 @@ struct skimmerPrimaryMuon {
255258
int ndf_mchmft = 1;
256259

257260
if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
261+
// apply r-absorber cut here to minimize the number of calling propagateMuon.
262+
if (fwdtrack.rAtAbsorberEnd() < minRabsGL || maxRabs < fwdtrack.rAtAbsorberEnd()) {
263+
return;
264+
}
265+
266+
// apply dca cut here to minimize the number of calling propagateMuon.
267+
if (maxDCAxy < dcaXY) {
268+
return;
269+
}
270+
258271
const auto& mchtrack = fwdtrack.template matchMCHTrack_as<TFwdTracks>(); // MCH-MID
272+
const auto& mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>(); // MFTsa
273+
nClustersMFT = mfttrack.nClusters();
274+
mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags();
275+
ndf_mchmft = 2.f * (mchtrack.nClusters() + nClustersMFT) - 5.f;
276+
chi2mft = mfttrack.chi2();
277+
// chi2mft = mfttrack.chi2() / (2.f * nClustersMFT - 5.f);
278+
279+
// apply chi2/ndf cut here to minimize the number of calling propagateMuon.
280+
if (maxChi2GL < fwdtrack.chi2() / ndf_mchmft) {
281+
return;
282+
}
283+
259284
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = propagateMuon(mchtrack, collision, propagationPoint::kToVertex);
260285
ptMatchedMCHMID = propmuonAtPV_Matched.getPt();
261286
etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
262287
phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
263288
o2::math_utils::bringTo02Pi(phiMatchedMCHMID);
289+
264290
o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = propagateMuon(mchtrack, collision, propagationPoint::kToDCA);
265291
float dcaX_Matched = propmuonAtDCA_Matched.getX() - collision.posX();
266292
float dcaY_Matched = propmuonAtDCA_Matched.getY() - collision.posY();
267293
float dcaXY_Matched = std::sqrt(dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
268294
pDCA = mchtrack.p() * dcaXY_Matched;
269295

270-
const auto& mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>();
271-
nClustersMFT = mfttrack.nClusters();
272-
mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags();
273-
chi2mft = mfttrack.chi2() / (2.f * nClustersMFT - 5.f);
274-
ndf_mchmft = 2.f * (mchtrack.nClusters() + nClustersMFT) - 5.f;
275-
276296
if (refitGlobalMuon) {
277297
eta = mfttrack.eta();
278298
phi = mfttrack.phi();

PWGHF/D2H/DataModel/ReducedDataModel.h

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,32 @@ DECLARE_SOA_TABLE(HfRedTrackBases, "AOD", "HFREDTRACKBASE", //! Table with track
285285
aod::track::Px<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha>,
286286
aod::track::Py<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha>,
287287
aod::track::Pz<aod::track::Signed1Pt, track::Tgl>,
288-
aod::track::PVector<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha, aod::track::Tgl>);
288+
aod::track::PVector<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha, aod::track::Tgl>,
289+
o2::soa::Marker<1>);
289290

290291
DECLARE_SOA_TABLE(HfRedTracksCov, "AOD", "HFREDTRACKCOV", //! Table with track covariance information for reduced workflow
291292
soa::Index<>,
292-
HFTRACKPARCOV_COLUMNS);
293+
HFTRACKPARCOV_COLUMNS,
294+
o2::soa::Marker<1>);
295+
296+
DECLARE_SOA_TABLE(HfRedSoftPiBases, "AOD", "HFREDSOFTPIBASE", //! Table with track information for reduced workflow
297+
soa::Index<>,
298+
hf_track_index_reduced::TrackId,
299+
hf_track_index_reduced::HfRedCollisionId,
300+
HFTRACKPAR_COLUMNS,
301+
hf_track_vars_reduced::ItsNCls,
302+
hf_track_vars_reduced::TpcNClsCrossedRows,
303+
hf_track_vars_reduced::TpcChi2NCl,
304+
aod::track::Px<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha>,
305+
aod::track::Py<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha>,
306+
aod::track::Pz<aod::track::Signed1Pt, track::Tgl>,
307+
aod::track::PVector<aod::track::Signed1Pt, aod::track::Snp, aod::track::Alpha, aod::track::Tgl>,
308+
o2::soa::Marker<2>);
309+
310+
DECLARE_SOA_TABLE(HfRedSoftPiCov, "AOD", "HFREDSOFTPICOV", //! Table with track covariance information for reduced workflow
311+
soa::Index<>,
312+
HFTRACKPARCOV_COLUMNS,
313+
o2::soa::Marker<2>);
293314

294315
// CAREFUL: need to follow convention [Name = Description + 's'] in DECLARE_SOA_TABLE(Name, "AOD", Description)
295316
// to call DECLARE_SOA_INDEX_COLUMN_FULL later on

0 commit comments

Comments
 (0)