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

A tile of the forward calorimeter readout geometry. More...

#include <FCALTile.h>

Collaboration diagram for FCALTile:

Public Member Functions

 FCALTile (const FCALTile &right)
 Copy constructor.
 FCALTile (const FCALModule *module, FCALTile::TileConstIterator tIterator)
 Constructor.
 ~FCALTile ()
 Destructor.
FCALTileoperator= (const FCALTile &right)
 Assignment.
double getX () const
 Gets the X Position of the Tile.
double getY () const
 Gets the Y position of the Tile.
unsigned int getNumTubes () const
 Gets the number of tubes in the tile.
int getIndexI () const
 Returns the index "i" of the tile.
int getIndexJ () const
 Returns the index "J" of the tile.
unsigned int identify () const
 Returns the identifier of this tile (convention: comes from the FCAL Channel Map).
bool operator< (const FCALTile &t) const
 For sorting operations:
const FCALModulegetModule () const
 Get the Module.
FCALTubeConstLink getTube (unsigned int i) const
 Get a tube.
const FCALHVLinegetHVLine (unsigned int i) const
 Get hvline.

Static Public Member Functions

static unsigned int getNumHVLines ()
 Get num hvlines.

Private Types

typedef FCAL_ChannelMap::tileMap_const_iterator TileConstIterator

Private Attributes

const FCALModulem_module
TileConstIterator m_tile
CxxUtils::CachedPointer< const FCALHVLinem_line [4]
 Cache of subgaps.
CxxUtils::CachedValue< std::vector< FCALTubeConstLink > > m_tube
 Cache of tubes.

Detailed Description

A tile of the forward calorimeter readout geometry.

This class represents the size, shape, position, and indices of a single tile within the FCAL. For access to the FCAL Tiles, you should use the FCAL Module class.

Definition at line 26 of file FCALTile.h.

Member Typedef Documentation

◆ TileConstIterator

Constructor & Destructor Documentation

◆ FCALTile() [1/2]

FCALTile::FCALTile ( const FCALTile & right)

Copy constructor.

Definition at line 15 of file FCALTile.cxx.

16 :m_module(right.m_module),m_tile(right.m_tile)
17{
18}
TileConstIterator m_tile
Definition FCALTile.h:112
const FCALModule * m_module
Definition FCALTile.h:111

◆ FCALTile() [2/2]

FCALTile::FCALTile ( const FCALModule * module,
FCALTile::TileConstIterator tIterator )

Constructor.

Definition at line 20 of file FCALTile.cxx.

21 :m_module(module),m_tile(tIterator)
22{
23}

◆ ~FCALTile()

FCALTile::~FCALTile ( )
default

Destructor.

Member Function Documentation

◆ getHVLine()

const FCALHVLine * FCALTile::getHVLine ( unsigned int i) const

Get hvline.

Definition at line 85 of file FCALTile.cxx.

85 {
86 if (!m_line[i].get()) {
87
88 for (unsigned int j=0;j<getNumTubes();j++) {
89 unsigned int index=getTube(j)->getHVLine().getLineIndex();
90 if (i==index) {
91 m_line[i].set (&(getTube(j)->getHVLine()));
92 break;
93 }
94 }
95 }
96 return m_line[i].get();
97}
FCALTubeConstLink getTube(unsigned int i) const
Get a tube.
Definition FCALTile.cxx:100
const FCALHVLine * getHVLine(unsigned int i) const
Get hvline.
Definition FCALTile.cxx:85
CxxUtils::CachedPointer< const FCALHVLine > m_line[4]
Cache of subgaps.
Definition FCALTile.h:117
unsigned int getNumTubes() const
Gets the number of tubes in the tile.
Definition FCALTile.cxx:56
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130
str index
Definition DeMoScan.py:362

◆ getIndexI()

int FCALTile::getIndexI ( ) const

Returns the index "i" of the tile.

Definition at line 61 of file FCALTile.cxx.

62{
63 return ((*m_tile).first & 0X00000FFFF );
64}

◆ getIndexJ()

int FCALTile::getIndexJ ( ) const

Returns the index "J" of the tile.

Definition at line 66 of file FCALTile.cxx.

67{
68 return (((*m_tile).first & 0XFFFF0000 )>> 16);
69}

◆ getModule()

const FCALModule * FCALTile::getModule ( ) const

Get the Module.

Definition at line 76 of file FCALTile.cxx.

76 {
77 return m_module;
78}

◆ getNumHVLines()

unsigned int FCALTile::getNumHVLines ( )
static

Get num hvlines.

Definition at line 81 of file FCALTile.cxx.

81 {
82 return 4;
83}

◆ getNumTubes()

unsigned int FCALTile::getNumTubes ( ) const

Gets the number of tubes in the tile.

Definition at line 56 of file FCALTile.cxx.

57{
58 return (*m_tile).second.ntubes();
59}

◆ getTube()

FCALTubeConstLink FCALTile::getTube ( unsigned int i) const

Get a tube.

Definition at line 100 of file FCALTile.cxx.

