102 double dphi = CLHEP::twopi /
number;
105 double x1 = (d1 + d2) / (2. *
sin(0.5 * dphi));
110 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Rmin/Rmax " << rmin <<
", " << rmax <<
" d1/d2 " << d1 <<
", " << d2
111 <<
" x1/x2 " << x1 <<
", " << x2;
113 double rtmi = rmin + 0.5 * ladderThick[0] - ladderThick[1];
117 <<
" from 0 to " << CLHEP::twopi / CLHEP::deg <<
" with Rin " << rtmi <<
" Rout " << rtmx
123 double rr = 0.5 * (rmax + rmin);
124 double dr = 0.5 * (rmax - rmin);
126 string name = idName +
"CoolTube";
127 solid =
DDSolidFactory::trap(
DDName(name,
idNameSpace), 0.5 *
coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0);
128 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << solid.
name() <<
" Trap made of " <<
tubeMat
129 <<
" of dimensions " << 0.5 *
coolDz <<
", 0, 0, " << h1 <<
", " << d2 <<
", " << d1 <<
", 0, "
130 << h1 <<
", " << d2 <<
", " << d1 <<
", 0";
134 name = idName +
"Coolant";
138 solid =
DDSolidFactory::trap(
DDName(name,
idNameSpace), 0.5 *
coolDz, 0, 0, h1, d2, d1, 0, h1, d2, d1, 0);
139 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << solid.
name() <<
" Trap made of " <<
coolMat
140 <<
" of dimensions " << 0.5 *
coolDz <<
", 0, 0, " << h1 <<
", " << d2 <<
", " << d1 <<
", 0, "
141 << h1 <<
", " << d2 <<
", " << d1 <<
", 0";
145 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << cool.name() <<
" number 1 positioned in " << coolTube.name()
146 <<
" at (0,0,0) with no rotation";
152 double phi0 = 90 * CLHEP::deg;
154 double phi = phi0 +
i * dphi;
155 double phix, phiy, rrr, xx;
159 if (
i == 0 ||
i == nphi) {
160 rrr = rr + dr + 0.5 * (ladderThick[1] - ladderThick[0]);
163 rots = idName + to_string(
copy);
164 phix = phi - 90 * CLHEP::deg;
165 phiy = 90 * CLHEP::deg + phix;
166 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new "
167 <<
"rotation: " << rots <<
"\t90., " << phix / CLHEP::deg <<
", 90.," << phiy / CLHEP::deg
171 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderHalf <<
" number " <<
copy <<
" positioned in "
172 <<
layer.name() <<
" at " << tran <<
" with " <<
rot;
175 rrr = rr - dr - 0.5 * (ladderThick[1] - ladderThick[0]);
177 rots = idName + to_string(
copy);
178 phix = phi + 90 * CLHEP::deg;
179 phiy = 90 * CLHEP::deg + phix;
180 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new "
181 <<
"rotation: " << rots <<
"\t90., " << phix / CLHEP::deg <<
", 90.," << phiy / CLHEP::deg
185 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderHalf <<
" number " <<
copy <<
" positioned in "
186 <<
layer.name() <<
" at " << tran <<
" with " <<
rot;
192 rots = idName + to_string(
copy);
194 phix = phi - 90 * CLHEP::deg;
196 phix = phi + 90 * CLHEP::deg;
197 phiy = phix + 90. * CLHEP::deg;
198 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new "
199 <<
"rotation: " << rots <<
"\t90., " << phix / CLHEP::deg <<
", 90.," << phiy / CLHEP::deg
203 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << ladderFull <<
" number " <<
copy <<
" positioned in "
204 <<
layer.name() <<
" at " << tran <<
" with " <<
rot;
209 rots = idName + to_string(
i + 100);
210 phix = phi + 0.5 * dphi;
212 phix += 180 * CLHEP::deg;
213 phiy = phix + 90. * CLHEP::deg;
214 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: Creating a new "
215 <<
"rotation: " << rots <<
"\t90., " << phix / CLHEP::deg <<
", 90.," << phiy / CLHEP::deg
219 LogDebug(
"PixelGeom") <<
"DDPixBarLayerAlgo test: " << coolTube.name() <<
" number " <<
i + 1 <<
" positioned in "
220 <<
layer.name() <<
" at " << tran <<
" with " <<
rot;
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
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.
constexpr std::array< uint8_t, layerIndexSize > layer
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
vector< double > ladderWidth
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)
vector< double > ladderThick
static constexpr float d1
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
const std::string & name() const
Returns the name.