ATLAS Offline Software
Classes | Public Member Functions | Private Member Functions | Private Attributes | List of all members
EMBAccordionDetails Class Reference

#include <EMBAccordionDetails.h>

Collaboration diagram for EMBAccordionDetails:

Classes

class  Clockwork
 

Public Member Functions

 EMBAccordionDetails ()
 Destructor. More...
 
 ~EMBAccordionDetails ()
 Destructor. More...
 
double phiFirstAbsorber () const
 Phi of the first absorber. More...
 
const GeoStraightAccSectiongetAbsorberSections () const
 Absorber position details: More...
 
const GeoStraightAccSectiongetElectrodeSections () const
 Electrode position details: More...
 

Private Member Functions

 EMBAccordionDetails (const EMBAccordionDetails &)
 
EMBAccordionDetailsoperator= (const EMBAccordionDetails &)
 

Private Attributes

Clockworkm_c
 

Detailed Description

Definition at line 9 of file EMBAccordionDetails.h.

Constructor & Destructor Documentation

◆ EMBAccordionDetails() [1/2]

EMBAccordionDetails::EMBAccordionDetails ( )

Destructor.

Definition at line 205 of file EMBAccordionDetails.cxx.

206  : m_c(new Clockwork())
207 {
208  ISvcLocator *svcLocator = Gaudi::svcLocator();
209  IRDBAccessSvc *rdbAccess{nullptr};
210  IGeoModelSvc *geoModel{nullptr};
211  IGeoDbTagSvc *geoDbTagSvc{nullptr};
212 
213  if(svcLocator->service("GeoModelSvc",geoModel) == StatusCode::FAILURE)
214  throw std::runtime_error("Error in HECDetectorManager, cannot access GeoModelSvc");
215 
216  if(svcLocator->service("GeoDbTagSvc",geoDbTagSvc) == StatusCode::FAILURE)
217  throw std::runtime_error("Error in HECDetectorManager, cannot access GeoDbTagSvc");
218 
219  if(svcLocator->service(geoDbTagSvc->getParamSvcName(),rdbAccess) == StatusCode::FAILURE)
220  throw std::runtime_error("Error in HECDetectorManager, cannot access RDBAccessSvc");
221 
222  std::string detectorKey, detectorNode;
223 
224  if(geoDbTagSvc->getSqliteReader()==nullptr) {
225  std::string AtlasVersion = geoModel->atlasVersion();
226  std::string LArVersion = geoModel->LAr_VersionOverride();
227 
228  detectorKey = LArVersion.empty() ? AtlasVersion : LArVersion;
229  detectorNode = LArVersion.empty() ? "ATLAS" : "LAr";
230  }
231 
232  IRDBRecordset_ptr barrelGeometry = rdbAccess->getRecordsetPtr("BarrelGeometry",detectorKey,detectorNode);
233  if (barrelGeometry->size()==0) {
234  throw std::runtime_error("Cannot find the BarrelGeometry Table");
235  }
236 
237  IRDBRecordset_ptr barrelLongDiv = rdbAccess->getRecordsetPtr("BarrelLongDiv",detectorKey,detectorNode);
238  if (barrelLongDiv->size()==0) {
239  throw std::runtime_error("Cannot find the BarrelLongDiv Table");
240  }
241 
242  // number of straight sections (should be 14)
243  m_c->Nbrt = (*barrelGeometry)[0]->getInt("NBRT");
244  // Number of ZIGs + 1 i.e. 15 = number of folds
245  m_c->Nbrt1 = m_c->Nbrt + 1;
246  // phi of first absorber
247  m_c->gam0 = (*barrelGeometry)[0]->getDouble("PHIFIRST");
248  // radius of curvature of neutral fiber in the folds
249  m_c->rint_eleFib = (*barrelGeometry)[0]->getDouble("RINT")*Gaudi::Units::cm;
250 
251  // r,phi positions of the centre of the folds (nominal geometry)
252  for (int idat = 0; idat < m_c->Nbrt1 ; idat++)
253  {
254  m_c->rc[idat] = (*barrelGeometry)[0]->getDouble("RHOCEN",idat)*Gaudi::Units::cm;
255  m_c->phic[idat] = (*barrelGeometry)[0]->getDouble("PHICEN",idat)*Gaudi::Units::deg;
256  m_c->delta[idat] = (*barrelGeometry)[0]->getDouble("DELTA",idat)*Gaudi::Units::deg;
257  m_c->xc[idat] = m_c->rc[idat]*cos(m_c->phic[idat]);
258  m_c->yc[idat] = m_c->rc[idat]*sin(m_c->phic[idat]);
259  }
260  //
261  m_c->rMinAccordion = (*barrelGeometry)[0]->getDouble("RIN_AC")*Gaudi::Units::cm;
262  m_c->rMaxAccordion = (*barrelGeometry)[0]->getDouble("ROUT_AC")*Gaudi::Units::cm;
263  m_c->etaMaxBarrel = (*barrelGeometry)[0]->getDouble("ETACUT");
264  m_c->zMinBarrel = (*barrelLongDiv)[0]->getDouble("ZMAXACT")*Gaudi::Units::cm;
265  m_c->zMaxBarrel = (*barrelLongDiv)[0]->getDouble("ZMINACT")*Gaudi::Units::cm;
266  // === GU 11/06/2003 total number of cells in phi
267  // to distinguish 1 module (testbeam case) from full Atlas
268  m_c->NCellTot = (*barrelGeometry)[0]->getInt("NCELMX");
269  m_c->NCellMax=1024;
270 
271  //====================================================
272 
273  m_c->getRPhi();
274 
275 }

