Skip to content

Commit fb4ff6e

Browse files
Updating task
1 parent cbbb165 commit fb4ff6e

File tree

1 file changed

+25
-30
lines changed

1 file changed

+25
-30
lines changed

Common/TableProducer/fwdtrackextension.cxx

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -78,43 +78,38 @@ struct FwdTrackExtension {
7878
float dcaY = -999;
7979
if (track.has_collision()) {
8080
auto const& collision = track.collision();
81-
if (propInTheAbsorber) {
82-
auto bc = collision.template bc_as<o2::aod::BCsWithTimestamps>();
83-
if (fCurrentRun != bc.runNumber()) {
84-
grpmag = fCCDB->getForTimeStamp<o2::parameters::GRPMagField>(grpmagPath, bc.timestamp());
85-
if (grpmag != nullptr) {
86-
LOGF(info, "Init field from GRP");
87-
o2::base::Propagator::initFieldFromGRP(grpmag);
88-
}
81+
auto bc = collision.template bc_as<o2::aod::BCsWithTimestamps>();
82+
if (fCurrentRun != bc.runNumber()) {
83+
grpmag = fCCDB->getForTimeStamp<o2::parameters::GRPMagField>(grpmagPath, bc.timestamp());
84+
if (grpmag != nullptr) {
85+
LOGF(info, "Init field from GRP");
86+
o2::base::Propagator::initFieldFromGRP(grpmag);
87+
}
88+
if (propInTheAbsorber) {
8989
LOGF(info, "Set field for muons");
9090
o2::mch::TrackExtrap::setField();
91-
fCurrentRun = bc.runNumber();
92-
}
93-
const float zField = grpmag->getNominalL3Field();
94-
95-
o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, 0.0);
96-
if (refitGlobalMuon && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) {
97-
auto muontrack = track.template matchMCHTrack_as<MuonsWithCov>();
98-
auto mfttrack = track.template matchMFTTrack_as<aod::MFTTracks>();
99-
o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, 0.f, zField);
100-
SMatrix5 tpars(mfttrack.x(), mfttrack.y(), mfttrack.phi(), mfttrack.tgl(), mfttrack.signed1Pt());
101-
SMatrix55 tcovs{};
102-
o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()};
103-
fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft);
10491
}
92+
fCurrentRun = bc.runNumber();
93+
}
94+
const float zField = grpmag->getNominalL3Field();
95+
96+
o2::track::TrackParCovFwd fwdtrack = o2::aod::fwdtrackutils::getTrackParCovFwdShift(track, 0.0);
97+
if (refitGlobalMuon && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalForwardTrack)) {
98+
auto muontrack = track.template matchMCHTrack_as<MuonsWithCov>();
99+
auto mfttrack = track.template matchMFTTrack_as<aod::MFTTracks>();
100+
o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, 0.f, zField);
101+
SMatrix5 tpars(mfttrack.x(), mfttrack.y(), mfttrack.phi(), mfttrack.tgl(), mfttrack.signed1Pt());
102+
SMatrix55 tcovs{};
103+
o2::track::TrackParCovFwd mft{mfttrack.z(), tpars, tcovs, mfttrack.chi2()};
104+
fwdtrack = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft);
105+
}
106+
if (!propInTheAbsorber && (trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack || trackType == o2::aod::fwdtrack::ForwardTrackTypeEnum::MCHStandaloneTrack)) {
105107
auto proptrack = o2::aod::fwdtrackutils::propagateTrackParCovFwd(fwdtrack, trackType, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, 0.f, zField);
106108
dcaX = (proptrack.getX() - collision.posX());
107109
dcaY = (proptrack.getY() - collision.posY());
108110
} else {
109-
double chi2 = track.chi2();
110-
SMatrix5 tpars(track.x(), track.y(), track.phi(), track.tgl(), track.signed1Pt());
111-
std::vector<double> v1;
112-
SMatrix55 tcovs(v1.begin(), v1.end());
113-
o2::track::TrackParCovFwd pars1{track.z(), tpars, tcovs, chi2};
114-
pars1.propagateToZlinear(collision.posZ());
115-
116-
dcaX = (pars1.getX() - collision.posX());
117-
dcaY = (pars1.getY() - collision.posY());
111+
dcaX = track.pDca() / sqrt(2) / track.p();
112+
dcaY = dcaX;
118113
}
119114
}
120115
fwdDCA(dcaX, dcaY);

0 commit comments

Comments
 (0)