ATLAS Offline Software
Loading...
Searching...
No Matches
Muon::MuonInertMaterialBuilder Class Referencefinal

The Muon::MuonInertMaterialBuilder retrieves muon stations from Muon Geometry Tree. More...

#include <MuonInertMaterialBuilder.h>

Inheritance diagram for Muon::MuonInertMaterialBuilder:
Collaboration diagram for Muon::MuonInertMaterialBuilder:

Public Types

using DetachedVolVec = std::vector<std::unique_ptr<Trk::DetachedTrackingVolume>>

Public Member Functions

 MuonInertMaterialBuilder (const std::string &, const std::string &, const IInterface *)
 Constructor.
virtual ~MuonInertMaterialBuilder ()=default
 Destructor.
virtual StatusCode initialize () override
 AlgTool initailize method.
DetachedVolVec buildDetachedTrackingVolumes (bool blend=false) const
 Method returning cloned and positioned material objects.
DetachedVolVec buildDetachedTrackingVolumesImpl (const PVConstLink &treeTop, bool blend) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Types

using DetachedVolumeVecWithTrfs
 Method creating material object prototypes.

Protected Member Functions

DetachedVolumeVecWithTrfs buildDetachedTrackingVolumeTypes (const PVConstLink &top, bool blend) const
void getObjsForTranslation (const GeoVPhysVol *pv, const Amg::Transform3D &, std::vector< std::pair< const GeoVPhysVol *, std::vector< Amg::Transform3D > > > &vols) const
 Method extracting material objects from GeoModel tree.
void printInfo (const GeoVPhysVol *pv) const
 Dump from GeoModel tree.
void printChildren (const GeoVPhysVol *pv) const
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.
void glueVolumes (TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace) const
 protected method to glue two Volumes together input:

Static Protected Member Functions

static void setBoundarySurface (TrackingVolume &tvol, std::shared_ptr< BoundarySurface< TrackingVolume > > bsurf, BoundarySurfaceFace face)
 protected method to set the boundary surface of a tracking volume
static void setInsideVolume (TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol)
 protected method to set inside Volume of a BoundarySurface: input:
static void setInsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, const std::shared_ptr< BinnedArray< TrackingVolume > > &insidevolarray)
 protected method to set inside VolumeArray of a BoundarySurface: input:
static void setOutsideVolume (TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol)
 protected method to set outside Volume of a BoundarySurface: input:
static void setOutsideVolumeArray (TrackingVolume &tvol, BoundarySurfaceFace face, const std::shared_ptr< BinnedArray< TrackingVolume > > &outsidevolarray)
 protected method to set outside VolumeArray of a BoundarySurface: input:
static void confineVolume (TrackingVolume &tvol, TrackingVolume *outsidevol)
 protected method to confine (dense) volumes: input:

Protected Attributes

Gaudi::Property< bool > m_simplify
Gaudi::Property< bool > m_simplifyToLayers
Gaudi::Property< bool > m_debugMode
Gaudi::Property< bool > m_buildBT
Gaudi::Property< bool > m_buildECT
Gaudi::Property< bool > m_buildFeets
Gaudi::Property< int > m_buildRails {this, "BuildRails", 1}
Gaudi::Property< bool > m_buildShields
Gaudi::Property< bool > m_buildSupports
Gaudi::Property< bool > m_buildNSWInert
Gaudi::Property< double > m_blendLimit
Trk::GeoShapeConverter m_geoShapeConverter
 shape converter
Trk::GMTreeBrowser m_gmBrowser
 gm tree helper
Trk::VolumeConverter m_volumeConverter
 gm->trk volume helper

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

const MuonGM::MuonDetectorManagerm_muonMgr {nullptr}
 the MuonDetectorManager
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Member Typedef Documentation

◆ DetachedVolumeVecWithTrfs

Initial value:
std::vector<std::pair<std::unique_ptr<Trk::DetachedTrackingVolume>,
std::vector<Amg::Transform3D>>>

Method creating material object prototypes.

Definition at line 69 of file MuonInertMaterialBuilderImpl.h.

