ATLAS Offline Software
FCALModule.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LARREADOUTGEOMETRY_FCALMODULE_H
6 #define LARREADOUTGEOMETRY_FCALMODULE_H
7 
8 #include "Identifier/Identifier.h"
10 #include "GeoModelKernel/GeoVDetectorElement.h"
11 #include "GeoModelKernel/GeoDefinitions.h"
12 #include "GaudiKernel/SystemOfUnits.h"
14 #include "CxxUtils/CachedValue.h"
15 #include <utility>
16 #include <vector>
17 
30 class GeoAlignmentStore;
31 
32 class FCALModule : public GeoVDetectorElement
33 {
34 
35  public:
36  typedef std::vector<FCALTile>::const_iterator ConstIterator;
37  typedef enum {FCAL1=1, FCAL2=2, FCAL3=3} Module;
38  typedef enum {NEG=0, POS=1} Endcap;
39 
40 
41  public:
42 
43 
47  FCALModule (const GeoVFullPhysVol *physVol
48  , Module module
49  , Endcap endcap
50  , double projectivityDisplacement = 4*Gaudi::Units::cm);
51 
56 
60  const FCALDetectorManager* getManager () const;
61 
66 
71 
75  const FCALTile* getTile (int i, int j) const;
76 
81 
86 
90  double getFullWidthX (const FCALTile& tile) const;
91 
95  double getFullWidthY (const FCALTile& tile) const;
96 
100  double getFullDepthZ (const FCALTile& ) const;
101 
105  const Amg::Transform3D& getAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const;
106 
110  const Amg::Transform3D& getDefAbsoluteTransform (const GeoAlignmentStore* alignStore=nullptr) const;
111 
112 
113  double getProjectivityDisplacement() const;
114 
115  private:
116  static constexpr size_t MAXTUBES = 64;
117 
118  FCALModule(const FCALModule &right);
119  FCALModule & operator=(const FCALModule &right);
120 
121 
125  void setManager (FCALDetectorManager* fcalManager);
126 
130  std::vector<FCALTile> m_tileList;
131 
136 
141 
146 
150  using tubexy_t = std::pair<double, double>;
152 
153  const tubexy_t& getFullWidths (unsigned int ntubes) const;
154 
158  double m_dz;
159 
160 
162 
163  friend class FCALDetectorManager;
164 
165 };
166 
167 
168 
169 
171 {
172  return m_manager;
173 }
174 
176 {
178 }
179 
180 
181 #endif
FCALModule::getManager
const FCALDetectorManager * getManager() const
Gets the manager.
Definition: FCALModule.h:170
GeoAlignmentStore
Ensure that the extensions for the Vector3D are properly loaded.
Definition: GeoAlignmentStore.h:24
FCALModule::m_projectivityDisplacement
double m_projectivityDisplacement
Definition: FCALModule.h:161
FCALDetectorManager
A manager class providing access to readout geometry information for the forward calorimeter.
Definition: FCALDetectorManager.h:29
FCALModule::FCAL2
@ FCAL2
Definition: FCALModule.h:37
FCALModule::MAXTUBES
static constexpr size_t MAXTUBES
Definition: FCALModule.h:116
FCALModule::getFullWidths
const tubexy_t & getFullWidths(unsigned int ntubes) const
Definition: FCALModule.cxx:124
FCALModule::getAbsoluteTransform
const Amg::Transform3D & getAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
Definition: FCALModule.cxx:94
FCALModule::endTiles
FCALModule::ConstIterator endTiles() const
Iteration over FCAL Tiles.
Definition: FCALModule.cxx:51
FCALModule::POS
@ POS
Definition: FCALModule.h:38
FCALModule::~FCALModule
~FCALModule()
Desctructor.
FCALModule::FCALModule
FCALModule(const GeoVFullPhysVol *physVol, Module module, Endcap endcap, double projectivityDisplacement=4 *Gaudi::Units::cm)
Constructor.
Definition: FCALModule.cxx:29
ReadCellNoiseFromCool.tile
tile
Definition: ReadCellNoiseFromCool.py:92
FCALModule::NEG
@ NEG
Definition: FCALModule.h:38
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
FCALTile
A tile of the forward calorimeter readout geometry.
Definition: FCALTile.h:27
python.PyAthena.module
module
Definition: PyAthena.py:134
GeoPrimitives.h
FCALModule::m_Mod
Module m_Mod
Module number: 1, 2, or 3.
Definition: FCALModule.h:135
lumiFormat.i
int i
Definition: lumiFormat.py:92
FCALModule::ConstIterator
std::vector< FCALTile >::const_iterator ConstIterator
Definition: FCALModule.h:36
FCALTile.h
FCALModule::getFullDepthZ
double getFullDepthZ(const FCALTile &) const
Gets Tile (full) Depth.
Definition: FCALModule.cxx:89
FCALModule::m_tileSizes
CxxUtils::CachedValue< tubexy_t > m_tileSizes[MAXTUBES]
Definition: FCALModule.h:151
FCALModule::getDefAbsoluteTransform
const Amg::Transform3D & getDefAbsoluteTransform(const GeoAlignmentStore *alignStore=nullptr) const
Returns the absolute transform of this element.
Definition: FCALModule.cxx:102
FCALModule::m_tileList
std::vector< FCALTile > m_tileList
A List of Tiles.
Definition: FCALModule.h:130
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
CxxUtils::CachedValue< tubexy_t >
FCALModule::getFullWidthX
double getFullWidthX(const FCALTile &tile) const
Gets Tile Full Width in X.
Definition: FCALModule.cxx:79
FCALModule::FCALModule
FCALModule(const FCALModule &right)
FCALModule::getModuleIndex
FCALModule::Module getModuleIndex() const
Returns the Module (1,2, or 3)
Definition: FCALModule.cxx:74
FCALModule::m_EC
Endcap m_EC
Endcap.
Definition: FCALModule.h:140
CachedValue.h
Cached value with atomic update.
FCALModule::Endcap
Endcap
Definition: FCALModule.h:38
FCALModule::getProjectivityDisplacement
double getProjectivityDisplacement() const
Definition: FCALModule.h:175
FCALModule
Definition: FCALModule.h:33
FCALModule::setManager
void setManager(FCALDetectorManager *fcalManager)
Sets the manager.
Definition: FCALModule.cxx:110
FCALModule::getEndcapIndex
FCALModule::Endcap getEndcapIndex() const
Returns the side (O=Negative, 1=Positive)
Definition: FCALModule.cxx:69
FCALModule::tubexy_t
std::pair< double, double > tubexy_t
X/Y pairs of tile sizes.
Definition: FCALModule.h:150
FCALModule::m_manager
FCALDetectorManager * m_manager
Point to the manager.
Definition: FCALModule.h:145
FCALModule::getTile
const FCALTile * getTile(int i, int j) const
Returns a tile by indices i and j.
Definition: FCALModule.cxx:56
FCALModule::getFullWidthY
double getFullWidthY(const FCALTile &tile) const
Gets Tile Full Width in Y.
Definition: FCALModule.cxx:84
FCALModule::FCAL1
@ FCAL1
Definition: FCALModule.h:37
FCALModule::operator=
FCALModule & operator=(const FCALModule &right)
FCALModule::m_dz
double m_dz
Holds Delta Z, Full width of a cell.
Definition: FCALModule.h:158
FCALModule::Module
Module
Definition: FCALModule.h:37
FCALModule::beginTiles
FCALModule::ConstIterator beginTiles() const
Iteration over FCAL Tiles.
Definition: FCALModule.cxx:46
FCALModule::FCAL3
@ FCAL3
Definition: FCALModule.h:37