100 {
101
102 if (!m_tube.isValid()) {
103
104 std::vector<FCALTubeConstLink> tube;
105
106 SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore")};
107 if(!detStore.isValid()) {
108 throw std::runtime_error("Error in FCALTile: cannot access DetectorStore (tube access)");
109 }
110
111 const FCAL_ChannelMap *channelMap;
112 if (detStore->retrieve(channelMap)==StatusCode::FAILURE) {
113 throw std::runtime_error("Error in FCALTile: cannot access Channel Map");
114 }
115
116 unsigned int moduleNumber = m_module->getModuleIndex(); // 1, 2, or 3.
117 unsigned int iSampling = moduleNumber-1; // by convention.
118 unsigned int iSide = m_module->getEndcapIndex();
119
120 for (FCAL_ChannelMap::tubemap_const_iterator t=channelMap->tubemap_begin(moduleNumber);t!=channelMap->tubemap_end(moduleNumber); ++t) {
121 if ((*t).second.get_tileName()==(*m_tile).first) {
122 std::string FeedThrough = (*t).second.getHVft();
123
124 std::string::size_type pos = FeedThrough.find('.');
125 if (pos==std::string::npos) {
126 std::cout << "Big problem, feedthrough: " << FeedThrough << std::endl;
127 throw std::runtime_error("Error parsing FCAL HV Feedthrough string (finding substring)");
128 }
129
130 std::string FeedMe=FeedThrough.substr(0,pos);
131
132 pos++;
133 std::string Line=FeedThrough.substr(pos);
134
135 std::istringstream FeedStream(FeedMe);
136 unsigned int feedNumber;
137 if (!(FeedStream>>feedNumber)) {
138 throw std::runtime_error("Error parsing FCAL HV Feedthrough string (parsing substring 1)");
139 }
140
141 std::istringstream LineStream(Line);
142 unsigned int lineNumber;
143 if (!(LineStream>>lineNumber)) {
144 throw std::runtime_error("Error parsing FCAL HV Feedthrough string (parsing substring 2)");
145 }
146
147 int hv_moduleNumber=lineNumber/4;
148 if (feedNumber==23) hv_moduleNumber+=8;
149
150 //std::cout << " feedNumber, lineNumber " << feedNumber << " " << lineNumber << std::endl;
151
152 const FCALHVManager& hvManager=getModule()->getManager()->getHVManager();
153 const FCALHVModule& hvMod = hvManager.getHVModule(iSide,hv_moduleNumber,iSampling);
154 unsigned int index=0;
155
156 if (lineNumber%4==0) index=0;
157 else if (lineNumber%4==1) index=3;
158 else if (lineNumber%4==2) index=1;
159 else if (lineNumber%4==3) index=2;
160 else throw std::runtime_error("Error in FCALTile: unrecognized HV Line");
161
162 const FCALHVLine& hvElec = hvMod.getHVLine(index);
163
164 FCALTubeConstLink tubeLink(new FCALTube(this, hvElec, (*t).second.x(),(*t).second.y()));
165
166 tube.push_back(tubeLink);
167 }
168 }
169 m_tube.set (std::move (tube));
170 }
171 return (*m_tube.ptr())[i];
172}
const FCALHVManager & getHVManager() const
Get the HV Manager:
const FCALHVModule & getHVModule(unsigned int iSide, unsigned int iSector, unsigned int iSampling) const
const FCALHVLine & getHVLine(unsigned int iLine) const
const FCALDetectorManager * getManager() const
Gets the manager.
Definition FCALModule.h:170
CxxUtils::CachedValue< std::vector< FCALTubeConstLink > > m_tube
Cache of tubes.
Definition FCALTile.h:122
const FCALModule * getModule() const
Get the Module.
Definition FCALTile.cxx:76
tubemap_const_iterator tubemap_begin(int isam) const
tubeMap access functions

◆ getX()

double FCALTile::getX ( ) const

Gets the X Position of the Tile.

Definition at line 46 of file FCALTile.cxx.

47{
48 return (*m_tile).second.x();
49}

◆ getY()

double FCALTile::getY ( ) const

Gets the Y position of the Tile.

Definition at line 51 of file FCALTile.cxx.

52{
53 return (*m_tile).second.y();
54}

◆ identify()

unsigned int FCALTile::identify ( ) const

Returns the identifier of this tile (convention: comes from the FCAL Channel Map).

Definition at line 71 of file FCALTile.cxx.

72{
73 return (*m_tile).first;
74}

◆ operator<()

bool FCALTile::operator< ( const FCALTile & t) const
inline

For sorting operations:

Definition at line 86 of file FCALTile.h.

86{ return ((*m_tile).first) < (*t.m_tile).first; }

◆ operator=()

FCALTile & FCALTile::operator= ( const FCALTile & right)

Assignment.

Definition at line 31 of file FCALTile.cxx.

32{
33 if (this!=&right) {
34 m_module=right.m_module;
35 m_tile=right.m_tile;
36 m_tube.reset();
37 for (int i = 0; i < 4; i++) {
38 m_line[i].store (nullptr);
39 }
40 }
41 return *this;
42}

Member Data Documentation

◆ m_line

CxxUtils::CachedPointer<const FCALHVLine> FCALTile::m_line[4]
private

Cache of subgaps.

Definition at line 117 of file FCALTile.h.

◆ m_module

const FCALModule* FCALTile::m_module
private

Definition at line 111 of file FCALTile.h.

◆ m_tile

TileConstIterator FCALTile::m_tile
private

Definition at line 112 of file FCALTile.h.

◆ m_tube

CxxUtils::CachedValue<std::vector<FCALTubeConstLink> > FCALTile::m_tube
private

Cache of tubes.

Definition at line 122 of file FCALTile.h.


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