ATLAS Offline Software
Loading...
Searching...
No Matches
CaloDetectorElements.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
12
13#ifndef CALODETDESCR_CALODETECTORELEMENTS_H
14#define CALODETDESCR_CALODETECTORELEMENTS_H
15
16#include "CaloDetDescr/CaloDetDescrElement.h"
17
26
27// MBTS
28#include "Identifier/Identifier.h"
29
32
38
39typedef struct
40{
41 float dx;
42 float dy;
43 float dz;
45
52{
53 public:
64 EMBDetectorElement(const IdentifierHash subcaloHash
65 , const IdentifierHash onl1
66 , const IdentifierHash onl2
68 , EMBCellConstLink& embCell
69 , const EMBDetectorRegion* embRegion
70 , bool isTestBeam
71 , const GeoAlignmentStore* geoAlignStore = nullptr
72 , const CaloElementPositionShift* posShift = nullptr);
73
77 inline EMBCellConstLink getEMBCell() const {return m_cell;}
78
82 virtual int getLayer() const override;
83
84 private:
93
102
106 void init_description(const GeoAlignmentStore* geoAlignStore
107 , const CaloElementPositionShift* posShift);
108};
109
116{
117 public:
128 EMECDetectorElement(const IdentifierHash subcaloHash
129 , const IdentifierHash onl1
130 , const IdentifierHash onl2
132 , EMECCellConstLink& emecCell
133 , const EMECDetectorRegion* emecRegion
134 , bool isTestBeam
135 , const GeoAlignmentStore* geoAlignStore = nullptr
136 , const CaloElementPositionShift* posShift = nullptr);
137
141 inline EMECCellConstLink getEMECCell() const {return m_cell;}
142
146 virtual int getLayer() const override;
147
148 private:
157
166
170 void init_description(bool isTestBeam
171 , const GeoAlignmentStore* geoAlignStore
172 , const CaloElementPositionShift* posShift);
173
178 void init_interpretation();
179
180};
181
182
189{
190 public:
201 HECDetectorElement(const IdentifierHash subcaloHash
202 , const IdentifierHash onl1
203 , const IdentifierHash onl2
205 , HECCellConstLink& hecCell
206 , const HECDetectorRegion* hecRegion
207 , bool isTestBeam
208 , const GeoAlignmentStore* geoAlignStore = nullptr
209 , const CaloElementPositionShift* posShift = nullptr);
210
214 inline HECCellConstLink getHECCell() const {return m_cell;}
215
219 virtual int getLayer() const override;
220
221 private:
230
239
243 void init_description(bool isTestBeam
244 , const GeoAlignmentStore* geoAlignStore
245 , const CaloElementPositionShift* posShift);
246
251 void init_interpretation();
252
253};
254
261{
262 public:
273 FCALDetectorElement(const IdentifierHash subcaloHash
274 , const IdentifierHash onl1
275 , const IdentifierHash onl2
277 , const FCALTile* fcalTile
278 , const FCALModule* fcalModule
279 , bool isTestBeam
280 , const GeoAlignmentStore* geoAlignStore = nullptr
281 , const CaloElementPositionShift* posShift = nullptr);
282
286 inline const FCALTile* getFCALTile() const {return m_tile;}
287
291 virtual int getLayer() const override;
292
293 private:
302
311
315 void init_description(bool isTestBeam
316 , const GeoAlignmentStore* geoAlignStore
317 , const CaloElementPositionShift* posShift);
318
319};
320
327{
328 public:
332 TileDetectorElement(const IdentifierHash subcaloHash
333 , const IdentifierHash onl1
334 , const IdentifierHash onl2
336
340 void set_cylindric_raw(double eta_raw
341 , double phi_raw
342 , double r_raw);
343
347 void set_cylindric(double eta
348 , double phi
349 , double r);
350
354 inline void set_deta(double deta) {m_deta = static_cast<float> (deta);}
358 inline void set_dphi(double dphi) {m_dphi = static_cast<float> (dphi);}
362 inline void set_dz(double dz) {m_dz = static_cast<float> (dz);}
366 inline void set_dr(double dr) {m_dr = static_cast<float> (dr);}
370 inline void set_z(double z) {m_z = static_cast<float> (z);}
374 inline void set_r(double r) {
375 m_r = static_cast<float> (r);
376 m_x = static_cast<float> (m_cosPhi * r);
377 m_y = static_cast<float> (m_sinPhi * r);
378 }
379};
380
387{
388 public:
393
394 // Initialize data members
395 inline void set_id(const Identifier& id) {m_id = id;}
396 inline void set_z(double z) {m_z = static_cast<float> (z);}
397 inline void set_dz(double dz) {m_dz = static_cast<float> (dz);}
398 inline void set_r(double r) {m_r = static_cast<float> (r);}
399 inline void set_dr(double dr) {m_dr = static_cast<float> (dr);}
400 inline void set_eta(double eta) {m_eta = static_cast<float> (eta);}
401 inline void set_deta(double deta) {m_deta = static_cast<float> (deta);}
402 inline void set_phi(double phi) {m_phi = static_cast<float> (phi);}
403 inline void set_dphi(double dphi) {m_dphi = static_cast<float> (dphi);}
404
405 // Compute derived quantities
406 void compute_derived();
407
408 private:
410
411 virtual Identifier customID() const;
412};
413
414
415
422 : public CaloDetDescrElement
423{
424public:
433 : CaloDetDescrElement (subcaloHash, 0, 0, descriptor) {}
434
435
441 StatusCode update (const std::vector<const CaloDetDescrElement*>& fromelts);
442
443
444private:
448 StatusCode updateNull();
449
450
454 StatusCode updateSingle (const CaloDetDescrElement* fromelt);
455
456
462 StatusCode
463 updateBE (const std::vector<const CaloDetDescrElement*>& fromelts);
464
465
471 StatusCode
472 updateFCAL (const std::vector<const CaloDetDescrElement*>& fromelts);
473};
474
475
482{
483 public:
486 DummyDetDescrElement(const IdentifierHash subcaloHash,
487 const IdentifierHash onl1,
488 const IdentifierHash onl2,
490
493 void set_cylindric(double eta,
494 double phi,
495 double r);
496
499 void set_cylindric_raw(double eta_raw,
500 double phi_raw,
501 double r_raw);
502
505 void set_cylindric_size(double deta,
506 double dphi,
507 double dr);
508};
509
510#endif
This class groups all DetDescr information related to a CaloCell.
CaloDetDescrElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor)
Constructor.
IdentifierHash onl2() const
cell online identifier 2
float m_sinPhi
cache to allow fast px py pz computation
float m_cosPhi
cache to allow fast px py pz computation
const CaloDetDescriptor * descriptor() const
cell descriptor
IdentifierHash onl1() const
cell online identifier 1
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
CaloSuperCellDetectorElement(const IdentifierHash subcaloHash, const CaloDetDescriptor *descriptor)
Constructor, initializes base class constructor parameters with default values.
StatusCode updateSingle(const CaloDetDescrElement *fromelt)
Copy this element's geometry from the given offline element.
StatusCode updateBE(const std::vector< const CaloDetDescrElement * > &fromelts)
Update this element's geometry from a list of elements.
StatusCode updateFCAL(const std::vector< const CaloDetDescrElement * > &fromelts)
Update this element's geometry from a list of elements.
StatusCode updateNull()
Set this element's geometry to default values.
StatusCode update(const std::vector< const CaloDetDescrElement * > &fromelts)
Update this element's geometry from the given list of offline elements.
DummyDetDescrElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor)
Constructor, takes all necessary parameters for the base class constructor.
void set_cylindric_raw(double eta_raw, double phi_raw, double r_raw)
set raw cylindric coordinates
void set_cylindric(double eta, double phi, double r)
set cylindric coordinates
void set_cylindric_size(double deta, double dphi, double dr)
set cylindric size deta/dphi/dr
EMBDetectorElement & operator=(const EMBDetectorElement &right)=delete
copy constructor hidden
EMBCellConstLink getEMBCell() const
EMB Cell description from LArReadoutGeometry.
virtual int getLayer() const override
get layer
EMBDetectorElement()=delete
default constructor hidden
EMBCellConstLink m_cell
EMB Cell description from LArReadoutGeometry.
EMBDetectorElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor, EMBCellConstLink &embCell, const EMBDetectorRegion *embRegion, bool isTestBeam, const GeoAlignmentStore *geoAlignStore=nullptr, const CaloElementPositionShift *posShift=nullptr)
Constructor, takes all necessary parameters for the base class constructor plus some specific paramet...
const EMBDetectorRegion * m_region
EMB Region description from LArReadoutGeometry.
void init_description(const GeoAlignmentStore *geoAlignStore, const CaloElementPositionShift *posShift)
initialize base description
void init_interpretation()
Fill all missing fields of CaloDetDescrElement which have not been filled by init_description()
const EMECDetectorRegion * m_region
EMEC Region description from LArReadoutGeometry.
virtual int getLayer() const override
get layer
EMECDetectorElement & operator=(const EMECDetectorElement &right)=delete
copy constructor hidden
EMECCellConstLink getEMECCell() const
EMEC Cell description from LArReadoutGeometry.
EMECCellConstLink m_cell
EMEC Cell description from LArReadoutGeometry.
void init_description(bool isTestBeam, const GeoAlignmentStore *geoAlignStore, const CaloElementPositionShift *posShift)
initialize base description
EMECDetectorElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor, EMECCellConstLink &emecCell, const EMECDetectorRegion *emecRegion, bool isTestBeam, const GeoAlignmentStore *geoAlignStore=nullptr, const CaloElementPositionShift *posShift=nullptr)
Constructor, takes all necessary parameters for the base class constructor plus some specific paramet...
EMECDetectorElement()=delete
default constructor hidden
virtual int getLayer() const override
get layer
FCALDetectorElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor, const FCALTile *fcalTile, const FCALModule *fcalModule, bool isTestBeam, const GeoAlignmentStore *geoAlignStore=nullptr, const CaloElementPositionShift *posShift=nullptr)
Constructor, takes all necessary parameters for the base class constructor plus some specific paramet...
const FCALTile * m_tile
FCAL Tile description from LArReadoutGeometry.
FCALDetectorElement & operator=(const FCALDetectorElement &right)=delete
copy constructor hidden
const FCALTile * getFCALTile() const
FCAL Tile description from LArReadoutGeometry.
FCALDetectorElement()=delete
default constructor hidden
void init_description(bool isTestBeam, const GeoAlignmentStore *geoAlignStore, const CaloElementPositionShift *posShift)
initialize base description
const FCALModule * m_module
FCAL Module description from LArReadoutGeometry.
A tile of the forward calorimeter readout geometry.
Definition FCALTile.h:27
Ensure that the extensions for the Vector3D are properly loaded.
HECCellConstLink m_cell
HEC Cell description from LArReadoutGeometry.
void init_description(bool isTestBeam, const GeoAlignmentStore *geoAlignStore, const CaloElementPositionShift *posShift)
initialize base description
void init_interpretation()
Fill all missing fields of CaloDetDescrElement which have not been filled by init_description()
HECDetectorElement & operator=(const HECDetectorElement &right)=delete
copy constructor hidden
const HECDetectorRegion * m_region
HEC Region description from LArReadoutGeometry.
HECDetectorElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor, HECCellConstLink &hecCell, const HECDetectorRegion *hecRegion, bool isTestBeam, const GeoAlignmentStore *geoAlignStore=nullptr, const CaloElementPositionShift *posShift=nullptr)
Constructor, takes all necessary parameters for the base class constructor plus some specific paramet...
virtual int getLayer() const override
get layer
HECCellConstLink getHECCell() const
HEC Cell description from LArReadoutGeometry.
HECDetectorElement()=delete
default constructor hidden
Description of a region of homogenous granularity in the hadronic endcap calorimeter.
This is a "hash" representation of an Identifier.
MbtsDetectorElement()
Constructor, initializes base class constructor parameters with default values.
void set_id(const Identifier &id)
void set_deta(double deta)
virtual Identifier customID() const
void set_dphi(double dphi)
void set_r(double r)
set r
void set_cylindric(double eta, double phi, double r)
set cylindric coordinates
TileDetectorElement(const IdentifierHash subcaloHash, const IdentifierHash onl1, const IdentifierHash onl2, const CaloDetDescriptor *descriptor)
Constructor, takes all necessary parameters for the base class constructor.
void set_dz(double dz)
set cartezian size dz
void set_z(double z)
set z
void set_dr(double dr)
set cylindric size dr
void set_dphi(double dphi)
set cylindric size dphi
void set_cylindric_raw(double eta_raw, double phi_raw, double r_raw)
set raw cylindric coordinates
void set_deta(double deta)
set cylindric size deta
dx,dy,dz displacement of the calorimeter cell caused by sagging