27 AGDDDetector* mCham=c.GetDetectorStore().GetDetector(volume);
32 log<<MSG::WARNING<<
"ElementHandle() - Could not retrieve volume "<<volume<<
" from DetectorStore!"<<
endmsg;
51 double dPhi=360./iWedge;
52 if (iSectors.size()!= (
unsigned int) iWedge) std::abort();
54 for (
int i=0;i<iWedge;i++)
56 if (iSectors[i]==
'0')
continue;
57 if (zLayout!=
"Z_NEGATIVE")
59 double Wedge=dPhi*i+phi0;
60 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
64 crot = crot*GeoTrf::RotateZ3D(Wedge*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(90*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(180.*GeoModelKernelUnits::degree);
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);
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;
79 p->position.Zposition=zpos;
80 p->position.Radius=radius;
81 p->position.PhiStart=phi0;
82 p->position.Phi=Wedge;
87 if (zLayout!=
"Z_POSITIVE")
89 double Wedge=dPhi*i+phi0;
90 GeoTrf::Transform3D crot = GeoTrf::Transform3D::Identity();
94 crot = crot*GeoTrf::RotateX3D(180.*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(-Wedge*GeoModelKernelUnits::degree)*GeoTrf::RotateY3D(90*GeoModelKernelUnits::degree)*GeoTrf::RotateZ3D(180.*GeoModelKernelUnits::degree);
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);
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;
109 p->position.Zposition=-zpos;
110 p->position.Radius=radius;
111 p->position.PhiStart=phi0;
112 p->position.Phi=Wedge;