Skip to content

Commit eacce11

Browse files
committed
One more step
1 parent 2626ba3 commit eacce11

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

Common/Tasks/muonQa.cxx

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ struct muonQa {
165165

166166
Preslice<aod::FwdTrkCl> perMuon = aod::fwdtrkcl::fwdtrackId;
167167
Preslice<aod::FwdTrackAssoc> fwdtrackIndicesPerCollision = aod::track_association::collisionId;
168+
Preslice<aod::MFTTrackAssoc> mfttrackIndicesPerCollision = aod::track_association::collisionId;
168169

169170
HistogramRegistry registry{"registry", {}};
170171
HistogramRegistry registryDCA{"registryDCA", {}};
@@ -653,20 +654,50 @@ struct muonQa {
653654
}
654655
}
655656

656-
template <typename TEvent, typename TFwdTracks, typename TMFTTracks, typename TFwdCls, typename AssocMuons>
657-
void runMuonQA(TEvent const& collision, aod::BCsWithTimestamps const&, TFwdTracks const& muons, TMFTTracks const& mfts, TMuonCls const& clusters, AssocMuons const& fwdtrackIndices)
657+
template <typename TEvent, typename TFwdTracks, typename TMFTTracks, typename TFwdCls, typename AssocMuons, typename AssocMFTs>
658+
void runMuonQA(TEvent const& collision, aod::BCsWithTimestamps const&, TFwdTracks const& muons, TMFTTracks const& mfts, TMuonCls const& clusters, AssocMuons const& fwdtrackIndices, AssocMFTs const& mfttrackIndices)
658659
{
660+
// Loop over re-associated forward tracks
661+
for (auto const& muonId : fwdtrackIndices) {
662+
auto muon = muonId.template fwdtrack_as<TFwdTracks>();
663+
// Consider only global muons having both MFT and MCH informations
664+
if (static_cast<int>(muon.trackType()) < 2) {
665+
auto mfttrack = muon.template matchMFTTrack_as<TMFTTracks>(); // Get the matched MFT track
666+
auto mchtrack = muon.template matchMCHTrack_as<TFwdTracks>(); // Get the matched MCH/MCH-MID trakc
667+
668+
// Re-do the propagation with muon tracking tools
669+
// Do MFT tracks propagation
670+
double chi2 = muon.chi2();
671+
SMatrix5 tpars(muon.x(), muon.y(), muon.phi(), muon.tgl(), muon.signed1Pt());
672+
std::vector<double> v1{muon.cXX(), muon.cXY(), muon.cYY(), muon.cPhiX(), muon.cPhiY(),
673+
muon.cPhiPhi(), muon.cTglX(), muon.cTglY(), muon.cTglPhi(), muon.cTglTgl(),
674+
muon.c1PtX(), muon.c1PtY(), muon.c1PtPhi(), muon.c1PtTgl(), muon.c1Pt21Pt2()};
675+
SMatrix55 tcovs(v1.begin(), v1.end());
676+
o2::track::TrackParCovFwd fwdtrack{muon.z(), tpars, tcovs, chi2};
677+
o2::dataformats::GlobalFwdTrack propmuon;
678+
double centerMFT[3] = {0, 0, -61.4};
679+
o2::field::MagneticField* field = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
680+
auto Bz = field->getBz(centerMFT); // Get field at centre of MFT
681+
auto geoMan = o2::base::GeometryManager::meanMaterialBudget(muon.x(), muon.y(), muon.z(), collision.posX(), collision.posY(), collision.posZ());
682+
auto x2x0 = static_cast<float>(geoMan.meanX2X0);
683+
fwdtrack.propagateToVtxhelixWithMCS(collision.posZ(), {collision.posX(), collision.posY()}, {collision.covXX(), collision.covYY()}, Bz, x2x0);
684+
propmuon.setParameters(fwdtrack.getParameters());
685+
propmuon.setZ(fwdtrack.getZ());
686+
propmuon.setCovariances(fwdtrack.getCovariances());
687+
}
688+
}
659689
}
660690

661-
void processMuonQa(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs, MyMuonsWithCov const& fwdTracks, MyMFTs const& mftTracks, aod::FwdTrkCls const& muonClusters, aod::FwdTrackAssoc const& fwdtrackIndices)
691+
void processMuonQa(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs, MyMuonsWithCov const& fwdTracks, MyMFTs const& mftTracks, aod::FwdTrkCls const& muonClusters, aod::FwdTrackAssoc const& fwdtrackIndices, aod::MFTTrackAssoc const& mfttrackIndices)
662692
{
663693
// Update CCDB informations
664694
initCCDB(bcs);
665695

666696
// Run over collisions
667697
for (auto& collision : collisions) {
668698
auto muonIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex());
669-
runMuonQA(collision, bcs, fwdTracks, mftTracks, muonClusters, muonIdsThisCollision);
699+
auto mftIdsThisCollision = mfttrackIndices.sliceBy(mfttrackIndicesPerCollision, collision.globalIndex());
700+
runMuonQA(collision, bcs, fwdTracks, mftTracks, muonClusters, muonIdsThisCollision, mftIdsThisCollision);
670701
}
671702
}
672703
PROCESS_SWITCH(muonQa, processMuonQa, "Process to run muon QA", true);

0 commit comments

Comments
 (0)