ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Muon::MuonSystemExtensionTool Class Reference

#include <MuonSystemExtensionTool.h>

Inheritance diagram for Muon::MuonSystemExtensionTool:
Collaboration diagram for Muon::MuonSystemExtensionTool:

Public Types

typedef std::vector< MuonLayerSurfaceSurfaceVec
 

Public Member Functions

 MuonSystemExtensionTool (const std::string &type, const std::string &name, const IInterface *parent)
 Default AlgTool functions. More...
 
virtual ~MuonSystemExtensionTool ()=default
 
StatusCode initialize () override
 
bool muonSystemExtension (const EventContext &ctx, SystemExtensionCache &cache) const override
 get muon system extension More...
 
bool muonLayerInterSections (const EventContext &ctx, const MuonCombined::TagBase &cmb_tag, SystemExtensionCache &cache) const override
 Constructs the layer intersections from a primary muon track using the track states in the muon spectrometer. More...
 
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 sysInitialize () override
 Perform system initialization for an algorithm. 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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool and IAlgTool interface methods. More...
 

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

bool initializeGeometry ()
 initialize geometry More...
 
bool initializeGeometryBarrel (int sector, const Amg::Transform3D &sectorRotation)
 
bool initializeGeometryEndcap (int sector, MuonStationIndex::DetectorRegionIndex regionIndex, const Amg::Transform3D &sectorRotation)
 
SurfaceVec getSurfacesForIntersection (const Trk::TrackParameters &muonEntryPars, const SystemExtensionCache &cache) const
 get surfaces to be intersected for a given start parameters More...
 
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

ToolHandle< Trk::IParticleCaloExtensionToolm_caloExtensionTool
 
ToolHandle< Trk::IExtrapolatorm_extrapolator {this,"Extrapolator",""}
 
PublicToolHandle< MuonEDMPrinterToolm_printer {this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"}
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
ServiceHandle< IMuonEDMHelperSvcm_edmHelperSvc
 
std::array< std::array< SurfaceVec, 16 >, MuonStationIndex::DetectorRegionIndexMaxm_referenceSurfaces {}
 reference surfaces per region and sector More...
 
MuonSectorMapping m_sectorMapping
 sector mapping helper 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

Definition at line 32 of file MuonSystemExtensionTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ SurfaceVec

Definition at line 34 of file MuonSystemExtensionTool.h.

Constructor & Destructor Documentation

◆ MuonSystemExtensionTool()

Muon::MuonSystemExtensionTool::MuonSystemExtensionTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Default AlgTool functions.

Definition at line 38 of file MuonSystemExtensionTool.cxx.

38  :
40  declareInterface<IMuonSystemExtensionTool>(this);
41  }

◆ ~MuonSystemExtensionTool()

virtual Muon::MuonSystemExtensionTool::~MuonSystemExtensionTool ( )
virtualdefault

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ getSurfacesForIntersection()

MuonSystemExtensionTool::SurfaceVec Muon::MuonSystemExtensionTool::getSurfacesForIntersection ( const Trk::TrackParameters muonEntryPars,
const SystemExtensionCache cache 
) const
private

get surfaces to be intersected for a given start parameters

Look whether one of the sectors has actually a recorded hit

Definition at line 231 of file MuonSystemExtensionTool.cxx.

