Skip to content

Commit 9ecb35d

Browse files
mcoquet642shahor02
authored andcommitted
Fix merging
1 parent 84f023b commit 9ecb35d

2 files changed

Lines changed: 37 additions & 34 deletions

File tree

Detectors/AOD/include/AODProducerWorkflow/AODProducerWorkflowSpec.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "Steer/MCKinematicsReader.h"
2929
#include "TStopwatch.h"
3030
#include "ZDCBase/Constants.h"
31+
#include "GlobalTracking/MatchGlobalFwd.h"
3132

3233
#include <string>
3334
#include <vector>
@@ -226,6 +227,7 @@ class AODProducerWorkflowDPL : public Task
226227
}
227228

228229
bool mPropTracks{false};
230+
bool mPropMuons{false};
229231
o2::base::Propagator::MatCorrType mMatCorr{o2::base::Propagator::MatCorrType::USEMatCorrLUT};
230232
o2::dataformats::MeanVertexObject mVtx;
231233
float mMinPropR{o2::constants::geom::XTPCInnerRef + 0.1f};
@@ -311,6 +313,8 @@ class AODProducerWorkflowDPL : public Task
311313
std::shared_ptr<DataRequest> mDataRequest;
312314
std::shared_ptr<o2::base::GRPGeomRequest> mGGCCDBRequest;
313315

316+
o2::globaltracking::MatchGlobalFwd mMatching;
317+
314318
static constexpr int TOFTimePrecPS = 16; // required max error in ps for TOF tracks
315319
// truncation is enabled by default
316320
uint32_t mCollisionPosition = 0xFFFFFFF0; // 19 bits mantissa

Detectors/AOD/src/AODProducerWorkflowSpec.cxx

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
#include "FT0Base/Geometry.h"
5353
#include "GlobalTracking/MatchTOF.h"
5454
#include "ReconstructionDataFormats/Cascade.h"
55+
#include "GlobalTracking/MatchGlobalFwd.h"
5556
#include "MCHTracking/TrackExtrap.h"
5657
#include "MCHTracking/TrackParam.h"
5758
#include "ITSMFTBase/DPLAlpideParam.h"
@@ -574,10 +575,12 @@ void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksC
574575
}
575576