◆ DetachedVolVec

Definition at line 58 of file MuonInertMaterialBuilderImpl.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MuonInertMaterialBuilder()

Muon::MuonInertMaterialBuilder::MuonInertMaterialBuilder ( const std::string & t,
const std::string & n,
const IInterface * p )

Constructor.

Definition at line 6 of file MuonInertMaterialBuilder.cxx.

9 : Muon::MuonInertMaterialBuilderImpl(t, n, p) {}

◆ ~MuonInertMaterialBuilder()

virtual Muon::MuonInertMaterialBuilder::~MuonInertMaterialBuilder ( )
virtualdefault

Destructor.

Member Function Documentation

◆ buildDetachedTrackingVolumes()

std::vector< std::unique_ptr< Trk::DetachedTrackingVolume > > Muon::MuonInertMaterialBuilder::buildDetachedTrackingVolumes ( bool blend = false) const

Method returning cloned and positioned material objects.

Definition at line 17 of file MuonInertMaterialBuilder.cxx.

17 {
18
20}
DetachedVolVec buildDetachedTrackingVolumesImpl(const PVConstLink &treeTop, bool blend) const
const MuonGM::MuonDetectorManager * m_muonMgr
the MuonDetectorManager

◆ buildDetachedTrackingVolumesImpl()

Muon::MuonInertMaterialBuilderImpl::DetachedVolVec Muon::MuonInertMaterialBuilderImpl::buildDetachedTrackingVolumesImpl ( const PVConstLink & treeTop,
bool blend ) const
inherited

Definition at line 36 of file MuonInertMaterialBuilderImpl.cxx.

36 {
37
38 if (!treeTop) {
39 throw std::runtime_error("No tree top has been parsed");
40 }
41 // collect inert material objects
42 DetachedVolVec mInert{};
43 // retrieve muon station prototypes from GeoModel
44 auto msTypes = buildDetachedTrackingVolumeTypes(treeTop, blend);
45 ATH_MSG_DEBUG(" obtained " << msTypes.size() << " prototypes");
46
47
48 for (auto& [msTV, transforms]: msTypes) {
49 std::string msTypeName = msTV->name();
50 for (Amg::Transform3D& combTr : transforms) {
51 std::unique_ptr<Trk::DetachedTrackingVolume> newStat{msTV->clone(msTypeName, combTr)};
52 mInert.push_back(std::move(newStat));
53 }
54 }
55 ATH_MSG_DEBUG(" returns " << mInert.size() << " objects (detached volumes)");
56
57 return mInert;
58}
#define ATH_MSG_DEBUG(x)
std::vector< std::unique_ptr< Trk::DetachedTrackingVolume > > DetachedVolVec
DetachedVolumeVecWithTrfs buildDetachedTrackingVolumeTypes(const PVConstLink &top, bool blend) const
Eigen::Affine3d Transform3D

◆ buildDetachedTrackingVolumeTypes()

Muon::MuonInertMaterialBuilderImpl::DetachedVolumeVecWithTrfs Muon::MuonInertMaterialBuilderImpl::buildDetachedTrackingVolumeTypes ( const PVConstLink & top,
bool blend ) const
protectedinherited

link to top tree

Definition at line 62 of file MuonInertMaterialBuilderImpl.cxx.

