Skip to content

Commit c4190a2

Browse files
authored
[PWGDQ] Couple of updates regarding muon (re-)alignment (AliceO2Group#10313)
1 parent c081b01 commit c4190a2

File tree

2 files changed

+25
-9
lines changed

2 files changed

+25
-9
lines changed

PWGDQ/TableProducer/tableMaker.cxx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1123,7 +1123,24 @@ struct TableMaker {
11231123
for (const auto& muonId : fwdtrackIndices) { // start loop over tracks
11241124
auto muon = muonId.template fwdtrack_as<TMuons>();
11251125
trackFilteringTag = static_cast<uint64_t>(0);
1126-
VarManager::FillTrack<TMuonFillMap>(muon);
1126+
if constexpr (static_cast<bool>(TMuonRealignFillMap)) {
1127+
// Update muon information using realigned tracks
1128+
if (static_cast<int>(muon.trackType()) > 2) {
1129+
// Update only MCH or MCH-MID tracks with realigned information
1130+
auto muonRealignSelected = tracksMuonRealign.select(aod::fwdtrackrealign::fwdtrackId == muonId.fwdtrackId() && aod::fwdtrackrealign::collisionId == collision.globalIndex());
1131+
if (muonRealignSelected.size() == 1) {
1132+
for (const auto& muonRealign : muonRealignSelected) {
1133+
VarManager::FillTrack<TMuonRealignFillMap>(muonRealign);
1134+
}
1135+
} else {
1136+
LOGF(fatal, "Inconsistent size of realigned muon track candidates.");
1137+
}
1138+
} else {
1139+
VarManager::FillTrack<TMuonFillMap>(muon);
1140+
}
1141+
} else {
1142+
VarManager::FillTrack<TMuonFillMap>(muon);
1143+
}
11271144

11281145
if (muon.index() > idxPrev + 1) { // checks if some muons are filtered even before the skimming function
11291146
nDel += muon.index() - (idxPrev + 1);

PWGDQ/Tasks/mchAlignRecord.cxx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <unordered_map>
2121
#include <vector>
2222
#include <iostream>
23+
#include <memory>
2324

2425
#include "Framework/AnalysisTask.h"
2526
#include "Framework/runDataProcessing.h"
@@ -117,8 +118,8 @@ struct mchAlignRecordTask {
117118
Configurable<double> fAllowedVarZ{"variation-z", 2.0, "Allowed variation for z axis in cm"};
118119
Configurable<double> cfgSigmaX{"cfgSigmaX", 1000., "Sigma cut along X"};
119120
Configurable<double> cfgSigmaY{"cfgSigmaY", 1000., "Sigma cut along Y"};
120-
Configurable<double> cfgChamberResolutionX{"cfgChamberResolutionX", 0.04, "Chamber resolution along X configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
121-
Configurable<double> cfgChamberResolutionY{"cfgChamberResolutionY", 0.04, "Chamber resolution along Y configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
121+
Configurable<double> cfgChamberResolutionX{"cfgChamberResolutionX", 0.4, "Chamber resolution along X configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
122+
Configurable<double> cfgChamberResolutionY{"cfgChamberResolutionY", 0.4, "Chamber resolution along Y configuration for refit"}; // 0.4cm pp, 0.2cm PbPb
122123
Configurable<double> cfgSigmaCutImprove{"cfgSigmaCutImprove", 6., "Sigma cut for track improvement"};
123124
struct : ConfigurableGroup {
124125
Configurable<std::vector<int>> cfgDetElem{"cfgDetElem",
@@ -129,6 +130,8 @@ struct mchAlignRecordTask {
129130
"List of param mask for d.o.f to be fixed"};
130131
} fFixDetElem;
131132

133+
Preslice<aod::FwdTrkCl> perMuon = aod::fwdtrkcl::fwdtrackId;
134+
132135
void init(InitContext& ic)
133136
{
134137

@@ -335,13 +338,9 @@ struct mchAlignRecordTask {
335338
continue;
336339
}
337340

341+
auto clustersSliced = clusters.sliceBy(perMuon, track.globalIndex()); // Slice clusters by muon id
338342
// Loop over attached clusters
339-
for (auto const& cluster : clusters) {
340-
341-
if (cluster.template fwdtrack_as<TTracks>() != track) {
342-
continue;
343-
}
344-
343+
for (auto const& cluster : clustersSliced) {
345344
clIndex += 1;
346345

347346
mch::Cluster* mch_cluster = new mch::Cluster();

0 commit comments

Comments
 (0)