24{
26
27 AGDDDetector* mCham=
c.GetDetectorStore().GetDetector(volume);
28 std::string subType;
29 if (!mCham)
30 {
32 log<<MSG::WARNING<<
"ElementHandle() - Could not retrieve volume "<<volume<<
" from DetectorStore!"<<
endmsg;
33 return;
34 }
35 else
37
40
43
50
51 double dPhi=360./iWedge;
52 if (iSectors.size()!= (unsigned int) iWedge) std::abort();
53
54 for (
int i=0;
i<iWedge;
i++)
55 {
56 if (iSectors[i]=='0') continue;
57 if (zLayout!="Z_NEGATIVE")
58 {
60 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
61 if (type=="ENDCAP")
62 {
63
64 crot = crot*GeoTrf::RotateZ3D(Wedge*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(90*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(180.*GeoModelKernelUnits::degree);
65 }
66 else crot = crot*GeoTrf::RotateZ3D(Wedge*GeoModelKernelUnits::degree);
67 double x=
radius*std::cos(Wedge*GeoModelKernelUnits::degree);
68 double y=
radius*std::sin(Wedge*GeoModelKernelUnits::degree);
69 double zpos=zPos;
70 GeoTrf::Vector3D cvec=GeoTrf::Vector3D(
x,
y,zpos);
72 p=
new AGDDDetectorPositioner(
c.GetPositionerStore(),
c.GetVolumeStore(),volume,GeoTrf::Translation3D(cvec)*crot);
73 p->SensitiveDetector(
true);
76 p->ID.etaIndex=etaIndex;
77 p->ID.detectorType=detectorType;
78
79 p->position.Zposition=zpos;
81 p->position.PhiStart=
phi0;
82 p->position.Phi=Wedge;
83
85
86 }
87 if (zLayout!="Z_POSITIVE")
88 {
90 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
91 if (type=="ENDCAP")
92 {
93
94 crot = crot*GeoTrf::RotateX3D(180.*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(-Wedge*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(90*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(180.*GeoModelKernelUnits::degree);
95 }
96 else crot = crot*GeoTrf::RotateZ3D(Wedge*GeoModelKernelUnits::degree);
97 double x=
radius*std::cos(Wedge*GeoModelKernelUnits::degree);
98 double y=
radius*std::sin(Wedge*GeoModelKernelUnits::degree);
99 double zpos=zPos;
100 GeoTrf::Vector3D cvec=GeoTrf::Vector3D(
x,
y,-zpos);
102 p=
new AGDDDetectorPositioner(
c.GetPositionerStore(),
c.GetVolumeStore(),volume,GeoTrf::Translation3D(cvec)*crot);
103 p->SensitiveDetector(
true);
106 p->ID.etaIndex=-etaIndex;
107 p->ID.detectorType=detectorType;
108
109 p->position.Zposition=-zpos;
111 p->position.PhiStart=
phi0;
112 p->position.Phi=Wedge;
113
115 }
116 }
117
118}
sTgcIdHelper::sTgcChannelTypes chType
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
void subType(const std::string &s)
void SetAddressAndPosition(AGDDDetectorPositioner *)
int getAttributeAsInt(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
double getAttributeAsDouble(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
std::string getAttributeAsString(AGDDController &c, const xercesc::DOMNode *t, const std::string &) const
IMessageSvc * getMessageSvc(bool quiet=false)
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, float &out)