73 LogDebug(
"HCalGeom") <<
"==>> Constructing DDHCalTBCableAlgo...";
81 double zstep2 =
zoff[3];
83 double rstep0 =
rin + (zstep2-zstep1)/
tan(
theta[2]);
84 double rstep1 =
rin + (zstep1-zstep0)/
tan(
theta[2]);
87 pgonZ.emplace_back(zstep0);
88 pgonZ.emplace_back(zstep1);
89 pgonZ.emplace_back(zstep2);
92 vector<double> pgonRmin;
93 pgonRmin.emplace_back(
rin);
94 pgonRmin.emplace_back(
rin);
95 pgonRmin.emplace_back(rstep0);
96 pgonRmin.emplace_back(
rmax[2]);
98 vector<double> pgonRmax;
99 pgonRmax.emplace_back(
rin);
100 pgonRmax.emplace_back(rstep1);
101 pgonRmax.emplace_back(
rmax[2]);
102 pgonRmax.emplace_back(
rmax[2]);
109 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " 112 << -alpha/CLHEP::deg <<
" to " 113 << (-alpha+dphi)/CLHEP::deg <<
" and with " 114 << pgonZ.size() <<
" sections";
115 for (i = 0; i <pgonZ.size(); i++)
116 LogDebug(
"HCalGeom") <<
"\t\tZ = " << pgonZ[
i] <<
"\tRmin = " 117 << pgonRmin[
i] <<
"\tRmax = " << pgonRmax[
i];
127 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " 129 <<
"in " << parentName <<
" at " << r0 <<
" with "<<
rot;
134 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " 136 <<
"in " << parentName <<
" at " << r0 <<
" with " 142 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " 144 <<
genMat <<
" with 1 sector from " <<-alpha/CLHEP::deg
145 <<
" to " << alpha/CLHEP::deg <<
" and with " 146 << pgonZ.size() <<
" sections";
147 for (i = 0; i < pgonZ.size(); i++)
148 LogDebug(
"HCalGeom") <<
"\t\tZ = " << pgonZ[
i] <<
"\tRmin = " 149 << pgonRmin[
i] <<
"\tRmax = " << pgonRmax[
i];
151 1, -alpha, 2*alpha, pgonZ,
157 double phideg = phi/CLHEP::deg;
160 string rotstr(
"NULL");
163 if (phideg < 100) rotstr =
"R0";
164 rotstr = rotstr + std::to_string(phideg);
167 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: Creating a new " 168 <<
"rotation " << rotstr <<
"\t90," << phideg
169 <<
", 90, " << (phideg+90) <<
", 0, 0";
171 phideg*CLHEP::deg, 90*CLHEP::deg,
172 (90+phideg)*CLHEP::deg, 0*CLHEP::deg, 0*CLHEP::deg);
177 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << seclogic.name()
178 <<
" number " <<
ii+1 <<
" positioned in " 179 << genlogic.name() <<
" at (0,0,0) with " <<
rotation;
185 double dx1 = rinl *
tan(alpha);
186 double dx2 = 0.90 * routl *
tan(alpha);
188 double dz = 0.50 * (routl -rinl);
191 dx1, 0, dy, dx2, dx2, 0);
192 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << solid.
name()
193 <<
" Trap made of " <<
genMat <<
" of dimensions " << dz
194 <<
", 0, 0, " << dy <<
", " << dx1 <<
", " << dx1
195 <<
", 0, " << dy <<
", " << dx2 <<
", " << dx2 <<
", 0";
198 string rotstr =
name;
199 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: Creating a new rotation: " 200 << rotstr <<
"\t90, 270, " << (180-
theta[2]/CLHEP::deg)
201 <<
", 0, " << (90-
theta[2]/CLHEP::deg) <<
", 0";
203 180*CLHEP::deg-
theta[2], 0, 90*CLHEP::deg-
theta[2], 0);
206 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << glog.name()
207 <<
" number 1 positioned in " << seclogic.name()
208 <<
" at " <<
r1 <<
" with " <<
rot;
212 double phi = atan((dx2-dx1)/(2*dz));
213 double xmid = 0.5*(dx1+dx2)-1.0;
216 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << solid.
name()
217 <<
" Box made of " <<
absMat <<
" of dimension " 225 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: Creating a new rotation " 226 << rotstr <<
"\t" << (90+phi/CLHEP::deg) <<
"," << 0
227 <<
"," << 90 <<
"," << 90 <<
"," << phi/CLHEP::deg
230 90*CLHEP::deg, 90*CLHEP::deg, phi, 0.0);
233 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << cablog1.name()
234 <<
" number 1 positioned in " << glog.name() <<
" at " 235 <<
r2 <<
" with " << rot2;
237 rotstr =
idName +
"Right";
238 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: Creating a new rotation " 239 << rotstr <<
"\t" << (90-phi/CLHEP::deg)
240 <<
", 0, 90, 90, " << -phi/CLHEP::deg <<
", 0";
242 0*CLHEP::deg, 90*CLHEP::deg, 90*CLHEP::deg,
245 cpv.
position(cablog1, glog, 2, r3, rot3);
246 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << cablog1.name()
247 <<
" number 2 positioned in " << glog.name() <<
" at " 248 << r3 <<
" with " << rot3;
254 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << solid.
name()
255 <<
" Box made of " <<
absMat <<
" of dimension " 261 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << cablog2.name()
262 <<
" number 1 positioned in " << glog.name() <<
" at (" 263 << xpos <<
", 0, 0) with no rotation";
265 LogDebug(
"HCalGeom") <<
"DDHCalTBCableAlgo test: " << cablog2.name()
266 <<
" number 2 positioned in " << glog.name() <<
" at (" 267 <<-xpos <<
", 0, 0) with no rotation";
269 LogDebug(
"HCalGeom") <<
"<<== End of DDHCalTBCableAlgo construction ...";
std::vector< double > theta
std::vector< double > rmax
DDMaterial is used to define and access material information.
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
A DDSolid represents the shape of a part.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
Cos< T >::type cos(const T &t)
Tan< T >::type tan(const T &t)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
std::vector< double > zoff
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
static DDSolid polyhedra(const DDName &name, int sides, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polyhedra (refere to Geant3 or Geant4 documentation)