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

#include <HGTD_LayerBuilderCond.h>

Inheritance diagram for HGTD_LayerBuilderCond:
Collaboration diagram for HGTD_LayerBuilderCond:

Public Member Functions

 HGTD_LayerBuilderCond (const std::string &, const std::string &, const IInterface *)
 AlgTool style constructor. More...
 
virtual ~HGTD_LayerBuilderCond ()
 Destructor. More...
 
virtual StatusCode initialize () override
 AlgTool initialize method. More...
 
virtual std::unique_ptr< const std::vector< Trk::CylinderLayer * > > cylindricalLayers (const EventContext &ctx, SG::WriteCondHandle< Trk::TrackingGeometry > &whandle) const override final
 LayerBuilder interface method - returning Barrel-like layers. More...
 
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. More...
 
virtual std::unique_ptr< const std::vector< Trk::PlaneLayer * > > planarLayers (const EventContext &ctx, SG::WriteCondHandle< Trk::TrackingGeometry > &whandle) const override final
 LayerBuilder interface method - returning Planar-like layers. More...
 
virtual const std::string & identification () const override final
 Name identification. 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
 
 DeclareInterfaceID (ILayerBuilderCond, 1, 0)
 Creates the InterfaceID and interfaceID() method. More...
 
virtual void validationAction () const
 Validation Action: Can be implemented optionally, outside access to internal validation steps. 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

SG::ReadCondHandle< InDetDD::HGTD_DetectorElementCollectionretrieveHGTDdetElements (const EventContext &ctx) const
 helper method to construct HGTD materia More...
 
const Trk::BinnedLayerMaterial discLayerMaterial (double rMin, double rMax) const
 layer association More...
 
void registerSurfacesToLayer (Trk::BinnedArraySpan< Trk::Surface *const > &surfaces, const Trk::Layer &layer) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Static Private Member Functions

static void evaluateBestBinning (std::vector< Trk::SurfaceOrderPosition > &surfaces, std::vector< float > &rBins, float &maxRadius, std::vector< std::vector< float >> &phiBins)
 

Private Attributes

const HGTD_DetectorManagerm_hgtdMgr
 the HGTD Detector Manager More...
 
const HGTD_IDm_hgtdHelper
 HGTD Id Helper. More...
 
bool m_setLayerAssociation
 Set Layer Association. More...
 
std::string m_identification
 string identification
More...
 
int m_rBins
 set the number of bins More...
 
int m_phiBins
 set the number of bins More...
 
float m_discEnvelopeR
 set disc envelope More...
 
float m_discThickness
 set disc thickness More...
 
bool m_runGeometryValidation
 run geometry validation More...
 
SG::ReadCondHandleKey< InDetDD::HGTD_DetectorElementCollectionm_HGTD_ReadKey
 
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

The HGTD_LayerBuilderCond parses the senstive detector elments and orders them onto a Disc surface; no cylindrical layers are expected. This implementation is based on what done in the SiLayerBuilderCond, adapted to the HGTD use case.

Definition at line 48 of file HGTD_LayerBuilderCond.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ HGTD_LayerBuilderCond()

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

AlgTool style constructor.

Definition at line 34 of file HGTD_LayerBuilderCond.cxx.

34  :
35  AthAlgTool(t,n,p),
36  m_hgtdMgr(nullptr),
37  m_hgtdHelper(nullptr),
39  m_identification("HGTD"),
40  m_rBins(50),
41  m_phiBins(100),
42  m_discEnvelopeR(50.),
43  m_discThickness(0.2),
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 }

◆ ~HGTD_LayerBuilderCond()

HGTD_LayerBuilderCond::~HGTD_LayerBuilderCond ( )
virtualdefault

Destructor.

Member Function Documentation

◆ cylindricalLayers()

std::unique_ptr< const std::vector< Trk::CylinderLayer * > > HGTD_LayerBuilderCond::cylindricalLayers ( const EventContext &  ctx,
SG::WriteCondHandle< Trk::TrackingGeometry > &  whandle 
) const
inlinefinaloverridevirtual

