Skip to content

Commit 1a9ecd6

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents f89d0d0 + be2e263 commit 1a9ecd6

File tree

71 files changed

+6677
-2698
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+6677
-2698
lines changed

.github/dependabot.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
# Dependabot configuration
3+
# Reference: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
4+
5+
version: 2
6+
updates:
7+
- package-ecosystem: "github-actions" # See documentation for possible values
8+
directory: "/" # Location of package manifests
9+
schedule:
10+
interval: "weekly"

.github/workflows/mega-linter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
id: ml
3939
# You can override MegaLinter flavor used to have faster performances
4040
# More info at https://megalinter.io/flavors/
41-
uses: oxsecurity/megalinter@v8.4.2
41+
uses: oxsecurity/megalinter@v8.5.0
4242
env:
4343
# All available variables are described in documentation:
4444
# https://megalinter.io/configuration/

.github/workflows/stale.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
stale:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/stale@v1
15+
- uses: actions/stale@v9
1616
with:
1717
repo-token: ${{ secrets.GITHUB_TOKEN }}
1818
stale-pr-message: 'This PR has not been updated in the last 30 days. Is it still needed? Unless further action is taken, it will be closed in 5 days.'

.pre-commit-config.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ repos:
77
- id: trailing-whitespace
88
- id: end-of-file-fixer
99
- repo: https://github.com/pre-commit/mirrors-clang-format
10-
rev: "v18.1.3" # clang-format version
10+
rev: v18.1.3 # clang-format version
1111
hooks:
1212
- id: clang-format
13+
- repo: https://github.com/cpplint/cpplint
14+
rev: 2.0.0
15+
hooks:
16+
- id: cpplint

Common/Core/fwdtrackUtilities.h

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,9 @@ o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TCollision
5959

6060
if (endPoint == propagationPoint::kToVertex) {
6161
o2::mch::TrackExtrap::extrapToVertex(mchTrack, collision.posX(), collision.posY(), collision.posZ(), collision.covXX(), collision.covYY());
62-
}
63-
if (endPoint == propagationPoint::kToDCA) {
62+
} else if (endPoint == propagationPoint::kToDCA) {
6463
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrack, collision.posZ());
65-
}
66-
if (endPoint == propagationPoint::kToRabs) {
64+
} else if (endPoint == propagationPoint::kToRabs) {
6765
o2::mch::TrackExtrap::extrapToZ(mchTrack, -505.);
6866
}
6967

@@ -77,7 +75,11 @@ o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TCollision
7775
auto Bz = field->getBz(centerMFT); // Get field at centre of MFT
7876
auto geoMan = o2::base::GeometryManager::meanMaterialBudget(muon.x(), muon.y(), muon.z(), collision.posX(), collision.posY(), collision.posZ());
7977
auto x2x0 = static_cast<float>(geoMan.meanX2X0);
80-
fwdtrack.propagateToVtxhelixWithMCS(collision.posZ(), {collision.posX(), collision.posY()}, {collision.covXX(), collision.covYY()}, Bz, x2x0);
78+
if (endPoint == propagationPoint::kToVertex) {
79+
fwdtrack.propagateToVtxhelixWithMCS(collision.posZ(), {collision.posX(), collision.posY()}, {collision.covXX(), collision.covYY()}, Bz, x2x0);
80+
} else if (endPoint == propagationPoint::kToDCA) {
81+
fwdtrack.propagateToZhelix(collision.posZ(), Bz);
82+
}
8183
propmuon.setParameters(fwdtrack.getParameters());
8284
propmuon.setZ(fwdtrack.getZ());
8385
propmuon.setCovariances(fwdtrack.getCovariances());

Common/DataModel/PropagatedFwdTrackTables.h

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,21 @@
1919
#define COMMON_DATAMODEL_PROPAGATEDFWDTRACKTABLES_H_
2020

2121
#include "Framework/AnalysisDataModel.h"
22+
#include "TrackSelectionTables.h"
2223

