 |
ATLAS Offline Software
|
Go to the documentation of this file.
34 return StatusCode::SUCCESS;
46 std::tuple<bool, double,double> MuonMatchingTool :: trigPosForMatch<xAOD::L2StandAloneMuon>(
const xAOD::L2StandAloneMuon *trig){
47 return std::forward_as_tuple(
true, trig->
roiEta(), trig->
roiPhi());
52 return mu->muonType() == xAOD::Muon::MuonType::MuonStandAlone ? std::forward_as_tuple(
true,
mu->eta(),
mu->phi()) : std::forward_as_tuple(
false, 0., 0.);
60 const xAOD::TrackParticle* MuonTrack =
mu->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
61 return MuonTrack ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi()) : std::forward_as_tuple(
false, 0., 0.);
65 const xAOD::TrackParticle* MuonTrack =
mu->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
66 return MuonTrack ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi()) : std::forward_as_tuple(
false, 0., 0.);
73 using Type = xAOD::Muon::TrackParticleType;
74 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
75 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
76 Type::MuonSpectrometerTrackParticle};
78 MuonTrack =
mu->trackParticle(
type);
86 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSA() for truth particle");
95 using Type = xAOD::Muon::TrackParticleType;
96 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
97 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
98 Type::MuonSpectrometerTrackParticle};
100 MuonTrack =
mu->trackParticle(
type);
101 if (MuonTrack)
break;
109 using Type = xAOD::Muon::TrackParticleType;
110 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
111 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
112 Type::MuonSpectrometerTrackParticle};
114 MuonTrack =
mu->trackParticle(
type);
115 if (MuonTrack)
break;
121 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCB() for TruthParticle");
149 using Type = xAOD::Muon::TrackParticleType;
150 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
151 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
152 Type::MuonSpectrometerTrackParticle};
154 MuonTrack =
mu->trackParticle(
type);
156 if (MuonTrack)
break;
162 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSAFS() for truth particle");
171 using Type = xAOD::Muon::TrackParticleType;
172 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
173 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
174 Type::MuonSpectrometerTrackParticle};
176 MuonTrack =
mu->trackParticle(
type);
177 if (MuonTrack)
break;
185 using Type = xAOD::Muon::TrackParticleType;
186 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
187 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
188 Type::MuonSpectrometerTrackParticle};
190 MuonTrack =
mu->trackParticle(
type);
191 if (MuonTrack)
break;
197 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCBFS() for TruthParticle");
229 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFIso() for truth particle");
237 float EFEta = (*muEL)->eta();
238 float EFPhi = (*muEL)->phi();
242 if ( !trackHandle.
isValid() )
return MatchedTrack;
250 float deta = EFEta - (*it)->eta();
252 float dR = std::sqrt(deta*deta + dphi*dphi);
256 MatchedTrack = (*it);
280 return match<xAOD::L2StandAloneMuon>( &extPos, trig, reqdR, pass);
283 return match<xAOD::L2StandAloneMuon>(
mu, trig, reqdR, pass,
"HLT_MuonL2SAInfo");
289 return matchLinkInfo<xAOD::L2StandAloneMuon>(
mu, std::move(trig), 1000., pass,
"HLT_MuonL2SAInfo");
303 using Type = xAOD::Muon::TrackParticleType;
304 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
305 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
306 Type::MuonSpectrometerTrackParticle};
308 MuonTrack =
mu->trackParticle(
type);
309 if (MuonTrack)
break;
311 return MuonTrack ? matchReadHandle<xAOD::L2StandAloneMuon>( MuonTrack, reqdR,
m_L2MuonSAContainerKey, ctx) :
nullptr;
317 return match<xAOD::L2CombinedMuon>(
mu, std::move(trig),
m_L2CBreqdR, pass,
"HLT_MuonL2CBInfo");
323 return matchLinkInfo<xAOD::L2CombinedMuon>(
mu, std::move(trig), 1000., pass,
"HLT_MuonL2CBInfo");
344 const std::vector<std::pair<std::shared_ptr<TrigConf::L1Threshold>,
bool> > L1thr_list =
m_thresholdTool-> getThresholdDecisions(
345 l1muon->roiWord(), Gaudi::Hive::currentContext());
348 bool L1thr_isMatch =
false;
349 for(
const std::pair<std::shared_ptr<TrigConf::L1Threshold>,
bool>& L1thr : L1thr_list){
350 std::shared_ptr<TrigConf::L1Threshold_MU>
thr = std::static_pointer_cast<TrigConf::L1Threshold_MU>(L1thr.first);
351 if (L1toMatch ==
thr->name()){
352 L1thr_isMatch = L1thr.second;
356 if (!L1thr_isMatch)
continue;
358 double l1muonEta = l1muon->eta();
359 double l1muonPhi = l1muon->phi();
361 double deta = refEta - l1muonEta;
363 double dR = std::sqrt(deta*deta + dphi*dphi);
364 ATH_MSG_DEBUG(
"L1 muon candidate eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR);
369 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=true" );
372 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=false" );
379 double refEta =
mu->eta();
380 double refPhi =
mu->phi();
387 refEta = extPos.eta();
388 refPhi = extPos.phi();
391 return matchL1(refEta, refPhi, reqdR, trig, pass);
395 double refEta =
mu->eta();
396 double refPhi =
mu->phi();
398 return matchL1(refEta, refPhi, reqdR, trig, pass);
411 float offlEta =
mu->eta();
412 float offlPhi =
mu->phi();
413 float trigEta = samu->
roiEta();
414 float trigPhi = samu->
roiPhi();
416 float deta = offlEta - trigEta;
418 float dR = sqrt(deta*deta + dphi*dphi);
433 return 1/(1+TMath::Exp(-10*(
x-x0)/
w));
443 if(!
track)
return extTGC;
444 double trkEta =
track->eta();
448 if( fabs(trkEta)<1.05){
457 if(fabs(extEta)>=1.05){
463 else if( fabs(trkEta)>=1.05 ){
472 if(fabs(extEta)<1.05){
482 return (
isBarrel) ? extRPC : extTGC;
489 if(!trk)
return nullptr;
490 double TGC_Z = ( trk->
eta()>0 )? 15153.0:-15153.0;
494 const bool boundaryCheck =
true;
504 <<
" eta=" << ((param) ? param->
position().eta() : 0)
505 <<
" phi=" << ((param) ? param->
position().phi() : 0));;
513 if(!trk)
return nullptr;
515 const bool boundaryCheck =
true;
530 if( mupt < 10000. ) {
531 dR = -0.00001*mupt + 0.18;
Const iterator class for DataVector/DataList.
ElementLink< T > link
Link to the feature.
Class describing standalone muons reconstructed in the LVL2 trigger.
const Amg::Vector3D & position() const
Access method for the position.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
const std::string & lower_chain_name() const
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
HLT chain configuration information.
Class describing combined muon reconstructed in the LVL2 trigger.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
float roiPhi() const
Get and set RoI phi.
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
::StatusCode StatusCode
StatusCode definition for legacy code.
Class describing a truth particle in the MC record.
Eigen::Affine3d Transform3D
Class describing a LVL1 muon region of interest.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ElementLink implementation for ROOT usage.
Eigen::Matrix< double, 3, 1 > Vector3D
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
float roiEta() const
Get and set RoI eta.
Class describing a TrackParticle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)