ATLAS Offline Software
HGTD_LayerBuilderCond.cxx
Go to the documentation of this file.
1 
2 /*
3  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 */
5 
7 // HGTD_LayerBuilderCond.cxx, (c) ATLAS Detector software
9 
10 #include "HGTD_LayerBuilderCond.h"
11 #include "HGTD_OverlapDescriptor.h"
12 
13 //HGTD include
18 
19 // Trk inlcude
26 #include "TrkGeometry/DiscLayer.h"
27 #include "TrkGeometry/DiscLayer.h"
28 #include "TrkSurfaces/Surface.h"
29 #include "TrkSurfaces/DiscBounds.h"
30 // STL
31 #include <map>
32 
33 // constructor
34 HGTD_LayerBuilderCond::HGTD_LayerBuilderCond(const std::string& t, const std::string& n, const IInterface* p) :
35  AthAlgTool(t,n,p),
36  m_hgtdMgr(nullptr),
37  m_hgtdHelper(nullptr),
38  m_setLayerAssociation(true),
39  m_identification("HGTD"),
40  m_rBins(50),
41  m_phiBins(100),
42  m_discEnvelopeR(50.),
43  m_discThickness(0.2),
44  m_runGeometryValidation(true)
45 {
46  declareInterface<Trk::ILayerBuilderCond>(this);
47  // general steering
48  declareProperty("SetLayerAssociation" , m_setLayerAssociation);
49  // identification
50  declareProperty("Identification" , m_identification);
51  // set some parameters
52  declareProperty("DiscMaterialBinsR" , m_rBins);
53  declareProperty("DiscMaterialBinsPhi" , m_phiBins);
54  declareProperty("DiscEnvelope" , m_discEnvelopeR);
55  declareProperty("DiscThickness" , m_discThickness);
56  // validation
57  declareProperty("RunValidation" , m_runGeometryValidation);
58 }
59 
60 // destructor
62 
63 // Athena standard methods
64 // initialize
66 {
67 
68  ATH_MSG_DEBUG( "initialize()" );
69  // get HGTD Detector Description Manager and HGTD Helper
70  ATH_CHECK(detStore()->retrieve(m_hgtdMgr, "HGTD"));
71  ATH_CHECK(detStore()->retrieve(m_hgtdHelper, "HGTD_ID"));
72 
73  // get HGTD detector element collection
75 
76  return StatusCode::SUCCESS;
77 }
78 
79 
81 {
83  if (*readHandle==nullptr) {
84  ATH_MSG_ERROR("Null pointer to the read conditions object of " << m_HGTD_ReadKey.key());
85  }
86  return readHandle;
87 }
88 
89 
91 std::unique_ptr<const std::vector<Trk::DiscLayer*> >
92 HGTD_LayerBuilderCond::discLayers(const EventContext& ctx,
94 {
95  ATH_MSG_DEBUG( "calling HGTD_LayerBuilderCond::discLayers()" );
96 
97  // sanity check for HGTD Helper
98  if (!m_hgtdHelper){
99  ATH_MSG_ERROR("HGTD Detector Manager or ID Helper could not be retrieved - giving up.");
100  return nullptr;
101  }
102 
103  // get general layout
105  if(*readHandle == nullptr){
106  return nullptr;
107  }
108  whandle.addDependency (readHandle);
109 
110  const InDetDD::HGTD_DetectorElementCollection* readCdo{*readHandle};
111  InDetDD::HGTD_DetectorElementCollection::const_iterator hgtdDetIter = readCdo->begin();
112 
113  // loop on all modules (selecting only one endcap side)
114  // and evaluates the number of discs
115  // assuming you have the same number of modules on both sides
116  int nlayers = 0;
117  for (; hgtdDetIter != readCdo->end(); ++hgtdDetIter){
118  Identifier currentId((*hgtdDetIter)->identify());
119  // skipping negative side
120  if (m_hgtdHelper->endcap(currentId)<0) continue;
121  if (m_hgtdHelper->layer(currentId)>nlayers)
122  nlayers++;
123  }
124  // adding one layer offset
125  nlayers+=1;
126 
127  ATH_MSG_DEBUG( "Configured to build " << nlayers << " *2 disc-like layers (+ additional support layers)." );
128 
129  // prepare the vectors
130  std::vector<float> discZpos(2*nlayers,0.);
131  std::vector< std::vector<Trk::SurfaceOrderPosition> > discSurfaces(2*nlayers, std::vector<Trk::SurfaceOrderPosition>());
132 
133  int hgtdModules = 0;
134  int sumCheckhgtdModules = 0;
135  unsigned int currentlayer = 0;
136  float maxRmax = -std::numeric_limits<float>::max();
137  float minRmin = std::numeric_limits<float>::max();
138 
139  // get the missing dimensions by loop over DetElements
140  hgtdDetIter = readCdo->begin();
141  for (; hgtdDetIter != readCdo->end(); ++hgtdDetIter){
142  // take it - if
143  // a) you have a detector element ... protection
144  if ( (*hgtdDetIter) ) {
145  // get the identifier
146  Identifier currentId((*hgtdDetIter)->identify());
147 
148  ATH_MSG_DEBUG("Element : " << m_hgtdHelper->endcap(currentId) << "/"
149  << m_hgtdHelper->layer(currentId) << "/"
150  << m_hgtdHelper->eta_module(currentId) << "/"
151  << m_hgtdHelper->phi_module(currentId));
152 
153  // increase the counter of HGTD modules
154  hgtdModules++;
155 
156  // parse all z positions for the mean value of the discs
157  float currentZ = (*hgtdDetIter)->center().z();
158  //calculate current layer and current disk from it
159  currentlayer = m_hgtdHelper->layer(currentId);
160  // adding the numbe of layers per side as offset
161  currentlayer += currentZ > 0. ? nlayers : 0;
162  ATH_MSG_DEBUG( " ---- layer: " << currentlayer );
163 
164  // evaluate the z-position per layer
165  // all modules on the same HGTD layer have the same z
166  discZpos[currentlayer] = currentZ;
167 
168  // evaluate the r-extension per layer
169  float currentRmin = (*hgtdDetIter)->rMin();
170  float currentRmax = (*hgtdDetIter)->rMax();
171  ATH_MSG_DEBUG( " ---- rmin/rmax: " << currentRmin << "/" << currentRmax );
172  if (maxRmax<currentRmax)
173  maxRmax = currentRmax;
174  if (minRmin>currentRmin)
175  minRmin = currentRmin;
176 
177  // fill the elements for the layers into the surface arrays
178  // get the center position
179  const Amg::Vector3D& orderPosition = (*hgtdDetIter)->center();
180 
181  // register the chosen side in the object array
182  // This line is problematic for MT .
183  // Something like
184  // Trk::SharedObject<Trk::Surface> = std::make_shared<Trk::Surface>((*hgtdDetIter)) could be fine
185  //
186  // As things are now
187  // 1) Notice that basically we couple the DetElement owned surface to the Tracking Geometry
188  // passing a no-op deleter (no delete happens) to the shared_ptr(SharedObject is typedef of shared_ptr)
189  // 2)
190  // The const_cast here make the code non MT safe. For now we handle this
191  // by being careful on lifetimes and non-re-entrant TG construction.
192  Trk::SharedObject<Trk::Surface> sharedSurface(
193  const_cast<Trk::Surface*>(&((*hgtdDetIter)->surface())),
194  [](Trk::Surface*) {});
195  Trk::SurfaceOrderPosition surfaceOrder(sharedSurface, orderPosition);
196 
197  discSurfaces[currentlayer].push_back(surfaceOrder);
198 
199  } else if (!(*hgtdDetIter))
200  ATH_MSG_WARNING("Not valid pointer to HGTD Detector element... something wrong with the Id dictionary?");
201  }
202 
203  // adding some envelope
204  maxRmax += m_discEnvelopeR;
205  minRmin -= m_discEnvelopeR;
206 
207  // construct the layers
208  auto discLayers = std::make_unique<std::vector<Trk::DiscLayer*> >();
209 
210  double thickness = m_discThickness;
211 
212  int discCounter = 0;
213  for (auto& thisDiscZpos : discZpos) {
214  // screen output
215  ATH_MSG_DEBUG( "Building a DiscLayer: " );
216  ATH_MSG_DEBUG( " -> At Z - Position : " << thisDiscZpos );
217  ATH_MSG_DEBUG( " -> With Thickness : " << thickness << " i- ncludes envelope tolerance : " << m_discEnvelopeR );
218  ATH_MSG_DEBUG( " -> With Rmin/Rmax (est) : " << minRmin << " / " << maxRmax );
219 
220  ATH_MSG_DEBUG( "... creating binned array ... ");
221 
222  std::vector<float> rBins = {minRmin};
223  std::vector<std::vector<float>> phiBins = {{}};
224 
225  evaluateBestBinning(discSurfaces[discCounter], rBins, maxRmax, phiBins);
226 
227  // Build the BinUtilities using the bins defined at construction
228  // the extension is provided in the previous loop
229  Trk::BinUtility* BinUtilityR = new Trk::BinUtility(rBins, Trk::open, Trk::binR);
230  std::vector<Trk::BinUtility*>* subBinUtilitiesPhi = new std::vector<Trk::BinUtility*>;
231  ATH_MSG_DEBUG("BinUtilityR --> " << *BinUtilityR );
232 
233  for (unsigned int bin = 0; bin < rBins.size()-1; bin++) {
234  Trk::BinUtility* BinUtilityY = new Trk::BinUtility(phiBins.at(bin), Trk::closed, Trk::binPhi);
235  subBinUtilitiesPhi->push_back(BinUtilityY);
236  ATH_MSG_DEBUG(bin << ") BinUtilityPhi --> " << *BinUtilityY );
237  }
238 
239  // prepare the binned array, it can be with one to several rings
240  auto currentBinnedArray =
241  std::make_unique<Trk::BinnedArray1D1D<Trk::Surface>>(
242  discSurfaces[discCounter], BinUtilityR, subBinUtilitiesPhi);
243 
244  ATH_MSG_DEBUG( "... done!" );
245 
246  int discSurfacesNum = (discSurfaces[discCounter]).size();
247 
248  ATH_MSG_DEBUG( "Constructed BinnedArray for DiscLayer with "<< discSurfacesNum << " SubSurfaces." );
249 
250  // always run the geometry validation to catch flaws
252  // checking for :
253  // - empty surface bins
254  // - doubly filled bins
255  std::map< const Trk::Surface*,Amg::Vector3D > uniqueSurfaceMap;
256  std::map< const Trk::Surface*,Amg::Vector3D >::iterator usmIter = uniqueSurfaceMap.end();
257  // check the registered surfaces in the binned array
258  Trk::BinnedArraySpan<Trk::Surface * const> arraySurfaces = currentBinnedArray->arrayObjects();
259  size_t dsumCheckSurfaces = 0;
260  double lastPhi = 0.;
261  for (const auto & asurfIter : arraySurfaces){
262  if ( asurfIter ) {
263  ++dsumCheckSurfaces;
264  usmIter = uniqueSurfaceMap.find(asurfIter);
265  lastPhi = asurfIter->center().phi();
266  if (usmIter != uniqueSurfaceMap.end()) {
267  ATH_MSG_WARNING("Non-unique surface found with eta/phi = "
268  << asurfIter->center().eta() << " / "
269  << asurfIter->center().phi());
270  } else {
271  uniqueSurfaceMap[asurfIter] = asurfIter->center();
272  }
273  } else {
274  ATH_MSG_WARNING("Zero-pointer in array detected in this ring, last "
275  "valid phi value was = "
276  << lastPhi << " --> discCounter: " << discCounter);
277  }
278  }
279  sumCheckhgtdModules += dsumCheckSurfaces;
280  }
281 
282  // get the layer material from the helper method
283  const Trk::LayerMaterialProperties& layerMaterial = discLayerMaterial(minRmin,maxRmax);
284 
286  Amg::Transform3D activeLayerTransform ;
287  activeLayerTransform = Amg::Translation3D(0.,0.,thisDiscZpos);
288 
289  Trk::DiscBounds* activeLayerBounds = new Trk::DiscBounds(minRmin, maxRmax);
290 
291  auto olDescriptor = std::make_unique<HGTD_OverlapDescriptor>(
292  currentBinnedArray.get(), rBins, phiBins);
293 
294  // register the layer to the surfaces
295  Trk::BinnedArraySpan<Trk::Surface * const> layerSurfaces = currentBinnedArray->arrayObjects();
296  // layer creation; deletes currentBinnedArray in baseclass 'Layer' upon destruction
297  // activeLayerTransform deleted in 'Surface' baseclass
298  Trk::DiscLayer* activeLayer = new Trk::DiscLayer(activeLayerTransform,
299  activeLayerBounds,
300  std::move(currentBinnedArray),
301  layerMaterial,
302  thickness,
303  std::move(olDescriptor));
304 
305  registerSurfacesToLayer(layerSurfaces,*activeLayer);
306  discLayers->push_back(activeLayer);
307  // increase the disc counter by one
308  ++discCounter;
309  }
310 
311  //
312  ATH_MSG_DEBUG( hgtdModules << " HGTD Modules parsed for Disc Layer dimensions." );
314  ATH_MSG_DEBUG( sumCheckhgtdModules << " HGTD Modules filled in Disc Layer Arrays." );
315  if ( hgtdModules-sumCheckhgtdModules )
316  ATH_MSG_WARNING( hgtdModules-sumCheckhgtdModules << " Modules not registered properly in binned array." );
317  }
318 
319  // sort the vector
320  Trk::DiscLayerSorterZ zSorter;
321  std::sort(discLayers->begin(), discLayers->end(), zSorter);
322 
323  return discLayers;
324 }
325 
327 {
328  Trk::BinUtility layerBinUtilityR(m_rBins, rMin, rMax, Trk::open, Trk::binR);
329  Trk::BinUtility layerBinUtilityPhi(m_phiBins, -M_PI, M_PI, Trk::closed, Trk::binPhi);
330  layerBinUtilityR += layerBinUtilityPhi;
331  return Trk::BinnedLayerMaterial(layerBinUtilityR);
332 }
333 
335 {
336  if (!m_setLayerAssociation) return;
337  // register the surfaces to the layer
338  for (const auto & surfaces : layerSurfaces) {
339  if (surfaces) {
340  // register the current surfaces
341  (*surfaces).associateLayer(lay);
342  }
343  }
344 }
345 
346 void HGTD_LayerBuilderCond::evaluateBestBinning(std::vector<Trk::SurfaceOrderPosition>& surfaces,
347  std::vector<float>& rBins, float& maxRadius,
348  std::vector<std::vector<float>>& phiBins)
349 {
350  // get all the centers (r,phi), as you want to play with them
351  std::vector < std::pair< float, float> > centers = {};
352  centers.reserve(surfaces.size());
353  for ( auto& orderedSurface : surfaces) {
354  centers.emplace_back(orderedSurface.second.perp(), orderedSurface.second.phi());
355  }
356 
357  // sorting the centers accordingly to r
358  std::sort(centers.begin(), centers.end(),
359  [](const std::pair< float, float>& a, const std::pair< float, float>& b) -> bool {
360  return a.first < b.first;
361  });
362 
363  // at the beginning use a fine binning in phi
364  // it is updated later to fit the amount of surfaces
365  // once you have defined a bin in radius
366  int bins = 100;
367  float step = 2*M_PI/float(bins);
368  std::vector<float> finerBinning = {};
369  finerBinning.reserve(bins);
370 
371  for (int bin = 0; bin<=bins; bin++) {
372  finerBinning.push_back(-M_PI+step*bin);
373  }
374 
375  // use this vector to save the indices and
376  // guess when you have to add
377  // an additional bin in r
378  std::vector<int> phiIndices = {};
379  std::vector<float> tmpRadii = {};
380 
381  for (auto& center : centers) {
382  float phi = center.second;
383  const auto boundVal = std::lower_bound(finerBinning.begin(), finerBinning.end(), phi);
384  int phiIndex = std::distance(finerBinning.begin(), boundVal);
385  // if the element fits in the given r bin, add it,
386  // otherwise reset the indices and start a new r bin
387  if (std::find(phiIndices.begin(), phiIndices.end(), phiIndex)==phiIndices.end()) {
388  phiIndices.push_back(phiIndex);
389  tmpRadii.push_back(center.first);
390  } else {
391  phiIndices.clear();
392  for (unsigned int index = (tmpRadii.size()-1); index>0; index--) {
393  auto& prevRadius = tmpRadii.at(index);
394  if ( std::abs(prevRadius - center.first)<1e-5 ) {
395  const auto boundVal = std::lower_bound(finerBinning.begin(), finerBinning.end(), phi);
396  int phiIndex = std::distance(finerBinning.begin(), boundVal);
397  phiIndices.push_back(phiIndex);
398  continue;
399  } else {
400  float r = 0.5*(prevRadius+center.first);
401  rBins.push_back(r);
402  tmpRadii = {prevRadius};
403  break;
404  }
405  }
406  }
407  }
408 
409  rBins.push_back(maxRadius);
410 
411  // now we have the best binning in r and want to
412  // map the centers accordingly to this
413  std::vector< std::vector < float > > binnedCenters = {{}};
414 
415  for (auto& center : centers) {
416  float r = center.first;
417  float phi = center.second;
418  const auto boundVal = std::lower_bound(rBins.begin(), rBins.end(), r);
419  int rIndex = std::distance(rBins.begin(), boundVal);
420  if (int(binnedCenters.size())<rIndex)
421  binnedCenters.push_back({phi});
422  else
423  binnedCenters.back().push_back(phi);
424  }
425 
426  // now that we have the centers binned in r, we evaluate the best
427  // bin in phi for each of those bins
428  bool isFirst = true;
429  for (auto& centersInBin : binnedCenters) {
430  // sorting the centers accordingly to phi_bins
431  std::sort(centersInBin.begin(), centersInBin.end());
432  if (isFirst) {
433  phiBins.back().push_back(-M_PI);
434  isFirst=false;
435  } else phiBins.push_back({-M_PI});
436  for (unsigned int index = 0; index<(centersInBin.size()-1); index++) {
437  float phi = 0.5*(centersInBin.at(index)+centersInBin.at(index+1));
438  phiBins.back().push_back(phi);
439  }
440  }
441 
442  }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
HGTD_LayerBuilderCond::m_HGTD_ReadKey
SG::ReadCondHandleKey< InDetDD::HGTD_DetectorElementCollection > m_HGTD_ReadKey
Definition: HGTD_LayerBuilderCond.h:109
HGTD_LayerBuilderCond::m_hgtdMgr
const HGTD_DetectorManager * m_hgtdMgr
the HGTD Detector Manager
Definition: HGTD_LayerBuilderCond.h:93
beamspotman.r
def r
Definition: beamspotman.py:676
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
HGTD_LayerBuilderCond::discLayers
virtual std::unique_ptr< const std::vector< Trk::DiscLayer * > > discLayers(const EventContext &ctx, SG::WriteCondHandle< Trk::TrackingGeometry > &whandle) const override final
LayerBuilder interface method - returning Endcap-like layers.
Definition: HGTD_LayerBuilderCond.cxx:92
max
#define max(a, b)
Definition: cfImp.cxx:41
DiscBounds.h
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
HGTD_LayerBuilderCond::m_phiBins
int m_phiBins
set the number of bins
Definition: HGTD_LayerBuilderCond.h:101
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
Surface.h
python.App.bins
bins
Definition: App.py:410
HGTD_LayerBuilderCond::m_rBins
int m_rBins
set the number of bins
Definition: HGTD_LayerBuilderCond.h:100
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
HGTD_ID::endcap
int endcap(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: HGTD_ID.h:468
BinUtility.h
HGTD_LayerBuilderCond::m_discThickness
float m_discThickness
set disc thickness
Definition: HGTD_LayerBuilderCond.h:104
DiscLayer.h
M_PI
#define M_PI
Definition: ActiveFraction.h:11
bin
Definition: BinsDiffFromStripMedian.h:43
Trk::closed
@ closed
Definition: BinningType.h:41
HomogeneousLayerMaterial.h
BinnedArray1D1D.h
HGTD_LayerBuilderCond::m_runGeometryValidation
bool m_runGeometryValidation
run geometry validation
Definition: HGTD_LayerBuilderCond.h:106
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
HGTD_ID::layer
int layer(const Identifier &id) const
Definition: HGTD_ID.h:475
HGTD_DetectorManager.h
HGTD_LayerBuilderCond::HGTD_LayerBuilderCond
HGTD_LayerBuilderCond(const std::string &, const std::string &, const IInterface *)
AlgTool style constructor.
Definition: HGTD_LayerBuilderCond.cxx:34
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
HGTD_LayerBuilderCond.h
HGTD_LayerBuilderCond::evaluateBestBinning
static void evaluateBestBinning(std::vector< Trk::SurfaceOrderPosition > &surfaces, std::vector< float > &rBins, float &maxRadius, std::vector< std::vector< float >> &phiBins)
Definition: HGTD_LayerBuilderCond.cxx:346
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
HGTD_LayerBuilderCond::m_setLayerAssociation
bool m_setLayerAssociation
Set Layer Association.
Definition: HGTD_LayerBuilderCond.h:96
HGTD_LayerBuilderCond::initialize
virtual StatusCode initialize() override
AlgTool initialize method.
Definition: HGTD_LayerBuilderCond.cxx:65
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
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
Trk::LayerMaterialProperties
Definition: LayerMaterialProperties.h:62
HGTD_DetectorElement.h
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
HGTD_LayerBuilderCond::discLayerMaterial
const Trk::BinnedLayerMaterial discLayerMaterial(double rMin, double rMax) const
layer association
Definition: HGTD_LayerBuilderCond.cxx:326
HGTD_OverlapDescriptor.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CylinderLayer.h
Trk::DiscLayer
Definition: DiscLayer.h:45
BinnedLayerMaterial.h
Trk::BinnedLayerMaterial
Definition: BinnedLayerMaterial.h:33
HGTD_LayerBuilderCond::m_discEnvelopeR
float m_discEnvelopeR
set disc envelope
Definition: HGTD_LayerBuilderCond.h:103
Trk::BinUtility
Definition: BinUtility.h:39
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
HGTD_DetectorElementCollection.h
HGTD_ID.h
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
eflowRec::phiIndex
unsigned int phiIndex(float phi, float binsize)
calculate phi index for a given phi
Definition: EtaPhiLUT.cxx:23
Trk::open
@ open
Definition: BinningType.h:40
Trk::binR
@ binR
Definition: BinningType.h:50
HGTD_LayerBuilderCond::~HGTD_LayerBuilderCond
virtual ~HGTD_LayerBuilderCond()
Destructor.
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::SharedObject
std::shared_ptr< T > SharedObject
Definition: SharedObject.h:24
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
HGTD_ID::eta_module
int eta_module(const Identifier &id) const
Definition: HGTD_ID.h:489
Amg::Translation3D
Eigen::Translation< double, 3 > Translation3D
Definition: GeoPrimitives.h:44
HGTD_ID::phi_module
int phi_module(const Identifier &id) const
Definition: HGTD_ID.h:482
HGTD_LayerBuilderCond::m_identification
std::string m_identification
string identification
Definition: HGTD_LayerBuilderCond.h:98
LArCellBinning.step
step
Definition: LArCellBinning.py:158
HGTD_LayerBuilderCond::retrieveHGTDdetElements
SG::ReadCondHandle< InDetDD::HGTD_DetectorElementCollection > retrieveHGTDdetElements(const EventContext &ctx) const
helper method to construct HGTD materia
Definition: HGTD_LayerBuilderCond.cxx:80
AthAlgTool
Definition: AthAlgTool.h:26
InDetDD::HGTD_DetectorElementCollection
Definition: HGTD_DetectorElementCollection.h:29
Trk::Surface
Definition: Tracking/TrkDetDescr/TrkSurfaces/TrkSurfaces/Surface.h:75
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
Trk::BinnedArraySpan
std::span< T > BinnedArraySpan
Definition: BinnedArray.h:34
SG::WriteCondHandle
Definition: WriteCondHandle.h:26
readCCLHist.float
float
Definition: readCCLHist.py:83
LayerMaterialProperties.h
HGTD_LayerBuilderCond::m_hgtdHelper
const HGTD_ID * m_hgtdHelper
HGTD Id Helper.
Definition: HGTD_LayerBuilderCond.h:94
Trk::DiscBounds
Definition: DiscBounds.h:44
Trk::SurfaceOrderPosition
std::pair< SharedObject< Surface >, Amg::Vector3D > SurfaceOrderPosition
Definition: HGTD_LayerBuilderCond.h:36
Trk::Layer
Definition: Layer.h:73
HGTD_LayerBuilderCond::registerSurfacesToLayer
void registerSurfacesToLayer(Trk::BinnedArraySpan< Trk::Surface *const > &surfaces, const Trk::Layer &layer) const
Definition: HGTD_LayerBuilderCond.cxx:334
SG::WriteCondHandle::addDependency
void addDependency(const EventIDRange &range)
Definition: WriteCondHandle.h:275
Trk::binPhi
@ binPhi
Definition: BinningType.h:51
Trk::DiscLayerSorterZ
Definition: DiscLayer.h:152