ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
muComb Class Reference

Main LVL2 Algorithm. More...

#include <muComb.h>

Inheritance diagram for muComb:
Collaboration diagram for muComb:

Public Member Functions

 muComb (const std::string &, ISvcLocator *)
 Constructor. More...
 
virtual StatusCode initialize () override
 initialize. More...
 
virtual StatusCode execute (const EventContext &ctx) const override
 execute execute the combined muon FEX. More...
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

int drptMatch (double, double, double, double, double, double, int, double &, double &, double &, double &, double &) const
 
int drptMatch (const xAOD::L2StandAloneMuon *feature, double, double, double, int, double &, double &, double &, double &, double &) const
 
int mfMatch (const xAOD::L2StandAloneMuon *feature, double, double, double, double, double &, double &, double &, double &, double &, int &) const
 
int g4Match (const ExtrapolationResult &extr, double, double, double, double, double, double, double, double &, double &, double &, double &, double &, int &) const
 
ExtrapolationResult getExtrapolatedMuon (const xAOD::L2StandAloneMuon *feature) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadHandleKey< xAOD::TrackParticleContainerm_TrackParticleContainerKey
 
SG::ReadHandleKey< xAOD::L2StandAloneMuonContainerm_muonCollKey
 
SG::WriteHandleKey< xAOD::L2CombinedMuonContainerm_outputCBmuonCollKey
 
ToolHandle< GenericMonitoringToolm_monTool {this,"MonTool","","Monitoring tool"}
 
ToolHandle< Trk::IExtrapolatorm_backExtrapolatorG4
 Handle to the G4 backExtrapolator tool. More...
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
 
Gaudi::Property< bool > m_useBackExtrapolatorG4 {this, "UseBackExtrapolatorG4", true, "Use g4-based back-extraploator"}
 flag to switch between G4 and LUT based back-extrapolation More...
 
Gaudi::Property< bool > m_assumeToroidOff {this, "AssumeToroidOff", false, "Force assumption toroid off"}
 flag to assume B_Toroid=0 anyway More...
 
Gaudi::Property< bool > m_assumeSolenoidOff {this, "AssumeSolenoidOff", false, "Force assumption solenoid off"}
 flag to assume B_Solenoid=0 anyway More...
 
Gaudi::Property< int > m_AlgoStrategy {this, "MuCombStrategy", 0, "Algoritgm strategy [0=auto select best option,1=simple angular match]"}
 muComb matching strategy: 0: auto select best option 1: simplified R,(Pt) matching More...
 
Gaudi::Property< int > m_ChargeStrategy {this, "ChargeStrategy", 0, "Charge assignement strategy [0=muFast,1=ID,2=resolution based]"}
 muComb charge assignment strategy: 0: useMuFast 1: use ID 2: use resolution model More...
 
Gaudi::Property< std::string > m_ID_algo_to_use {this, "IDalgo", "InDetTrigTrackingxAODCnv_Muon_FTF","ID trk xAOD collection to use"}
 ID Track collection used for matching. More...
 
Gaudi::Property< double > m_PtMinTrk {this, "MinPtTRK", 1.*Gaudi::Units::GeV, "ID track minimum pT"}
 Min Pt to select the ID track for matching. More...
 
Gaudi::Property< double > m_EtaMaxTrk {this, "MaxAbsEtaTRK", 2.5, "ID tracks max |eta|"}
 Max abs(eta) to select the ID track for matching. More...
 
Gaudi::Property< int > m_NdofMin {this, "NdofMin", 9999, "matching parameter: min ndof"}
 Min Number of DOF to apply the chi2 cut on macthing based on LUT and G4 backextrapolators. More...
 