LayerBuilder interface method - returning Barrel-like layers.

Implements Trk::ILayerBuilderCond.

Definition at line 118 of file HGTD_LayerBuilderCond.h.

120 {
121  return nullptr;
122 }

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

◆ DeclareInterfaceID()

Trk::ILayerBuilderCond::DeclareInterfaceID ( ILayerBuilderCond  ,
,
 
)
inherited

Creates the InterfaceID and interfaceID() method.

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

◆ discLayerMaterial()

const Trk::BinnedLayerMaterial HGTD_LayerBuilderCond::discLayerMaterial ( double  rMin,
double  rMax 
) const
private

layer association

Definition at line 326 of file HGTD_LayerBuilderCond.cxx.

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 }

◆ discLayers()

std::unique_ptr< const std::vector< Trk::DiscLayer * > > HGTD_LayerBuilderCond::discLayers ( const EventContext &  ctx,
SG::WriteCondHandle< Trk::TrackingGeometry > &  whandle 
) const
finaloverridevirtual

LayerBuilder interface method - returning Endcap-like layers.

position & bounds of the active Layer

Implements Trk::ILayerBuilderCond.

Definition at line 92 of file HGTD_LayerBuilderCond.cxx.

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 }

◆ evaluateBestBinning()

void HGTD_LayerBuilderCond::evaluateBestBinning ( std::vector< Trk::SurfaceOrderPosition > &  surfaces,
std::vector< float > &  rBins,
float &  maxRadius,
std::vector< std::vector< float >> &  phiBins 
)
staticprivate

Definition at line 346 of file HGTD_LayerBuilderCond.cxx.

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  }

◆ 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

◆ identification()

const std::string & HGTD_LayerBuilderCond::identification ( ) const
inlinefinaloverridevirtual

Name identification.

Implements Trk::ILayerBuilderCond.

Definition at line 131 of file HGTD_LayerBuilderCond.h.

132 { return m_identification; }

◆ initialize()

StatusCode HGTD_LayerBuilderCond::initialize ( )
overridevirtual

AlgTool initialize method.

Definition at line 65 of file HGTD_LayerBuilderCond.cxx.

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 }

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

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

◆ planarLayers()

std::unique_ptr< const std::vector< Trk::PlaneLayer * > > HGTD_LayerBuilderCond::planarLayers ( const EventContext &  ctx,
SG::WriteCondHandle< Trk::TrackingGeometry > &  whandle 
) const
inlinefinaloverridevirtual

LayerBuilder interface method - returning Planar-like layers.

Implements Trk::ILayerBuilderCond.

Definition at line 125 of file HGTD_LayerBuilderCond.h.

127 {
128  return nullptr;
129 }

◆ registerSurfacesToLayer()

void HGTD_LayerBuilderCond::registerSurfacesToLayer ( Trk::BinnedArraySpan< Trk::Surface *const > &  surfaces,
const Trk::Layer layer 
) const
private

Definition at line 334 of file HGTD_LayerBuilderCond.cxx.

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 }

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

◆ retrieveHGTDdetElements()

SG::ReadCondHandle< InDetDD::HGTD_DetectorElementCollection > HGTD_LayerBuilderCond::retrieveHGTDdetElements ( const EventContext &  ctx) const
private

helper method to construct HGTD materia

Definition at line 80 of file HGTD_LayerBuilderCond.cxx.

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 }

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

◆ validationAction()

virtual void Trk::ILayerBuilderCond::validationAction ( ) const
inlinevirtualinherited

Validation Action: Can be implemented optionally, outside access to internal validation steps.

Definition at line 66 of file ILayerBuilderCond.h.

66 {}

Member Data Documentation

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

float HGTD_LayerBuilderCond::m_discEnvelopeR
private

set disc envelope

Definition at line 103 of file HGTD_LayerBuilderCond.h.

◆ m_discThickness

