Skip to content

Commit 726d417

Browse files
[Common] Adding configurable to reduce memory usage for muon track extension (#15784)
Co-authored-by: Lucamicheletti93 <luca.mike93@gmail.com>
1 parent 895b61f commit 726d417

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

Common/TableProducer/fwdtrackextension.cxx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include <Math/MatrixRepresentationsStatic.h>
3434
#include <Math/SMatrix.h>
3535

36+
#include <numbers>
3637
#include <string>
3738
#include <vector>
3839

@@ -50,6 +51,7 @@ struct FwdTrackExtension {
5051
Configurable<std::string> geoPath{"geoPath", "GLO/Config/GeometryAligned", "Path of the geometry file"};
5152
Configurable<std::string> grpmagPath{"grpmagPath", "GLO/Config/GRPMagField", "CCDB path of the GRPMagField object"};
5253
Configurable<std::string> configCcdbUrl{"configCcdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
54+
Configurable<bool> propInTheAbsorber{"propInTheAbsorber", false, "Propagate muon in the absober: false to minimize standalone muons DCA calculation"};
5355
Configurable<bool> refitGlobalMuon{"refitGlobalMuon", false, "Recompute parameters of global muons"};
5456

5557
Service<o2::ccdb::BasicCCDBManager> fCCDB;
@@ -63,7 +65,7 @@ struct FwdTrackExtension {
6365
fCCDB->setCaching(true);
6466
fCCDB->setLocalObjectValidityChecking();
6567

66-
if (!o2::base::GeometryManager::isGeometryLoaded()) {
68+
if (propInTheAbsorber && !o2::base::GeometryManager::isGeometryLoaded()) {
6769
LOGF(info, "Load geometry from CCDB");
6870
fCCDB->get<TGeoManager>(geoPath);
6971
}
@@ -84,8 +86,10 @@ struct FwdTrackExtension {
8486
LOGF(info, "Init field from GRP");
8587
o2::base::Propagator::initFieldFromGRP(grpmag);
8688
}
87-
LOGF(info, "Set field for muons");
88-
o2::mch::TrackExtrap::setField();
89+
if (propInTheAbsorber) {
90+
LOGF(info, "Set field for muons");
91+
o2::mch::TrackExtrap::setField();
92+
}
8993
fCurrentRun = bc.runNumber();
9094
}
9195
const float zField = grpmag->getNominalL3Field();
@@ -100,9 +104,14 @@ struct FwdTrackExtension {
100104
o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()};
101105
fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft);
102106
}
103-
auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField);
104-
dcaX = (proptrack.getX() - collision.posX());
105-
dcaY = (proptrack.getY() - collision.posY());
107+
if (!propInTheAbsorber && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack)) {
108+
auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField);
109+
dcaX = (proptrack.getX() - collision.posX());
110+
dcaY = (proptrack.getY() - collision.posY());
111+
} else {
112+
dcaX = track.pDca() / std::numbers::sqrt2 / track.p();
113+
dcaY = dcaX;
114+
}
106115
}
107116
fwdDCA(dcaX, dcaY);
108117
}

0 commit comments

Comments
 (0)