232  {
233  // if in endcaps pick endcap surfaces
234  const double eta = muonEntryPars.position().eta();
236  if (eta < -1.05) regionIndex = MuonStationIndex::EndcapC;
237  if (eta > 1.05) regionIndex = MuonStationIndex::EndcapA;
238 
239  // in barrel pick primary sector
240  const double phi = muonEntryPars.position().phi();
241  std::vector<int> sectors;
242  m_sectorMapping.getSectors(phi, sectors);
243  SurfaceVec surfaces;
245  if (cache.useHitSectors) {
246  const auto map_itr = cache.sectorsWithHits->find(regionIndex);
247  if (map_itr == cache.sectorsWithHits->end()) {
248  ATH_MSG_DEBUG("No hits in detector region " << Muon::MuonStationIndex::regionName(regionIndex));
249  return surfaces;
250  }
251  std::vector<int>::const_iterator sec_itr = std::find_if(
252  sectors.begin(), sectors.end(), [&map_itr](const int& sector) -> bool { return map_itr->second.count(sector); });
253  if (sec_itr == sectors.end()) {
254  ATH_MSG_DEBUG("No hits found for sector " << m_sectorMapping.getSector(phi) << " in MuonStation "
255  << Muon::MuonStationIndex::regionName(regionIndex));
256  return surfaces;
257  }
258  }
259 
260  for (const int sector : sectors) {
261  surfaces.insert(surfaces.end(), m_referenceSurfaces[regionIndex][sector - 1].begin(),
262  m_referenceSurfaces[regionIndex][sector - 1].end());
263  }
264  std::stable_sort(surfaces.begin(), surfaces.end(),
265  [&muonEntryPars](const MuonLayerSurface& s1, const MuonLayerSurface& s2) {
266  return std::abs(pathAlongPars(muonEntryPars,s1.surfacePtr->center())) <
267  std::abs(pathAlongPars(muonEntryPars,s2.surfacePtr->center()));
268 
269  });
270  if (msgLvl(MSG::VERBOSE)) {
271  for (auto& s1 : surfaces) {
273  <<", center: "<<Amg::toString(s1.surfacePtr->center())
274  <<", pathAlongPars "<<pathAlongPars(muonEntryPars,s1.surfacePtr->center())
275  <<std::endl<<(*s1.surfacePtr));
276 
277  }
278  }
279  return surfaces;
280  }

◆ initialize()

StatusCode Muon::MuonSystemExtensionTool::initialize ( )
override

Definition at line 43 of file MuonSystemExtensionTool.cxx.

43  {
44  ATH_CHECK(m_caloExtensionTool.retrieve());
45  ATH_CHECK(m_extrapolator.retrieve());
46  ATH_CHECK(m_idHelperSvc.retrieve());
47  if (!initializeGeometry()) return StatusCode::FAILURE;
48 
49  return StatusCode::SUCCESS;
50  }

◆ initializeGeometry()

bool Muon::MuonSystemExtensionTool::initializeGeometry ( )
private

initialize geometry

Definition at line 52 of file MuonSystemExtensionTool.cxx.

52  {
53  // initialize reference surfaces hash vectors per region and sector
54 
55  // first build the barrel, we need different reference planes for all sectors
56  ATH_MSG_DEBUG("Initializing barrel ");
57  for (unsigned int sector = 1; sector <= 16; ++sector) {
58  // get rotation into sector frame
59  double sectorPhi = m_sectorMapping.sectorPhi(sector);
60  const Amg::Transform3D sectorRotation(Amg::getRotateZ3D(sectorPhi));
61  if (!initializeGeometryBarrel(sector, sectorRotation)) return false;
62  if (!initializeGeometryEndcap(sector, MuonStationIndex::EndcapA, sectorRotation)) return false;
63  if (!initializeGeometryEndcap(sector, MuonStationIndex::EndcapC, sectorRotation)) return false;
64  }
65 
66  return true;
67  }

◆ initializeGeometryBarrel()

bool Muon::MuonSystemExtensionTool::initializeGeometryBarrel ( int  sector,
const Amg::Transform3D sectorRotation 
)
private

Definition at line 105 of file MuonSystemExtensionTool.cxx.

