ATLAS Offline Software
LArWheelSolidInit.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <cassert>
6 #include <stdexcept>
7 #include <iostream>
8 
9 
11 
12 #include "CLHEP/Units/PhysicalConstants.h"
13 #include "G4GeometryTolerance.hh"
14 #include "G4Polycone.hh"
15 
17 #include "LArWheelSolid.h"
18 #include "LArFanSection.h"
19 #include "G4ShiftedCone.h"
20 
21 #ifdef DEBUG_LARWHEELSOLID
22 G4int LArWheelSolid::Verbose = 0;
23 #endif
24 
25 // these are internal technical constants, should not go in DB
26 const unsigned int LArWheelSolid::s_IterationsLimit = 50; // That's enough even for 10e-15 IterationPrecision
27 const G4double LArWheelSolid::s_Tolerance = G4GeometryTolerance::GetInstance()->GetSurfaceTolerance() / 2;
28 const G4double LArWheelSolid::s_AngularTolerance = G4GeometryTolerance::GetInstance()->GetAngularTolerance() / 2;
29 const G4double LArWheelSolid::s_IterationPrecision = 0.001*CLHEP::mm;
30 const G4double LArWheelSolid::s_IterationPrecision2 = s_IterationPrecision * s_IterationPrecision;
31 
33  G4int zside,
35  const EMECData *emecData
36  )
37  : G4VSolid(name)
38 #ifndef PORTABLE_LAR_SHAPE
39  , AthMessaging("LArWheelSolid")
40 #endif
41  , m_Type(type), m_Calculator(calc), m_PhiPosition(CLHEP::halfpi), m_fs(0)
42 {
43 #ifndef PORTABLE_LAR_SHAPE
44 #ifdef LARWHEELSOLID_USE_FANBOUND
45  ATH_MSG_INFO ( "compiled with G4 FanBound" );
46 #else
47  ATH_MSG_INFO ( "compiled with private find_exit_point" );
48 #endif
49 #endif
50 
52  switch(m_Type){
53  case InnerAbsorberWheel:
54  calc_type = LArG4::InnerAbsorberWheel;
55  break;
56  case OuterAbsorberWheel:
57  calc_type = LArG4::OuterAbsorberWheel;
58  break;
59  case InnerElectrodWheel:
60  calc_type = LArG4::InnerElectrodWheel;
61  break;
62  case OuterElectrodWheel:
63  calc_type = LArG4::OuterElectrodWheel;
64  break;
66  calc_type = LArG4::InnerAbsorberModule;
67  break;
69  calc_type = LArG4::OuterAbsorberModule;
70  break;
72  calc_type = LArG4::InnerElectrodModule;
73  break;
75  calc_type = LArG4::OuterElectrodModule;
76  break;
77  case InnerGlueWheel:
78  calc_type = LArG4::InnerGlueWheel;
79  break;
80  case OuterGlueWheel:
81  calc_type = LArG4::OuterGlueWheel;
82  break;
83  case InnerLeadWheel:
84  calc_type = LArG4::InnerLeadWheel;
85  break;
86  case OuterLeadWheel:
87  calc_type = LArG4::OuterLeadWheel;
88  break;
89  case InnerAbsorberCone:
90  calc_type = LArG4::InnerAbsorberWheel;
91  break;
92  case InnerElectrodCone:
93  calc_type = LArG4::InnerElectrodWheel;
94  break;
95  case InnerGlueCone:
96  calc_type = LArG4::InnerGlueWheel;
97  break;
98  case InnerLeadCone:
99  calc_type = LArG4::InnerLeadWheel;
100  break;
102  calc_type = LArG4::OuterAbsorberWheel;
103  break;
105  calc_type = LArG4::OuterElectrodWheel;
106  break;
107  case OuterGlueFrontCone:
108  calc_type = LArG4::OuterGlueWheel;
109  break;
110  case OuterLeadFrontCone:
111  calc_type = LArG4::OuterLeadWheel;
112  break;
114  calc_type = LArG4::OuterAbsorberWheel;
115  break;
117  calc_type = LArG4::OuterElectrodWheel;
118  break;
119  case OuterGlueBackCone:
120  calc_type = LArG4::OuterGlueWheel;
121  break;
122  case OuterLeadBackCone:
123  calc_type = LArG4::OuterLeadWheel;
124  break;
125  default:
126  G4Exception("LArWheelSolid", "UnknownSolidType", FatalException,
127  "Constructor: unknown LArWheelSolid_t");
128  }
129 
130  if(m_Calculator == 0) m_Calculator = new LArWheelCalculator(*emecData,calc_type, zside);
131 
132  const G4String bs_name = name + "-Bounding";
133 #ifdef DEBUG_LARWHEELSOLID
134  const char *venv = getenv("LARWHEELSOLID_VERBOSE");
135  if(venv) Verbose = atoi(venv);
136  std::cout << "The LArWheelSolid build " << __DATE__ << " " << __TIME__
137  << std::endl;
138  std::cout << "LArWheelSolid verbosity level is " << Verbose << std::endl;
139 #endif
140 
141  // Initialize code that depends on wheel type:
145  switch(m_Type){
146  case InnerAbsorberWheel:
147  case InnerElectrodWheel:
148  case InnerAbsorberModule:
149  case InnerElectrodModule:
150  case InnerGlueWheel:
151  case InnerLeadWheel:
152  case InnerAbsorberCone:
153  case InnerElectrodCone:
154  case InnerGlueCone:
155  case InnerLeadCone:
156  inner_solid_init(bs_name);
157  break;
158  case OuterAbsorberWheel:
159  case OuterElectrodWheel:
160  case OuterAbsorberModule:
161  case OuterElectrodModule:
162  case OuterGlueWheel:
163  case OuterLeadWheel:
166  case OuterGlueFrontCone:
167  case OuterLeadFrontCone:
170  case OuterGlueBackCone:
171  case OuterLeadBackCone:
172  outer_solid_init(bs_name);
173  break;
174  default:
175  G4Exception("LArWheelSolid", "UnknownSolidType", FatalException,
176  "Constructor: unknown LArWheelSolid_t");
177  }
178 
179  m_Zsect_start_search = (m_Zsect.size() - 1) - 1;
180 #ifndef PORTABLE_LAR_SHAPE
181  init_tests();
182  test(); // activated by env. variable
183  clean_tests();
184 #endif
185 
186 #ifdef DEBUG_LARWHEELSOLID
187  m_fs->print();
188  std::cout << "Limits: (" << m_Zsect.size() << ")" << std::endl;
189  for(size_t i = 0; i < m_Zsect.size(); ++ i){
190  std::cout << i << " " << m_Zsect[i] << std::endl;
191  }
192 #endif
193 #ifndef PORTABLE_LAR_SHAPE
194  ATH_MSG_DEBUG ( "solid of type "
196  << " initialized" );
197 #endif
198 }
199 
201 {
202  if(m_fs) delete m_fs;
203 }
204 
205 // initialization of inner Absorber or Electrod wheels
206 void LArWheelSolid::inner_solid_init(const G4String &bs_name)
207 {
208  m_IsOuter = false;
209  m_FanPhiAmplitude = 0.065; // internal technical constant, should not go in DB
210  set_phi_size();
211 
212  G4double zPlane[2], rInner[2], rOuter[2];
213  zPlane[0] = 0.;
214  zPlane[1] = GetCalculator()->GetWheelThickness();
215  G4double wheel_thickness = zPlane[1] - zPlane[0];
218  const G4double phi_min = m_PhiPosition - m_FanPhiAmplitude
219  - GetCalculator()->GetFanStepOnPhi() * 2;
220 
221  m_Zmin = zPlane[0]; m_Zmax = zPlane[1];
222  m_Rmin = rInner[0]; m_Rmax = rOuter[1];
223  m_Ymin = m_Rmin * 0.9;
224  m_Zmid = zPlane[1];
225  m_Ymid = (rInner[0] + rOuter[1]) * 0.5;
226 
229  || m_Type == InnerGlueCone
230  || m_Type == InnerLeadCone
231  ){
233  bs_name + "Cone", zPlane[0], zPlane[1],
234  rInner[0], rOuter[0], rInner[1], rOuter[1]
235  );
236  } else {
237  m_BoundingShape = new G4Polycone(
238  bs_name + "Polycone", m_MinPhi, m_MaxPhi - m_MinPhi,
239  2, zPlane, rInner, rOuter
240  );
241  }
242 #ifdef LARWHEELSOLID_USE_FANBOUND
243  const G4double phi_size = (m_FanPhiAmplitude + GetCalculator()->GetFanStepOnPhi() * 2) * 2;
244  FanBound = new G4Polycone(bs_name + "ofFan", phi_min, phi_size,
245  2, zPlane, rInner, rOuter);
246 #endif
247 #ifndef PORTABLE_LAR_SHAPE
248  ATH_MSG_INFO(m_BoundingShape->GetName() + " is the m_BoundingShape");
249 #endif
250 
251  const G4double half_wave_length = GetCalculator()->GetHalfWaveLength();
252  const G4double sss = GetCalculator()->GetStraightStartSection();
253  m_Zsect.push_back(0.);
254  m_Zsect.push_back(sss + half_wave_length * 0.25);
255  const G4int num_fs = GetCalculator()->GetNumberOfHalfWaves() + 1;
256  for(G4int i = 2; i < num_fs; i ++){
257  const G4double zi = half_wave_length * (i - 1) + sss;
258 #if LARWHEELSOLID_ZSECT_MULT > 1
259  for(G4int j = LARWHEELSOLID_ZSECT_MULT - 1; j > 0; -- j){
260  m_Zsect.push_back(zi - half_wave_length * j / LARWHEELSOLID_ZSECT_MULT);
261  }
262 #endif
263  m_Zsect.push_back(zi);
264  }
265  m_Zsect.push_back(wheel_thickness - m_Zsect[1]);
266  m_Zsect.push_back(wheel_thickness - m_Zsect[0]);
267 
268  m_fs = new LArFanSections(
269  rInner[0], rInner[1], rOuter[0], rOuter[1],
270  m_Rmax*cos(phi_min), m_Zsect.front(), m_Zsect.back()
271  );
272 }
273 
274 // initialization of outer Absorber or Electrod wheels
275 void LArWheelSolid::outer_solid_init(const G4String &bs_name)
276 {
277  m_IsOuter = true;
278  m_FanPhiAmplitude = 0.02; // internal technical constant, should not go in DB
279  set_phi_size();
280 
281  G4double zPlane[3], rInner[3], rOuter[3];
282  zPlane[0] = 0.;
283  zPlane[2] = GetCalculator()->GetWheelThickness();
284  G4double wheel_thickness = zPlane[2] - zPlane[0];
285  zPlane[1] = GetCalculator()->GetWheelInnerRadius(rInner);
287  const G4double phi_min =
290 
291  m_Zmid = zPlane[1];
292  m_Ymid = (rInner[0] + rOuter[2]) * 0.5;
293 
294  bool hasFrontSections = false;
295  bool hasBackSections = false;
300  ){
301  m_Zmin = zPlane[0]; m_Zmax = zPlane[1];
302  m_Rmin = rInner[0]; m_Rmax = rOuter[1];
304  bs_name + "FrontCone", zPlane[0], zPlane[1],
305  rInner[0], rOuter[0], rInner[1], rOuter[1]
306  );
307  hasFrontSections = true;
308  } else if(m_Type == OuterAbsorberBackCone
312  ){
313  m_Zmin = zPlane[1]; m_Zmax = zPlane[2];
314  m_Rmin = rInner[1]; m_Rmax = rOuter[2];
316  bs_name + "BackCone", zPlane[1], zPlane[2],
317  rInner[1], rOuter[1], rInner[2], rOuter[2]
318  );
319  hasBackSections = true;
320  } else {
321  m_Zmin = zPlane[0]; m_Zmax = zPlane[2];
322  m_Rmin = rInner[0]; m_Rmax = rOuter[2];
323  m_BoundingShape = new G4Polycone(
324  bs_name + "Polycone", m_MinPhi, m_MaxPhi - m_MinPhi,
325  3, zPlane, rInner, rOuter
326  );
327  hasFrontSections = true;
328  hasBackSections = true;
329  }
330 
331  m_Ymin = m_Rmin * 0.9;
332 
333 #ifdef LARWHEELSOLID_USE_FANBOUND
334  const G4double phi_size = (m_FanPhiAmplitude + GetCalculator()->GetFanStepOnPhi() * 2) * 2;
335  FanBound = new G4Polycone(bs_name + "ofFan", phi_min, phi_size,
336  3, zPlane, rInner, rOuter);
337 #endif
338 #ifndef PORTABLE_LAR_SHAPE
339  ATH_MSG_INFO(m_BoundingShape->GetName() + " is the m_BoundingShape");
340 #endif
341  const G4double half_wave_length = GetCalculator()->GetHalfWaveLength();
342  const G4double sss = GetCalculator()->GetStraightStartSection();
343 
344  if(hasFrontSections){
345  m_Zsect.push_back(0.);
346  m_Zsect.push_back(sss + half_wave_length * 0.25);
347  } else {
348  m_Zsect.push_back(m_Zmid);
349  }
350  const G4int num_fs = GetCalculator()->GetNumberOfHalfWaves() + 1;
351 
352  for(G4int i = 2; i < num_fs; i ++){
353  const G4double zi = half_wave_length * (i - 1) + sss;
354 #if LARWHEELSOLID_ZSECT_MULT > 1
355  for(G4int j = LARWHEELSOLID_ZSECT_MULT - 1; j > 0; -- j){
356  G4double zj = zi - half_wave_length * j / LARWHEELSOLID_ZSECT_MULT;
357  if(hasFrontSections && hasBackSections
358  && m_Zsect.back() < m_Zmid && zj >= m_Zmid){
359  m_Zsect.push_back(m_Zmid);
360  }
361  if((zj < m_Zmid && hasFrontSections)
362  || (zj > m_Zmid && hasBackSections)){
363  m_Zsect.push_back(zj);
364  }
365  }
366 #endif
367  if(hasFrontSections && hasBackSections
368  && m_Zsect.back() < m_Zmid && zi >= m_Zmid){
369  m_Zsect.push_back(m_Zmid);
370  }
371  if((zi < m_Zmid && hasFrontSections)
372  || (zi > m_Zmid && hasBackSections)){
373  m_Zsect.push_back(zi);
374  }
375  }
376  if(hasBackSections){
377  m_Zsect.push_back(wheel_thickness - sss - half_wave_length * 0.25);
378  m_Zsect.push_back(wheel_thickness);
379  } else {
380  m_Zsect.push_back(m_Zmid);
381  }
382 
383  m_fs = new LArFanSections(
384  rInner[0], rInner[1], rOuter[0], rOuter[1],
385  m_Rmax*cos(phi_min), m_Zsect.front(), m_Zmid
386  );
387 }
388 
389 // it should be called after m_FanPhiAmplitude has been set
390 // and before m_BoundingShape creation
392 {
393  if(GetCalculator()->GetisModule()){
396  } else {
397  m_MinPhi = 0.;
399  }
400 }
InnerElectrodCone
@ InnerElectrodCone
Definition: LArWheelSolid_type.h:26
InnerGlueWheel
@ InnerGlueWheel
Definition: LArWheelSolid_type.h:21
LArWheelSolid::m_FHTminusT
G4double m_FHTminusT
Definition: LArWheelSolid.h:149
LArWheelCalculator::GetStraightStartSection
double GetStraightStartSection() const
Definition: LArWheelCalculator.h:80
OuterLeadFrontCone
@ OuterLeadFrontCone
Definition: LArWheelSolid_type.h:32
LArG4::OuterElectrodWheel
@ OuterElectrodWheel
Definition: LArWheelCalculatorEnums.h:12
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
OuterAbsorberBackCone
@ OuterAbsorberBackCone
Definition: LArWheelSolid_type.h:33
EMECData.h
LArWheelSolid::s_Tolerance
static const G4double s_Tolerance
Definition: LArWheelSolid.h:140
OuterLeadBackCone
@ OuterLeadBackCone
Definition: LArWheelSolid_type.h:36
OuterGlueWheel
@ OuterGlueWheel
Definition: LArWheelSolid_type.h:22
LArG4::InnerAbsorberWheel
@ InnerAbsorberWheel
Definition: LArWheelCalculatorEnums.h:11
LArG4::InnerGlueWheel
@ InnerGlueWheel
Definition: LArWheelCalculatorEnums.h:19
LArWheelCalculator::GetFanHalfThickness
double GetFanHalfThickness(LArG4::LArWheelCalculator_t) const
Definition: LArWheelCalculator.cxx:443
LArFanSections::print
void print(void) const
Definition: LArFanSection.cxx:11
LArWheelSolid::m_Rmax
G4double m_Rmax
Definition: LArWheelSolid.h:169
EMECData
Definition: EMECData.h:131
LArWheelCalculator::GetNumberOfHalfWaves
int GetNumberOfHalfWaves() const
Definition: LArWheelCalculator.h:89
LArWheelCalculator::LArWheelCalculatorTypeString
static const char * LArWheelCalculatorTypeString(LArG4::LArWheelCalculator_t)
Definition: LArWheelCalculator.cxx:65
LArWheelSolid_t
LArWheelSolid_t
Definition: LArWheelSolid_type.h:12
LArWheelSolid::~LArWheelSolid
virtual ~LArWheelSolid()
Definition: LArWheelSolidInit.cxx:200
LArWheelSolid::m_PhiPosition
const G4double m_PhiPosition
Definition: LArWheelSolid.h:153
LArWheelSolid::m_Ymin
G4double m_Ymin
Definition: LArWheelSolid.h:167
LArG4::InnerAbsorberModule
@ InnerAbsorberModule
Definition: LArWheelCalculatorEnums.h:13
LArG4::OuterElectrodModule
@ OuterElectrodModule
Definition: LArWheelCalculatorEnums.h:14
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
LArWheelSolid::m_FHTplusT
G4double m_FHTplusT
Definition: LArWheelSolid.h:149
LArFanSections
Definition: LArFanSection.h:12
InnerElectrodModule
@ InnerElectrodModule
Definition: LArWheelSolid_type.h:19
G4ShiftedCone
Definition: G4ShiftedCone.h:87
LArWheelSolid::test
void test(void)
Definition: LArWheelSolidTests.cxx:396
InnerElectrodWheel
@ InnerElectrodWheel
Definition: LArWheelSolid_type.h:15
InnerGlueCone
@ InnerGlueCone
Definition: LArWheelSolid_type.h:27
OuterElectrodModule
@ OuterElectrodModule
Definition: LArWheelSolid_type.h:20
LArWheelSolid::m_Ymid
G4double m_Ymid
Definition: LArWheelSolid.h:171
LArFanSection.h
pi
#define pi
Definition: TileMuonFitter.cxx:65
OuterGlueFrontCone
@ OuterGlueFrontCone
Definition: LArWheelSolid_type.h:31
OuterAbsorberModule
@ OuterAbsorberModule
Definition: LArWheelSolid_type.h:18
LArWheelSolid.h
LArWheelSolid::GetCalculator
const LArWheelCalculator * GetCalculator(void) const
Definition: LArWheelSolid.h:130
InnerLeadWheel
@ InnerLeadWheel
Definition: LArWheelSolid_type.h:23
LArWheelSolid::m_Calculator
LArWheelCalculator * m_Calculator
Definition: LArWheelSolid.h:148
OuterElectrodFrontCone
@ OuterElectrodFrontCone
Definition: LArWheelSolid_type.h:30
LArWheelSolid::s_AngularTolerance
static const G4double s_AngularTolerance
Definition: LArWheelSolid.h:141
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArG4::OuterGlueWheel
@ OuterGlueWheel
Definition: LArWheelCalculatorEnums.h:19
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
InnerAbsorberWheel
@ InnerAbsorberWheel
Definition: LArWheelSolid_type.h:13
LArWheelCalculator::GetWheelThickness
double GetWheelThickness() const
Definition: LArWheelCalculator.h:78
LArWheelSolid::LArWheelSolid
LArWheelSolid(const G4String &name, LArWheelSolid_t type, G4int zside=1, LArWheelCalculator *calc=0, const EMECData *emecData=0)
Definition: LArWheelSolidInit.cxx:32
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
OuterLeadWheel
@ OuterLeadWheel
Definition: LArWheelSolid_type.h:24
LArG4::InnerElectrodModule
@ InnerElectrodModule
Definition: LArWheelCalculatorEnums.h:14
OuterElectrodBackCone
@ OuterElectrodBackCone
Definition: LArWheelSolid_type.h:34
OuterGlueBackCone
@ OuterGlueBackCone
Definition: LArWheelSolid_type.h:35
LArWheelCalculator
Definition: LArWheelCalculator.h:58
InnerLeadCone
@ InnerLeadCone
Definition: LArWheelSolid_type.h:28
LArWheelSolid::m_Zsect
std::vector< G4double > m_Zsect
Definition: LArWheelSolid.h:159
LArWheelCalculator::GetWheelOuterRadius
void GetWheelOuterRadius(double *) const
Definition: LArWheelCalculator.cxx:520
InnerAbsorberModule
@ InnerAbsorberModule
Definition: LArWheelSolid_type.h:17
LArG4::InnerLeadWheel
@ InnerLeadWheel
Definition: LArWheelCalculatorEnums.h:20
LArWheelSolid::m_fs
LArFanSections * m_fs
Definition: LArWheelSolid.h:162
G4ShiftedCone.h
LArWheelSolid::m_Zsect_start_search
G4int m_Zsect_start_search
Definition: LArWheelSolid.h:160
LArWheelSolid::clean_tests
void clean_tests(void)
Definition: LArWheelSolidTests.cxx:486
LArWheelCalculator::GetWheelInnerRadius
double GetWheelInnerRadius(double *) const
Definition: LArWheelCalculator.cxx:495
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
OuterElectrodWheel
@ OuterElectrodWheel
Definition: LArWheelSolid_type.h:16
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArWheelSolid::m_FanHalfThickness
G4double m_FanHalfThickness
Definition: LArWheelSolid.h:149
LArG4::OuterAbsorberModule
@ OuterAbsorberModule
Definition: LArWheelCalculatorEnums.h:13
LArWheelSolid::s_IterationPrecision2
static const G4double s_IterationPrecision2
Definition: LArWheelSolid.h:143
LArWheelCalculator::GetHalfWaveLength
double GetHalfWaveLength() const
Definition: LArWheelCalculator.h:94
OuterAbsorberFrontCone
@ OuterAbsorberFrontCone
Definition: LArWheelSolid_type.h:29
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
LArWheelSolid::init_tests
void init_tests(void)
Definition: LArWheelSolidTests.cxx:610
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
LArWheelSolid::m_MinPhi
G4double m_MinPhi
Definition: LArWheelSolid.h:151
LArWheelSolid::m_IsOuter
G4bool m_IsOuter
Definition: LArWheelSolid.h:146
LArWheelSolid::m_FanPhiAmplitude
G4double m_FanPhiAmplitude
Definition: LArWheelSolid.h:150
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArWheelSolid::m_Zmin
G4double m_Zmin
Definition: LArWheelSolid.h:169
LArWheelSolid::set_phi_size
void set_phi_size(void)
Definition: LArWheelSolidInit.cxx:391
LArWheelSolid::m_Rmin
G4double m_Rmin
Definition: LArWheelSolid.h:169
LArWheelSolid::m_Type
const LArWheelSolid_t m_Type
Definition: LArWheelSolid.h:147
LArWheelSolid::inner_solid_init
void inner_solid_init(const G4String &)
Definition: LArWheelSolidInit.cxx:206
LArWheelCalculator::GetFanStepOnPhi
double GetFanStepOnPhi() const
Definition: LArWheelCalculator.h:93
LArWheelSolid::m_Zmax
G4double m_Zmax
Definition: LArWheelSolid.h:169
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
InnerAbsorberCone
@ InnerAbsorberCone
Definition: LArWheelSolid_type.h:25
LArWheelSolid::outer_solid_init
void outer_solid_init(const G4String &)
Definition: LArWheelSolidInit.cxx:275
LArG4::OuterLeadWheel
@ OuterLeadWheel
Definition: LArWheelCalculatorEnums.h:20
python.PhysicalConstants.halfpi
float halfpi
Definition: PhysicalConstants.py:51
LArWheelSolid::s_IterationPrecision
static const G4double s_IterationPrecision
Definition: LArWheelSolid.h:142
LArG4::OuterAbsorberWheel
@ OuterAbsorberWheel
Definition: LArWheelCalculatorEnums.h:11
LArWheelSolid::m_BoundingShape
G4VSolid * m_BoundingShape
Definition: LArWheelSolid.h:154
LArWheelSolid::s_IterationsLimit
static const unsigned int s_IterationsLimit
Definition: LArWheelSolid.h:144
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1252
LArG4::InnerElectrodWheel
@ InnerElectrodWheel
Definition: LArWheelCalculatorEnums.h:12
LArWheelSolid::m_Zmid
G4double m_Zmid
Definition: LArWheelSolid.h:165
OuterAbsorberWheel
@ OuterAbsorberWheel
Definition: LArWheelSolid_type.h:14
LArWheelSolid::m_MaxPhi
G4double m_MaxPhi
Definition: LArWheelSolid.h:152
LARWHEELSOLID_ZSECT_MULT
#define LARWHEELSOLID_ZSECT_MULT
Definition: LArWheelSolid.h:26
LArG4::LArWheelCalculator_t
LArWheelCalculator_t
Definition: LArWheelCalculatorEnums.h:10
LArWheelCalculator.h