|
ATLAS Offline Software
|
Go to the documentation of this file.
36 return StatusCode::SUCCESS;
48 std::tuple<bool, double,double> MuonMatchingTool :: trigPosForMatch<xAOD::L2StandAloneMuon>(
const xAOD::L2StandAloneMuon *trig){
49 return std::forward_as_tuple(
true, trig->
roiEta(), trig->
roiPhi());
54 return mu->muonType() == xAOD::Muon::MuonType::MuonStandAlone ? std::forward_as_tuple(
true,
mu->eta(),
mu->phi()) : std::forward_as_tuple(
false, 0., 0.);
62 const xAOD::TrackParticle* MuonTrack =
mu->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
63 return MuonTrack ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi()) : std::forward_as_tuple(
false, 0., 0.);
67 const xAOD::TrackParticle* MuonTrack =
mu->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
68 return MuonTrack ? std::forward_as_tuple(
true, MuonTrack->
eta(), MuonTrack->
phi()) : std::forward_as_tuple(
false, 0., 0.);
75 using Type = xAOD::Muon::TrackParticleType;
76 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
77 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
78 Type::MuonSpectrometerTrackParticle};
80 MuonTrack =
mu->trackParticle(
type);
88 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSA() for truth particle");
97 using Type = xAOD::Muon::TrackParticleType;
98 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
99 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
100 Type::MuonSpectrometerTrackParticle};
102 MuonTrack =
mu->trackParticle(
type);
103 if (MuonTrack)
break;
111 using Type = xAOD::Muon::TrackParticleType;
112 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
113 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
114 Type::MuonSpectrometerTrackParticle};
116 MuonTrack =
mu->trackParticle(
type);
117 if (MuonTrack)
break;
123 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCB() for TruthParticle");
151 using Type = xAOD::Muon::TrackParticleType;
152 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
153 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
154 Type::MuonSpectrometerTrackParticle};
156 MuonTrack =
mu->trackParticle(
type);
158 if (MuonTrack)
break;
164 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFSAFS() for truth particle");
173 using Type = xAOD::Muon::TrackParticleType;
174 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
175 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
176 Type::MuonSpectrometerTrackParticle};
178 MuonTrack =
mu->trackParticle(
type);
179 if (MuonTrack)
break;
187 using Type = xAOD::Muon::TrackParticleType;
188 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
189 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
190 Type::MuonSpectrometerTrackParticle};
192 MuonTrack =
mu->trackParticle(
type);
193 if (MuonTrack)
break;
199 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFCBFS() for TruthParticle");
231 ATH_MSG_DEBUG(
"MuonMonitoring::matchEFIso() for truth particle");
239 float EFEta = (*muEL)->eta();
240 float EFPhi = (*muEL)->phi();
244 if ( !trackHandle.
isValid() )
return MatchedTrack;
252 float deta = EFEta - (*it)->eta();
254 float dR = std::sqrt(deta*deta + dphi*dphi);
258 MatchedTrack = (*it);
282 return match<xAOD::L2StandAloneMuon>( &extPos, trig, reqdR, pass);
285 return match<xAOD::L2StandAloneMuon>(
mu, trig, reqdR, pass,
"HLT_MuonL2SAInfo");
291 return matchLinkInfo<xAOD::L2StandAloneMuon>(
mu, std::move(trig), 1000., pass,
"HLT_MuonL2SAInfo");
305 using Type = xAOD::Muon::TrackParticleType;
306 std::vector<Type> types { Type::ExtrapolatedMuonSpectrometerTrackParticle,
307 Type::MSOnlyExtrapolatedMuonSpectrometerTrackParticle,
308 Type::MuonSpectrometerTrackParticle};
310 MuonTrack =
mu->trackParticle(
type);
311 if (MuonTrack)
break;
313 return MuonTrack ? matchReadHandle<xAOD::L2StandAloneMuon>( MuonTrack, reqdR,
m_L2MuonSAContainerKey, ctx) :
nullptr;
319 return match<xAOD::L2CombinedMuon>(
mu, std::move(trig),
m_L2CBreqdR, pass,
"HLT_MuonL2CBInfo");
325 return matchLinkInfo<xAOD::L2CombinedMuon>(
mu, std::move(trig), 1000., pass,
"HLT_MuonL2CBInfo");
340 for(
const auto& linkInfo : l2muonFeatures){
342 auto l1muonLinkInfo = TrigCompositeUtils::findLink<xAOD::MuonRoIContainer>(linkInfo.source,
"initialRecRoI");
343 auto l1muonLink = l1muonLinkInfo.link;
344 if(!l1muonLink.isValid()){
349 double l1muonEta = l1muon->
eta();
350 double l1muonPhi = l1muon->
phi();
352 double deta = refEta - l1muonEta;
354 double dR = std::sqrt(deta*deta + dphi*dphi);
355 ATH_MSG_DEBUG(
"L1 muon candidate eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR);
360 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=true" );
363 ATH_MSG_DEBUG(
"*** L1 muon eta=" << l1muonEta <<
" phi=" << l1muonPhi <<
" dR=" << dR <<
" isPassed=false" );
370 double refEta =
mu->eta();
371 double refPhi =
mu->phi();
378 refEta = extPos.eta();
379 refPhi = extPos.phi();
382 return matchL1(refEta, refPhi, reqdR, trig, pass);
386 double refEta =
mu->eta();
387 double refPhi =
mu->phi();
389 return matchL1(refEta, refPhi, reqdR, trig, pass);
403 float offlEta =
mu->eta();
404 float offlPhi =
mu->phi();
405 float trigEta = samu->
roiEta();
406 float trigPhi = samu->
roiPhi();
408 float deta = offlEta - trigEta;
410 float dR = sqrt(deta*deta + dphi*dphi);
425 return 1/(1+TMath::Exp(-10*(
x-x0)/
w));
435 if(!
track)
return extTGC;
436 double trkEta =
track->eta();
440 if( fabs(trkEta)<1.05){
449 if(fabs(extEta)>=1.05){
455 else if( fabs(trkEta)>=1.05 ){
464 if(fabs(extEta)<1.05){
474 return (
isBarrel) ? extRPC : extTGC;
481 if(!trk)
return nullptr;
482 double TGC_Z = ( trk->
eta()>0 )? 15153.0:-15153.0;
486 const bool boundaryCheck =
true;
496 <<
" eta=" << ((param) ? param->
position().eta() : 0)
497 <<
" phi=" << ((param) ? param->
position().phi() : 0));;
505 if(!trk)
return nullptr;
507 const bool boundaryCheck =
true;
522 if( mupt < 10000. ) {
523 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.
float eta() const
The pseudorapidity ( ) of the muon candidate.
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
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 .)
float phi() const
The azimuthal angle ( ) of the muon candidate.