8#include "GeoModelKernel/Units.h"
9#include "GaudiKernel/MsgStream.h"
38 log<<MSG::WARNING<<
"ElementHandle() - both icopy and dphi are nullptr!! volume "<<volume<<
" cannot continue!"<<
endmsg;
47 if (!
res) lateral_displacement=0;
57 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
62 crot = crot*GeoTrf::RotateZ3D(vvv[2]*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(vvv[1]*GeoModelKernelUnits::degree)*GeoTrf::RotateX3D(vvv[0]*GeoModelKernelUnits::degree);
65 for (
int i=0;i<icopy;i++)
67 GeoTrf::Vector2D position(rad,lateral_displacement);
68 double phi=phi0+dphi*i;
69 position = Eigen::Rotation2Dd(
phi*GeoModelKernelUnits::degree)*position;
71 double x=position.x();
72 double y=position.y();
74 GeoTrf::Vector3D cvec=GeoTrf::Vector3D(
x,
y,zpos);
75 if (s!=
"false"&&i>0) crot = GeoTrf::RotateZ3D(dphi*GeoModelKernelUnits::degree)*crot;
76 else if (s!=
"false"&&i==0) crot = GeoTrf::RotateZ3D(phi0*GeoModelKernelUnits::degree)*crot;
80 volume,GeoTrf::Translation3D(cvec)*crot);
Scalar phi() const
phi method
std::pair< std::vector< unsigned int >, bool > res
int getAttributeAsInt(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
std::vector< double > getAttributeAsVector(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
double getAttributeAsDouble(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
XMLHandler(const std::string &n, AGDDController &c)
std::string getAttributeAsString(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
virtual void ElementHandle(AGDDController &c, xercesc::DOMNode *t) override
mposPhiHandler(const std::string &, AGDDController &c)
singleton-like access to IMessageSvc via open function and helper
IMessageSvc * getMessageSvc(bool quiet=false)