5 #ifndef PORTABLE_LAR_SHAPE
6 #include "GaudiKernel/MsgStream.h"
7 #include "GaudiKernel/ISvcLocator.h"
8 #include "GaudiKernel/Bootstrap.h"
13 #include "CLHEP/Vector/ThreeVector.h"
20 #include "GeoModelKernel/Units.h"
30 m_saggingOptions(saggingOptions)
40 #ifndef PORTABLE_LAR_SHAPE
41 ISvcLocator* svcLocator = Gaudi::svcLocator();
45 throw std::runtime_error(
"LArWheelCalculator constructor: \
46 cannot initialze message service");
48 MsgStream
msg(
msgSvc,
"LArWheelCalculator_Impl::DistanceCalculatorSaggingOn");
50 PortableMsgStream
msg(
"LArWheelCalculator_Impl::DistanceCalculatorSaggingOn");
55 if(sagging_opt_value.substr(0, 4) ==
"file"){
56 std::string sag_file = sagging_opt_value.substr(5);
58 <<
"geting sagging parameters from file "
59 << sag_file <<
" ..." <<
endmsg;
60 FILE *
F = fopen(sag_file.c_str(),
"r");
63 <<
"cannot open EMEC sagging parameters file "
66 throw std::runtime_error(
"LArWheelCalculator: read sagging parameters from file");
69 double p0, p1, p2,
p3, p4;
71 fscanf(
F,
"%80d %80d %80d %80d %80le %80le %80le %80le %80le",
72 &
s, &
w, &
t, &
n, &p0, &p1, &p2, &
p3, &p4) == 9)
74 if(
s ==
lwc()->m_AtlasZside &&
75 ((
w == 0 &&
lwc()->m_isInner) || (
w == 1 && !
lwc()->m_isInner)) &&
76 ((
t == 0 && !
lwc()->m_isElectrode) || (
t == 1 &&
lwc()->m_isElectrode)) &&
77 (
n >= 0 &&
n <
lwc()->m_NumberOfFans))
85 <<
"sagging for " <<
s <<
" " <<
w <<
" " <<
t
86 <<
" " <<
n <<
": " << p0 <<
" " << p1 <<
" "
93 if(sscanf(sagging_opt_value.c_str(),
"%80le %80le %80le %80le", &
a, &
b, &
c, &
d) != 4){
96 <<
" for EMEC sagging parameters: "
97 << sagging_opt_value <<
", defaults are used" <<
endmsg;
121 CLHEP::Hep3Vector sagging_corrected(
p.x()+
get_sagging(
p, fan_number),
p.y(),
p.z() );
126 CLHEP::Hep3Vector sagging_corrected(
p.x()+
get_sagging(
p, fan_number),
p.y(),
p.z() );
138 std::cout <<
"get_sagging: MFN = " << fan_number << std::endl;
150 double R = P.r() /
mm;
165 printf(
"get_sagging: (%6.3f, %6.3f, %6.3f) %6.3f;"
166 " sp %6.4f %6.4f; dx %6.3f; %.6f\n", P.x()/
mm, P.y()/
mm, P.z()/
mm,