105  {
106  MuonChamberLayerDescription chamberLayerDescription;
107 
109  constexpr double xToZRotation = -M_PI_2;
110 
111  for (unsigned int stationLayer = MuonStationIndex::BI; stationLayer <= MuonStationIndex::BE; ++stationLayer) {
112  // skip BEE if in small sectors, not installed
113  if (stationLayer == MuonStationIndex::BE && m_sectorMapping.isSmall(sector)) continue;
114 
115  // calculate reference position from radial position of the laeyr
117  MuonChamberLayerDescriptor layerDescriptor = chamberLayerDescription.getDescriptor(sector, MuonStationIndex::Barrel, layer);
118  Amg::Vector3D positionInSector(layerDescriptor.referencePosition, 0., 0.);
119  Amg::Vector3D globalPosition = sectorRotation * positionInSector;
120 
121  // reference transform + surface
122  Amg::Transform3D trans(sectorRotation * Amg::getRotateY3D(xToZRotation));
123  trans.pretranslate(globalPosition);
124  std::unique_ptr<Trk::PlaneSurface> surface = std::make_unique<Trk::PlaneSurface>(trans);
125  // sanity checks
126  if (msgLvl(MSG::VERBOSE)) {
127  double sectorPhi = m_sectorMapping.sectorPhi(sector);
128  ATH_MSG_VERBOSE(" sector " << sector << " layer " << MuonStationIndex::layerName(layer) << " phi " << sectorPhi
129  << " ref theta " << globalPosition.theta() << " phi " << globalPosition.phi() << " r "
130  << globalPosition.perp() << " pos " << Amg::toString(globalPosition)
131  << " lpos3d " << Amg::toString(surface->transform().inverse() * globalPosition)
132  << " normal: " << Amg::toString(surface->normal()));
133  }
134  MuonLayerSurface data(std::move(surface), sector, MuonStationIndex::Barrel, layer);
135  surfaces.push_back(std::move(data));
136 
137 
138  }
139  return true;
140  }

◆ initializeGeometryEndcap()

bool Muon::MuonSystemExtensionTool::initializeGeometryEndcap ( int  sector,
MuonStationIndex::DetectorRegionIndex  regionIndex,
const Amg::Transform3D sectorRotation 
)
private

Definition at line 69 of file MuonSystemExtensionTool.cxx.