62 {
63
66 GeoVolumeCursor vol(top);
67 while (!vol.atEnd()) {
68 const GeoVPhysVol* cv = vol.getVolume();
69 const GeoLogVol* clv = cv->getLogVol();
70 const std::string_view vname = clv->getName();
71 if (vname.size() > 7 && vname.substr(vname.size() - 7, 7) ==
72 "Station") { // do nothing, active station
73 } else {
74 bool accepted = true;
75 if (vname.substr(0, 3) == "BAR" || vname.substr(0, 2) == "BT" ||
76 vname.substr(0, 6) == "EdgeBT" || vname.substr(0, 6) == "HeadBT"){
77 accepted = m_buildBT;
78 } else if (vname.substr(0, 3) == "ECT") {
79 accepted = m_buildECT;
80 } else if (vname.substr(0, 4) == "Feet" ||
81 (vname.size() > 7 && (vname.substr(3, 4) == "Feet" || vname.substr(4, 4) == "Feet"))) {
82 accepted = m_buildFeets;
83 } else if (vname.substr(0, 4) == "Rail") {
84 accepted = m_buildRails > 0;
85 } else if (vname.substr(0, 1) == "J") {
86 accepted = m_buildShields > 0;
87 // NSW build inertmaterial for spacer frame, aluminium HUB, NJD disk
88 // and A plate
89 } else if (vname.substr(0, 3) == "NSW" && vname.substr(1, 6) == "Spacer") {
90 accepted = m_buildNSWInert;
91 } else if (vname.substr(0, 3) == "NSW" && vname.substr(1, 2) == "Al") {
92 accepted = m_buildNSWInert;
93 } else if (vname.substr(0, 3) == "NJD"){
94 accepted = m_buildNSWInert;
95 } else if (vname.substr(0, 1) == "A" && vname.substr(1, 5) == "Plate"){
96 accepted = m_buildNSWInert;
97 // strange NSW will be anyway build
98 } else if (vname.substr(0, 1) != "J") {
99 accepted = m_buildSupports > 0;
100 }
101 if (!accepted) {
102 ATH_MSG_VERBOSE(" INERT muon object found and rejected :" << vname);
103 vol.next();
104 continue;
105 }
106 ATH_MSG_VERBOSE(" INERT muon object found and accepted :" << vname);
107
108 if (msg().level() == MSG::VERBOSE)
109 printInfo(cv);
110
111 std::vector<std::pair<const GeoVPhysVol*, std::vector<Amg::Transform3D>>> vols;
112
113 bool simpleTree = false;
114 if (!cv->getNChildVols()) {
115 if (!m_gmBrowser.findNamePattern(cv, "Sensitive")) {
116 std::vector<Amg::Transform3D> volTr;
117 volTr.push_back(vol.getTransform());
118 vols.emplace_back(cv, volTr);
119 simpleTree = true;
120 }
121 } else {
122 getObjsForTranslation(cv, Amg::Transform3D::Identity(), vols);
123 }
124
125 for (auto& [physVol, physVolTrfs]: vols) {
126 std::string protoName(vname);
127 if (!simpleTree)
128 protoName += physVol->getLogVol()->getName();
129 ATH_MSG_VERBOSE(" check in:"<< protoName << ", made of "
130 << physVol->getLogVol()->getMaterial()->getName()
131 << " x0 " << physVol->getLogVol()->getMaterial()->getRadLength()
132 << "," << physVol->getLogVol()->getShape()->type());
133
134 bool found = false;
135 for (auto& obj : objs) {
136 if (protoName == obj.first->name()) { // found in another branch already ?
137 found = true;
138 if (simpleTree) {
139 obj.second.push_back(vol.getTransform());
140 } else {
141 obj.second.insert(obj.second.end(),
142 std::make_move_iterator(physVolTrfs.begin()),
143 std::make_move_iterator(physVolTrfs.end()));
144 }
145 }
146 }
147 if (found) {
148 continue;
149 }
150 // envelope creation & simplification done with
151 // TrkDetDescrGeoModelCnv helpers
152 auto newType = m_volumeConverter.translate(physVol, m_simplify, blend, m_blendLimit);
153 if (newType) {
154 const std::string volName = newType->volumeName();
155 auto typeDet = std::make_unique<Trk::DetachedTrackingVolume>(volName, std::move(newType));
156 objs.emplace_back(std::move(typeDet), std::move(physVolTrfs));
157 } else {
158 ATH_MSG_WARNING("volume not translated: " << vname);
159 }
160 } // end new object
161 }
162 vol.next();
163 }
164
165 int count = 0;
166 for (auto& obj : objs)
167 count += obj.second.size();
168
169 ATH_MSG_DEBUG(" returns " << objs.size()<< " prototypes, to be cloned into " << count << " objects");
170
171 return objs;
172}
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
@ top
MsgStream & msg() const
Trk::VolumeConverter m_volumeConverter
gm->trk volume helper
void getObjsForTranslation(const GeoVPhysVol *pv, const Amg::Transform3D &, std::vector< std::pair< const GeoVPhysVol *, std::vector< Amg::Transform3D > > > &vols) const
Method extracting material objects from GeoModel tree.
Trk::GMTreeBrowser m_gmBrowser
gm tree helper
void printInfo(const GeoVPhysVol *pv) const
Dump from GeoModel tree.
std::vector< std::pair< std::unique_ptr< Trk::DetachedTrackingVolume >, std::vector< Amg::Transform3D > > > DetachedVolumeVecWithTrfs
Method creating material object prototypes.
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146