Gaudi::Property< bool > m_UseAbsPt {this, "UseAbsPt", false, "matching parameter: use absolute pT"}
 Use Absolute value of the Pt in chi2 calculation (i.e. More...
 
Gaudi::Property< double > m_WinEta {this, "WinEtaSigma", 4.0, "matching parameter: LUT-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_WinPhi {this, "WinPhiSigma", 4.0, "matching parameter: LUT-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_Chi2Max {this, "Chi2Max", 1.e33, "matching parameter: LUT-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_WinEta_EC {this, "WinEtaSigmaEndCaps", 4.0, "matching parameter: LUT-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_WinPhi_EC {this, "WinPhiSigmaEndCaps", 10., "matching parameter: LUT-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_Chi2Max_EC {this, "Chi2MaxEndCaps", 1.e33, "matching parameter: LUT-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_WinEta_TS {this, "WinEtaSigmaTS", 5.0, "matching parameter: LUT-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (Trigger Stations) More...
 
Gaudi::Property< double > m_WinPhi_TS {this, "WinPhiSigmaTS", 5.0, "matching parameter: LUT-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (Trigger Stations) More...
 
Gaudi::Property< double > m_Chi2Max_TS {this, "Chi2MaxTS", 1.e33, "matching parameter: LUT-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (Trigger Stations) More...
 
Gaudi::Property< double > m_WinEta_FE {this, "WinEtaSigmaFE", 10.0, "matching parameter: LUT-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (MS Feet region) More...
 
Gaudi::Property< double > m_WinPhi_FE {this, "WinPhiSigmaFE", 10.0, "matching parameter: LUT-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (MS Feet region) More...
 
Gaudi::Property< double > m_Chi2Max_FE {this, "Chi2MaxFE", 1.e33, "matching parameter: LUT-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (MS Feet region) More...
 
Gaudi::Property< double > m_WeightEta {this, "WeightEta", 2.0, "matching parameter: LUT-based"}
 Scale factor for the Eta matching window in LUT backextrapolator. More...
 
Gaudi::Property< double > m_WeightPhi {this, "WeightPhi", 2.0, "matching parameter: LUT-based"}
 Scale factor for the Phi matching window in LUT backextrapolator. More...
 
Gaudi::Property< double > m_WinEta_g4 {this, "WinEtaSigma_g4", 7.0, "matching parameter: G4-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_WinPhi_g4 {this, "WinPhiSigma_g4", 7.0, "matching parameter: G4-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_Chi2Max_g4 {this, "Chi2Max_g4", 1.e33, "matching parameter: G4-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (Barrel) More...
 
Gaudi::Property< double > m_WinEta_EC_g4 {this, "WinEtaSigmaEndCaps_g4",7.0, "matching parameter: G4-based"}
 Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_WinPhi_EC_g4 {this, "WinPhiSigmaEndCaps_g4",7.0, "matching parameter: G4-based"}
 Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_Chi2Max_EC_g4 {this, "Chi2MaxEndCaps_g4", 1.e33, "matching parameter: G4-based"}
 Max Chi2 for the combined muon in LUT backextrapolator (EndCaps) More...
 
Gaudi::Property< double > m_WeightEta_g4 {this, "WeightEta_g4", 2.0, "matching parameter: G4-based"}
 Scale factor for the Eta matching window in LUT backextrapolator. More...
 
Gaudi::Property< double > m_WeightPhi_g4 {this, "WeightPhi_g4", 2.0, "matching parameter: G4-based"}
 Scale factor for the Phi matching window in LUT backextrapolator. More...
 
Gaudi::Property< double > m_Chi2Weight_g4 {this, "Chi2Weight_g4", 2.0, "matching parameter: G4-based"}
 Scale factor for the Chi2 1/pt resolutions (MS and ID) (Barrel) More...
 
Gaudi::Property< double > m_winPt {this, "WinPt", -1.0*Gaudi::Units::GeV, "matching parameter (simplifed): pT windows in geV (disabled if < 0)"}
 max deltaPt for simpified matching More...
 
Gaudi::Property< double > m_winDR {this, "WinDelta", 0.2, "matching parameter (simplifed): strategy dependent"}
 max deltaR for simplified matching More...
 
Gaudi::Property< std::vector< double > > m_IDSCANRes_barrel {this, "IDSCANBarrelRes", {0.017, 0.000000418}, "ID parametrized rsolution for matching (barrel)"}
 
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap1 {this, "IDSCANEndcap1Res",{0.025, 0.0000002}, "ID parametrized rsolution for matching (ec1)"}
 
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap2 {this, "IDSCANEndcap2Res",{0.030, 0.0000002}, "ID parametrized rsolution for matching (ec2)"}
 
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap3 {this, "IDSCANEndcap3Res",{0.036, 0.0000004}, "ID parametrized rsolution for matching (ec3)"}
 
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap4 {this, "IDSCANEndcap4Res",{0.046, 0.0000002}, "ID parametrized rsolution for matching (ec4)"}
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Main LVL2 Algorithm.

Sided by a xAOD::L2StandaloneMuon, match the muon spectrometer track with an ID track, and produces a xAOD::L2CombinedMuon.

Definition at line 53 of file muComb.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ muComb()

muComb::muComb ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Constructor.

Definition at line 30 of file muComb.cxx.

30  :
31  AthReentrantAlgorithm(name, pSvcLocator)
32 {
33 }

Member Function Documentation

◆ cardinality()

unsigned int AthReentrantAlgorithm::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 55 of file AthReentrantAlgorithm.cxx.

56 {
57  return 0;
58 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ drptMatch() [1/2]

int muComb::drptMatch ( const xAOD::L2StandAloneMuon feature,
double  id_pt,
double  id_eta,
double  id_phi,
int  algo,
double &  combPtInv,
double &  combPtRes,
double &  deta,
double &  dphi,
double &  dr 
) const
private

Definition at line 65 of file muComb.cxx.

67 {
68  double pt = feature->pt() * Gaudi::Units::GeV;
69  double phi = feature->phiMS();
70  double eta = feature->etaMS();
71  return muComb::drptMatch(pt, eta, phi, id_pt, id_eta, id_phi, algo, combPtInv, combPtRes, deta, dphi, dr);
72 }

◆ drptMatch() [2/2]

int muComb::drptMatch ( double  pt,
double  eta,
double  phi,
double  id_pt,
double  id_eta,
double  id_phi,
int  algo,
double &  combPtInv,
double &  combPtRes,
double &  deta,
double &  dphi,
double &  dr 
) const
private

Definition at line 74 of file muComb.cxx.

76 {
77 
78  // algo: 1 --> R (+ pt), combined pt
79  // algo: 2 --> R match, Id pt
80  // algo: 3 --> R match, MS pt
81  // algo: 4 --> R match, infinite pt
82  if (algo < 1 || algo > 4) {
83  ATH_MSG_DEBUG(" muComb::drptMatch wrong algo parameter, it is: " << algo
84  << " while must be in the range [1,4], match failed!!!" );
85  return 1;
86  }
87 
88  double winDR = m_winDR;
89  double winPt = m_winPt;
90 
91  combPtRes = 0.0;
92  if (algo == 1) combPtInv = ((1. / pt) + (1. / id_pt)) * 0.5;
93  if (algo == 2) combPtInv = 1. / id_pt;
94  if (algo == 3) combPtInv = 1. / pt;
95  if (algo == 4) combPtInv = 1.e-33;
96 
97  double tmp_deta = std::max(eta, id_eta) - std::min(eta, id_eta);
98  double tmp_dphi = std::max(phi, id_phi) - std::min(phi, id_phi);
99  if (tmp_dphi >= M_PI) tmp_dphi = 2 * M_PI - tmp_dphi;
100  double tmp_dr = std::sqrt(tmp_deta * tmp_deta + tmp_dphi * tmp_dphi);
101 
102  dphi = tmp_dphi;
103  deta = tmp_deta;
104  dr = tmp_dr;
105 
106  bool passDR = true;
107  bool passPt = true;
108 
109  if (tmp_dr > winDR) passDR = false;
110 
111  ATH_MSG_DEBUG(" REGTEST Angular MU-ID match / dR / threshold / result:"
112  << " / " << tmp_dr
113  << " / " << winDR
114  << " / " << (passDR ? "true" : "false"));
115 
116  if (algo == 1 && winPt > 0) {
117  double tmp_dpt = std::fabs(std::fabs(pt) - std::fabs(id_pt)) / Gaudi::Units::GeV; //don't use charge info
118  if (tmp_dpt > winPt) passPt = false;
119  ATH_MSG_DEBUG( " REGTEST MU-ID match / dpt (GeV) / threshold (GeV) / result:"
120  << " / " << tmp_dpt
121  << " / " << winPt
122  << " / " << (passPt ? "true" : "false"));
123  }
124 
125  if (passDR && passPt) return 0;
126  else return 1;
127 }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

StatusCode muComb::execute ( const EventContext &  ctx) const
overridevirtual

execute execute the combined muon FEX.

Execute() method.

Returns
bool

Definition at line 460 of file muComb.cxx.

461 {
462  using namespace xAOD;
463 
464  // Monitoring variables
465  //Timer
466  auto timer = Monitored::Timer("TIME_execute");
467  //Input
468  auto ptMS = Monitored::Scalar("PtMS", -9999.);
469  auto etaMS = Monitored::Scalar("EtaMS", -9999.);
470  auto phiMS = Monitored::Scalar("PhiMS", -9999.);
471  auto zetaMS = Monitored::Scalar("ZetaMS", -9999.);
472  //ID
473  auto ptID = Monitored::Scalar("PtID", -9999.);
474  auto etaID = Monitored::Scalar("EtaID", -9999.);
475  auto phiID = Monitored::Scalar("PhiID", -9999.);
476  auto zetaID = Monitored::Scalar("ZetaID", -9999.);
477  //Combined
478  auto ptMC = Monitored::Scalar("PtMC", -9999.);
479  auto dEta = Monitored::Scalar("DEta", -9999.);
480  auto dPhi = Monitored::Scalar("DPhi", -9999.);
481  auto dZeta = Monitored::Scalar("DZeta", -9999.);
482  auto dR = Monitored::Scalar("DeltaR", -9999.);
483  //Failed
484  auto ptFL = Monitored::Scalar("PtFL", -9999.);
485  auto etaFL = Monitored::Scalar("EtaFL", -9999.);
486  auto phiFL = Monitored::Scalar("PhiFL", -9999.);
487  //Info
488  auto efficiency = Monitored::Scalar<int>("Efficiency", -1);
489  auto StrategyMC = Monitored::Scalar<int>("StrategyMC", -1);
490  auto ErrorFlagMC = Monitored::Scalar<int>("ErrorFlagMC", 0);
491  auto MatchFlagMC = Monitored::Scalar<int>("MatchFlagMC", 0);
492 
493 
494  auto mon = Monitored::Group(m_monTool, timer, ptMS, etaMS, phiMS, zetaMS,
495  ptID, etaID, phiID, zetaID,
496  ptMC, dEta, dPhi, dZeta, dR,
497  ptFL, etaFL, phiFL,
498  efficiency, StrategyMC, ErrorFlagMC, MatchFlagMC);
499 
500 
501  StrategyMC = m_AlgoStrategy;
502 
503  //Magnetic field status
504  bool toroidOn = !m_assumeToroidOff;
505  bool solenoidOn = !m_assumeSolenoidOff;
506 
508  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
509  if (fieldCondObj == nullptr) {
510  ATH_MSG_ERROR("execute: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
511  return StatusCode::FAILURE;
512  }
513  MagField::AtlasFieldCache fieldCache;
514  fieldCondObj->getInitializedCache (fieldCache);
515 
516  toroidOn = fieldCache.toroidOn() && !m_assumeToroidOff;
517  solenoidOn = fieldCache.solenoidOn() && !m_assumeSolenoidOff;
518  ATH_MSG_DEBUG( "=========== Magnetic Field Status ========== " );
519  ATH_MSG_DEBUG( " Assuming Toroid OFF is: " << (m_assumeToroidOff ? "TRUE" : "FALSE") );
520  ATH_MSG_DEBUG( " Assuming Solenoid OFF is: " << (m_assumeSolenoidOff ? "TRUE" : "FALSE") );
521  ATH_MSG_DEBUG( " ---> Solenoid : " << ((solenoidOn) ? "ON" : "OFF") );
522  ATH_MSG_DEBUG( " ---> Toroid : " << ((toroidOn) ? "ON" : "OFF") );
523 
524  // Algorithm strategy
525  // select best matchinig strategy
526  int usealgo = 0; //extrapolated muon - ID match (default)
527  if (solenoidOn) {
528  if (toroidOn) {
529  if (m_AlgoStrategy == 0) usealgo = 0; //extrapolated muon - ID match
530  else usealgo = 1; //simple R-match w/o extrapolation (pt from combined MS-ID)
531  } else {
532  usealgo = 2; //simple R-match w/o extrapolation (pt from ID)
533  }
534  } else {
535  if (toroidOn) usealgo = 3; //simple R-match w/o extrapolation (pt from MS)
536  else usealgo = 4; //simple R-match w/o extrapolation (pt inf)
537  }
538 
539  ATH_MSG_DEBUG( "MuCombStrategy: " << usealgo );
540 
541  ATH_MSG_DEBUG( "=========== Matching windows g4 ========== " );
542  ATH_MSG_DEBUG( " WinEtaSigma g4: " << m_WinEta_g4 );
543  ATH_MSG_DEBUG( " WinPhiSigma g4: " << m_WinPhi_g4 );
544  ATH_MSG_DEBUG( " WinEtaSigma g4 EC: " << m_WinEta_EC_g4 );
545  ATH_MSG_DEBUG( " WinPhiSigma g4 EC: " << m_WinPhi_EC_g4 );
546  ATH_MSG_DEBUG( " WeightEta g4: " << m_WeightEta_g4 );
547  ATH_MSG_DEBUG( " WeightPhi g4: " << m_WeightPhi_g4 );
548  ATH_MSG_DEBUG( " Chi2Weight g4: " << m_Chi2Weight_g4 );
549  ATH_MSG_DEBUG( " " );
550 
551  // Create Combined muon collection and record it with WriteHandle
552  auto muonCBColl = SG::makeHandle (m_outputCBmuonCollKey, ctx);
553  ATH_CHECK( muonCBColl.record (std::make_unique<xAOD::L2CombinedMuonContainer>(),
554  std::make_unique<xAOD::L2CombinedMuonAuxContainer>()) );
555 
556  // Get input for seeding
557  auto muonColl = SG::makeHandle(m_muonCollKey, ctx); //SA muons
558 
559  // useL1 commented code to be removed once full muon chain with MT tested (SG)
560  //Bool_t useL1 = false;
561  if (muonColl->size() == 0) {
562  //ATH_MSG_DEBUG(" L2 SA Muon collection size = 0");
563  //if (usealgo == 2) {
564  // ATH_MSG_DEBUG(" L2StandAloneMuonContainer not found -> use L1 ROI " );
565  // useL1 = true;
566  //} else {
567  ATH_MSG_DEBUG(" L2StandAloneMuonContainer empty -> stop processing RoI, no match" );
568  return StatusCode::SUCCESS;
569  //}
570  }
571 
572  // useL1 commented code to be removed once full muon chain with MT tested (SG)
573  //xAOD::L2StandAloneMuonContainer* muonColl = const_cast<xAOD::L2StandAloneMuonContainer*>(const_muonColl);
574 
575  // retrieve L2StandAloneMuon (loop for L2 multi-track SA)
576  for(uint i_muonSA = 0; i_muonSA < muonColl->size(); i_muonSA++){
577 
578  const xAOD::L2StandAloneMuon* muonSA = muonColl->at(i_muonSA);
579 
581  muonCB->makePrivateStore();
582  muonCB->setPt(0.0);
583  muonCB->setStrategy(usealgo);
584 
585  // Save SA muon EL into CB muon
586  ElementLink<xAOD::L2StandAloneMuonContainer> muonSAEL(*muonColl, i_muonSA);
587  muonCB->setMuSATrackLink(muonSAEL);
588 
589  // check muonSA pt != 0
590  if (muonSA->pt() == 0.) {
591  ErrorFlagMC = 1;
592  if (usealgo == 2 || usealgo == 4) {
593  ATH_MSG_DEBUG(" L2StandAloneMuon pt = 0 --> using angular match" );
594  //if (usealgo == 2) useL1 = true;
595  } else {
596  ATH_MSG_DEBUG(" L2StandAloneMuon pt = 0 --> stop processing RoI, no match" );
597  muonCB->setErrorFlag(ErrorFlagMC);
598  muonCBColl->push_back(muonCB);
599  return StatusCode::SUCCESS;
600  }
601  }
602 
603  // useL1 commented code to be removed once full muon chain with MT tested (SG)
604  //double ptL1 = -999.;
605  //double etaL1 = -999.;
606  //double phiL1 = -999.;
607  double pt = -999.;
608  double eta = -999.;
609  double phi = -999.;
610  double eta_ms = -999.;
611  double phi_ms = -999.;
612  double zeta_ms = -999.;
613  // useL1 commented code to be removed once full muon chain with MT tested (SG)
614  //if (useL1) {
615  // auto muonROIColl = SG::makeHandle(m_muonROICollKey, ctx); // L1 muon ROI
616  // if (muonROIColl->size() == 0) {
617  // ATH_MSG_DEBUG(" L1 Muon RoI collection size = 0");
618  // ATH_MSG_DEBUG(" L2StandAloneMuon pt == 0. && no L1 && torid=OFF --> no match" );
619  // ErrorFlagMC = 1;
620  // muonCB->setErrorFlag(ErrorFlagMC);
621  // return StatusCode::SUCCESS;
622  // } else {
623  // const TrigRoiDescriptor* muonROI = *(muonROIColl->begin());
624  // ptL1 = (muonRoI)->getThresholdValue();
625  // etaL1 = (muonRoI)->eta();
626  // phiL1 = (muonRoI)->phi();
627  // ATH_MSG_DEBUG( " Input L1 muon pt (GeV) = " << (muonROI)->getThresholdValue()
628  // << " / eta = " << (muonROI)->eta()
629  // << " / phi = " << (muonROI)->phi()
630  // << " / roiID = " << (muonROI)->roiId() );
631  // }
632  //} else {
633 
634  pt = muonSA->pt();
635  eta = muonSA->eta();
636  phi = muonSA->phi();
637  eta_ms = muonSA->etaMS();
638  phi_ms = muonSA->phiMS();
639  zeta_ms = muonSA->zMS();
640 
641  ATH_MSG_DEBUG(" Input L2StandaloneMuon pt (GeV) = " << pt
642  << " / eta = " << eta
643  << " / phi = " << phi
644  << " / etaMS = " << eta_ms
645  << " / phiMS = " << phi_ms
646  << " / zMS = " << zeta_ms);
647  //}
648 
649  // ID tracks Decoding
650 
651  // how to retrieve a specific colection name?
653  if (!idTrackParticles.isValid()){
654  ATH_MSG_DEBUG(" Failed to get xAOD::TrackParticleContainer --> no match" );
655  ErrorFlagMC = 2;
656  muonCB->setErrorFlag(ErrorFlagMC);
657  muonCBColl->push_back(muonCB);
658  return StatusCode::SUCCESS;
659  }
660  if (idTrackParticles->size() < 1){
661  ATH_MSG_DEBUG(" xAOD::TrackParticleContainer has 0 tracks --> no match" );
662  ErrorFlagMC = 2;
663  muonCB->setErrorFlag(ErrorFlagMC);
664  muonCBColl->push_back(muonCB);
665  return StatusCode::SUCCESS;
666  }
667 
668  ATH_MSG_DEBUG( " Found xAOD::TrackParticleContainer with size: " << idTrackParticles->size() );
669 
670  // matching
671  double ptinv_comb = 0.;
672  double ptres_comb = 0.001;
673  double chi2_comb = 1.0e33;
674  int ndof_comb = -1;
675  double best_dr = 1.0e33;
676  double best_deta = 1.0e33;
677  double best_dphi = 1.0e33;
678  bool has_match = false;
679  int imatch = -1;
680  int matched_trk_idx = -1;
681  int matched_trk_idx_tmp = -1;
682 
683 
684  // retrieve extrapolated muon if G4 extrapolation was
685  // requested; in this way we don't compute it Ntrk times
686  // but only once per SA muon
687  ExtrapolationResult extr{};
688  if (usealgo <= 0 && m_useBackExtrapolatorG4) {//Std match
689  extr = getExtrapolatedMuon(muonSA);
690  }
691 
692  for(const auto trkit:(*idTrackParticles)) {
693 
694  matched_trk_idx_tmp++;
695  double ptinv_tmp = 0.;
696  double ptres_tmp = 0.001;
697  double deta_tmp = 0.;
698  double dphi_tmp = 0.;
699  double dr_tmp = 0.;
700  double chi2_tmp = 0.;
701  int ndof_tmp = 0;
702  bool has_match_tmp = false;
703  int imatch_tmp = -1;
704 
705  //Select tracks
706  double phi_id = (trkit)->phi();
707  double eta_id = (trkit)->eta();
708  double qoverp_id = (trkit)->qOverP();
709  double q_id = ((trkit)->qOverP() > 0 ? 1.0 : -1.0);
710  double pt_id = (trkit)->pt() * q_id;
711 
712  double e_qoverp_id = std::sqrt((trkit)->definingParametersCovMatrix()(Trk::qOverP,Trk::qOverP));
713  double e_phi_id = std::sqrt((trkit)->definingParametersCovMatrix()(Trk::phi0,Trk::phi0));
714  double e_theta_id = std::sqrt((trkit)->definingParametersCovMatrix()(Trk::theta,Trk::theta));
715  double tanthetaov2 = std::fabs(std::exp(-eta));
716  double e_eta_id = std::fabs(0.5 * (1./tanthetaov2 + tanthetaov2) * e_theta_id);
717 
718  double e_qoverpt_id = e_qoverp_id;
719  double theta_id = (trkit)->theta();
720  if (std::sin(theta_id) != 0) e_qoverpt_id /= std::fabs(std::sin(theta_id)); //approximate
721 
722  ATH_MSG_DEBUG( " Found track: "
723  << " with pt (GeV) = " << pt_id / Gaudi::Units::GeV
724  << ", q = " << q_id
725  << ", eta = " << eta_id
726  << ", phi = " << phi_id
727  << ", th = " << theta_id
728  << ", ephi = " << e_phi_id
729  << ", eth = " << e_theta_id
730  << ", eeta = " << e_eta_id
731  << ", ip = " << qoverp_id
732  << ", eip = " << e_qoverp_id
733  << ", eipt = " << e_qoverpt_id );
734 
735  if (usealgo != 3) {
736  if ((std::fabs(pt_id) / Gaudi::Units::GeV) < m_PtMinTrk) continue;
737  }
738  if (std::fabs(eta_id) > m_EtaMaxTrk) continue;
739 
740  ATH_MSG_DEBUG(" Track selected " );
741 
742  if (usealgo > 0) {//DeltaR match
743  // commented code (useL1) to be removed once full muon chain with MT tested
744  //if (useL1) {
745  // imatch_tmp = drptMatch(ptL1, etaL1, phiL1, pt_id, eta_id, phi_id, usealgo, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp);
746  //} else {
747  imatch_tmp = drptMatch(muonSA, pt_id, eta_id, phi_id, usealgo, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp);
748  //}
749  if (imatch_tmp == 0) has_match_tmp = true;
750  } else { //Std match
752  imatch_tmp = mfMatch(muonSA, eta_id, phi_id, pt_id, q_id, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp, ndof_tmp);
753  if (imatch_tmp == 0) has_match_tmp = true;
754  } else { //G4 match
755  imatch_tmp = g4Match(extr, eta_id, phi_id, pt_id, q_id, e_eta_id, e_phi_id, e_qoverpt_id, ptinv_tmp, ptres_tmp, deta_tmp, dphi_tmp, chi2_tmp, ndof_tmp);
756  if (imatch_tmp == 0) has_match_tmp = true;
757  }
758  }
759 
760  imatch = imatch_tmp;
761  if (!has_match_tmp) continue;
762 
763  // select nearest track
764  dr_tmp = std::sqrt(deta_tmp * deta_tmp + dphi_tmp * dphi_tmp);
765 
766  if (chi2_tmp <= chi2_comb) {//Select nearest track
767  has_match = true;
768  chi2_comb = chi2_tmp;
769  ndof_comb = ndof_tmp;
770  ptinv_comb = ptinv_tmp;
771  ptres_comb = ptres_tmp;
772  best_deta = deta_tmp;
773  best_dphi = dphi_tmp;
774  best_dr = dr_tmp;
775  imatch = imatch_tmp;
776  matched_trk_idx = matched_trk_idx_tmp;
777  }
778 
779  }//Tracks loop
780 
781  //Set monitored quantities (monitor only pt>6 GeV/c && standard matching)
782  if (usealgo == 0 && std::fabs(pt) >= 6.) {
783  ptMS = pt;
784  etaMS = eta;
785  phiMS = phi;
786  zetaMS = zeta_ms;
787  ptFL = pt;
788  etaFL = eta;
789  phiFL = phi;
790  if (ptMS > 100.) ptMS = 101.5;
791  if (ptMS < -100.) ptMS = -101.5;
792  if (ptFL > 100.) ptFL = 101.5;
793  if (ptFL < -100.) ptFL = -101.5;
794  }
795 
796  if (!has_match) {
797  ErrorFlagMC = 3;
798  MatchFlagMC = imatch;
799  if (usealgo == 0 && std::fabs(pt) >= 6.) efficiency = 0; //monitor only efficiency for mu6 && standard matching
800  ATH_MSG_DEBUG( " No matched ID tracks --> no match" );
801  muonCB->setErrorFlag(ErrorFlagMC);
802  muonCB->setMatchFlag(MatchFlagMC);
803  muonCBColl->push_back(muonCB);
804  return StatusCode::SUCCESS;
805  }
806 
807  //Save EL to ID trk into CB muon
808  ElementLink<xAOD::TrackParticleContainer> idtrkEL(*idTrackParticles, matched_trk_idx);
809  muonCB->setIdTrackLink(idtrkEL);
810 
811  double pt_id = muonCB->idTrack()->pt();
812  double q_id = ((muonCB->idTrack()->qOverP()) > 0 ? 1.0 : -1.0);
813  double phi_id = muonCB->idTrack()->phi();
814  double eta_id = muonCB->idTrack()->eta();
815  //const Trk::Perigee& idtrk_perigee = muonCB->idTrack()->perigeeParameters();
816  double zPos_id = muonCB->idTrack()->z0(); //idtrk_perigee.parameters()[Trk::z0];
817 
818  ATH_MSG_DEBUG(" SA muon macthed to ID track ..." );
819 
820  //Update monitored vars
821  MatchFlagMC = imatch;
822  ptFL = -9999.;
823  etaFL = -9999.;
824  phiFL = -9999.;
825  if (usealgo == 0 && std::fabs(pt) >= 6.) {
826  efficiency = 1;
827  ptID = pt_id / Gaudi::Units::GeV; //in GeV/c
828  etaID = eta_id;
829  phiID = phi_id;
830  zetaID = zPos_id;
831  ptMC = 1. / (ptinv_comb * Gaudi::Units::GeV); //in GeV/c
832  dZeta = zeta_ms - zPos_id;
833  dPhi = best_dphi;
834  dEta = best_deta;
835  dR = best_dr;
836 
837  if (ptMC > 100.) ptMC = 101.5;
838  if (ptMC < -100.) ptMC = -101.5;
839  if (ptID > 100.) ptID = 101.5;
840  if (ptID < -100.) ptID = -101.5;
841  }
842 
843  double prt_pt = pt;
844  // commented code (useL1) to be removed once full muon chain with MT tested
845  //if (useL1) prt_pt = ptL1;
846  ATH_MSG_DEBUG( " REGTEST Combination chosen: "
847  << " usealgo / IdPt (GeV) / muonPt (GeV) / CombPt (GeV) / chi2 / ndof: " << " / " << usealgo << " / " << pt_id*q_id / Gaudi::Units::GeV << " / " << prt_pt << " / " << 1. / ptinv_comb / Gaudi::Units::GeV << " / " << chi2_comb << " / " << ndof_comb );
848 
849  muonCB->setPt(std::fabs(1. / ptinv_comb));
850  muonCB->setEta(eta_id);
851  muonCB->setPhi(phi_id);
852 
853  float mcq = -1.0;
854  if (ptinv_comb > 0) mcq = 1.0;
855 
856  muonCB->setCharge(mcq);
857 
858  float mcresu = std::fabs(ptres_comb / (ptinv_comb * ptinv_comb));
859  ATH_MSG_DEBUG( " SigmaPt (GeV) is: " << mcresu / Gaudi::Units::GeV );
860  muonCB->setSigmaPt(mcresu);
861 
862  muonCB->setErrorFlag(ErrorFlagMC);
863  muonCB->setMatchFlag(MatchFlagMC);
864 
865  muonCBColl->push_back(muonCB);
866  }
867  return StatusCode::SUCCESS;
868 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 79 of file AthReentrantAlgorithm.cxx.

80 {
81  // If we didn't find any symlinks to add, just return the collection
82  // from the base class. Otherwise, return the extended collection.
83  if (!m_extendedExtraObjects.empty()) {
85  }
86  return Algorithm::extraOutputDeps();
87 }

◆ filterPassed()

virtual bool AthReentrantAlgorithm::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 135 of file AthReentrantAlgorithm.h.

135  {
136  return execState( ctx ).filterPassed();
137  }

◆ g4Match()

int muComb::g4Match ( const ExtrapolationResult extr,
double  id_eta,
double  id_phi,
double  id_pt,
double  id_charge,
double  id_eeta,
double  id_ephi,
double  id_eipt,
double &  combPtInv,
double &  combPtRes,
double &  deta,
double &  dphi,
double &  chi2,
int &  ndof 
) const
private

Definition at line 235 of file muComb.cxx.

238 {
239  ATH_MSG_DEBUG("in g4Match");
240  if (extr.status != 0) return extr.status; // propagates the badness of the extrapolated muon, if appropriate
241 
242  chi2 = 1.0e30;
243  ndof = 0;
244 
245  //ID parameters
247  m_IDSCANRes_endcap3, m_IDSCANRes_endcap4, id_pt, id_eta);
248  double id_ptinv = 1.0e33;
249  if (id_pt != 0) {
250  id_ptinv = 1. / id_pt;
251  } else {
252  return 3; //no match if ID track Pt zero
253  }
254 
255  double id_eptinv = id_eipt; //now taken from Track itself ...
256 
257 
258  //Combined muon parameters
259  combPtInv = muCombUtil::getCombinedAverage(extr.ptinv, extr.eptinv, id_ptinv, id_eptinv);
260  combPtRes = muCombUtil::getCombinedAverageSigma(extr.eptinv, id_eptinv);
261  double q_tmp = extr.charge;
262  if (m_ChargeStrategy == 1) q_tmp = id_charge;
263  else if (m_ChargeStrategy == 2) {
264  if (1. / combPtInv > 50000.) q_tmp = extr.charge;
265  else q_tmp = id_charge;
266  }
267  combPtInv *= q_tmp;
268 
269  //Masaki/Kunihiro treatment of TGC/RPC readout problems
270  ATH_MSG_DEBUG( " Enlarge phi matching error in case TGC/RPC readout failed. : " << extr.isRpcFailure << " / " << extr.isTgcFailure);
271 
272  double ephi_to_use = extr.ephi;
273  if (extr.isTgcFailure || extr.isRpcFailure) ephi_to_use *= 2.0;
274 
275  //Match
276  deta = muCombUtil::getDeltaEta(extr.eta, id_eta);
277  dphi = muCombUtil::getDeltaPhi(extr.phi, id_phi);
278  int ndof_OLD = 0;
279  double chi2_OLD = muCombUtil::getChi2(ndof_OLD, combPtInv,
280  extr.eta, extr.eeta, extr.phi, ephi_to_use, extr.ptinv, extr.eptinv,
281  id_eta, 0.0, id_phi, 0.0, id_ptinv, id_eptinv, true);
282  chi2 = muCombUtil::getStdChi2(ndof, extr.eta, extr.eeta, extr.phi, ephi_to_use, extr.ptinv, extr.eptinv,
283  id_eta, id_eeta, id_phi, id_ephi, id_ptinv, id_eptinv, m_UseAbsPt);
284 
285 
286  ATH_MSG_DEBUG(" REGTEST Resolution / OLDIdRes / IdRes / muFastRes / combRes:"
287  << " / " << std::setw(11) << id_eptinv_OLD / Gaudi::Units::GeV
288  << " / " << std::setw(11) << id_eptinv / Gaudi::Units::GeV
289  << " / " << std::setw(11) << extr.eptinv / Gaudi::Units::GeV
290  << " / " << std::setw(11) << combPtRes / Gaudi::Units::GeV );
291 
292  ATH_MSG_DEBUG(" REGTEST Momentum / IdPt / muFastPt / CombPt :"
293  << " / " << std::setw(11) << 1. / id_ptinv / Gaudi::Units::GeV
294  << " / " << std::setw(11) << 1. / extr.ptinv / Gaudi::Units::GeV
295  << " / " << std::setw(11) << 1. / combPtInv / Gaudi::Units::GeV );
296 
297  ATH_MSG_DEBUG(" REGTEST Chi2 / ndof // Chi2OLD / ndofOLD :"
298  << " / " << std::setw(11) << chi2
299  << " / " << std::setw(11) << ndof
300  << " // " << std::setw(11) << chi2_OLD
301  << " / " << std::setw(11) << ndof_OLD );
302 
303  //Cuts
304  double winEtaSigma = m_WinEta_g4;
305  double winPhiSigma = m_WinPhi_g4;
306  double maxChi2 = m_Chi2Max_g4;
307  if (!extr.isBarrel) {//EC
308  winEtaSigma = m_WinEta_EC_g4;
309  winPhiSigma = m_WinPhi_EC_g4;
310  maxChi2 = m_Chi2Max_EC_g4;
311  }
312 
313  ATH_MSG_DEBUG(" REGTEST DeltaEta / DeltaPhi / WinEta / WinPhi:"
314  << " / " << std::setw(11) << std::fabs(deta)
315  << " / " << std::setw(11) << std::fabs(dphi)
316  << " / " << std::setw(11) << m_WeightEta_g4*winEtaSigma*std::sqrt(extr.eeta * extr.eeta)
317  << " / " << std::setw(11) << m_WeightPhi_g4*winPhiSigma*std::sqrt(ephi_to_use * ephi_to_use) );
318 
319  if (std::fabs(deta) > m_WeightEta_g4 * winEtaSigma * std::sqrt(extr.eeta * extr.eeta)) {
320  return 4;
321  }
322  if (std::fabs(dphi) > m_WeightPhi_g4 * winPhiSigma * std::sqrt(ephi_to_use * ephi_to_use)) {
323  return 5;
324  }
325  if (ndof >= m_NdofMin) {
326  if (chi2 > maxChi2) return 6;
327  }
328 
329  return 0; //match OK
330 }

◆ getExtrapolatedMuon()

ExtrapolationResult muComb::getExtrapolatedMuon ( const xAOD::L2StandAloneMuon feature) const
private

Definition at line 131 of file muComb.cxx.

132 {
133  ATH_MSG_DEBUG("in getExtrapolatedMuon");
135 
136  const EventContext& ctx = Gaudi::Hive::currentContext();
137 
138  //muFast parameters (in MeV!)
139  double phi = feature->phiMS();
140  //double eta = feature->etaMS();
141  double theta = 2.*std::atan(std::exp(-feature->etaMS()));
142  double p = 0.0;
143  if (std::sin(theta) != 0) {
144  p = (feature->pt() * Gaudi::Units::GeV) / std::sin(theta);
145  } else {
146  result.status = 2; //No match if muon angle is zero
147  return result;
148  }
149  result.charge = 1.0;
150  double q_over_p = 0.;
151  if (p != 0.) {
152  q_over_p = 1. / p;
153  result.charge = p / std::fabs(p);
154  } else {
155  result.status = 1; //No match if muon Pt is zero
156  return result;
157  }
158  double pt = feature->pt() * Gaudi::Units::GeV;
159  //double ptinv = 1/pt;
160  double eptinv = feature->deltaPt() * Gaudi::Units::GeV / pt / pt;
161 
162  result.isBarrel = ((feature->sAddress() != -1) ? true : false);
163  double etaShift = (result.isBarrel ? 0 : result.charge * 0.01);
164  bool doFix = kFALSE;
165 
166  //Superpoints
169  //int outer = (feature->sAddress() == -1) ? xAOD::L2MuonParameters::Chamber::EndcapOuter : xAOD::L2MuonParameters::Chamber::BarrelOuter;
170 
171  double sp1_z = feature->superPointZ(inner);
172  double sp1_R = feature->superPointR(inner);
173  double sp2_z = feature->superPointZ(middle);
174  double sp2_R = feature->superPointR(middle);
175 
176  if ((std::fabs(sp1_R) < 1000.)) {
177  sp1_z *= 10.;
178  sp1_R *= 10.;
179  }
180  if ((std::fabs(sp2_R) < 1300.)) {
181  sp2_z *= 10.;
182  }
183 
184  double R = sp1_R;
185  double z = sp1_z;
186 
187  if (R == 0. && z == 0.) { //treat patological endcap cases
188  doFix = kTRUE;
189  if (std::fabs(sp2_R) > 1300.) {
190  z = sp2_z;
191  if (z == 0.) z = 7600.;
192  R = z * std::tan(theta);
193  theta = 2.*std::atan(std::exp(-(feature->etaMS() - etaShift)));
194  }
195  }
196 
197  double x = R * std::cos(phi);
198  double y = R * std::sin(phi);
199 
200  Amg::Vector3D vertex(x, y, z);
201  Trk::PerigeeSurface beamSurface;
203  Trk::Perigee perigeeMS(0., 0., phi, theta, q_over_p, pgsf);
204 
205  std::unique_ptr<const Trk::TrackParameters> muonPerigee
206  (m_backExtrapolatorG4->extrapolate(ctx,perigeeMS, beamSurface, Trk::oppositeMomentum, true, Trk::muon));
207 
208  //Protection against failing extrapolation
209  if (!muonPerigee) { //G4 probably failed, getting LUT extrapolated values
210  result.eta = feature->eta();
211  result.phi = feature->phi();
212  } else {
213  double extr_theta = muonPerigee -> parameters()[Trk::theta];
214  result.phi = muonPerigee -> parameters()[Trk::phi0];
215  result.eta = -std::log(std::tan(extr_theta / 2.));
216  if (doFix) result.eta = -std::log(std::tan(theta / 2.));
217  }
218 
219  result.eeta = muCombUtil::getG4ExtEtaRes(feature->pt(), feature->etaMS());
220  result.ephi = muCombUtil::getG4ExtPhiRes(feature->pt(), feature->etaMS());
221  result.ptinv = 1.0e33;
222  if (pt != 0) result.ptinv = 1. / pt;
223  result.eptinv = eptinv;
224 
225  result.isRpcFailure = feature->isRpcFailure();
226  result.isTgcFailure = feature->isTgcFailure();
227 
228  result.status = 0; // can go ahead in matching logic
229 
230  return result;
231 }

◆ initialize()

StatusCode muComb::initialize ( )
overridevirtual

initialize.

Called by the Steering.

Definition at line 35 of file muComb.cxx.

36 {
37  ATH_MSG_DEBUG("Initialization:");
38 
39  //Filed service
41 
42  if (!m_monTool.empty()) {
43  ATH_MSG_DEBUG("Retrieving monTool");
44  CHECK(m_monTool.retrieve());
45  } else {
46  ATH_MSG_INFO("No monTool configured => NO MONITORING");
47  }
48 
49  // BackExtrapolator services
50  if ( m_backExtrapolatorG4.retrieve().isFailure() ) {
51  ATH_MSG_ERROR("Unable to locate G4 BackExtrapolator tool ");
52  return StatusCode::FAILURE;
53  }
54 
55  ATH_CHECK( m_muonCollKey.initialize() );
56  //ATH_CHECK( m_muonROICollKey.initialize() );
58  ATH_CHECK( m_outputCBmuonCollKey.initialize() );
59 
60  return StatusCode::SUCCESS;
61 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isClonable()

bool AthReentrantAlgorithm::isClonable ( ) const
overridevirtualinherited

◆ mfMatch()

int muComb::mfMatch ( const xAOD::L2StandAloneMuon feature,
double  id_eta,
double  id_phi,
double  id_pt,
double  id_charge,
double &  combPtInv,
double &  combPtRes,
double &  deta,
double &  dphi,
double &  chi2,
int &  ndof 
) const
private

Definition at line 334 of file muComb.cxx.

337 {
338 
339  chi2 = 1.0e30;
340  ndof = 0;
341  //muFast parameters
342 
343  double pt = feature->pt() * Gaudi::Units::GeV;
344  if (pt == 0.) {
345  return 1; //No match if muFast Pt is zero
346  }
347 
348  bool isTS = ((feature->rMS() <= 10.) ? true : false);
349  bool isBarrel = ((feature->sAddress() != -1) ? true : false);
350 
351  double charge = pt / std::fabs(pt);
352  double ptinv = 1. / pt;
353  double eptinv = feature->deltaPt() * Gaudi::Units::GeV / pt / pt;
354 
355  //ID parameters
357  m_IDSCANRes_endcap3, m_IDSCANRes_endcap4, id_pt, id_eta);
358  double id_ptinv = 1.0e33;
359  //double id_ept = 1.0e33;
360  if (id_pt != 0) {
361  id_ptinv = 1. / id_pt;
362  //id_ept = id_eptinv * id_pt * id_pt;
363  } else {
364  return 3; //no match if ID track Pt zero
365  }
366 
367  //Combined muon parameters
368  combPtInv = muCombUtil::getCombinedAverage(ptinv, eptinv, id_ptinv, id_eptinv);
369  combPtRes = muCombUtil::getCombinedAverageSigma(eptinv, id_eptinv);
370  double q_tmp = charge;
371  if (m_ChargeStrategy == 1) q_tmp = id_charge;
372  else if (m_ChargeStrategy == 2) {
373  if (1. / combPtInv > 50000.) q_tmp = charge;
374  else q_tmp = id_charge;
375  }
376  combPtInv *= q_tmp;
377 
378  // Extrapolated (LUT) quantities (now stored in the xAOD::L2StandAloneMuon container)
379  double extr_eta = feature->eta();
380  double extr_eeta = feature->deltaEta();
381  double extr_phi = feature->phi();
382  double extr_ephi = feature->deltaPhi();
383  double extr_ptinv = ptinv;
384  double extr_eptinv = eptinv;
385 
386  //Masaki/Kunihiro treatment of TGC/RPC readout problems
387  ATH_MSG_DEBUG(" Enlarge phi matching error in case TGC/RPC readout failed. : " << feature->isRpcFailure() << " / " << feature->isTgcFailure() );
388 
389  if (feature->isTgcFailure() || feature->isRpcFailure()) extr_ephi *= 2.0;
390 
391  //Match
392  deta = muCombUtil::getDeltaEta(extr_eta, id_eta);
393  dphi = muCombUtil::getDeltaPhi(extr_phi, id_phi);
394  chi2 = muCombUtil::getChi2(ndof, combPtInv, extr_eta, extr_eeta, extr_phi, extr_ephi, extr_ptinv, extr_eptinv,
395  id_eta, 0.0, id_phi, 0.0, id_ptinv, id_eptinv, m_UseAbsPt);
396 
397 
398  ATH_MSG_DEBUG(" REGTEST Resolution / IdRes / muFastRes / combRes:"
399  << " / " << std::setw(11) << id_eptinv / Gaudi::Units::GeV
400  << " / " << std::setw(11) << extr_eptinv / Gaudi::Units::GeV
401  << " / " << std::setw(11) << combPtRes / Gaudi::Units::GeV );
402 
403  ATH_MSG_DEBUG(" REGTEST Momentum / IdPt / muFastPt / CombPt :"
404  << " / " << std::setw(11) << 1. / id_ptinv / Gaudi::Units::GeV
405  << " / " << std::setw(11) << 1. / ptinv / Gaudi::Units::GeV
406  << " / " << std::setw(11) << 1. / combPtInv / Gaudi::Units::GeV );
407 
408  ATH_MSG_DEBUG(" REGTEST Chi2 / ndof :"
409  << " / " << std::setw(11) << chi2
410  << " / " << std::setw(11) << ndof );
411 
412  //Cuts
413  double winEtaSigma = m_WinEta;
414  double winPhiSigma = m_WinPhi;
415  double maxChi2 = m_Chi2Max;
416  if (isTS) { //Trigger Station (barrel/EC)
417  winEtaSigma = m_WinEta_TS;
418  winPhiSigma = m_WinPhi_TS;
419  maxChi2 = m_Chi2Max_TS;
420  } else { //if endcaps and not TS
421  if (!isBarrel) {
422  winEtaSigma = m_WinEta_EC;
423  winPhiSigma = m_WinPhi_EC;
424  maxChi2 = m_Chi2Max_EC;
425  }
426  }
427  bool isFT = false;
428  if (isBarrel)
429  if ((id_phi >= -2.60 && id_phi <= -2.10) || (id_phi >= -1.10 && id_phi <= -0.50)) isFT = true;
430  if (isFT) { //if MS-feet region
431  winEtaSigma = m_WinEta_FE;
432  winPhiSigma = m_WinPhi_FE;
433  maxChi2 = m_Chi2Max_FE;
434  }
435 
436  ATH_MSG_DEBUG(" REGTEST DeltaEta / DeltaPhi / WinEta / WinPhi:"
437  << " / " << std::setw(11) << std::fabs(deta)
438  << " / " << std::setw(11) << std::fabs(dphi)
439  << " / " << std::setw(11) << m_WeightEta*winEtaSigma*std::sqrt(extr_eeta * extr_eeta)
440  << " / " << std::setw(11) << m_WeightPhi*winPhiSigma*std::sqrt(extr_ephi * extr_ephi) );
441 
442  if (std::fabs(deta) > m_WeightEta * winEtaSigma * std::sqrt(extr_eeta * extr_eeta)) {
443  return 4;
444  }
445  if (std::fabs(dphi) > m_WeightPhi * winPhiSigma * std::sqrt(extr_ephi * extr_ephi)) {
446  return 5;
447  }
448  if (ndof >= m_NdofMin) {
449  if (chi2 > maxChi2) return 6;
450  }
451 
452  return 0; //match OK
453 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< Gaudi::Algorithm >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

virtual void AthReentrantAlgorithm::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 139 of file AthReentrantAlgorithm.h.

139  {
140  execState( ctx ).setFilterPassed( state );
141  }

◆ sysExecute()

StatusCode AthReentrantAlgorithm::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 67 of file AthReentrantAlgorithm.cxx.

68 {
69  return Gaudi::Algorithm::sysExecute (ctx);
70 }

◆ sysInitialize()

StatusCode AthReentrantAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 96 of file AthReentrantAlgorithm.cxx.

96  {
98 
99  if (sc.isFailure()) {
100  return sc;
101  }
102 
103  ServiceHandle<ICondSvc> cs("CondSvc",name());
104  for (auto h : outputHandles()) {
105  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
106  // do this inside the loop so we don't create the CondSvc until needed
107  if ( cs.retrieve().isFailure() ) {
108  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
109  return StatusCode::SUCCESS;
110  }
111  if (cs->regHandle(this,*h).isFailure()) {
112  sc = StatusCode::FAILURE;
113  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
114  << " with CondSvc");
115  }
116  }
117  }
118  return sc;
119 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_AlgoStrategy

Gaudi::Property<int> muComb::m_AlgoStrategy {this, "MuCombStrategy", 0, "Algoritgm strategy [0=auto select best option,1=simple angular match]"}
private

muComb matching strategy: 0: auto select best option 1: simplified R,(Pt) matching

Definition at line 129 of file muComb.h.

◆ m_assumeSolenoidOff

Gaudi::Property<bool> muComb::m_assumeSolenoidOff {this, "AssumeSolenoidOff", false, "Force assumption solenoid off"}
private

flag to assume B_Solenoid=0 anyway

Definition at line 122 of file muComb.h.

◆ m_assumeToroidOff

Gaudi::Property<bool> muComb::m_assumeToroidOff {this, "AssumeToroidOff", false, "Force assumption toroid off"}
private

flag to assume B_Toroid=0 anyway

Definition at line 120 of file muComb.h.

◆ m_backExtrapolatorG4

ToolHandle<Trk::IExtrapolator> muComb::m_backExtrapolatorG4
private
Initial value:
{this,
"AtlasExtrapolator",
"Trk::Extrapolator/AtlasExtrapolator",
"Tool to backextrapolate muon from MS to IP (G4 based)"}

Handle to the G4 backExtrapolator tool.

Definition at line 86 of file muComb.h.

◆ m_ChargeStrategy

Gaudi::Property<int> muComb::m_ChargeStrategy {this, "ChargeStrategy", 0, "Charge assignement strategy [0=muFast,1=ID,2=resolution based]"}
private

muComb charge assignment strategy: 0: useMuFast 1: use ID 2: use resolution model

Definition at line 136 of file muComb.h.

◆ m_Chi2Max

Gaudi::Property<double> muComb::m_Chi2Max {this, "Chi2Max", 1.e33, "matching parameter: LUT-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (Barrel)

Definition at line 159 of file muComb.h.

◆ m_Chi2Max_EC

Gaudi::Property<double> muComb::m_Chi2Max_EC {this, "Chi2MaxEndCaps", 1.e33, "matching parameter: LUT-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)

Definition at line 165 of file muComb.h.

◆ m_Chi2Max_EC_g4

Gaudi::Property<double> muComb::m_Chi2Max_EC_g4 {this, "Chi2MaxEndCaps_g4", 1.e33, "matching parameter: G4-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)

Definition at line 195 of file muComb.h.

◆ m_Chi2Max_FE

Gaudi::Property<double> muComb::m_Chi2Max_FE {this, "Chi2MaxFE", 1.e33, "matching parameter: LUT-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (MS Feet region)

Definition at line 177 of file muComb.h.

◆ m_Chi2Max_g4

Gaudi::Property<double> muComb::m_Chi2Max_g4 {this, "Chi2Max_g4", 1.e33, "matching parameter: G4-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (Barrel)

Definition at line 189 of file muComb.h.

◆ m_Chi2Max_TS

Gaudi::Property<double> muComb::m_Chi2Max_TS {this, "Chi2MaxTS", 1.e33, "matching parameter: LUT-based"}
private

Max Chi2 for the combined muon in LUT backextrapolator (Trigger Stations)

Definition at line 171 of file muComb.h.

◆ m_Chi2Weight_g4

Gaudi::Property<double> muComb::m_Chi2Weight_g4 {this, "Chi2Weight_g4", 2.0, "matching parameter: G4-based"}
private

Scale factor for the Chi2 1/pt resolutions (MS and ID) (Barrel)

Definition at line 201 of file muComb.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_EtaMaxTrk

Gaudi::Property<double> muComb::m_EtaMaxTrk {this, "MaxAbsEtaTRK", 2.5, "ID tracks max |eta|"}
private

Max abs(eta) to select the ID track for matching.

Definition at line 144 of file muComb.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 153 of file AthReentrantAlgorithm.h.

◆ m_fieldCacheCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> muComb::m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
private

Definition at line 91 of file muComb.h.

◆ m_ID_algo_to_use

Gaudi::Property<std::string> muComb::m_ID_algo_to_use {this, "IDalgo", "InDetTrigTrackingxAODCnv_Muon_FTF","ID trk xAOD collection to use"}
private

ID Track collection used for matching.

Definition at line 139 of file muComb.h.

◆ m_IDSCANRes_barrel

Gaudi::Property<std::vector<double> > muComb::m_IDSCANRes_barrel {this, "IDSCANBarrelRes", {0.017, 0.000000418}, "ID parametrized rsolution for matching (barrel)"}
private

Definition at line 210 of file muComb.h.

◆ m_IDSCANRes_endcap1

Gaudi::Property<std::vector<double> > muComb::m_IDSCANRes_endcap1 {this, "IDSCANEndcap1Res",{0.025, 0.0000002}, "ID parametrized rsolution for matching (ec1)"}
private

Definition at line 211 of file muComb.h.

◆ m_IDSCANRes_endcap2

Gaudi::Property<std::vector<double> > muComb::m_IDSCANRes_endcap2 {this, "IDSCANEndcap2Res",{0.030, 0.0000002}, "ID parametrized rsolution for matching (ec2)"}
private

Definition at line 212 of file muComb.h.

◆ m_IDSCANRes_endcap3

Gaudi::Property<std::vector<double> > muComb::m_IDSCANRes_endcap3 {this, "IDSCANEndcap3Res",{0.036, 0.0000004}, "ID parametrized rsolution for matching (ec3)"}
private

Definition at line 213 of file muComb.h.

◆ m_IDSCANRes_endcap4

Gaudi::Property<std::vector<double> > muComb::m_IDSCANRes_endcap4 {this, "IDSCANEndcap4Res",{0.046, 0.0000002}, "ID parametrized rsolution for matching (ec4)"}
private

Definition at line 214 of file muComb.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> muComb::m_monTool {this,"MonTool","","Monitoring tool"}
private

Definition at line 83 of file muComb.h.

◆ m_muonCollKey

SG::ReadHandleKey<xAOD::L2StandAloneMuonContainer> muComb::m_muonCollKey
private
Initial value:
{ this,
"L2StandAloneMuonContainerName",
"xAOD::L2StandAloneMuonContainer",
"input L2StandAloneMuon Container name"}

Definition at line 72 of file muComb.h.

◆ m_NdofMin

Gaudi::Property<int> muComb::m_NdofMin {this, "NdofMin", 9999, "matching parameter: min ndof"}
private

Min Number of DOF to apply the chi2 cut on macthing based on LUT and G4 backextrapolators.

Definition at line 149 of file muComb.h.

◆ m_outputCBmuonCollKey

SG::WriteHandleKey<xAOD::L2CombinedMuonContainer> muComb::m_outputCBmuonCollKey
private
Initial value:
{ this,
"L2CombinedMuonContainerName",
"MuonL2CBInfo",
"output CB Muon container name"}

Definition at line 78 of file muComb.h.

◆ m_PtMinTrk

Gaudi::Property<double> muComb::m_PtMinTrk {this, "MinPtTRK", 1.*Gaudi::Units::GeV, "ID track minimum pT"}
private

Min Pt to select the ID track for matching.

Definition at line 142 of file muComb.h.

◆ m_TrackParticleContainerKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> muComb::m_TrackParticleContainerKey
private
Initial value:
{ this,
"TrackParticlesContainerName",
"InDetTrigTrackingxAODCnv_Muon_FTF",
"input TrackParticle container name"}

Definition at line 67 of file muComb.h.

◆ m_UseAbsPt

Gaudi::Property<bool> muComb::m_UseAbsPt {this, "UseAbsPt", false, "matching parameter: use absolute pT"}
private

Use Absolute value of the Pt in chi2 calculation (i.e.

not use muon charge)

Definition at line 151 of file muComb.h.

◆ m_useBackExtrapolatorG4

Gaudi::Property<bool> muComb::m_useBackExtrapolatorG4 {this, "UseBackExtrapolatorG4", true, "Use g4-based back-extraploator"}
private

flag to switch between G4 and LUT based back-extrapolation

Definition at line 117 of file muComb.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_WeightEta

Gaudi::Property<double> muComb::m_WeightEta {this, "WeightEta", 2.0, "matching parameter: LUT-based"}
private

Scale factor for the Eta matching window in LUT backextrapolator.

Definition at line 179 of file muComb.h.

◆ m_WeightEta_g4

Gaudi::Property<double> muComb::m_WeightEta_g4 {this, "WeightEta_g4", 2.0, "matching parameter: G4-based"}
private

Scale factor for the Eta matching window in LUT backextrapolator.

Definition at line 197 of file muComb.h.

◆ m_WeightPhi

Gaudi::Property<double> muComb::m_WeightPhi {this, "WeightPhi", 2.0, "matching parameter: LUT-based"}
private

Scale factor for the Phi matching window in LUT backextrapolator.

Definition at line 181 of file muComb.h.

◆ m_WeightPhi_g4

Gaudi::Property<double> muComb::m_WeightPhi_g4 {this, "WeightPhi_g4", 2.0, "matching parameter: G4-based"}
private

Scale factor for the Phi matching window in LUT backextrapolator.

Definition at line 199 of file muComb.h.

◆ m_winDR

Gaudi::Property<double> muComb::m_winDR {this, "WinDelta", 0.2, "matching parameter (simplifed): strategy dependent"}
private

max deltaR for simplified matching

Definition at line 207 of file muComb.h.

◆ m_WinEta

Gaudi::Property<double> muComb::m_WinEta {this, "WinEtaSigma", 4.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)

Definition at line 155 of file muComb.h.

◆ m_WinEta_EC

Gaudi::Property<double> muComb::m_WinEta_EC {this, "WinEtaSigmaEndCaps", 4.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)

Definition at line 161 of file muComb.h.

◆ m_WinEta_EC_g4

Gaudi::Property<double> muComb::m_WinEta_EC_g4 {this, "WinEtaSigmaEndCaps_g4",7.0, "matching parameter: G4-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)

Definition at line 191 of file muComb.h.

◆ m_WinEta_FE

Gaudi::Property<double> muComb::m_WinEta_FE {this, "WinEtaSigmaFE", 10.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (MS Feet region)

Definition at line 173 of file muComb.h.

◆ m_WinEta_g4

Gaudi::Property<double> muComb::m_WinEta_g4 {this, "WinEtaSigma_g4", 7.0, "matching parameter: G4-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)

Definition at line 185 of file muComb.h.

◆ m_WinEta_TS

Gaudi::Property<double> muComb::m_WinEta_TS {this, "WinEtaSigmaTS", 5.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Eta matching window LUT backextrapolator (Trigger Stations)

Definition at line 167 of file muComb.h.

◆ m_WinPhi

Gaudi::Property<double> muComb::m_WinPhi {this, "WinPhiSigma", 4.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)

Definition at line 157 of file muComb.h.

◆ m_WinPhi_EC

Gaudi::Property<double> muComb::m_WinPhi_EC {this, "WinPhiSigmaEndCaps", 10., "matching parameter: LUT-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)

Definition at line 163 of file muComb.h.

◆ m_WinPhi_EC_g4

Gaudi::Property<double> muComb::m_WinPhi_EC_g4 {this, "WinPhiSigmaEndCaps_g4",7.0, "matching parameter: G4-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)

Definition at line 193 of file muComb.h.

◆ m_WinPhi_FE

Gaudi::Property<double> muComb::m_WinPhi_FE {this, "WinPhiSigmaFE", 10.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (MS Feet region)

Definition at line 175 of file muComb.h.

◆ m_WinPhi_g4

Gaudi::Property<double> muComb::m_WinPhi_g4 {this, "WinPhiSigma_g4", 7.0, "matching parameter: G4-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)

Definition at line 187 of file muComb.h.

◆ m_WinPhi_TS

Gaudi::Property<double> muComb::m_WinPhi_TS {this, "WinPhiSigmaTS", 5.0, "matching parameter: LUT-based"}
private

Number of sigmas for the Phi matching window LUT backextrapolator (Trigger Stations)

Definition at line 169 of file muComb.h.

◆ m_winPt

Gaudi::Property<double> muComb::m_winPt {this, "WinPt", -1.0*Gaudi::Units::GeV, "matching parameter (simplifed): pT windows in geV (disabled if < 0)"}
private

max deltaPt for simpified matching

Definition at line 205 of file muComb.h.


The documentation for this class was generated from the following files:
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
IDTPM::ndof
float ndof(const U &p)
Definition: TrackParametersHelper.h:134
muComb::m_WinEta_EC
Gaudi::Property< double > m_WinEta_EC
Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)
Definition: muComb.h:161
muComb::m_WeightEta
Gaudi::Property< double > m_WeightEta
Scale factor for the Eta matching window in LUT backextrapolator.
Definition: muComb.h:179
muComb::m_assumeToroidOff
Gaudi::Property< bool > m_assumeToroidOff
flag to assume B_Toroid=0 anyway
Definition: muComb.h:120
muComb::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: muComb.h:91
xAOD::L2CombinedMuon_v1::setStrategy
void setStrategy(int value)
set algorithm strategy flag
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
get_generator_info.result
result
Definition: get_generator_info.py:21
muComb::m_WinPhi_EC_g4
Gaudi::Property< double > m_WinPhi_EC_g4
Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)
Definition: muComb.h:193
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
Muon::nsw::STGTPSegments::MergedSegmentProperty::phiID
@ phiID
xAOD::L2StandAloneMuon_v2::etaMS
float etaMS() const
Get the eta at muon spectrometer.
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
muCombUtil::getDeltaEta
double getDeltaEta(double eta1, double eta2)
Get DeltaEta.
Definition: muCombUtil.cxx:352
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::etaMS
setSAddress etaMS
Definition: L2StandAloneMuon_v1.cxx:116
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
xAOD::L2StandAloneMuon_v2::isRpcFailure
int isRpcFailure() const
Get flag to see if RPC is properly read.
muComb::m_PtMinTrk
Gaudi::Property< double > m_PtMinTrk
Min Pt to select the ID track for matching.
Definition: muComb.h:142
xAOD::L2CombinedMuon_v1::setPhi
void setPhi(float phi)
Set the azimuthal angle ( ) of the muon.
Definition: L2CombinedMuon_v1.cxx:89
muComb::m_Chi2Max
Gaudi::Property< double > m_Chi2Max
Max Chi2 for the combined muon in LUT backextrapolator (Barrel)
Definition: muComb.h:159
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
xAOD::L2StandAloneMuon_v2
Class describing standalone muons reconstructed in the LVL2 trigger.
Definition: L2StandAloneMuon_v2.h:36
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::L2StandAloneMuon_v2::deltaPt
float deltaPt() const
Get error of pT.
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
muComb::m_WeightPhi
Gaudi::Property< double > m_WeightPhi
Scale factor for the Phi matching window in LUT backextrapolator.
Definition: muComb.h:181
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
muComb::m_Chi2Max_TS
Gaudi::Property< double > m_Chi2Max_TS
Max Chi2 for the combined muon in LUT backextrapolator (Trigger Stations)
Definition: muComb.h:171
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
AthCommonDataStore::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::TrackParticle_v1::z0
float z0() const
Returns the parameter.
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
xAOD::L2MuonParameters::BarrelInner
@ BarrelInner
Inner station in the barrel spectrometer.
Definition: TrigMuonDefs.h:16
muComb::m_IDSCANRes_endcap4
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap4
Definition: muComb.h:214
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
muComb::m_Chi2Max_g4
Gaudi::Property< double > m_Chi2Max_g4
Max Chi2 for the combined muon in LUT backextrapolator (Barrel)
Definition: muComb.h:189
xAOD::L2StandAloneMuon_v2::phiMS
float phiMS() const
Get the phi at muon spectrometer.
ExtrapolationResult::eta
double eta
Definition: muComb.h:40
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
xAOD::L2CombinedMuon_v1::setCharge
void setCharge(float value)
set seeding muon charge
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
muComb::mfMatch
int mfMatch(const xAOD::L2StandAloneMuon *feature, double, double, double, double, double &, double &, double &, double &, double &, int &) const
Definition: muComb.cxx:334
muCombUtil::getG4ExtPhiRes
double getG4ExtPhiRes(double pt, double eta)
Get parametrized Geant4 Phi resolution (extrapolated)
Definition: muCombUtil.cxx:317
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDetAccessor::qOverP
@ qOverP
perigee
Definition: InDetAccessor.h:35
MagField::AtlasFieldCache::toroidOn
bool toroidOn() const
muComb::m_Chi2Weight_g4
Gaudi::Property< double > m_Chi2Weight_g4
Scale factor for the Chi2 1/pt resolutions (MS and ID) (Barrel)
Definition: muComb.h:201
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
muComb::getExtrapolatedMuon
ExtrapolationResult getExtrapolatedMuon(const xAOD::L2StandAloneMuon *feature) const
Definition: muComb.cxx:131
muComb::m_IDSCANRes_endcap2
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap2
Definition: muComb.h:212
x
#define x
muComb::m_ChargeStrategy
Gaudi::Property< int > m_ChargeStrategy
muComb charge assignment strategy: 0: useMuFast 1: use ID 2: use resolution model
Definition: muComb.h:136
muComb::m_winPt
Gaudi::Property< double > m_winPt
max deltaPt for simpified matching
Definition: muComb.h:205
muComb::drptMatch
int drptMatch(double, double, double, double, double, double, int, double &, double &, double &, double &, double &) const
Definition: muComb.cxx:74
muComb::m_winDR
Gaudi::Property< double > m_winDR
max deltaR for simplified matching
Definition: muComb.h:207
muCombUtil::getDeltaPhi
double getDeltaPhi(double phi1, double phi2)
Get DeltaPhi.
Definition: muCombUtil.cxx:345
xAOD::L2StandAloneMuon_v2::deltaEta
float deltaEta() const
Get error of eta.
xAOD::L2CombinedMuon_v1::setEta
void setEta(float eta)
Set the pseudorapidity ( ) of the muon.
Definition: L2CombinedMuon_v1.cxx:82
python.utils.AtlRunQueryTimer.timer
def timer(name, disabled=False)
Definition: AtlRunQueryTimer.py:86
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
xAOD::L2StandAloneMuon_v2::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
ExtrapolationResult::isTgcFailure
int isTgcFailure
Definition: muComb.h:48
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
xAOD::L2CombinedMuon_v1
Class describing combined muon reconstructed in the LVL2 trigger.
Definition: L2CombinedMuon_v1.h:41
muCombUtil::getG4ExtEtaRes
double getG4ExtEtaRes(double pt, double eta)
Get parametrized Geant4 Eta resolution (extrapolated)
Definition: muCombUtil.cxx:288
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
muComb::m_Chi2Max_EC_g4
Gaudi::Property< double > m_Chi2Max_EC_g4
Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)
Definition: muComb.h:195
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
xAOD::L2CombinedMuon_v1::setMatchFlag
void setMatchFlag(int value)
set algorithm match flag
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
xAOD::L2StandAloneMuon_v2::superPointR
float superPointR(int chamber) const
Get the measured radious of the muon in one particular super point.
Definition: L2StandAloneMuon_v2.cxx:179
efficiency
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition: dependence.cxx:128
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthReentrantAlgorithm::AthReentrantAlgorithm
AthReentrantAlgorithm()
Default constructor:
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ExtrapolationResult::ptinv
double ptinv
Definition: muComb.h:39
muComb::m_outputCBmuonCollKey
SG::WriteHandleKey< xAOD::L2CombinedMuonContainer > m_outputCBmuonCollKey
Definition: muComb.h:78
muComb::m_WinEta_EC_g4
Gaudi::Property< double > m_WinEta_EC_g4
Number of sigmas for the Eta matching window LUT backextrapolator (EndCaps)
Definition: muComb.h:191
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
muCombUtil::getCombinedAverage
double getCombinedAverage(double p1, double sp1, double p2, double sp2)
Get weighted mean.
Definition: muCombUtil.cxx:362
xAOD::L2StandAloneMuon_v2::sAddress
int sAddress() const
Get the station address of the muon.
z
#define z
Trk::theta
@ theta
Definition: ParamDefs.h:66
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
muComb::m_WinEta_FE
Gaudi::Property< double > m_WinEta_FE
Number of sigmas for the Eta matching window LUT backextrapolator (MS Feet region)
Definition: muComb.h:173
muComb::m_WinPhi_EC
Gaudi::Property< double > m_WinPhi_EC
Number of sigmas for the Phi matching window LUT backextrapolator (EndCaps)
Definition: muComb.h:163
muComb::m_WinPhi
Gaudi::Property< double > m_WinPhi
Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)
Definition: muComb.h:157
xAOD::L2StandAloneMuon_v2::zMS
float zMS() const
Get the Z at muon spectrometer.
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:538
muCombUtil::getIDSCANRes
double getIDSCANRes(std::vector< double > barrelvec, std::vector< double > ec1vec, std::vector< double > ec2vec, std::vector< double > ec3vec, std::vector< double > ec4vec, double pt_id, double eta_id)
Get parametrized IDSCAN 1/pt resolution.
Definition: muCombUtil.cxx:190
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:523
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
muComb::m_AlgoStrategy
Gaudi::Property< int > m_AlgoStrategy
muComb matching strategy: 0: auto select best option 1: simplified R,(Pt) matching
Definition: muComb.h:129
muComb::m_IDSCANRes_endcap3
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap3
Definition: muComb.h:213
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
ExtrapolationResult::phi
double phi
Definition: muComb.h:41
muComb::m_WinPhi_g4
Gaudi::Property< double > m_WinPhi_g4
Number of sigmas for the Phi matching window LUT backextrapolator (Barrel)
Definition: muComb.h:187
MagField::AtlasFieldCache::solenoidOn
bool solenoidOn() const
status of the magnets
AthReentrantAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthReentrantAlgorithm.h:153
ExtrapolationResult::status
int status
Definition: muComb.h:49
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
ExtrapolationResult::isBarrel
bool isBarrel
Definition: muComb.h:46
xAOD::L2CombinedMuon_v1::setSigmaPt
void setSigmaPt(float value)
set sigma combined Pt
muCombUtil::getStdChi2
double getStdChi2(int &ndof, double eta1, double seta1, double phi1, double sphi1, double qOvpt1, double sqOvpt1, double eta2, double seta2, double phi2, double sphi2, double qOvpt2, double sqOvpt2, bool useAbsPt)
Get Std Chi2.
Definition: muCombUtil.cxx:401
muComb::m_EtaMaxTrk
Gaudi::Property< double > m_EtaMaxTrk
Max abs(eta) to select the ID track for matching.
Definition: muComb.h:144
muComb::g4Match
int g4Match(const ExtrapolationResult &extr, double, double, double, double, double, double, double, double &, double &, double &, double &, double &, int &) const
Definition: muComb.cxx:235
xAOD::L2MuonParameters::EndcapMiddle
@ EndcapMiddle
Middle station in the endcap spectrometer.
Definition: TrigMuonDefs.h:20
xAOD::TrackParticle_v1::qOverP
float qOverP() const
Returns the parameter.
xAOD::L2CombinedMuon_v1::setIdTrackLink
void setIdTrackLink(const ElementLink< xAOD::TrackParticleContainer > &link)
set ID track used to make the CB muon
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
muComb::m_assumeSolenoidOff
Gaudi::Property< bool > m_assumeSolenoidOff
flag to assume B_Solenoid=0 anyway
Definition: muComb.h:122
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
AthReentrantAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthReentrantAlgorithm.cxx:96
charge
double charge(const T &p)
Definition: AtlasPID.h:756
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
xAOD::L2CombinedMuon
L2CombinedMuon_v1 L2CombinedMuon
Define the latest version of the muon CB class.
Definition: L2CombinedMuon.h:15
xAOD::L2StandAloneMuon_v2::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
xAOD::L2CombinedMuon_v1::setMuSATrackLink
void setMuSATrackLink(const ElementLink< xAOD::L2StandAloneMuonContainer > &link)
set SA muon used to make the CB muon
xAOD::L2CombinedMuon_v1::setPt
void setPt(float pt)
Set the transverse momentum ( ) of the muon.
muComb::m_TrackParticleContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_TrackParticleContainerKey
Definition: muComb.h:67
muComb::m_WinEta_g4
Gaudi::Property< double > m_WinEta_g4
Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)
Definition: muComb.h:185
muComb::m_Chi2Max_EC
Gaudi::Property< double > m_Chi2Max_EC
Max Chi2 for the combined muon in LUT backextrapolator (EndCaps)
Definition: muComb.h:165
muComb::m_useBackExtrapolatorG4
Gaudi::Property< bool > m_useBackExtrapolatorG4
flag to switch between G4 and LUT based back-extrapolation
Definition: muComb.h:117
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
ExtrapolationResult
Definition: muComb.h:38
muComb::m_WinPhi_FE
Gaudi::Property< double > m_WinPhi_FE
Number of sigmas for the Phi matching window LUT backextrapolator (MS Feet region)
Definition: muComb.h:175
a
TList * a
Definition: liststreamerinfos.cxx:10
ExtrapolationResult::charge
double charge
Definition: muComb.h:45
muComb::m_UseAbsPt
Gaudi::Property< bool > m_UseAbsPt
Use Absolute value of the Pt in chi2 calculation (i.e.
Definition: muComb.h:151
y
#define y
h
muComb::m_Chi2Max_FE
Gaudi::Property< double > m_Chi2Max_FE
Max Chi2 for the combined muon in LUT backextrapolator (MS Feet region)
Definition: muComb.h:177
ExtrapolationResult::eeta
double eeta
Definition: muComb.h:43
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::L2MuonParameters::EndcapInner
@ EndcapInner
Inner station in the endcap spectrometer.
Definition: TrigMuonDefs.h:19
muComb::m_IDSCANRes_endcap1
Gaudi::Property< std::vector< double > > m_IDSCANRes_endcap1
Definition: muComb.h:211
muComb::m_WinPhi_TS
Gaudi::Property< double > m_WinPhi_TS
Number of sigmas for the Phi matching window LUT backextrapolator (Trigger Stations)
Definition: muComb.h:169
plotBeamSpotMon.mon
mon
Definition: plotBeamSpotMon.py:67
muComb::m_WinEta_TS
Gaudi::Property< double > m_WinEta_TS
Number of sigmas for the Eta matching window LUT backextrapolator (Trigger Stations)
Definition: muComb.h:167
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
muComb::m_IDSCANRes_barrel
Gaudi::Property< std::vector< double > > m_IDSCANRes_barrel
Definition: muComb.h:210
python.LArCondContChannels.isBarrel
isBarrel
Definition: LArCondContChannels.py:659
muComb::m_NdofMin
Gaudi::Property< int > m_NdofMin
Min Number of DOF to apply the chi2 cut on macthing based on LUT and G4 backextrapolators.
Definition: muComb.h:149
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
ExtrapolationResult::isRpcFailure
int isRpcFailure
Definition: muComb.h:47
xAOD::L2StandAloneMuon_v2::deltaPhi
float deltaPhi() const
Get error of phi.
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
xAOD::L2StandAloneMuon_v2::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
xAOD::L2CombinedMuon_v1::idTrack
const xAOD::TrackParticle * idTrack() const
Get the ID track as a bare pointer.
Definition: L2CombinedMuon_v1.cxx:119
muComb::m_WeightPhi_g4
Gaudi::Property< double > m_WeightPhi_g4
Scale factor for the Phi matching window in LUT backextrapolator.
Definition: muComb.h:199
xAOD::L2StandAloneMuon_v2::rMS
float rMS() const
Get the R at muon spectrometer.
muComb::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: muComb.h:83
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
muCombUtil::getCombinedAverageSigma
double getCombinedAverageSigma(double sp1, double sp2)
Get sigma of weighted mean.
Definition: muCombUtil.cxx:369
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:527
muComb::m_backExtrapolatorG4
ToolHandle< Trk::IExtrapolator > m_backExtrapolatorG4
Handle to the G4 backExtrapolator tool.
Definition: muComb.h:86
xAOD::L2CombinedMuon_v1::setErrorFlag
void setErrorFlag(int value)
set algorithm error flag
muCombUtil::getChi2
double getChi2(int &ndof, double ipt, double eta1, double seta1, double phi1, double sphi1, double ipt1, double sipt1, double eta2, double seta2, double phi2, double sphi2, double ipt2, double sipt2, bool useAbsPt)
Get OLD style (i.e. muFast time) Chi2.
Definition: muCombUtil.cxx:374
xAOD::L2StandAloneMuon_v2::superPointZ
float superPointZ(int chamber) const
Get the measured Z position of the muon in one particular super point.
Definition: L2StandAloneMuon_v2.cxx:187
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
xAOD::L2MuonParameters::BarrelMiddle
@ BarrelMiddle
Middle station in the barrel spectrometer.
Definition: TrigMuonDefs.h:17
ExtrapolationResult::ephi
double ephi
Definition: muComb.h:44
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
xAOD::L2StandAloneMuon_v2::isTgcFailure
int isTgcFailure() const
Get flag to see if TGC is properly read.
ExtrapolationResult::eptinv
double eptinv
Definition: muComb.h:42
Trk::phi0
@ phi0
Definition: ParamDefs.h:65
muComb::m_WeightEta_g4
Gaudi::Property< double > m_WeightEta_g4
Scale factor for the Eta matching window in LUT backextrapolator.
Definition: muComb.h:197
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
fitman.k
k
Definition: fitman.py:528
muComb::m_muonCollKey
SG::ReadHandleKey< xAOD::L2StandAloneMuonContainer > m_muonCollKey
Definition: muComb.h:72
ServiceHandle< ICondSvc >
muComb::m_WinEta
Gaudi::Property< double > m_WinEta
Number of sigmas for the Eta matching window LUT backextrapolator (Barrel)
Definition: muComb.h:155