@@ -228,7 +228,6 @@ struct mftMchMatcher {
228228 Configurable<float > fPtMFTLow {" cfgPtMFTLow" , 0 .1f , " " };
229229
230230 // // Variables for matching configuration
231- Configurable<float > fMatchingPlaneZ {" cfgMatchingPlaneZ" , -77 .5f , " " };
232231 Configurable<int > fMaxCandidates {" cfgMaxCandidates" , 0 , " " };
233232
234233 Configurable<bool > fKeepBestMatch {" cfgKeepBestMatch" , false , " Keep only the best match global muons in the skimming" };
@@ -268,7 +267,12 @@ struct mftMchMatcher {
268267 double thetaAbs = TMath::ATan (mchTrack.rAtAbsorberEnd () / 505 .) * TMath::RadToDeg ();
269268
270269 // propagate muon track to vertex
271- auto mchTrackAtVertex = mMatching .FwdtoMCH (VarManager::FwdToTrackPar (mchTrack, mchTrack));
270+ auto trackConv = VarManager::FwdToTrackPar (mchTrack, mchTrack);
271+ o2::dataformats::GlobalFwdTrack track;
272+ track.setParameters (trackConv.getParameters ());
273+ track.setZ (trackConv.getZ ());
274+ track.setCovariances (trackConv.getCovariances ());
275+ auto mchTrackAtVertex = mMatching .FwdtoMCH (track);
272276 o2::mch::TrackExtrap::extrapToVertex (mchTrackAtVertex, collision.posX (), collision.posY (), collision.posZ (), collision.covXX (), collision.covYY ());
273277
274278 // double pUncorr = mchTrack.p();
@@ -361,18 +365,14 @@ struct mftMchMatcher {
361365 if (mRunNumber == bc.runNumber ())
362366 return ;
363367
364- mRunNumber = bc.runNumber ();
365- std::map<std::string, std::string> metadata;
366- auto soreor = o2::ccdb::BasicCCDBManager::getRunDuration (fCCDBApi , mRunNumber );
367- auto ts = soreor.first ;
368- fGrpMag = fCCDBApi .retrieveFromTFileAny <o2::parameters::GRPMagField>(grpmagPath, metadata, ts);
368+ fGrpMag = ccdbManager->getForTimeStamp <o2::parameters::GRPMagField>(grpmagPath, bc.timestamp ());
369369
370370 if (fGrpMag != nullptr ) {
371371 o2::base::Propagator::initFieldFromGRP (fGrpMag );
372372 VarManager::SetMagneticField (fGrpMag ->getNominalL3Field ());
373373 VarManager::SetupMuonMagField ();
374374 }
375-
375+ mRunNumber = bc. runNumber ();
376376 }
377377
378378 void init (o2::framework::InitContext&)
@@ -419,9 +419,14 @@ struct mftMchMatcher {
419419 MyMFTCovariances const & mftCovs,
420420 aod::McParticles const & /* mcParticles*/ )
421421 {
422- auto bc = bcs.begin ();
423- initCCDB (bc);
424- VarManager::SetMatchingPlane (fzMatching.value );
422+ if (bcs.size () > 0 ) {
423+ auto bc = bcs.begin ();
424+ initCCDB (bc);
425+ VarManager::SetMatchingPlane (fzMatching.value );
426+ }
427+ if (fKeepBestMatch ) {
428+ skimBestMuonMatches (muonTracks);
429+ }
425430
426431 mftCovIndexes.clear ();
427432 for (auto & mftTrackCov : mftCovs) {
@@ -432,7 +437,7 @@ struct mftMchMatcher {
432437
433438 for (auto muon : muonTracks) {
434439 // only consider global MFT-MCH-MID matches
435- if (static_cast <int >(muon.trackType ()) >= 2 ) {
440+ if (static_cast <int >(muon.trackType ()) != 0 ) {
436441 continue ;
437442 }
438443
@@ -457,7 +462,7 @@ struct mftMchMatcher {
457462 auto mftTime = mfttrack.trackTime () + bc_coll.globalBC ()*o2::constants::lhc::LHCBunchSpacingNS;
458463
459464 o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar (mfttrack, mfttrackcov);
460- o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar (muontrack, muontrack);
465+ o2::track::TrackParCovFwd muonprop = VarManager::FwdToTrackPar (muontrack, muontrack);
461466 if (fzMatching.value < 0 .) {
462467 mftprop = VarManager::PropagateFwd (mfttrack, mfttrackcov, fzMatching.value );
463468 muonprop = VarManager::PropagateMuon (muontrack, collision, VarManager::kToMatching );
0 commit comments