◆ confineVolume()

void Trk::TrackingVolumeManipulator::confineVolume ( TrackingVolume & tvol,
TrackingVolume * outsidevol )
staticprotectedinherited

protected method to confine (dense) volumes: input:

  • the volume that holdes the BoundarySurfaces (embedded)
  • the volume to be set as outside volume

Definition at line 90 of file TrackingVolumeManipulator.cxx.

92{
93
94 const auto& bounds = tvol.boundarySurfaces();
95 for (const auto & bound : bounds) {
96 if (bound->outsideVolume() == nullptr) {
97 bound->setOutsideVolume(outsideVol);
98 }
99 if (bound->insideVolume() == nullptr) {
100 bound->setInsideVolume(outsideVol);
101 }
102 }
103}

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ evtStore()

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.

◆ 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

◆ getObjsForTranslation()

void Muon::MuonInertMaterialBuilderImpl::getObjsForTranslation ( const GeoVPhysVol * pv,
const Amg::Transform3D & transform,
std::vector< std::pair< const GeoVPhysVol *, std::vector< Amg::Transform3D > > > & vols ) const
protectedinherited

Method extracting material objects from GeoModel tree.

Definition at line 210 of file MuonInertMaterialBuilderImpl.cxx.

213 {
214 // subcomponents
215 unsigned int nc = pv->getNChildVols();
216 ATH_MSG_VERBOSE(" INERT getObjsForTranslation from:"
217 << pv->getLogVol()->getName() << ","
218 << pv->getLogVol()->getMaterial()->getName()
219 << ", looping over " << nc << " children");
220 for (unsigned int ic = 0; ic < nc; ic++) {
221 Amg::Transform3D transf = pv->getXToChildVol(ic);
222 const GeoVPhysVol* cv = &(*(pv->getChildVol(ic)));
223 const GeoLogVol* clv = cv->getLogVol();
224 if (clv->getMaterial()->getDensity() > 0. &&
225 m_gmBrowser.findNamePattern(cv, "Sensitive"))
226 continue; // skip sensitive material branches
227 if (!cv->getNChildVols()) {
228 bool found = false;
229 for (auto& vol : vols) {
230 if (clv->getName() == vol.first->getLogVol()->getName()) {
231 if (m_gmBrowser.compareGeoVolumes(cv, vol.first, 1.e-3) !=
232 0)
234 "INERT name branch matching differences detected "
235 "in:"
236 << clv->getName());
237 found = true;
238 vol.second.push_back(transform * transf);
239 break;
240 }
241 }
242 if (!found) {
243 std::vector<Amg::Transform3D> volTr;
244 volTr.push_back(transform * transf);
245 vols.emplace_back(cv, volTr);
246 ATH_MSG_VERBOSE("INERT new volume added:"
247 << clv->getName() << ","
248 << clv->getMaterial()->getName());
249 if (msg().level() <= MSG::VERBOSE)
250 printInfo(cv);
251 }
252 } else {
253 getObjsForTranslation(cv, transform * transf, vols);
254 }
255 }
256}
int ic
Definition grepfile.py:33

◆ glueVolumes()