70  {
71  ATH_MSG_DEBUG("Initializing endcap: sector " << sector << " " << MuonStationIndex::regionName(regionIndex));
72 
73  SurfaceVec& surfaces = m_referenceSurfaces[regionIndex][sector - 1];
74  MuonChamberLayerDescription chamberLayerDescription;
75 
76  static const std::vector<MuonStationIndex::StIndex> layers = {MuonStationIndex::EI, MuonStationIndex::EE, MuonStationIndex::EM,
78 
79  for (const MuonStationIndex::StIndex& stLayer : layers) {
80  // calculate reference position from radial position of the layer
82  MuonChamberLayerDescriptor layerDescriptor = chamberLayerDescription.getDescriptor(sector, regionIndex, layer);
83  // reference transform + surface
84  Amg::Transform3D trans{Amg::getTranslateZ3D(layerDescriptor.referencePosition) *sectorRotation}; //*Amg::AngleAxis3D(xToZRotation,Amg::Vector3D(0.,1.,0.)
85  std::unique_ptr<Trk::PlaneSurface> surface = std::make_unique<Trk::PlaneSurface>(trans);
86  // sanity checks
87  if (msgLvl(MSG::VERBOSE)) {
88  ATH_MSG_VERBOSE("initializeGeometryEndcap() -- sector " << sector << " layer " << MuonStationIndex::layerName(layer) << " surface "
89  <<Amg::toString(surface->transform())
90  << " center " << Amg::toString(surface->center()) << " theta " << surface->normal().theta()
91  << " normal: " <<Amg::toString(surface->normal()));
92 
93 
94  }
95 
96  MuonLayerSurface data(std::move(surface), sector, regionIndex, layer);
97  surfaces.push_back(std::move(data));
98 
99 
100  }
101  ATH_MSG_VERBOSE(" Total number of surfaces " << surfaces.size());
102  return true;
103  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

static const InterfaceID& Muon::IMuonSystemExtensionTool::interfaceID ( )
inlinestaticinherited

AlgTool and IAlgTool interface methods.

Definition at line 35 of file IMuonSystemExtensionTool.h.

35  {
36  static const InterfaceID IID_IMuonSystemExtensionTool("Muon::IMuonSystemExtensionTool", 1, 0);
37  return IID_IMuonSystemExtensionTool;
38  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::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< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

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

◆ muonLayerInterSections()

bool Muon::MuonSystemExtensionTool::muonLayerInterSections ( const EventContext &  ctx,
const MuonCombined::TagBase cmb_tag,
SystemExtensionCache cache 
) const
overridevirtual

Constructs the layer intersections from a primary muon track using the track states in the muon spectrometer.

Get the proper surfaces for the intersections

The parameters are not muon paramaters or the parameters are before the entrance parameters

The track parameters belong the same surface. Do nothing

Check whether there're measurement parameters that are closer to the target surface

Implements Muon::IMuonSystemExtensionTool.

Definition at line 281 of file MuonSystemExtensionTool.cxx.

283  {
284 
285  const Trk::Track* cmbTrk = cmbTag.primaryTrack();
286  if (!cmbTrk){
287  ATH_MSG_WARNING("A combined tag without any track? Please check "<<cmbTag.toString());
288  return false;
289  }
291  const Trk::TrackParameters* entryPars = cache.candidate->getCaloExtension()->muonEntryLayerIntersection();
292  std::vector<const Trk::TrackStateOnSurface*> cmbParVec{};
293 
294  ATH_MSG_VERBOSE("Calo entry parameters "<<m_printer->print(*entryPars));
295  std::vector<Muon::MuonSystemExtension::Intersection> intersections{};
296  Muon::MuonLayerSurface lastSurf{};
297 
298  const Trk::TrackStates::const_iterator end_itr = cmbTrk->trackStateOnSurfaces()->end();
299  for (Trk::TrackStates::const_iterator itr = cmbTrk->trackStateOnSurfaces()->begin(); itr != end_itr; ++itr) {
300  const Trk::TrackStateOnSurface* msTSOS{*itr};
301  ATH_MSG_VERBOSE("Track state "<<m_printer->print(*msTSOS));
302 
303  if (!msTSOS->measurementOnTrack()) {
304  continue;
305  }
306  const Identifier measId = m_edmHelperSvc->getIdentifier(*msTSOS->measurementOnTrack());
307  const Trk::TrackParameters& msPars{*msTSOS->trackParameters()};
309  if (!m_idHelperSvc->isMuon(measId) || pathAlongPars(msPars, msPars.position() - entryPars->position())< 0.){
310  continue;
311  }
312 
313  Muon::MuonStationIndex::DetectorRegionIndex regionIdx = m_idHelperSvc->regionIndex(measId);
314  Muon::MuonStationIndex::LayerIndex layerIdx = m_idHelperSvc->layerIndex(measId);
315  if (layerIdx == Muon::MuonStationIndex::BarrelExtended) {
318  }
319 
320  const int sector = m_sectorMapping.getSector(msTSOS->measurementOnTrack()->associatedSurface().center().phi());
321 
323  if (lastSurf.layerIndex == layerIdx && lastSurf.regionIndex == regionIdx && lastSurf.sector == sector) {
324  continue;
325  }
326  const SurfaceVec& refSurfaces = m_referenceSurfaces[regionIdx][sector - 1];
327  SurfaceVec::const_iterator surfItr = std::find_if(refSurfaces.begin(), refSurfaces.end(),
328  [&layerIdx](const MuonLayerSurface& surf){
329  return surf.layerIndex == layerIdx;
330  });
331  if (surfItr == refSurfaces.end()) {
332  ATH_MSG_WARNING("Failed to find a reference surface matching to combined parameters "<<m_printer->print(*msTSOS)
333  <<", sector: "<<sector <<", layer: "<<Muon::MuonStationIndex::layerName(layerIdx)
334  <<", region index: "<<Muon::MuonStationIndex::regionName(regionIdx));
335  continue;
336  }
337  lastSurf = (*surfItr);
338  const Trk::Surface& target{*lastSurf.surfacePtr};
339 
341  for (Trk::TrackStates::const_iterator closePars = itr+1; closePars != end_itr; ++closePars) {
342  const Trk::TrackStateOnSurface * tsosInChamb{*closePars};
343  if (!tsosInChamb->measurementOnTrack()) continue;
344 
345  const Trk::TrackParameters& chPars{*tsosInChamb->trackParameters()};
346  if (std::abs(pathAlongPars(chPars, chPars.position() - target.center())) >
347  std::abs(pathAlongPars(*msTSOS->trackParameters(),
348  msTSOS->trackParameters()->position() - target.center()))) {
349  break;
350  }
351  itr = closePars -1;
352  msTSOS = *itr;
353  }
354 
355  std::unique_ptr<Trk::TrackParameters> exPars{m_extrapolator->extrapolate(ctx, *msTSOS->trackParameters(),
357  if (!exPars) {
358  ATH_MSG_VERBOSE(__LINE__<<" - Failed to extrapolate track @ "<<m_printer->print(*msTSOS)
359  <<", sector: "<<sector
360  <<", layer: "<<Muon::MuonStationIndex::layerName(layerIdx)
361  <<", region index: "<<Muon::MuonStationIndex::regionName(regionIdx)
362  <<" to surface "<<std::endl<<target<<std::endl
363  <<", sector: "<<lastSurf.sector
364  <<", layer: "<<Muon::MuonStationIndex::layerName(lastSurf.layerIndex)
365  <<", region index: "<<Muon::MuonStationIndex::regionName(lastSurf.regionIndex)
366  <<" pathAlongPars "<<pathAlongPars(*msTSOS->trackParameters(), target.center())
367  <<", dir: "<<Amg::toString(msTSOS->trackParameters()->momentum().unit()));
368  continue;
369  }
370  intersections.emplace_back(std::move(exPars), lastSurf);
371 
372  }
373 
374  ATH_MSG_VERBOSE("Selected "<<intersections.size()<<" intersections");
375 
376  if (intersections.empty()) {
377  ATH_MSG_DEBUG("Failed to find the intersections for the combined track");
378  return false;
379  }
380  cache.candidate->setExtension(std::make_unique<MuonSystemExtension>(entryPars, std::move(intersections)));
381 
382  return true;
383  }

◆ muonSystemExtension()

bool Muon::MuonSystemExtensionTool::muonSystemExtension ( const EventContext &  ctx,
SystemExtensionCache cache 
) const
overridevirtual

get muon system extension

Get the calo extension

Implements Muon::IMuonSystemExtensionTool.

Definition at line 142 of file MuonSystemExtensionTool.cxx.

142  {
144  if (!cache.candidate->getCaloExtension()) {
145  if (!cache.extensionContainer) {
146  std::unique_ptr<Trk::CaloExtension> caloExtension =
147  m_caloExtensionTool->caloExtension(ctx, cache.candidate->indetTrackParticle());
148  if (!caloExtension || !caloExtension->muonEntryLayerIntersection()) {
149  ATH_MSG_VERBOSE("Failed to create the calo extension for "<<cache.candidate->toString());
150  return false;
151  }
152  cache.candidate->setExtension(caloExtension);
153  } else {
154  const Trk::CaloExtension* caloExtension = m_caloExtensionTool->caloExtension(cache.candidate->indetTrackParticle(),
155  *cache.extensionContainer);
156  if (!caloExtension || !caloExtension->muonEntryLayerIntersection()) {
157  ATH_MSG_VERBOSE("Failed to create the calo extension for "<<cache.candidate->toString());
158  return false;
159  }
160  cache.candidate->setExtension(caloExtension);
161  }
162  }
163 
164  if (!cache.createSystemExtension) {
165  ATH_MSG_VERBOSE("No system extension is required for "<<cache.candidate->toString());
166  return true;
167  }
168  // get entry parameters, use it as current parameter for the extrapolation
169  const Trk::TrackParameters* currentPars = cache.candidate->getCaloExtension()->muonEntryLayerIntersection();
170 
171  // get reference surfaces
172  ATH_MSG_VERBOSE(" getSurfacesForIntersection " << currentPars);
173  SurfaceVec surfaces = getSurfacesForIntersection(*currentPars, cache);
174 
175  // store intersections
176  std::vector<MuonSystemExtension::Intersection> intersections;
177 
178  // garbage collection
179  std::vector<std::shared_ptr<Trk::TrackParameters> > trackParametersVec;
180 
181  // loop over reference surfaces
182  for (const Muon::MuonLayerSurface& it : surfaces) {
183  // extrapolate to next layer
184  const Trk::Surface& surface = *it.surfacePtr;
185  ATH_MSG_VERBOSE(" startPars: "<<m_printer->print(*currentPars));
186  ATH_MSG_VERBOSE(" destination: sector " << it.sector << " " << MuonStationIndex::regionName(it.regionIndex) << " "
187  << MuonStationIndex::layerName(it.layerIndex) << " phi " << surface.center().phi()
188  << " r " << surface.center().perp() << " z " << surface.center().z());
189 
190  std::unique_ptr<Trk::TrackParameters> exPars{m_extrapolator->extrapolate(ctx, *currentPars, surface,
191  Trk::alongMomentum, false, Trk::muon)};
192  if (!exPars) {
193  ATH_MSG_VERBOSE("extrapolation failed, trying next layer ");
194  continue;
195  }
196  ATH_MSG_DEBUG("Extrapolated in event "<<ctx.eventID().event_number()<<" track @ "<<m_printer->print(*exPars));
197 
198  // reject intersections with very big uncertainties (parallel to surface)
199  const double sigma_lx = Amg::error(*exPars->covariance(), Trk::locX);
200  const double sigma_ly = Amg::error(*exPars->covariance(), Trk::locY);
201  if (!Amg::hasPositiveDiagElems(*exPars->covariance()) || std::max(sigma_lx, sigma_ly) > 1. * Gaudi::Units::meter){
202  ATH_MSG_DEBUG("Reject bad extrapolation "<<m_printer->print(*exPars));
203  continue;
204  }
205 
206  // create shared pointer and add to garbage collection
207  std::shared_ptr<Trk::TrackParameters> sharedPtr{std::move(exPars)};
208  trackParametersVec.emplace_back(sharedPtr);
209 
210  intersections.emplace_back(sharedPtr, it);
211  constexpr double TenCm = 10. * Gaudi::Units::cm;
212  if(std::hypot(sigma_lx, sigma_ly) < std::max(TenCm, 10. * std::hypot(Amg::error(*currentPars->covariance(), Trk::locX),
213  Amg::error(*currentPars->covariance(), Trk::locY)))) {
214  // only update the parameters if errors don't blow up
215  currentPars = sharedPtr.get();
216  } else {
217  ATH_MSG_DEBUG("Extrapolation reached at "<<m_printer->print(*sharedPtr)<<" has larger uncertainties than "<<
218  m_printer->print(*currentPars));
219  }
220  }
221  ATH_MSG_DEBUG("Completed extrapolation: destinations " << surfaces.size() << " intersections " << intersections.size());
222  if (intersections.empty()){
223  ATH_MSG_DEBUG("No system extensions are made for "<<cache.candidate->toString()
224  <<" will accept the candidate: "<< (!cache.requireSystemExtension ? "si": "no"));
225  return !cache.requireSystemExtension;
226  }
227  cache.candidate->setExtension(std::make_unique<MuonSystemExtension>(cache.candidate->getCaloExtension()->muonEntryLayerIntersection(),
228  std::move(intersections)));
229  return true;
230  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::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  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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_caloExtensionTool

ToolHandle<Trk::IParticleCaloExtensionTool> Muon::MuonSystemExtensionTool::m_caloExtensionTool
private
Initial value:
{
this,
"ParticleCaloExtensionTool",
"Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool",
}

Definition at line 58 of file MuonSystemExtensionTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_edmHelperSvc

ServiceHandle<IMuonEDMHelperSvc> Muon::MuonSystemExtensionTool::m_edmHelperSvc
private
Initial value:
{this,"edmHelper","Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface"}

Definition at line 69 of file MuonSystemExtensionTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> Muon::MuonSystemExtensionTool::m_extrapolator {this,"Extrapolator",""}
private

Definition at line 63 of file MuonSystemExtensionTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::MuonSystemExtensionTool::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 67 of file MuonSystemExtensionTool.h.

◆ m_printer

PublicToolHandle<MuonEDMPrinterTool> Muon::MuonSystemExtensionTool::m_printer {this, "Printer", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"}
private

Definition at line 65 of file MuonSystemExtensionTool.h.

◆ m_referenceSurfaces

std::array<std::array<SurfaceVec, 16> , MuonStationIndex::DetectorRegionIndexMax > Muon::MuonSystemExtensionTool::m_referenceSurfaces {}
private

reference surfaces per region and sector

Definition at line 74 of file MuonSystemExtensionTool.h.

◆ m_sectorMapping

MuonSectorMapping Muon::MuonSystemExtensionTool::m_sectorMapping
private

sector mapping helper

Definition at line 77 of file MuonSystemExtensionTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
Muon::MuonStationIndex::BE
@ BE
Definition: MuonStationIndex.h:25
test_pyathena.eta
eta
Definition: test_pyathena.py:10
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
Muon::MuonSystemExtensionTool::m_edmHelperSvc
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuonSystemExtensionTool.h:69
Amg::hasPositiveDiagElems
bool hasPositiveDiagElems(const AmgSymMatrix(N) &mat)
Returns true if all diagonal elements of the covariance matrix are finite aka sane in the above defin...
Definition: EventPrimitivesCovarianceHelpers.h:96
Muon::MuonStationIndex::BarrelExtended
@ BarrelExtended
EE.
Definition: MuonStationIndex.h:42
Muon::MuonStationIndex::EndcapA
@ EndcapA
Definition: MuonStationIndex.h:49
Muon::MuonStationIndex::Inner
@ Inner
Definition: MuonStationIndex.h:40
Trk::locX
@ locX
Definition: ParamDefs.h:37
Trk::locY
@ locY
local cartesian
Definition: ParamDefs.h:38
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
Muon::MuonSystemExtensionTool::initializeGeometryEndcap
bool initializeGeometryEndcap(int sector, MuonStationIndex::DetectorRegionIndex regionIndex, const Amg::Transform3D &sectorRotation)
Definition: MuonSystemExtensionTool.cxx:69
Trk::CaloExtension
Tracking class to hold the extrapolation from a particle from the ID to the muon system (or the other...
Definition: CaloExtension.h:18
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
Muon::MuonStationIndex::EO
@ EO
Definition: MuonStationIndex.h:26
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::Track::trackStateOnSurfaces
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Muon::MuonSystemExtensionTool::getSurfacesForIntersection
SurfaceVec getSurfacesForIntersection(const Trk::TrackParameters &muonEntryPars, const SystemExtensionCache &cache) const
get surfaces to be intersected for a given start parameters
Definition: MuonSystemExtensionTool.cxx:231
Muon::MuonSectorMapping::getSectors
void getSectors(double phi, std::vector< int > &sectors) const
returns the main sector plus neighboring if the phi position is in an overlap region
Definition: MuonSectorMapping.h:97
Amg::getTranslateZ3D
Amg::Transform3D getTranslateZ3D(const double Z)
: Returns a shift transformation along the z-axis
Definition: GeoPrimitivesHelpers.h:285
Muon::MuonSystemExtensionTool::m_sectorMapping
MuonSectorMapping m_sectorMapping
sector mapping helper
Definition: MuonSystemExtensionTool.h:77
Muon::MuonStationIndex::LayerIndex
LayerIndex
enum to classify the different layers in the muon spectrometer
Definition: MuonStationIndex.h:38
module_driven_slicing.layers
layers
Definition: module_driven_slicing.py:114
skel.it
it
Definition: skel.GENtoEVGEN.py:396
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
Muon::MuonSystemExtensionTool::initializeGeometry
bool initializeGeometry()
initialize geometry
Definition: MuonSystemExtensionTool.cxx:52
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
Muon::MuonStationIndex::BI
@ BI
Definition: MuonStationIndex.h:25
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Trk::Surface::center
const Amg::Vector3D & center() const
Returns the center position of the Surface.
Muon::MuonSystemExtensionTool::initializeGeometryBarrel
bool initializeGeometryBarrel(int sector, const Amg::Transform3D &sectorRotation)
Definition: MuonSystemExtensionTool.cxx:105
Trk::CaloExtension::muonEntryLayerIntersection
const TrackParameters * muonEntryLayerIntersection() const
access to intersection with the muon entry layer return NULL if the intersection failed
Definition: CaloExtension.h:70
std::stable_sort
void stable_sort(std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Compare comp)
Specialization of stable_sort for DataVector/List.
Definition: DVL_algorithms.h:711
Muon::MuonSectorMapping::getSector
int getSector(double phi) const
returns the sector corresponding to the phi position
Definition: MuonSectorMapping.h:86
DetType::Barrel
@ Barrel
Definition: DetType.h:14
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Amg::getRotateZ3D
Amg::Transform3D getRotateZ3D(double angle)
get a rotation transformation around Z-axis
Definition: GeoPrimitivesHelpers.h:270
Muon::MuonSystemExtensionTool::SurfaceVec
std::vector< MuonLayerSurface > SurfaceVec
Definition: MuonSystemExtensionTool.h:34
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
Muon::MuonStationIndex::regionName
static const std::string & regionName(DetectorRegionIndex index)
convert DetectorRegionIndex into a string
Definition: MuonStationIndex.cxx:176
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
python.SystemOfUnits.meter
int meter
Definition: SystemOfUnits.py:61
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Muon::MuonLayerSurface
types
Definition: MuonLayerSurface.h:15
Muon::MuonStationIndex::EI
@ EI
Definition: MuonStationIndex.h:26
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
Muon::MuonStationIndex::Barrel
@ Barrel
Definition: MuonStationIndex.h:49
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
test_pyathena.parent
parent
Definition: test_pyathena.py:15
Trk::Surface::normal
virtual const Amg::Vector3D & normal() const
Returns the normal vector of the Surface (i.e.
Muon::MuonSectorMapping::sectorPhi
double sectorPhi(int sector) const
returns the centeral phi position of a sector in radians
Definition: MuonSectorMapping.h:81
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::MuonStationIndex::layerName
static const std::string & layerName(LayerIndex index)
convert LayerIndex into a string
Definition: MuonStationIndex.cxx:192
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
Trk::muon
@ muon
Definition: ParticleHypothesis.h:28
Muon::MuonStationIndex::toLayerIndex
static LayerIndex toLayerIndex(ChIndex index)
convert ChIndex into LayerIndex
Definition: MuonStationIndex.cxx:56
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Muon::MuonSectorMapping::isSmall
static bool isSmall(int sector)
Definition: MuonSectorMapping.h:34
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
Muon::MuonStationIndex::DetectorRegionIndex
DetectorRegionIndex
enum to classify the different layers in the muon spectrometer
Definition: MuonStationIndex.h:47
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
Amg::error
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Definition: EventPrimitivesHelpers.h:40
Amg::getRotateY3D
Amg::Transform3D getRotateY3D(double angle)
get a rotation transformation around Y-axis
Definition: GeoPrimitivesHelpers.h:261
Muon::MuonSystemExtensionTool::m_referenceSurfaces
std::array< std::array< SurfaceVec, 16 >, MuonStationIndex::DetectorRegionIndexMax > m_referenceSurfaces
reference surfaces per region and sector
Definition: MuonSystemExtensionTool.h:74
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::MuonSystemExtensionTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition: MuonSystemExtensionTool.h:65
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Muon::MuonStationIndex::EndcapC
@ EndcapC
Definition: MuonStationIndex.h:49
copySelective.target
string target
Definition: copySelective.py:37
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
Muon::MuonSystemExtensionTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Definition: MuonSystemExtensionTool.h:63
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
Muon::MuonStationIndex::StIndex
StIndex
enum to classify the different station layers in the muon spectrometer
Definition: MuonStationIndex.h:23
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
Muon::MuonSystemExtensionTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuonSystemExtensionTool.h:67
Muon::MuonStationIndex::EE
@ EE
Definition: MuonStationIndex.h:26
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::MuonSystemExtensionTool::m_caloExtensionTool
ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtensionTool
Definition: MuonSystemExtensionTool.h:58
Muon::MuonStationIndex::EM
@ EM
Definition: MuonStationIndex.h:26
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
Identifier
Definition: IdentifierFieldParser.cxx:14