ATLAS Offline Software
EMBAccordionDetails.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
12 #include "GaudiKernel/ISvcLocator.h"
13 #include "GaudiKernel/Bootstrap.h"
14 #include "GaudiKernel/PhysicalConstants.h"
15 #include "StoreGate/StoreGateSvc.h"
16 #include <cmath>
18 
19 public:
23  int phiGap(double radius, double xhit, double yhit) const;
24 
28  void getRPhi();
29 
33  double phi0(double radius) const;
34 
38  double Distance_Ele(const double &x, const double &y,
39  const int &PhiC, int &Num_Straight, const int &Num_Coude,
40  double &xl);
44  double Distance_Abs(const double &x, const double &y,
45  const int &nabs, const int &Num_Straight, const int &Num_Coude);
46 
47  double gam0;
48  double Rmin;
49  double Rmax;
50  double dR;
51  double Rphi[5000];
52  int NRphi;
53  int Nbrt;
54  int Nbrt1;
55  double rint_eleFib ; //2.78
56  double delta[15]; // zig-zag angles
57  double rc[15] ; // R and
58  double phic[15] ; // phi positions of center of fold for first absorber
59  double xc[15]; // corresponding x,y values
60  double yc[15];
61  double rMinAccordion;
62  double rMaxAccordion;
63  double zMinBarrel;
64  double zMaxBarrel;
65  double etaMaxBarrel;
66  int NCellTot; // either 64 or 1024 for TestBeam or Atlas
67  int NCellMax; // 1024
68 
71 
72 };
73 
75 {
76  const double dl=0.001;
77  const double inv_dl = 1 / dl;
78  double cenx[15],ceny[15];
79  //double xl,xl2;
80  double sum1[5000],sumx[5000];
81  //xl=0;
82  //xl2=0.;
83  NRphi=5000;
84  Rmin=1500.;
85  dR=0.10;
86  Rmax=0.;
87 
88  const double rint= rint_eleFib;
89  const double inv_rint = 1. / rint;
90  const double dt=dl * inv_rint;
91  const double inv_dt = 1. / dt;
92 
93  for (int i=0;i<NRphi;i++) {
94  sum1[i]=0.;
95  sumx[i]=0.;
96  }
97  for (int i=0;i<15;i++) {
98  cenx[i]=rc[i]*cos(phic[i]);
99  ceny[i]=rc[i]*sin(phic[i]);
100  }
101 
102  for (int i=0; i<15; i++) {
103 
104 // fold
105  double phi0,phi1;
106  if (i==0) {
107  phi0=-M_PI/2.;
108  phi1=-M_PI/2.+delta[0];
109  }
110  else if (i==14) {
111  phi0=-M_PI+delta[13];
112  phi1=-M_PI/2.;
113  }
114  else {
115  if (i%2==1) {
116  phi0=delta[i];
117  phi1=M_PI-delta[i-1];
118  }
119  else {
120  phi0=-M_PI+delta[i-1];
121  phi1=-delta[i];
122  }
123  }
124  //xl2+=rint*fabs(phi1-phi0);
125  int nstep=int((phi1-phi0) * inv_dt)+1;
126 // std::cout << "fold " << phi0 << " " << phi1 << " " << nstep << std::endl;
127  for (int ii=0;ii<nstep;ii++) {
128  //xl+=dl;
129  double phi=phi0+dt*((double)ii);
130  double x=cenx[i]+rint*cos(phi);
131  double y=ceny[i]+rint*sin(phi);
132  double radius=sqrt(x*x+y*y);
133  if (radius>Rmax) Rmax=radius;
134  double phid=atan(y/x);
135  int ir=((int) ((radius-Rmin)/dR) );
136  if (ir>=0 && ir < NRphi) {
137  sum1[ir]+=1.;
138  sumx[ir]+=phid;
139  }
140  }
141 
142 // straight section
143  if (i<14) {
144  double dx=cenx[i+1]-cenx[i];
145  double dy=ceny[i+1]-ceny[i];
146  double along=dx*dx+dy*dy-4.*rint*rint;
147  along=sqrt(along);
148  double x0=0.5*(cenx[i+1]+cenx[i]);
149  double y0=0.5*(ceny[i+1]+ceny[i]);
150  double phi;
151  if (i%2==0) phi=M_PI/2-delta[i];
152  else phi=-M_PI/2.+delta[i];
153  double x1=x0-0.5*along*cos(phi);
154  double y1=y0-0.5*along*sin(phi);
155  //xl2+=along;
156  int nstep=int(along * inv_dl)+1;
157 // std::cout << "straight" << x0 << " " << y0 << along << " " << nstep << std::endl;
158  for (int ii=0;ii<nstep;ii++) {
159  //xl+=dl;
160  double x=x1+dl*((double)ii)*cos(phi);
161  double y=y1+dl*((double)ii)*sin(phi);
162  double radius=sqrt(x*x+y*y);
163  if (radius>Rmax) Rmax=radius;
164  double phid=atan(y/x);
165  int ir=((int) ((radius-Rmin)/dR) );
166  if (ir>=0 && ir < NRphi) {
167  sum1[ir]+=1.;
168  sumx[ir]+=phid;
169  }
170  }
171  }
172  }
173 // std::cout << "total electrode length " << xl << " " << xl2 << std::endl;
174 // std::cout << "rmax in accordion " << Rmax << std::endl;
175  for (int i=0; i<NRphi; i++) {
176  if (sum1[i]>0) {
177  Rphi[i]=sumx[i]/sum1[i];
178  // Not used: double radius = Rmin + ((double(i))+0.5)*dR;
179 // std::cout << " r,phi0 " << radius << " " << Rphi[i] << std::endl;
180  }
181  else Rphi[i]=0.;
182  }
183 }
184 
185 
186 // ======================================================================================
187 // compute number (0 to 1023) of closest electrode according to nominal
188 // accordion geometry
189 int EMBAccordionDetails::Clockwork::phiGap(double radius, double xhit, const double yhit) const
190 {
191  const double m2pi = 2.0*Gaudi::Units::pi;
192  double phi_0=phi0(radius)+gam0; // from -M_PI to M_PI
193  double phi_hit=atan2(yhit,xhit); // from -M_PI to M_PI
194  double dphi=phi_hit-phi_0;
195 // bring back to 0-2pi
196  if (dphi<0) dphi=dphi+m2pi;
197  if (dphi>=m2pi) dphi=dphi-m2pi;
198  dphi=dphi*(1024/m2pi);
199  int ngap=((int) dphi);
200  return ngap;
201 }
202 
203 
204 
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 }
276 
278  delete m_c;
279 }
280 
282  return m_c->gam0;
283 }
284 
285 
287 {
288  int ir;
289  if (radius < Rmin) ir=0;
290  else {
291  if (radius > Rmax) radius=Rmax-0.0001;
292  ir=((int) ((radius-Rmin)/dR) );
293  }
294  return Rphi[ir];
295 }
296 
297 
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 }
319 
320 
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 }
341 
342 
343 
344 //======================================================================================
345 //
346 // Here INTRINSIC Distance_to_electrode determination (G.P.)
347 //
348 // This retuns an ALGEBRICDistEle value, the distance from electrode
349 //neutral fiber TOWARDS the Sub_Step in LAr (measured on a local perpendicular
350 //vector unit oriented upwards i.e. following increasing Phi values).
351 //
352 // This is done in THE INTRINSIC LOCAL Z > 0. half_barrel part ("stac_phys1")
353 //
354 // inputs: xhit,yhit = x,y positions in local half barrel
355 // PhiCell = electrode number in phi (0 to 1023 for Atlas case)
356 // Num_Straight = number (0 to 13) of the straight section
357 // Num_Coude = number (0 to 14) of closest fold
358 //
359 // output: Function value = algebric distance to electrode
360 // xl = normalized lenght along electrode straight section (between +-1)
361 
362 #ifdef READY
363 double EMBAccordionDetails::Clockwork::Distance_Ele(const double & xhit,
364  const double &yhit, const int &PhiCell, int &Num_Straight,
365  const int &Num_Coude, double &xl)
366 {
367  double dx, dy, dr;
368  double DistEle = 0.;
369 //
370 // FrameWork is consistent with the one used to PhiCell determination
371 // e.g. it assumes HERE to be the LOCAL one of "stac_phys1",
372 // (mother of ACCordion volumes) from which Z> 0. and Z < 0. half_barrel
373 // parts are then defined.
374 //
375 // One needs POINTERS to Electrode neutral fibers
376 // either for straight parts or for folds
377 //
378 // Fold Center ccoordinates
379  double Xc[2];
380  Xc[0] = m_coudeelec->XCentCoude(Num_Coude, PhiCell);
381  Xc[1] = m_coudeelec->YCentCoude(Num_Coude, PhiCell);
382  double radfold = sqrt(Xc[0]*Xc[0]+Xc[1]*Xc[1]);
383  double radhit = sqrt(xhit*xhit+yhit*yhit);
384 
385 // check if the assumed straight number is the correct one
386 // (this can be wrong when we are close to a fold and there is sagging)
387  if (Num_Coude == Num_Straight && radhit <radfold) {
388  if (Num_Straight>0) Num_Straight = Num_Straight-1;
389 // std::cout << "radhit,radfold " << radhit << " " << radfold << " change straight by +1" << std::endl;
390  }
391  if (Num_Coude == (Num_Straight+1) && radhit > radfold) {
392  if (Num_Straight<12) Num_Straight = Num_Straight+1;
393 // std::cout << "radhit,radfold " << radhit << " " << radfold << " change straight by -1" << std::endl;
394  }
395 
396 // u unit 2D_Vector along straight part of the electrode neutral fiber
397  double u[2];
398  u[0] = m_electrode->Cosu(Num_Straight, PhiCell);
399  u[1] = m_electrode->Sinu(Num_Straight, PhiCell);
400 // Middle m_coordinates of this straight part of the electrode neutral fiber
401  double Xm[2];
402  Xm[0] = m_electrode->XCentEle(Num_Straight, PhiCell);
403  Xm[1] = m_electrode->YCentEle(Num_Straight, PhiCell);
404 // m_Hit Vector components
405  dx = xhit - Xm[0]; dy = yhit - Xm[1];
406 
407 // First compute algebric distance m_hit (2D) the 2D_projection of the
408 // m_Hit Vector on this electrode neutral fiber.
409  double m_hit = dx*u[0] + dy*u[1];
410 
411 //
412 // Flat of Fold Region ?
413 //
414  double Half_Elec;
415  Half_Elec = m_electrode->HalfLength(Num_Straight,PhiCell);
416 
417  if(fabs(m_hit) < Half_Elec) {
418 // Flat Region
419  DistEle = u[0]*dy - u[1]*dx;
420  xl=m_hit/Half_Elec;
421  }
422  else {
423 // Fold region
424 // c_Hit Vector components and its length
425  dx = xhit - Xc[0]; dy = yhit - Xc[1]; dr = sqrt( dx*dx + dy*dy);
426  DistEle = (Num_Coude%2 == 0) ? (rint_eleFib-dr) : (dr - rint_eleFib);
427  if (Num_Coude==Num_Straight) xl=-1.;
428  else xl=+1;
429  } // end of Fold Regions
430 
431  return DistEle;
432 
433 } // end of the function Distance_Ele
434 
435 #endif
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
EMBAccordionDetails::Clockwork::Nbrt1
int Nbrt1
Definition: EMBAccordionDetails.cxx:54
EMBAccordionDetails::Clockwork
Definition: EMBAccordionDetails.cxx:17
TestSUSYToolsAlg.dl
dl
Definition: TestSUSYToolsAlg.py:83
EMBAccordionDetails::Clockwork::yc
double yc[15]
Definition: EMBAccordionDetails.cxx:60
GeoStraightAccSection
Record of All Electrode Straight Pieces.
Definition: GeoStraightAccSection.h:24
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
IGeoModelSvc
Definition: IGeoModelSvc.h:17
EMBAccordionDetails::Clockwork::absorberStraightSection
const GeoStraightAccSection * absorberStraightSection
Definition: EMBAccordionDetails.cxx:70
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
EMBAccordionDetails::Clockwork::NCellTot
int NCellTot
Definition: EMBAccordionDetails.cxx:66
InDetAccessor::phi0
@ phi0
Definition: InDetAccessor.h:33
EMBAccordionDetails::Clockwork::zMinBarrel
double zMinBarrel
Definition: EMBAccordionDetails.cxx:63
CSV_InDetExporter.new
new
Definition: CSV_InDetExporter.py:145
EMBAccordionDetails::Clockwork::electrodeStraightSection
const GeoStraightAccSection * electrodeStraightSection
Definition: EMBAccordionDetails.cxx:69
M_PI
#define M_PI
Definition: ActiveFraction.h:11
EMBAccordionDetails::Clockwork::rint_eleFib
double rint_eleFib
Definition: EMBAccordionDetails.cxx:55
deg
#define deg
Definition: SbPolyhedron.cxx:17
EMBAccordionDetails::phiFirstAbsorber
double phiFirstAbsorber() const
Phi of the first absorber.
Definition: EMBAccordionDetails.cxx:281
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
EMBAccordionDetails::Clockwork::zMaxBarrel
double zMaxBarrel
Definition: EMBAccordionDetails.cxx:64
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
x
#define x
EMBAccordionDetails::Clockwork::Distance_Abs
double Distance_Abs(const double &x, const double &y, const int &nabs, const int &Num_Straight, const int &Num_Coude)
Compute the distance to the absorber.
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
GeoStraightAccSection.h
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
EMBAccordionDetails::EMBAccordionDetails
EMBAccordionDetails()
Destructor.
Definition: EMBAccordionDetails.cxx:205
pi
#define pi
Definition: TileMuonFitter.cxx:65
drawFromPickle.atan
atan
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.h
Definition of the abstract IRDBAccessSvc interface.
lumiFormat.i
int i
Definition: lumiFormat.py:92
IRDBAccessSvc
IRDBAccessSvc is an abstract interface to the athena service that provides the following functionalit...
Definition: IRDBAccessSvc.h:45
EMBAccordionDetails::getElectrodeSections
const GeoStraightAccSection * getElectrodeSections() const
Electrode position details:
Definition: EMBAccordionDetails.cxx:321
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CaloNoise_fillDB.dt
dt
Definition: CaloNoise_fillDB.py:58
EMBAccordionDetails::Clockwork::Rmin
double Rmin
Definition: EMBAccordionDetails.cxx:48
EMBAccordionDetails::Clockwork::etaMaxBarrel
double etaMaxBarrel
Definition: EMBAccordionDetails.cxx:65
EMBAccordionDetails::Clockwork::NCellMax
int NCellMax
Definition: EMBAccordionDetails.cxx:67
EMBAccordionDetails::Clockwork::NRphi
int NRphi
Definition: EMBAccordionDetails.cxx:52
IGeoDbTagSvc
Definition: IGeoDbTagSvc.h:26
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
EMBAccordionDetails::Clockwork::xc
double xc[15]
Definition: EMBAccordionDetails.cxx:59
IRDBRecordset_ptr
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
Definition: IRDBAccessSvc.h:25
EMBAccordionDetails::Clockwork::dR
double dR
Definition: EMBAccordionDetails.cxx:50
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
EMBAccordionDetails::~EMBAccordionDetails
~EMBAccordionDetails()
Destructor.
Definition: EMBAccordionDetails.cxx:277
EMBAccordionDetails::Clockwork::rMinAccordion
double rMinAccordion
Definition: EMBAccordionDetails.cxx:61
EMBAccordionDetails::Clockwork::Distance_Ele
double Distance_Ele(const double &x, const double &y, const int &PhiC, int &Num_Straight, const int &Num_Coude, double &xl)
Compute the distance to the electrode.
EMBAccordionDetails::Clockwork::phi0
double phi0(double radius) const
phi of first absorber as function of radius for nominal accordion geometry (before sagging).
Definition: EMBAccordionDetails.cxx:286
EMBAccordionDetails::Clockwork::Rmax
double Rmax
Definition: EMBAccordionDetails.cxx:49
EMBAccordionDetails::Clockwork::gam0
double gam0
Definition: EMBAccordionDetails.cxx:47
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
ir
int ir
counter of the current depth
Definition: fastadd.cxx:49
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
EMBAccordionDetails::Clockwork::getRPhi
void getRPhi()
initialization routine
Definition: EMBAccordionDetails.cxx:74
IRDBRecord.h
Definition of the abstract IRDBRecord interface.
y
#define y
EMBAccordionDetails::Clockwork::phiGap
int phiGap(double radius, double xhit, double yhit) const
compute number (0 to 1023) of closest electrode according to nominal accordion geometry
Definition: EMBAccordionDetails.cxx:189
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
EMBAccordionDetails::getAbsorberSections
const GeoStraightAccSection * getAbsorberSections() const
Absorber position details:
Definition: EMBAccordionDetails.cxx:298
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
IRDBRecordset.h
Definition of the abstract IRDBRecordset interface.
EMBAccordionDetails.h
IGeoModelSvc.h
EMBAccordionDetails::Clockwork::phic
double phic[15]
Definition: EMBAccordionDetails.cxx:58
StoreGateSvc.h
EMBAccordionDetails::Clockwork::Nbrt
int Nbrt
Definition: EMBAccordionDetails.cxx:53
EMBAccordionDetails::Clockwork::Rphi
double Rphi[5000]
Definition: EMBAccordionDetails.cxx:51
EMBAccordionDetails::Clockwork::rMaxAccordion
double rMaxAccordion
Definition: EMBAccordionDetails.cxx:62
IGeoDbTagSvc.h