void Trk::TrackingVolumeManipulator::glueVolumes ( Trk::TrackingVolume & firstVol,
Trk::BoundarySurfaceFace firstFace,
Trk::TrackingVolume & secondVol,
Trk::BoundarySurfaceFace secondFace ) const
protectedinherited

protected method to glue two Volumes together input:

  • first TrackingVolume that keeps boundary surface
  • face of the BoundarySurface to be kept
  • second volume that gets glued to the first volume
  • face of the BoundarySurface to be shared

Definition at line 17 of file TrackingVolumeManipulator.cxx.

22{
23 // check if it is a cylinder volume
24 const Trk::CylinderVolumeBounds* cylBounds =
25 dynamic_cast<const Trk::CylinderVolumeBounds*>(&(firstVol.volumeBounds()));
26
27 if (firstFace == Trk::tubeOuterCover && secondFace == Trk::tubeInnerCover)
28 return glueVolumes(secondVol, secondFace, firstVol, firstFace);
29
30 // the second volume gets the face of the first volume assigned
31 (secondVol.m_boundarySurfaces)[secondFace] =
32 (firstVol.m_boundarySurfaces)[firstFace];
33 // the face of the first volume has been an inner tube
34 if (cylBounds && firstFace == Trk::tubeInnerCover &&
35 secondFace == Trk::tubeOuterCover) {
36 (secondVol.m_boundarySurfaces)[secondFace]->setInsideVolume(&secondVol);
37 } else {
38 (secondVol.m_boundarySurfaces)[secondFace]->setOutsideVolume(&secondVol);
39 }
40}
void glueVolumes(TrackingVolume &firstVol, BoundarySurfaceFace firstFace, TrackingVolume &secondVol, BoundarySurfaceFace secondFace) const
protected method to glue two Volumes together input:
static void setOutsideVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *outsidevol)
protected method to set outside Volume of a BoundarySurface: input:
static void setInsideVolume(TrackingVolume &tvol, BoundarySurfaceFace face, TrackingVolume *insidevol)
protected method to set inside Volume of a BoundarySurface: input:
std::vector< std::shared_ptr< BoundarySurface< TrackingVolume > > > m_boundarySurfaces
const VolumeBounds & volumeBounds() const
returns the volumeBounds()
Definition Volume.h:96

◆ initialize()

StatusCode Muon::MuonInertMaterialBuilder::initialize ( )
overridevirtual

AlgTool initailize method.

Reimplemented from Muon::MuonInertMaterialBuilderImpl.

Definition at line 11 of file MuonInertMaterialBuilder.cxx.

11 {
14}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
virtual StatusCode initialize() override
AlgTool initialize method.
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ 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.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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 }

◆ 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.

◆ printChildren()

void Muon::MuonInertMaterialBuilderImpl::printChildren ( const GeoVPhysVol * pv) const
protectedinherited

Definition at line 186 of file MuonInertMaterialBuilderImpl.cxx.

187 {
188 // subcomponents
189 unsigned int nc = pv->getNChildVols();
190 for (unsigned int ic = 0; ic < nc; ic++) {
191 Amg::Transform3D transf = pv->getXToChildVol(ic);
192
193 const GeoVPhysVol* cv = &(*(pv->getChildVol(ic)));
194 const GeoLogVol* clv = cv->getLogVol();
195 ATH_MSG_VERBOSE(" ");
197 "subcomponent:"
198 << ic << ":" << clv->getName() << ", made of "
199 << clv->getMaterial()->getName() << " x0 "
200 << clv->getMaterial()->getRadLength() << " , "
201 << clv->getShape()->type() << "," << transf.translation().x() << " "
202 << transf.translation().y() << " " << transf.translation().z());
203
204 m_geoShapeConverter.decodeShape(clv->getShape());
205
206 printChildren(cv);
207 }
208}
Trk::GeoShapeConverter m_geoShapeConverter
shape converter
void printChildren(const GeoVPhysVol *pv) const

◆ printInfo()

void Muon::MuonInertMaterialBuilderImpl::printInfo ( const GeoVPhysVol * pv) const
protectedinherited

Dump from GeoModel tree.

