|
ATLAS Offline Software
|
Go to the documentation of this file.
11 #ifndef PORTABLE_LAR_SHAPE
12 #include "GaudiKernel/Bootstrap.h"
13 #include "GaudiKernel/ISvcLocator.h"
14 #include "GaudiKernel/MsgStream.h"
26 #include "GeoModelKernel/Units.h"
28 using namespace GeoModelKernelUnits;
60 static const double default_slant_parametrization[2][5] = {
61 { -50.069, 0.50073, -0.10127E-02, 0.10390E-05, -0.42176E-09 },
62 { -34.254, 0.15528, -0.11670E-03, 0.45018E-07, -0.68473E-11 }
93 delete m_distanceCalcImpl;
94 m_distanceCalcImpl = 0;
102 m_distanceCalcImpl(0),
106 #ifndef PORTABLE_LAR_SHAPE
108 SmartIF<IMessageSvc>
msgSvc{Gaudi::svcLocator()->service(
"MessageSvc")};
110 throw std::runtime_error(
"LArWheelCalculator constructor: cannot initialze message service");
112 MsgStream
msg(
msgSvc,
"LArWheelCalculator");
114 PortableMsgStream
msg(
"LArWheelCalculator");
125 #ifdef LARWC_DTNF_NEW
131 <<
"initializing data members from DB..." <<
endmsg;
165 std::string pr_opt_value=emecData.
emecparams[0].PHIROTATION;
166 std::string sagging_opt_value=emecData.
emecparams[0].SAGGING;
281 throw std::runtime_error(
"LArWheelCalculator constructor:unknown LArWheelCalculator_t");
297 m_SaggingOn = (sagging_opt_value !=
"" && sagging_opt_value !=
"off")?
true:
false;
300 sagging_opt_value,
this);
302 msg <<
MSG::VERBOSE <<
"Creating DistanceCalculatorSaggingOn = " <<
this
305 msg <<
MSG::VERBOSE <<
"Creating DistanceCalculatorSaggingOff = " <<
this
319 std::string slant_params;
322 slant_params=emecData.
emecparams[0].INNERSLANTPARAM;
324 slant_params=emecData.
emecparams[0].OUTERSLANTPARAM;
329 if(slant_params !=
"" && slant_params !=
"default"){
330 double a,
b,
c,
d,
e;
331 if(sscanf(slant_params.c_str(),
"%80le %80le %80le %80le %80le", &
a, &
b, &
c, &
d, &
e) != 5){
333 <<
"LArWheelCalculator: ERROR: wrong value(s) "
334 <<
"for EMEC slant angle parameters: "
335 << slant_params <<
", "
336 <<
"defaults are used" <<
endmsg;
360 <<
"slant_params = " << slant_params <<
"" <<
endmsg
361 <<
"Sagging option = " << sagging_opt_value <<
"" <<
endmsg
363 <<
"Slant parameters : ";
410 for(
int i = 0;
i < 5; ++
i) {
426 for(
int i = 0;
i < 5; ++
i) {
476 throw std::runtime_error(
"LArWheelCalculator::GetFanHalfThickness: wrong wheel type");
@ BackOuterBarretteModule
static IFanCalculator * Create(bool isSaggingOn, bool isModule, LArWheelCalculator *lwc)
double m_electrodeTotalThickness
virtual int PhiGapNumberForWheel(int i) const =0
double m_electrodeInvContraction
void inner_wheel_init(const EMECData &)
static const char * LArWheelCalculatorTypeString(LArG4::LArWheelCalculator_t)
int PhiGapNumberForWheel(int) const
double m_FanHalfThickness
LArWheelCalculator_Impl::IFanCalculator * m_fanCalcImpl
double m_leadThicknessOuter
std::vector< EMECFAN > emecfan
std::vector< COLDCONTRACTION > coldcontraction
@ BackInnerBarretteWheelCalib
double m_HalfGapBetweenWheels
std::vector< EMECMAGICNUMBERS > emecmagicnumbers
@ BackOuterBarretteWheelCalib
std::vector< EMECPARAMS > emecparams
std::vector< EMECGEOMETRY > emecgeometry
double GetWheelInnerRadius(std::array< double, 2 > &rInner) const
msgSvc
Provide convenience handles for various services.
double m_ZeroFanPhi_ForDetNeaFan
virtual ~LArWheelCalculator()
@ BackInnerBarretteModule
@ BackOuterBarretteModuleCalib
void fill_sincos_parameterization()
static IDistanceCalculator * Create(const std::string &sagging_opt, LArWheelCalculator *lwc)
void GetWheelOuterRadius(std::array< double, 2 > &rOuter) const
double m_StraightStartSection
std::array< double, 5 > m_slant_parametrization
double m_leadThicknessInner
LArWheelCalculator_Impl::IDistanceCalculator * m_distanceCalcImpl
double m_HalfWheelThickness
double m_QuarterWaveLength
void outer_wheel_init(const EMECData &)
LArWheelCalculator(const EMECData &emecData, LArG4::LArWheelCalculator_t a_wheelType, int zside=1)
std::vector< EMECWHEELPARAMETERS > emecwheelparameters
LArG4::LArWheelCalculator_t m_type
@ BackInnerBarretteModuleCalib
double GetFanHalfThickness() const