576577
o2::mch::TrackParam trackParamAtVertex(track.getZ(), track.getParameters(), track.getCovariances());
577-
double errVtx{0.0}; // FIXME: get errors associated with vertex if available
578-
double errVty{0.0};
579-
if (!o2::mch::TrackExtrap::extrapToVertex(trackParamAtVertex, vx, vy, vz, errVtx, errVty)) {
580-
return false;
578+
if (mPropMuons) {
579+
double errVtx{0.0}; // FIXME: get errors associated with vertex if available
580+
double errVty{0.0};
581+
if (!o2::mch::TrackExtrap::extrapToVertex(trackParamAtVertex, vx, vy, vz, errVtx, errVty)) {
582+
return false;
583+
}
581584
}
582585

583586
// extrapolate to DCA
@@ -599,43 +602,37 @@ void AODProducerWorkflowDPL::addToFwdTracksTable(FwdTracksCursorType& fwdTracksC
599602
double xAbs = trackParamAtRAbs.getNonBendingCoor();
600603
double yAbs = trackParamAtRAbs.getBendingCoor();
601604

602-
double px = trackParamAtVertex.px();
603-
double py = trackParamAtVertex.py();
604-
double pz = trackParamAtVertex.pz();
605-
606-
double pt = std::sqrt(px * px + py * py);
607-
double dphi = std::atan2(py, px);
608-
double dtanl = pz / pt;
609-
double dinvqpt = 1.0 / (trackParamAtVertex.getCharge() * pt);
610605
double dpdca = track.getP() * dca;
611606
double dchi2 = track.getChi2OverNDF();
612607

613-
fwdInfo.x = trackParamAtVertex.getNonBendingCoor();
614-
fwdInfo.y = trackParamAtVertex.getBendingCoor();
615-
fwdInfo.z = trackParamAtVertex.getZ();
608+
auto fwdmuon = mMatching.MCHtoFwd(trackParamAtVertex);
609+
610+
fwdInfo.x = fwdmuon.getX();
611+
fwdInfo.y = fwdmuon.getY();
612+
fwdInfo.z = fwdmuon.getZ();
613+
fwdInfo.phi = fwdmuon.getPhi();
614+
fwdInfo.tanl = fwdmuon.getTgl();
615+
fwdInfo.invqpt = fwdmuon.getInvQPt();
616616
fwdInfo.rabs = std::sqrt(xAbs * xAbs + yAbs * yAbs);
617-
fwdInfo.phi = dphi;
618-
fwdInfo.tanl = dtanl;
619-
fwdInfo.invqpt = dinvqpt;
620617
fwdInfo.chi2 = dchi2;
621618
fwdInfo.pdca = dpdca;
622619
fwdInfo.nClusters = track.getNClusters();
623620

624-
fwdCovInfo.sigX = TMath::Sqrt(trackParamAtVertex.getCovariances()(0, 0));
625-
fwdCovInfo.sigY = TMath::Sqrt(trackParamAtVertex.getCovariances()(1, 1));
626-
fwdCovInfo.sigPhi = TMath::Sqrt(trackParamAtVertex.getCovariances()(2, 2));
627-
fwdCovInfo.sigTgl = TMath::Sqrt(trackParamAtVertex.getCovariances()(3, 3));
628-
fwdCovInfo.sig1Pt = TMath::Sqrt(trackParamAtVertex.getCovariances()(4, 4));
629-
fwdCovInfo.rhoXY = (Char_t)(128. * trackParamAtVertex.getCovariances()(0, 1) / (fwdCovInfo.sigX * fwdCovInfo.sigY));
630-
fwdCovInfo.rhoPhiX = (Char_t)(128. * trackParamAtVertex.getCovariances()(0, 2) / (fwdCovInfo.sigPhi * fwdCovInfo.sigX));
631-
fwdCovInfo.rhoPhiY = (Char_t)(128. * trackParamAtVertex.getCovariances()(1, 2) / (fwdCovInfo.sigPhi * fwdCovInfo.sigY));
632-
fwdCovInfo.rhoTglX = (Char_t)(128. * trackParamAtVertex.getCovariances()(0, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigX));
633-
fwdCovInfo.rhoTglY = (Char_t)(128. * trackParamAtVertex.getCovariances()(1, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigY));
634-
fwdCovInfo.rhoTglPhi = (Char_t)(128. * trackParamAtVertex.getCovariances()(2, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigPhi));
635-
fwdCovInfo.rho1PtX = (Char_t)(128. * trackParamAtVertex.getCovariances()(0, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigX));
636-
fwdCovInfo.rho1PtY = (Char_t)(128. * trackParamAtVertex.getCovariances()(1, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigY));
637-
fwdCovInfo.rho1PtPhi = (Char_t)(128. * trackParamAtVertex.getCovariances()(2, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigPhi));
638-
fwdCovInfo.rho1PtTgl = (Char_t)(128. * trackParamAtVertex.getCovariances()(3, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigTgl));
621+
fwdCovInfo.sigX = TMath::Sqrt(fwdmuon.getCovariances()(0, 0));
622+
fwdCovInfo.sigY = TMath::Sqrt(fwdmuon.getCovariances()(1, 1));
623+
fwdCovInfo.sigPhi = TMath::Sqrt(fwdmuon.getCovariances()(2, 2));
624+
fwdCovInfo.sigTgl = TMath::Sqrt(fwdmuon.getCovariances()(3, 3));
625+
fwdCovInfo.sig1Pt = TMath::Sqrt(fwdmuon.getCovariances()(4, 4));
626+
fwdCovInfo.rhoXY = (Char_t)(128. * fwdmuon.getCovariances()(0, 1) / (fwdCovInfo.sigX * fwdCovInfo.sigY));
627+
fwdCovInfo.rhoPhiX = (Char_t)(128. * fwdmuon.getCovariances()(0, 2) / (fwdCovInfo.sigPhi * fwdCovInfo.sigX));
628+
fwdCovInfo.rhoPhiY = (Char_t)(128. * fwdmuon.getCovariances()(1, 2) / (fwdCovInfo.sigPhi * fwdCovInfo.sigY));
629+
fwdCovInfo.rhoTglX = (Char_t)(128. * fwdmuon.getCovariances()(0, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigX));
630+
fwdCovInfo.rhoTglY = (Char_t)(128. * fwdmuon.getCovariances()(1, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigY));
631+
fwdCovInfo.rhoTglPhi = (Char_t)(128. * fwdmuon.getCovariances()(2, 3) / (fwdCovInfo.sigTgl * fwdCovInfo.sigPhi));
632+
fwdCovInfo.rho1PtX = (Char_t)(128. * fwdmuon.getCovariances()(0, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigX));
633+
fwdCovInfo.rho1PtY = (Char_t)(128. * fwdmuon.getCovariances()(1, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigY));
634+
fwdCovInfo.rho1PtPhi = (Char_t)(128. * fwdmuon.getCovariances()(2, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigPhi));
635+
fwdCovInfo.rho1PtTgl = (Char_t)(128. * fwdmuon.getCovariances()(3, 4) / (fwdCovInfo.sig1Pt * fwdCovInfo.sigTgl));
639636

640637
return true;
641638
};
@@ -1626,6 +1623,7 @@ void AODProducerWorkflowDPL::init(InitContext& ic)
16261623
mNThreads = std::max(1, ic.options().get<int>("nthreads"));
16271624
mEMCselectLeading = ic.options().get<bool>("emc-select-leading");
16281625
mPropTracks = ic.options().get<bool>("propagate-tracks");
1626+
mPropMuons = ic.options().get<bool>("propagate-muons");
16291627
#ifdef WITH_OPENMP
16301628
LOGP(info, "Multi-threaded parts will run with {} OpenMP threads", mNThreads);
16311629
#else
@@ -2831,7 +2829,8 @@ DataProcessorSpec getAODProducerWorkflowSpec(GID::mask_t src, bool enableSV, boo
28312829
ConfigParamSpec{"reco-mctracks-only", VariantType::Int, 0, {"Store only reconstructed MC tracks and their mothers/daughters. 0 -- off, != 0 -- on"}},
28322830
ConfigParamSpec{"ctpreadout-create", VariantType::Int, 0, {"Create CTP digits from detector readout and CTP inputs. !=1 -- off, 1 -- on"}},
28332831
ConfigParamSpec{"emc-select-leading", VariantType::Bool, false, {"Flag to select if only the leading contributing particle for an EMCal cell should be stored"}},
2834-
ConfigParamSpec{"propagate-tracks", VariantType::Bool, false, {"Propagate tracks (not used for secondary vertices) to IP"}}}};
2832+
ConfigParamSpec{"propagate-tracks", VariantType::Bool, false, {"Propagate tracks (not used for secondary vertices) to IP"}},
2833+
ConfigParamSpec{"propagate-muons", VariantType::Bool, false, {"Propagate muons to IP"}}}};
28352834
}
28362835

28372836
} // namespace o2::aodproducer

0 commit comments

Comments
 (0)