◆ ~EMBAccordionDetails()

EMBAccordionDetails::~EMBAccordionDetails ( )

Destructor.

Definition at line 277 of file EMBAccordionDetails.cxx.

277  {
278  delete m_c;
279 }

◆ EMBAccordionDetails() [2/2]

EMBAccordionDetails::EMBAccordionDetails ( const EMBAccordionDetails )
private

Member Function Documentation

◆ getAbsorberSections()

const GeoStraightAccSection * EMBAccordionDetails::getAbsorberSections ( ) const

Absorber position details:

Definition at line 298 of file EMBAccordionDetails.cxx.

298  {
299  if (m_c->absorberStraightSection==nullptr) {
301  ISvcLocator* svcLocator = Gaudi::svcLocator();
303 
304  const GeoStraightAccSection* sa = nullptr;
305 
306  status = svcLocator->service ("DetectorStore",detStore);
307  if (status != StatusCode::SUCCESS) throw std::runtime_error ("Cannot locate Storegate");
308 
309 
310  status = detStore->retrieve(sa,"STRAIGHTABSORBERS");
311  if (status != StatusCode::SUCCESS) throw std::runtime_error ("Cannot locate Straight Absorbers");
312 
314 
315  }
317 
318 }

◆ getElectrodeSections()

const GeoStraightAccSection * EMBAccordionDetails::getElectrodeSections ( ) const

Electrode position details:

Definition at line 321 of file EMBAccordionDetails.cxx.

321  {
322  if (m_c->electrodeStraightSection==nullptr) {
324  ISvcLocator* svcLocator = Gaudi::svcLocator();
326 
327  const GeoStraightAccSection* sa = nullptr;
328 
329  status = svcLocator->service ("DetectorStore",detStore);
330  if (status != StatusCode::SUCCESS) throw std::runtime_error ("Cannot locate Storegate");
331 
332  status = detStore->retrieve(sa,"STRAIGHTELECTRODES");
333  if (status != StatusCode::SUCCESS) throw std::runtime_error ("Cannot locate Straight Electrodes");
334 
336 
337  }
339 
340 }

◆ operator=()