Definition at line 174 of file MuonInertMaterialBuilderImpl.cxx.

175 {
176 const GeoLogVol* lv = pv->getLogVol();
177 ATH_MSG_VERBOSE("New Muon Inert Object:"
178 << lv->getName() << ", made of "
179 << lv->getMaterial()->getName() << " x0 "
180 << lv->getMaterial()->getRadLength() << ","
181 << lv->getShape()->type());
182 m_geoShapeConverter.decodeShape(lv->getShape());
183 printChildren(pv);
184}

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ setBoundarySurface()

void Trk::TrackingVolumeManipulator::setBoundarySurface ( Trk::TrackingVolume & tvol,
std::shared_ptr< BoundarySurface< TrackingVolume > > bsurf,
Trk::BoundarySurfaceFace face )
staticprotectedinherited

protected method to set the boundary surface of a tracking volume

Definition at line 43 of file TrackingVolumeManipulator.cxx.

47{
48 (tvol.m_boundarySurfaces)[face] = std::move(bsurf);
49}

◆ setInsideVolume()

void Trk::TrackingVolumeManipulator::setInsideVolume ( Trk::TrackingVolume & tvol,
Trk::BoundarySurfaceFace face,
Trk::TrackingVolume * insidevol )
staticprotectedinherited

protected method to set inside Volume of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume to be set as inside volume

Definition at line 52 of file TrackingVolumeManipulator.cxx.

55{
56
57 (tvol.m_boundarySurfaces)[face]->setInsideVolume(insidevol);
58}

◆ setInsideVolumeArray()

void Trk::TrackingVolumeManipulator::setInsideVolumeArray ( Trk::TrackingVolume & tvol,
Trk::BoundarySurfaceFace face,
const std::shared_ptr< BinnedArray< TrackingVolume > > & insidevolarray )
staticprotectedinherited

protected method to set inside VolumeArray of a BoundarySurface: input:

  • ithe volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as inside volume array

Definition at line 61 of file TrackingVolumeManipulator.cxx.

66{
67 (tvol.m_boundarySurfaces)[face]->setInsideVolumeArray(insidevolarray);
68}
static void setInsideVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, const std::shared_ptr< BinnedArray< TrackingVolume > > &insidevolarray)
protected method to set inside VolumeArray of a BoundarySurface: input:

◆ setOutsideVolume()

void Trk::TrackingVolumeManipulator::setOutsideVolume ( Trk::TrackingVolume & tvol,
Trk::BoundarySurfaceFace face,
Trk::TrackingVolume * outsidevol )
staticprotectedinherited

protected method to set outside Volume of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume to be set as outside volume

Definition at line 71 of file TrackingVolumeManipulator.cxx.

75{
76 (tvol.m_boundarySurfaces)[face]->setOutsideVolume(outsidevol);
77}

◆ setOutsideVolumeArray()

void Trk::TrackingVolumeManipulator::setOutsideVolumeArray ( Trk::TrackingVolume & tvol,
Trk::BoundarySurfaceFace face,
const std::shared_ptr< BinnedArray< TrackingVolume > > & outsidevolarray )
staticprotectedinherited

protected method to set outside VolumeArray of a BoundarySurface: input:

  • the volume that holdes the BoundarySurface
  • the face type of the boundary to be set
  • the volume array to be set as outside volume array

Definition at line 80 of file TrackingVolumeManipulator.cxx.

85{
86 (tvol.m_boundarySurfaces)[face]->setOutsideVolumeArray(outsidevolarray);
87}
static void setOutsideVolumeArray(TrackingVolume &tvol, BoundarySurfaceFace face, const std::shared_ptr< BinnedArray< TrackingVolume > > &outsidevolarray)
protected method to set outside VolumeArray of a BoundarySurface: input:

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_blendLimit

Gaudi::Property<double> Muon::MuonInertMaterialBuilderImpl::m_blendLimit
protectedinherited
Initial value:
{this, "BlendLimit",
1e+06}

Definition at line 107 of file MuonInertMaterialBuilderImpl.h.