2324
namespace o2::aod
2425
{
2526
namespace propfwdtrack
2627
{
27-
DECLARE_SOA_INDEX_COLUMN(FwdTrack, fwdtrack); //! FwdTrack index
28-
DECLARE_SOA_COLUMN(CXXatDCA, cXXatDCA, float); //! DCAx resolution squared at DCA
29-
DECLARE_SOA_COLUMN(CYYatDCA, cYYatDCA, float); //! DCAy resolution squared at DCA
30-
DECLARE_SOA_COLUMN(CXYatDCA, cXYatDCA, float); //! correlation term of DCAx,y resolution at DCA
31-
DECLARE_SOA_COLUMN(EtaMatchedMCHMID, etaMatchedMCHMID, float); //! eta of MCH-MID track in MFT-MCH-MID track at PV
32-
DECLARE_SOA_COLUMN(PhiMatchedMCHMID, phiMatchedMCHMID, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV
33-
DECLARE_SOA_COLUMN(IsAssociatedToMPC, isAssociatedToMPC, bool); //! is assigned to the most probable collision (relevant to TTCA)
34-
DECLARE_SOA_COLUMN(IsAmbiguous, isAmbiguous, bool); //! is ambiguous (relevant to TTCA)
28+
DECLARE_SOA_INDEX_COLUMN(FwdTrack, fwdtrack); //! FwdTrack index
29+
DECLARE_SOA_INDEX_COLUMN_FULL(MCHTrack, matchMCHTrack, int, FwdTracks, "_MatchMCHTrack"); //! Index of matched MCH track for GlobalMuonTracks and GlobalForwardTracks
30+
DECLARE_SOA_COLUMN(CXXatDCA, cXXatDCA, float); //! DCAx resolution squared at DCA
31+
DECLARE_SOA_COLUMN(CYYatDCA, cYYatDCA, float); //! DCAy resolution squared at DCA
32+
DECLARE_SOA_COLUMN(CXYatDCA, cXYatDCA, float); //! correlation term of DCAx,y resolution at DCA
33+
DECLARE_SOA_COLUMN(EtaMatchedMCHMID, etaMatchedMCHMID, float); //! eta of MCH-MID track in MFT-MCH-MID track at PV
34+
DECLARE_SOA_COLUMN(PhiMatchedMCHMID, phiMatchedMCHMID, float); //! phi of MCH-MID track in MFT-MCH-MID track at PV
35+
DECLARE_SOA_COLUMN(IsAssociatedToMPC, isAssociatedToMPC, bool); //! is assigned to the most probable collision (relevant to TTCA)
36+
DECLARE_SOA_COLUMN(IsAmbiguous, isAmbiguous, bool); //! is ambiguous (relevant to TTCA)
3537
} // namespace propfwdtrack
3638

3739
DECLARE_SOA_TABLE_FULL(StoredPropagatedFwdTracks, "PropagatedFwdTracks", "AOD", "PROPFWDTRACK",
@@ -43,9 +45,9 @@ DECLARE_SOA_TABLE_FULL(StoredPropagatedFwdTracks, "PropagatedFwdTracks", "AOD",
4345
fwdtrack::Pz<fwdtrack::Pt, fwdtrack::Tgl>,
4446
fwdtrack::Sign<fwdtrack::Signed1Pt>,
4547
fwdtrack::Chi2, fwdtrack::Chi2MatchMCHMID, fwdtrack::Chi2MatchMCHMFT,
46-
fwdtrack::MatchScoreMCHMFT, propfwdtrack::FwdTrackId, fwdtrack::MFTTrackId, fwdtrack::MCHTrackId,
48+
fwdtrack::MatchScoreMCHMFT, propfwdtrack::FwdTrackId, fwdtrack::MFTTrackId, propfwdtrack::MCHTrackId,
4749
fwdtrack::MCHBitMap, fwdtrack::MIDBitMap, fwdtrack::MIDBoards,
48-
fwdtrack::TrackTime, fwdtrack::TrackTimeRes,
50+
fwdtrack::TrackTime, fwdtrack::TrackTimeRes, fwdtrack::FwdDcaX, fwdtrack::FwdDcaY,
4951
propfwdtrack::CXXatDCA, propfwdtrack::CYYatDCA, propfwdtrack::CXYatDCA,
5052
propfwdtrack::EtaMatchedMCHMID, propfwdtrack::PhiMatchedMCHMID,
5153
propfwdtrack::IsAssociatedToMPC, propfwdtrack::IsAmbiguous, o2::soa::Marker<1>);

Common/TableProducer/centralityTable.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ struct CentralityTable {
238238
ccdb->setLocalObjectValidityChecking();
239239
ccdb->setFatalWhenNull(false);
240240
mRunNumber = 0;
241+
listCalib.setObject(new TList);
241242
if (!produceHistograms.value) {
242243
return;
243244
}
@@ -259,7 +260,6 @@ struct CentralityTable {
259260
histos.addClone("FT0A/", "sel8FT0A/");
260261

261262
histos.print();
262-
listCalib.setObject(new TList);
263263
}
264264

265265
using BCsWithTimestampsAndRun2Infos = soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps>;

Common/TableProducer/fwdtrackPropagation.cxx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,15 @@ struct FwdTrackPropagation {
6969
Configurable<float> maxMatchingChi2MCHMFT{"maxMatchingChi2MCHMFT", 50.f, "max. chi2 for MCH-MFT matching"};
7070
Configurable<float> maxChi2{"maxChi2", 1e+6, "max. chi2 for muon tracking"};
7171
Configurable<bool> refitGlobalMuon{"refitGlobalMuon", false, "flag to refit global muon"};
72+
Configurable<bool> applyEtaCutToSAinGL{"applyEtaCutToSAinGL", false, "flag to apply eta cut to samuon in global muon"};
7273

7374
HistogramRegistry fRegistry{"fRegistry"};
7475
static constexpr std::string_view muon_types[5] = {"MFTMCHMID/", "MFTMCHMIDOtherMatch/", "MFTMCH/", "MCHMID/", "MCH/"};
7576

7677
void init(o2::framework::InitContext&)
7778
{
78-
if (doprocessWithoutTTCA && doprocessWithTTCA) {
79-
LOGF(fatal, "Cannot enable doprocessWithoutTTCA and doprocessWithTTCA at the same time. Please choose one.");
79+
if (doprocessWithoutFTTCA && doprocessWithFTTCA) {
80+
LOGF(fatal, "Cannot enable doprocessWithoutFTTCA and doprocessWithFTTCA at the same time. Please choose one.");
8081
}
8182

8283
ccdb->setURL(ccdburl);
@@ -148,7 +149,7 @@ struct FwdTrackPropagation {
148149
fRegistry.add("MCHMID/hDCAyResolutionvsPt", "DCA_{y} vs. p_{T};p_{T} (GeV/c);DCA_{y} resolution (#mum);", kTH2F, {{100, 0, 10.f}, {500, 0, 5e+5}}, false);
149150
}
150151

151-
bool isSelected(const float pt, const float eta, const float rAtAbsorberEnd, const float pDCA, const float chi2, const uint8_t trackType)
152+
bool isSelected(const float pt, const float eta, const float rAtAbsorberEnd, const float pDCA, const float chi2, const uint8_t trackType, const float etaMatchedMCHMID)
152153
{
153154
if (pt < minPt || maxPt < pt) {
154155
return false;
@@ -158,14 +159,17 @@ struct FwdTrackPropagation {
158159
return false;
159160
}
160161

161-
if (maxChi2 < chi2) {
162+
if (chi2 < 0.f || maxChi2 < chi2) {
162163
return false;
163164
}
164165

165166
if (trackType == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack)) {
166167
if (eta < minEtaGL || maxEtaGL < eta) {
167168
return false;
168169
}
170+
if (applyEtaCutToSAinGL && (etaMatchedMCHMID < minEtaSA || maxEtaSA < etaMatchedMCHMID)) {
171+
return false;
172+
}
169173
} else if (trackType == static_cast<uint8_t>(o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack)) {
170174
if (eta < minEtaSA || maxEtaSA < eta) {
171175
return false;
@@ -251,18 +255,18 @@ struct FwdTrackPropagation {
251255

252256
const auto& mfttrack = fwdtrack.template matchMFTTrack_as<TMFTTracks>();
253257
nClustersMFT = mfttrack.nClusters();
258+
chi2mft = mfttrack.chi2();
254259
if (refitGlobalMuon) {
255260
eta = mfttrack.eta();
256261
phi = mfttrack.phi();
257262
o2::math_utils::bringTo02Pi(phi);
258-
pt = propmuonAtPV.getP() * std::sin(2.f * std::atan(std::exp(-eta)));
263+
pt = propmuonAtPV_Matched.getP() * std::sin(2.f * std::atan(std::exp(-eta)));
259264

260265
x = mfttrack.x();
261266
y = mfttrack.y();
262267
z = mfttrack.z();
263268
tgl = mfttrack.tgl();
264269
}
265-
chi2mft = mfttrack.chi2();
266270
} else if (fwdtrack.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
267271
o2::dataformats::GlobalFwdTrack propmuonAtRabs = propagateMuon(fwdtrack, collision, propagationPoint::kToRabs); // this is necessary only for MuonStandaloneTrack
268272
float xAbs = propmuonAtRabs.getX();
@@ -272,7 +276,7 @@ struct FwdTrackPropagation {
272276
return;
273277
}
274278

275-
if (!isSelected(pt, eta, rAtAbsorberEnd, pDCA, fwdtrack.chi2(), fwdtrack.trackType())) {
279+
if (!isSelected(pt, eta, rAtAbsorberEnd, pDCA, fwdtrack.chi2(), fwdtrack.trackType(), etaMatchedMCHMID)) {
276280
return;
277281
}
278282

@@ -302,7 +306,7 @@ struct FwdTrackPropagation {
302306
fwdtrack.sign() / pt, fwdtrack.nClusters(), pDCA, rAtAbsorberEnd,
303307
fwdtrack.chi2(), fwdtrack.chi2MatchMCHMID(), fwdtrack.chi2MatchMCHMFT(),
304308
fwdtrack.matchScoreMCHMFT(), fwdtrack.globalIndex(), fwdtrack.matchMFTTrackId(), fwdtrack.matchMCHTrackId(),
305-
fwdtrack.mchBitMap(), fwdtrack.midBitMap(), fwdtrack.midBoards(), fwdtrack.trackTime(), fwdtrack.trackTimeRes(),
309+
fwdtrack.mchBitMap(), fwdtrack.midBitMap(), fwdtrack.midBoards(), fwdtrack.trackTime(), fwdtrack.trackTimeRes(), dcaX, dcaY,
306310
cXXatDCA, cYYatDCA, cXYatDCA, etaMatchedMCHMID, phiMatchedMCHMID, isAssociatedToMPC, isAmbiguous);
307311

308312
propfwdtrackscov(
@@ -367,7 +371,7 @@ struct FwdTrackPropagation {
367371
Preslice<aod::FwdTrackAssoc> fwdtrackIndicesPerCollision = aod::track_association::collisionId;
368372
PresliceUnsorted<aod::FwdTrackAssoc> fwdtrackIndicesPerFwdTrack = aod::track_association::fwdtrackId;
369373

370-
void processWithoutTTCA(aod::Collisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&)
374+
void processWithoutFTTCA(aod::Collisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&)
371375
{
372376
for (const auto& collision : collisions) {
373377
const auto& bc = collision.template bc_as<aod::BCsWithTimestamps>();
@@ -382,9 +386,9 @@ struct FwdTrackPropagation {
382386
} // end of fwdtrack loop
383387
} // end of collision loop
384388
}
385-
PROCESS_SWITCH(FwdTrackPropagation, processWithoutTTCA, "process without TTCA", true);
389+
PROCESS_SWITCH(FwdTrackPropagation, processWithoutFTTCA, "process without FTTCA", true);
386390

387-
void processWithTTCA(aod::Collisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
391+
void processWithFTTCA(aod::Collisions const& collisions, MyFwdTracks const& fwdtracks, aod::MFTTracks const& mfttracks, aod::BCsWithTimestamps const&, aod::FwdTrackAssoc const& fwdtrackIndices)
388392
{
389393
std::unordered_map<int64_t, bool> mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
390394
for (const auto& fwdtrack : fwdtracks) {
@@ -408,7 +412,7 @@ struct FwdTrackPropagation {
408412
} // end of collision loop
409413
mapAmb.clear();
410414
}
411-
PROCESS_SWITCH(FwdTrackPropagation, processWithTTCA, "process with TTCA", false);
415+
PROCESS_SWITCH(FwdTrackPropagation, processWithFTTCA, "process with FTTCA", false);
412416
};
413417

414418
// Extends the PropagatedFwdTracks table for expression columns

Common/TableProducer/multiplicityTable.cxx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,15 +227,14 @@ struct MultiplicityTable {
227227
ccdb->setLocalObjectValidityChecking();
228228
ccdb->setFatalWhenNull(false); // don't fatal, please - exception is caught explicitly (as it should)
229229

230+
listCalib.setObject(new TList);
230231
if (!produceHistograms.value) {
231232
return;
232233
}
233234
histos.add("FT0A", "FT0A vs FT0A eq.", HistType::kTH2D, {{1000, 0, 1000, "FT0A multiplicity"}, {1000, 0, 1000, "FT0A multiplicity eq."}});
234235
histos.add("FT0C", "FT0C vs FT0C eq.", HistType::kTH2D, {{1000, 0, 1000, "FT0C multiplicity"}, {1000, 0, 1000, "FT0C multiplicity eq."}});
235236
histos.add("FT0CMultvsPV", "FT0C vs mult.", HistType::kTH2D, {{1000, 0, 1000, "FT0C mult."}, {100, 0, 100, "PV mult."}});
236237
histos.add("FT0AMultvsPV", "FT0A vs mult.", HistType::kTH2D, {{1000, 0, 1000, "FT0A mult."}, {100, 0, 100, "PV mult."}});
237-
238-
listCalib.setObject(new TList);
239238
}
240239

241240
/// Dummy process function for BCs, needed in case both Run2 and Run3 process functions are disabled

0 commit comments

Comments
 (0)