12 using Type = xAOD::Muon::TrackParticleType;
13 constexpr std::array<Type, 3> tpTypes{Type::ExtrapolatedMuonSpectrometerTrackParticle,
14 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
15 Type::MuonSpectrometerTrackParticle};
54 return StatusCode::SUCCESS;
60 std::unique_ptr<Trk::TrackParameters> extPars{
extTrackToPivot(ctx, track)};
61 return extPars ? extPars->position() : Amg::Vector3D::Zero();
65std::tuple<bool, double,double>
67 return std::forward_as_tuple(
true, trig->
roiEta(), trig->
roiPhi());
70std::tuple<bool, double,double>
72 return mu->muonType() == xAOD::Muon::MuonType::MuonStandAlone
73 ? std::forward_as_tuple(
true, mu->eta(), mu->phi())
74 : std::forward_as_tuple(
false, 0., 0.);
77std::tuple<bool, double,double>
79 return mu->muonType() == xAOD::Muon::MuonType::Combined
80 ? std::forward_as_tuple(
true, mu->eta(), mu->phi())
81 : std::forward_as_tuple(
false, 0., 0.);
84std::tuple<bool, double,double>
86 const bool isPhaseII){
87 const xAOD::Muon::TrackParticleType
type {isPhaseII
88 ? xAOD::Muon::TrackParticleType::Primary
89 : xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle};
92 ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi())
93 : std::forward_as_tuple(
false, 0., 0.);
96std::tuple<bool, double,double>
98 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
100 ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi())
101 : std::forward_as_tuple(
false, 0., 0.);
111 const std::string& containerKey {trig.contains(
"newFast")
124 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSA() for truth particle");
126 const std::string& containerKey {trig.contains(
"newFast")
137 std::string trig)
const {
142 const std::string& containerKey {trig.contains(
"newFast")
166 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCB() for TruthParticle");
177 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
186 std::string trig)
const {
189 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
200 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
214 const std::string& containerKey {trig.contains(
"newFast")
227 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSAFS() for truth particle");
229 const std::string& containerKey {trig.contains(
"newFast")
240 std::string trig)
const {
245 const std::string& containerKey {trig.contains(
"newFast")
268 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCBFS() for TruthParticle");
279 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
288 std::string trig)
const {
291 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
302 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
314 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
325 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFIso() for truth particle");
337 float EFEta = (*muEL)->eta();
338 float EFPhi = (*muEL)->phi();
342 if ( !trackHandle.
isValid() )
return MatchedTrack;
350 float deta = EFEta - (*it)->eta();
352 float dR = std::sqrt(deta*deta + dphi*dphi);
356 MatchedTrack = (*it);
364 std::string trig)
const {
367 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
377 const std::string& trig,
394 const std::string& trig,
410 const std::string& trig,
412 ATH_MSG_DEBUG(
"MuonMonitoring::matchL2SA() from TruthParticle");
418 const std::string& trig,
420 ATH_MSG_DEBUG(
"MuonMonitoring::matchFastRecoSA() from TruthParticle");
426 std::string trig)
const {
434 std::string trig)
const {
461 ATH_MSG_DEBUG(
"MuonMonitoring::matchFastRecoSAReadHandle()");
488 ATH_MSG_DEBUG(
"MuonMonitoring::matchL2CB() from TruthParticle");
494 std::string trig)
const {
504 const xAOD::TrackParticle* MuonTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::Primary);
516 const std::string& trig,
529 const std::vector<std::pair<std::shared_ptr<TrigConf::L1Threshold>,
bool> > L1thr_list =
m_thresholdTool-> getThresholdDecisions(
530 l1muon->roiWord(), ctx);
533 bool L1thr_isMatch =
false;
534 for(
const std::pair<std::shared_ptr<TrigConf::L1Threshold>,
bool>& L1thr : L1thr_list){
535 if (L1toMatch == L1thr.first->name()){
536 L1thr_isMatch = L1thr.second;
540 if (!L1thr_isMatch)
continue;
542 double l1muonEta = l1muon->eta();
543 double l1muonPhi = l1muon->phi();
545 double deta = refEta - l1muonEta;
547 double dR = std::sqrt(deta*deta + dphi*dphi);
548 ATH_MSG_DEBUG(
"L1 muon candidate eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR);
553 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=true" );
556 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=false" );
565 const std::string& trig,
567 double refEta = mu->eta();
568 double refPhi = mu->phi();
575 refEta = extPos.eta();
576 refPhi = extPos.phi();
579 return matchL1(ctx, refEta, refPhi, reqdR, trig, pass);
585 const std::string& trig,
587 double refEta = mu->eta();
588 double refPhi = mu->phi();
590 return matchL1(ctx, refEta, refPhi, reqdR, trig, pass);
639std::unique_ptr<Trk::TrackParameters>
642 if (!track)
return nullptr;
644 double trkEta = track->eta();
645 using Return_t = std::unique_ptr<Trk::TrackParameters>;
648 if (std::abs(trkEta) < 1.05) {
654 if (std::abs(extRPC->position().eta()) >= 1.05){
668 if (std::abs(extTGC->position().eta()) < 1.05) {
676std::unique_ptr<Trk::TrackParameters>
679 double TGC_Z = ( trk.
eta()>0 )? 15153.0:-15153.0;
682 const bool boundaryCheck =
true;
692std::unique_ptr<Trk::TrackParameters>
696 const bool boundaryCheck =
true;
709 if( mupt < 10000. ) {
710 dR = -0.00001*mupt + 0.18;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
DataModel_detail::const_iterator< DataVector > const_iterator
ElementLink implementation for ROOT usage.
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
HLT chain configuration information.
const std::string & lower_chain_name() const
Class for a CylinderSurface in the ATLAS detector.
Class for a DiscSurface in the ATLAS detector.
float roiEta() const
Get and set RoI eta.
float roiPhi() const
Get and set RoI phi.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .).
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Eigen::Affine3d Transform3D
Eigen::Matrix< double, 3, 1 > Vector3D
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
L2CombinedMuon_v1 L2CombinedMuon
Define the latest version of the muon CB class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthParticle_v1 TruthParticle
Typedef to implementation.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
L2StandAloneMuon_v2 L2StandAloneMuon
Define the latest version of the muon SA class.
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
ElementLink< T > link
Link to the feature.