107 {this, "BlendLimit",
108 1e+06}; // mass limit for blending [g]

◆ m_buildBT

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildBT
protectedinherited
Initial value:
{this, "BuildBarrelToroids",
true}

Definition at line 94 of file MuonInertMaterialBuilderImpl.h.

94 {this, "BuildBarrelToroids",
95 true}; // build barrel toroids

◆ m_buildECT

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildECT
protectedinherited
Initial value:
{this, "BuildEndcapToroids",
true}

Definition at line 96 of file MuonInertMaterialBuilderImpl.h.

96 {this, "BuildEndcapToroids",
97 true}; // build endcap toroids

◆ m_buildFeets

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildFeets
protectedinherited
Initial value:
{this, "BuildFeets",
true}

Definition at line 98 of file MuonInertMaterialBuilderImpl.h.

98 {this, "BuildFeets",
99 true}; // build feets

◆ m_buildNSWInert

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildNSWInert
protectedinherited
Initial value:
{this, "BuildNSWInert",
true}

Definition at line 105 of file MuonInertMaterialBuilderImpl.h.

105 {this, "BuildNSWInert",
106 true}; // build NSW inert material

◆ m_buildRails

Gaudi::Property<int> Muon::MuonInertMaterialBuilderImpl::m_buildRails {this, "BuildRails", 1}
protectedinherited

Definition at line 100 of file MuonInertMaterialBuilderImpl.h.

100{this, "BuildRails", 1}; // build rails

◆ m_buildShields

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildShields
protectedinherited
Initial value:
{this, "BuildShields",
true}

Definition at line 101 of file MuonInertMaterialBuilderImpl.h.

101 {this, "BuildShields",
102 true}; // build shieldings

◆ m_buildSupports

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_buildSupports
protectedinherited
Initial value:
{this, "BuildSupports",
true}

Definition at line 103 of file MuonInertMaterialBuilderImpl.h.

103 {this, "BuildSupports",
104 true}; // build other

◆ m_debugMode

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_debugMode
protectedinherited
Initial value:
{
this, "DebugMode", false}

Definition at line 91 of file MuonInertMaterialBuilderImpl.h.

91 {
92 this, "DebugMode", false}; // build layers & dense volumes in parallel

◆ 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_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_geoShapeConverter

Trk::GeoShapeConverter Muon::MuonInertMaterialBuilderImpl::m_geoShapeConverter
protectedinherited

shape converter

Definition at line 109 of file MuonInertMaterialBuilderImpl.h.

◆ m_gmBrowser

Trk::GMTreeBrowser Muon::MuonInertMaterialBuilderImpl::m_gmBrowser
protectedinherited

gm tree helper

Definition at line 110 of file MuonInertMaterialBuilderImpl.h.

◆ m_muonMgr

const MuonGM::MuonDetectorManager* Muon::MuonInertMaterialBuilder::m_muonMgr {nullptr}
private

the MuonDetectorManager

Definition at line 40 of file MuonInertMaterialBuilder.h.

40{nullptr};

◆ m_simplify

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_simplify
protectedinherited
Initial value:
{
this, "SimplifyGeometry",
false}

Definition at line 85 of file MuonInertMaterialBuilderImpl.h.

85 {
86 this, "SimplifyGeometry",
87 false}; // switch geometry simplification on/off

◆ m_simplifyToLayers

Gaudi::Property<bool> Muon::MuonInertMaterialBuilderImpl::m_simplifyToLayers
protectedinherited
Initial value:
{
this, "SimplifyGeometryToLayers",
false}

Definition at line 88 of file MuonInertMaterialBuilderImpl.h.

88 {
89 this, "SimplifyGeometryToLayers",
90 false}; // switch geometry simplification to layers on/off

◆ 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.

◆ m_volumeConverter

Trk::VolumeConverter Muon::MuonInertMaterialBuilderImpl::m_volumeConverter
protectedinherited

gm->trk volume helper

Definition at line 111 of file MuonInertMaterialBuilderImpl.h.


The documentation for this class was generated from the following files: