ATLAS Offline Software
Loading...
Searching...
No Matches
FCALModule Class Reference

#include <FCALModule.h>

Inheritance diagram for FCALModule:
Collaboration diagram for FCALModule:

Public Types

enum  Module { FCAL1 =1 , FCAL2 =2 , FCAL3 =3 }
enum  Endcap { NEG =0 , POS =1 }
typedef std::vector< FCALTile >::const_iterator ConstIterator

Public Member Functions

 FCALModule (const GeoVFullPhysVol *physVol, Module module, Endcap endcap, double projectivityDisplacement=4 *Gaudi::Units::cm)
 Constructor.
 ~FCALModule ()
 Desctructor.
const FCALDetectorManagergetManager () const
 Gets the manager.
FCALModule::ConstIterator beginTiles () const
 Iteration over FCAL Tiles.
FCALModule::ConstIterator endTiles () const
 Iteration over FCAL Tiles.
const FCALTilegetTile (int i, int j) const
 Returns a tile by indices i and j.
FCALModule::Endcap getEndcapIndex () const
 Returns the side (O=Negative, 1=Positive)
FCALModule::Module getModuleIndex () const
 Returns the Module (1,2, or 3)
double getFullWidthX (const FCALTile &tile) const
 Gets Tile Full Width in X.
double getFullWidthY (const FCALTile &tile) const
 Gets Tile Full Width in Y.
double getFullDepthZ (const FCALTile &) const
 Gets Tile (full) Depth.
const Amg::Transform3DgetAbsoluteTransform (const GeoAlignmentStore *alignStore=nullptr) const
 Returns the absolute transform of this element.
const Amg::Transform3DgetDefAbsoluteTransform (const GeoAlignmentStore *alignStore=nullptr) const
 Returns the absolute transform of this element.
double getProjectivityDisplacement () const

Private Types

using tubexy_t = std::pair<double, double>
 X/Y pairs of tile sizes.

Private Member Functions

 FCALModule (const FCALModule &right)
FCALModuleoperator= (const FCALModule &right)
void setManager (FCALDetectorManager *fcalManager)
 Sets the manager.
const tubexy_tgetFullWidths (unsigned int ntubes) const

Private Attributes

std::vector< FCALTilem_tileList
 A List of Tiles.
Module m_Mod
 Module number: 1, 2, or 3.
Endcap m_EC
 Endcap.
FCALDetectorManagerm_manager
 Point to the manager.
CxxUtils::CachedValue< tubexy_tm_tileSizes [MAXTUBES]
double m_dz
 Holds Delta Z, Full width of a cell.
double m_projectivityDisplacement

Static Private Attributes

static constexpr size_t MAXTUBES = 64

Friends

class FCALDetectorManager

Detailed Description

@brief Description of an FCAL Module

This class combines a description of the cell granularity with a physical volume to create a description of an FCAL module positioned within ATLAS. It provides access to the FCAL Tiles.

Definition at line 32 of file FCALModule.h.

Member Typedef Documentation

◆ ConstIterator

Definition at line 36 of file FCALModule.h.

◆ tubexy_t

using FCALModule::tubexy_t = std::pair<double, double>
private

X/Y pairs of tile sizes.

Definition at line 150 of file FCALModule.h.

Member Enumeration Documentation

◆ Endcap

Enumerator
NEG 
POS 

Definition at line 38 of file FCALModule.h.

◆ Module

Enumerator
FCAL1 
FCAL2 
FCAL3 

Definition at line 37 of file FCALModule.h.

Constructor & Destructor Documentation

◆ FCALModule() [1/2]

FCALModule::FCALModule ( const GeoVFullPhysVol * physVol,
Module module,
Endcap endcap,
double projectivityDisplacement = 4*Gaudi::Units::cm )

Constructor.

Definition at line 29 of file FCALModule.cxx.

30 : GeoVDetectorElement(physVol)
31 , m_Mod(module)
32 , m_EC(endcap)
33 , m_manager(nullptr)
34 , m_dz(((const GeoTubs *) physVol->getLogVol()->getShape())->getZHalfLength()*2.0)
35 , m_projectivityDisplacement(projectivityDisplacement)
36{
37
38}
FCALDetectorManager * m_manager
Point to the manager.
Definition FCALModule.h:145
double m_dz
Holds Delta Z, Full width of a cell.
Definition FCALModule.h:158
Module m_Mod
Module number: 1, 2, or 3.
Definition FCALModule.h:135
Endcap m_EC
Endcap.
Definition FCALModule.h:140
double m_projectivityDisplacement
Definition FCALModule.h:161

◆ ~FCALModule()

FCALModule::~FCALModule ( )
default

Desctructor.

◆ FCALModule() [2/2]

FCALModule::FCALModule ( const FCALModule & right)
private

Member Function Documentation

◆ beginTiles()

FCALModule::ConstIterator FCALModule::beginTiles ( ) const

Iteration over FCAL Tiles.

Definition at line 46 of file FCALModule.cxx.

47{
48 return m_tileList.begin();
49}
std::vector< FCALTile > m_tileList
A List of Tiles.
Definition FCALModule.h:130

◆ endTiles()

FCALModule::ConstIterator FCALModule::endTiles ( ) const

Iteration over FCAL Tiles.

Definition at line 51 of file FCALModule.cxx.

52{
53 return m_tileList.end();
54}

◆ getAbsoluteTransform()

const Amg::Transform3D & FCALModule::getAbsoluteTransform ( const GeoAlignmentStore * alignStore = nullptr) const

Returns the absolute transform of this element.

Definition at line 94 of file FCALModule.cxx.

95{
96 const GeoVFullPhysVol *fullPhysVol = getMaterialGeom();
97 return alignStore
98 ? fullPhysVol->getCachedAbsoluteTransform(alignStore)
99 : fullPhysVol->getAbsoluteTransform();
100}

◆ getDefAbsoluteTransform()

const Amg::Transform3D & FCALModule::getDefAbsoluteTransform ( const GeoAlignmentStore * alignStore = nullptr) const

Returns the absolute transform of this element.

Definition at line 102 of file FCALModule.cxx.

103{
104 const GeoVFullPhysVol *fullPhysVol = getMaterialGeom();
105 return alignStore
106 ? fullPhysVol->getCachedDefAbsoluteTransform(alignStore)
107 : fullPhysVol->getDefAbsoluteTransform();
108}

◆ getEndcapIndex()

FCALModule::Endcap FCALModule::getEndcapIndex ( ) const

Returns the side (O=Negative, 1=Positive)

Definition at line 69 of file FCALModule.cxx.

70{
71 return m_EC;
72}

◆ getFullDepthZ()

double FCALModule::getFullDepthZ ( const FCALTile & ) const

Gets Tile (full) Depth.

Definition at line 89 of file FCALModule.cxx.

90{
91 return m_dz;
92}

◆ getFullWidths()

const FCALModule::tubexy_t & FCALModule::getFullWidths ( unsigned int ntubes) const
private

Definition at line 124 of file FCALModule.cxx.

125{
126 if (ntubes > MAXTUBES) std::abort();
127 if (!m_tileSizes[ntubes-1].isValid()) {
128 const FCAL_ChannelMap *cMap=m_manager->getChannelMap();
129 float dx,dy;
130 cMap->tileSize(m_Mod,ntubes,dx,dy);
131 m_tileSizes[ntubes-1].set (std::make_pair (dx, dy));
132 }
133 return *m_tileSizes[ntubes-1].ptr();
134}
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition AtlasPID.h:878
static constexpr size_t MAXTUBES
Definition FCALModule.h:116
CxxUtils::CachedValue< tubexy_t > m_tileSizes[MAXTUBES]
Definition FCALModule.h:151
void tileSize(int sam, int eta, int phi, float &dx, float &dy) const

◆ getFullWidthX()

double FCALModule::getFullWidthX ( const FCALTile & tile) const

Gets Tile Full Width in X.

Definition at line 79 of file FCALModule.cxx.

80{
81 return getFullWidths (tile.getNumTubes()).first;
82}
const tubexy_t & getFullWidths(unsigned int ntubes) const

◆ getFullWidthY()

double FCALModule::getFullWidthY ( const FCALTile & tile) const

Gets Tile Full Width in Y.

Definition at line 84 of file FCALModule.cxx.

85{
86 return getFullWidths (tile.getNumTubes()).second;
87}

◆ getManager()

const FCALDetectorManager * FCALModule::getManager ( ) const
inline

Gets the manager.

Definition at line 170 of file FCALModule.h.

171{
172 return m_manager;
173}

◆ getModuleIndex()

FCALModule::Module FCALModule::getModuleIndex ( ) const

Returns the Module (1,2, or 3)

Definition at line 74 of file FCALModule.cxx.

75{
76 return m_Mod;
77}

◆ getProjectivityDisplacement()

double FCALModule::getProjectivityDisplacement ( ) const
inline

Definition at line 175 of file FCALModule.h.

176{
178}

◆ getTile()

const FCALTile * FCALModule::getTile ( int i,
int j ) const

Returns a tile by indices i and j.

Definition at line 56 of file FCALModule.cxx.

57{
58
59 unsigned int id = (j<<16) | i;
60
61 std::vector<FCALTile>::const_iterator it = lower_bound(m_tileList.begin(),m_tileList.end(), id);
62 if ((*it).getIndexI()!=i || (*it).getIndexJ()!=j) {
63 return nullptr;
64 }
65 return &*it;
66
67}

◆ operator=()

FCALModule & FCALModule::operator= ( const FCALModule & right)
private

◆ setManager()

void FCALModule::setManager ( FCALDetectorManager * fcalManager)
private

Sets the manager.

Used by the manager. Initialized when managed.

Definition at line 110 of file FCALModule.cxx.

111{
112 m_manager = fcalManager;
113 const FCAL_ChannelMap *cMap = m_manager->getChannelMap();
115 for (t=begin;t!=end;++t) {
116 FCALTile tile(this,t);
117 m_tileList.push_back(tile);
118 }
119 std::sort(m_tileList.begin(),m_tileList.end());
120}
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ FCALDetectorManager

friend class FCALDetectorManager
friend

Definition at line 163 of file FCALModule.h.

Member Data Documentation

◆ m_dz

double FCALModule::m_dz
private

Holds Delta Z, Full width of a cell.

Definition at line 158 of file FCALModule.h.

◆ m_EC

Endcap FCALModule::m_EC
private

Endcap.

0 is Negative, 1 is Positive

Definition at line 140 of file FCALModule.h.

◆ m_manager

FCALDetectorManager* FCALModule::m_manager
private

Point to the manager.

Definition at line 145 of file FCALModule.h.

◆ m_Mod

Module FCALModule::m_Mod
private

Module number: 1, 2, or 3.

Definition at line 135 of file FCALModule.h.

◆ m_projectivityDisplacement

double FCALModule::m_projectivityDisplacement
private

Definition at line 161 of file FCALModule.h.

◆ m_tileList

std::vector<FCALTile> FCALModule::m_tileList
private

A List of Tiles.

Definition at line 130 of file FCALModule.h.

◆ m_tileSizes

CxxUtils::CachedValue<tubexy_t> FCALModule::m_tileSizes[MAXTUBES]
private

Definition at line 151 of file FCALModule.h.

◆ MAXTUBES

size_t FCALModule::MAXTUBES = 64
staticconstexprprivate

Definition at line 116 of file FCALModule.h.


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