EMBAccordionDetails& EMBAccordionDetails::operator= ( const EMBAccordionDetails )
private

◆ phiFirstAbsorber()

double EMBAccordionDetails::phiFirstAbsorber ( ) const

Phi of the first absorber.

Definition at line 281 of file EMBAccordionDetails.cxx.

281  {
282  return m_c->gam0;
283 }

Member Data Documentation

◆ m_c

Clockwork* EMBAccordionDetails::m_c
private

Definition at line 48 of file EMBAccordionDetails.h.


The documentation for this class was generated from the following files:
EMBAccordionDetails::Clockwork::Nbrt1
int Nbrt1
Definition: EMBAccordionDetails.cxx:54
EMBAccordionDetails::Clockwork::yc
double yc[15]
Definition: EMBAccordionDetails.cxx:60
GeoStraightAccSection
Record of All Electrode Straight Pieces.
Definition: GeoStraightAccSection.h:24
IGeoModelSvc
Definition: IGeoModelSvc.h:17
EMBAccordionDetails::Clockwork::absorberStraightSection
const GeoStraightAccSection * absorberStraightSection
Definition: EMBAccordionDetails.cxx:70
EMBAccordionDetails::Clockwork::NCellTot
int NCellTot
Definition: EMBAccordionDetails.cxx:66
EMBAccordionDetails::Clockwork::zMinBarrel
double zMinBarrel
Definition: EMBAccordionDetails.cxx:63
EMBAccordionDetails::Clockwork::electrodeStraightSection
const GeoStraightAccSection * electrodeStraightSection
Definition: EMBAccordionDetails.cxx:69
EMBAccordionDetails::Clockwork::rint_eleFib
double rint_eleFib
Definition: EMBAccordionDetails.cxx:55
deg
#define deg
Definition: SbPolyhedron.cxx:17
EMBAccordionDetails::Clockwork::zMaxBarrel
double zMaxBarrel
Definition: EMBAccordionDetails.cxx:64
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
cm
const double cm
Definition: Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/tools/FCAL_ChannelMap.cxx:25
EMBAccordionDetails::Clockwork::rc
double rc[15]
Definition: EMBAccordionDetails.cxx:57
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
EventInfoWrite.AtlasVersion
AtlasVersion
Definition: EventInfoWrite.py:17
IRDBAccessSvc
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
Definition: IRDBAccessSvc.h:45
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EMBAccordionDetails::Clockwork::etaMaxBarrel
double etaMaxBarrel
Definition: EMBAccordionDetails.cxx:65
EMBAccordionDetails::Clockwork::NCellMax
int NCellMax
Definition: EMBAccordionDetails.cxx:67
IGeoDbTagSvc
Definition: IGeoDbTagSvc.h:26
EMBAccordionDetails::Clockwork::xc
double xc[15]
Definition: EMBAccordionDetails.cxx:59
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
EMBAccordionDetails::Clockwork::rMinAccordion
double rMinAccordion
Definition: EMBAccordionDetails.cxx:61
EMBAccordionDetails::Clockwork::gam0
double gam0
Definition: EMBAccordionDetails.cxx:47
EMBAccordionDetails::Clockwork::getRPhi
void getRPhi()
initialization routine
Definition: EMBAccordionDetails.cxx:74
EMBAccordionDetails::Clockwork::delta
double delta[15]
Definition: EMBAccordionDetails.cxx:56
merge.status
status
Definition: merge.py:17
EMBAccordionDetails::m_c
Clockwork * m_c
Definition: EMBAccordionDetails.h:47
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
EMBAccordionDetails::Clockwork::phic
double phic[15]
Definition: EMBAccordionDetails.cxx:58
EMBAccordionDetails::Clockwork::Nbrt
int Nbrt
Definition: EMBAccordionDetails.cxx:53
EMBAccordionDetails::Clockwork::rMaxAccordion
double rMaxAccordion
Definition: EMBAccordionDetails.cxx:62