73 double dphi = CLHEP::twopi/
number;
76 double x1 = (d1+d2)/(2.*
sin(0.5*dphi));
81 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Rmin/Rmax " << rmin
82 <<
", " << rmax <<
" d1/d2 " << d1 <<
", " << d2
83 <<
" x1/x2 " << x1 <<
", " << x2;
85 double rtmi = rmin + 0.5*ladderThick[0] - ladderThick[1];
88 rtmi, rtmx, 0, CLHEP::twopi);
89 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " 91 <<
genMat <<
" from 0 to " << CLHEP::twopi/CLHEP::deg
92 <<
" with Rin " << rtmi <<
" Rout " << rtmx
98 double rr = 0.5*(rmax+rmin);
99 double dr = 0.5*(rmax-rmin);
103 h1, d2, d1, 0, h1, d2, d1, 0);
104 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " <<solid.
name()
105 <<
" Trap made of " <<
tubeMat <<
" of dimensions " 106 << 0.5*
coolDz <<
", 0, 0, " << h1 <<
", " << d2
107 <<
", " << d1 <<
", 0, " << h1 <<
", " << d2 <<
", " 112 name = idName +
"Coolant";
117 h1, d2, d1, 0, h1, d2, d1, 0);
118 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " <<solid.
name()
119 <<
" Trap made of " <<
coolMat <<
" of dimensions " 120 << 0.5*
coolDz <<
", 0, 0, " << h1 <<
", " << d2
121 <<
", " << d1 <<
", 0, " << h1 <<
", " << d2 <<
", " 126 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << cool.name()
127 <<
" number 1 positioned in " << coolTube.name()
128 <<
" at (0,0,0) with no rotation";
134 double phi0 = 90*CLHEP::deg;
137 double phi = phi0 +
i*dphi;
138 double phix, phiy, rrr,
xx;
142 if (
i == 0 ||
i == nphi) {
143 rrr = rr + dr + 0.5*(ladderThick[1]-ladderThick[0]);
146 rots = idName + std::to_string(
copy);
147 phix = phi-90*CLHEP::deg;
148 phiy = 90*CLHEP::deg+phix;
149 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new " 150 <<
"rotation: " << rots <<
"\t90., " 151 << phix/CLHEP::deg <<
", 90.," << phiy/CLHEP::deg
156 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderHalf
157 <<
" number " <<
copy <<
" positioned in " 158 << layer.name() <<
" at " << tran <<
" with " 162 rrr = rr - dr - 0.5*(ladderThick[1]-ladderThick[0]);
164 rots = idName + std::to_string(
copy);
165 phix = phi+90*CLHEP::deg;
166 phiy = 90*CLHEP::deg+phix;
167 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new " 168 <<
"rotation: " << rots <<
"\t90., " 169 << phix/CLHEP::deg <<
", 90.," << phiy/CLHEP::deg
174 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderHalf
175 <<
" number " <<
copy <<
" positioned in " 176 << layer.name() <<
" at " << tran <<
" with " 183 rots = idName + std::to_string(
copy);
184 if (iup > 0) phix = phi-90*CLHEP::deg;
185 else phix = phi+90*CLHEP::deg;
186 phiy = phix+90.*CLHEP::deg;
187 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new " 188 <<
"rotation: " << rots <<
"\t90., " 189 << phix/CLHEP::deg <<
", 90.," << phiy/CLHEP::deg
194 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderFull
195 <<
" number " <<
copy <<
" positioned in " 196 << layer.name() <<
" at " << tran <<
" with " 202 rrr*
sin(phi)+x2*
cos(phi), 0);
203 rots = idName + std::to_string(
i+100);
205 if (iup > 0) phix += 180*CLHEP::deg;
206 phiy = phix+90.*CLHEP::deg;
207 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new " 208 <<
"rotation: " << rots <<
"\t90., " 209 << phix/CLHEP::deg <<
", 90.," << phiy/CLHEP::deg
213 cpv.
position(coolTube, layer,
i+1, tran, rot);
214 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << coolTube.name()
215 <<
" number " <<
i+1 <<
" positioned in " 216 << layer.name() <<
" at " << tran <<
" with "<<
rot;
DDMaterial is used to define and access material information.
Sin< T >::type sin(const T &t)
DDName is used to identify DDD entities uniquely.
std::vector< std::string > ladder
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)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
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)
std::vector< double > ladderWidth
std::vector< double > ladderThick
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
const std::string & name() const
Returns the name.