float HGTD_LayerBuilderCond::m_discThickness
private

set disc thickness

Definition at line 104 of file HGTD_LayerBuilderCond.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_HGTD_ReadKey

SG::ReadCondHandleKey<InDetDD::HGTD_DetectorElementCollection> HGTD_LayerBuilderCond::m_HGTD_ReadKey
private
Initial value:
{
this,
"HGTD_ReadKey",
"HGTD_DetectorElementCollection",
"Key of output HGTD_DetectorElementCollection for HGTD"
}

Definition at line 109 of file HGTD_LayerBuilderCond.h.

◆ m_hgtdHelper

const HGTD_ID* HGTD_LayerBuilderCond::m_hgtdHelper
private

HGTD Id Helper.

Definition at line 94 of file HGTD_LayerBuilderCond.h.

◆ m_hgtdMgr

const HGTD_DetectorManager* HGTD_LayerBuilderCond::m_hgtdMgr
private

the HGTD Detector Manager

Definition at line 93 of file HGTD_LayerBuilderCond.h.

◆ m_identification

std::string HGTD_LayerBuilderCond::m_identification
private

string identification

Definition at line 98 of file HGTD_LayerBuilderCond.h.

◆ m_phiBins

int HGTD_LayerBuilderCond::m_phiBins
private

set the number of bins

Definition at line 101 of file HGTD_LayerBuilderCond.h.

◆ m_rBins

int HGTD_LayerBuilderCond::m_rBins
private

set the number of bins

Definition at line 100 of file HGTD_LayerBuilderCond.h.

◆ m_runGeometryValidation

bool HGTD_LayerBuilderCond::m_runGeometryValidation
private

run geometry validation

Definition at line 106 of file HGTD_LayerBuilderCond.h.

◆ m_setLayerAssociation

bool HGTD_LayerBuilderCond::m_setLayerAssociation
private

Set Layer Association.

Definition at line 96 of file HGTD_LayerBuilderCond.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:
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
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
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
HGTD_LayerBuilderCond::m_discThickness
float m_discThickness
set disc thickness
Definition: HGTD_LayerBuilderCond.h:104
M_PI
#define M_PI
Definition: ActiveFraction.h:11
bin
Definition: BinsDiffFromStripMedian.h:43
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::closed
@ closed
Definition: BinningType.h:41
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
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
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
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
AthCommonDataStore
Definition: AthCommonDataStore.h:52
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
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Trk::LayerMaterialProperties
Definition: LayerMaterialProperties.h:62
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
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::DiscLayer
Definition: DiscLayer.h:45
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::BinnedLayerMaterial
Definition: BinnedLayerMaterial.h:33
HGTD_LayerBuilderCond::m_discEnvelopeR
float m_discEnvelopeR
set disc envelope
Definition: HGTD_LayerBuilderCond.h:103
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
Trk::BinUtility
Definition: BinUtility.h:39
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
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
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
h
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
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
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
LArCellBinning.step
step
Definition: LArCellBinning.py:158
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
HGTD_LayerBuilderCond::retrieveHGTDdetElements
SG::ReadCondHandle< InDetDD::HGTD_DetectorElementCollection > retrieveHGTDdetElements(const EventContext &ctx) const
helper method to construct HGTD materia
Definition: HGTD_LayerBuilderCond.cxx:80
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
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
readCCLHist.float
float
Definition: readCCLHist.py:83
HGTD_LayerBuilderCond::m_hgtdHelper
const HGTD_ID * m_hgtdHelper
HGTD Id Helper.
Definition: HGTD_LayerBuilderCond.h:94
fitman.k
k
Definition: fitman.py:528
Trk::DiscBounds
Definition: DiscBounds.h:44
Muon::nsw::STGTPSegments::MergedSegmentProperty::rIndex
@ rIndex
Trk::SurfaceOrderPosition
std::pair< SharedObject< Surface >, Amg::Vector3D > SurfaceOrderPosition
Definition: HGTD_LayerBuilderCond.h:36
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