ATLAS Offline Software
Loading...
Searching...
No Matches
posRPhiZHandler.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
8#include "GeoModelKernel/Units.h"
9
10#include <iostream>
11#include <vector>
12
15 : XMLHandler(s, c)
16{
17}
18
20 xercesc::DOMNode *t)
21{
22 bool res=false;
23 std::string volume=getAttributeAsString(c, t, "volume",res);
24 std::vector<double> vvv=getAttributeAsVector(c, t, "R_Phi_Z",res);
25 double radius=vvv[0];
26 double phi=vvv[1];
27 double zpos=vvv[2];
28 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
29
30 vvv=getAttributeAsVector(c, t, "rot",res);
31 if (res)
32 {
33 crot = crot*GeoTrf::RotateZ3D(vvv[2]*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(vvv[1]*GeoModelKernelUnits::degree)*GeoTrf::RotateX3D(vvv[0]*GeoModelKernelUnits::degree);
34 }
35
36 crot = GeoTrf::RotateZ3D(phi*GeoModelKernelUnits::degree)*crot;
37 double x=radius*std::cos(phi*GeoModelKernelUnits::degree);
38 double y=radius*std::sin(phi*GeoModelKernelUnits::degree);
39 GeoTrf::Vector3D cvec=GeoTrf::Vector3D(x,y,zpos);
40
41 new AGDDPositioner(c.GetPositionerStore(),
42 c.GetVolumeStore(),
43 volume,GeoTrf::Translation3D(cvec)*crot);
44}
Scalar phi() const
phi method
std::pair< std::vector< unsigned int >, bool > res
#define y
#define x
std::vector< double > getAttributeAsVector(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
posRPhiZHandler(const std::string &, AGDDController &c)
virtual void ElementHandle(AGDDController &c, xercesc::DOMNode *t) override