143 LogDebug(
"TOBGeom") <<
"==>> Constructing DDTOBRadCableAlgo...";
147 for (
int i = 0;
i < (int)(
names.size());
i++) {
150 double dz, rin, rout;
153 name =
"TOBCoolingManifold" +
names[
i] +
"a";
162 DDMaterial coolManifoldMatter_a(coolManifoldName_a);
168 <<
" positioned in " << diskName <<
" at " <<
r1 <<
" with no rotation";
170 name =
"TOBCoolingManifoldFluid" +
names[
i] +
"a";
178 DDMaterial coolManifoldFluidMatter_a(coolManifoldFluidName_a);
182 <<
" positioned in " << coolManifoldName_a <<
" with no translation and no rotation";
184 name =
"TOBCoolingManifold" +
names[
i] +
"r";
193 DDMaterial coolManifoldMatter_r(coolManifoldName_r);
199 <<
" positioned in " << diskName <<
" at " << r1 <<
" with no rotation";
201 name =
"TOBCoolingManifoldFluid" +
names[
i] +
"r";
209 DDMaterial coolManifoldFluidMatter_r(coolManifoldFluidName_r);
213 <<
" positioned in " << coolManifoldName_r <<
" with no translation and no rotation";
216 name =
"TOBConn" +
names[
i];
222 <<
" from 0 to " << CLHEP::twopi / CLHEP::deg <<
" with Rin " << rin <<
" Rout " << rout
231 <<
" positioned in " << diskName <<
" at " <<
r2 <<
" with no rotation";
234 name =
"TOBRadServices" +
names[
i];
237 vector<double> pgonZ;
238 pgonZ.emplace_back(-0.5 *
cableT);
239 pgonZ.emplace_back(
cableT * (rin /
rMax - 0.5));
240 pgonZ.emplace_back(0.5 *
cableT);
241 vector<double> pgonRmin;
242 pgonRmin.emplace_back(rin);
243 pgonRmin.emplace_back(rin);
244 pgonRmin.emplace_back(rin);
245 vector<double> pgonRmax;
246 pgonRmax.emplace_back(rout);
247 pgonRmax.emplace_back(rout);
248 pgonRmax.emplace_back(rout);
251 <<
" from 0 to " << CLHEP::twopi / CLHEP::deg <<
" and with " << pgonZ.size() <<
" sections";
252 for (
int ii = 0;
ii < (int)(pgonZ.size());
ii++)
253 LogDebug(
"TOBGeom") <<
"\t[" <<
ii <<
"]\tZ = " << pgonZ[
ii] <<
"\tRmin = " << pgonRmin[
ii]
254 <<
"\tRmax = " << pgonRmax[
ii];
262 <<
" positioned in " << diskName <<
" at " << r3 <<
" with no rotation";
265 LogDebug(
"TOBGeom") <<
"<<== End of DDTOBRadCableAlgo construction ...";
static DDSolid torus(const DDName &name, double rMin, double rMax, double rTorus, double startPhi, double deltaPhi)
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.
static DDSolid polycone(const DDName &name, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polycone (refere to Geant3 or Geant4 documentation)
DDName is used to identify DDD entities uniquely.
A DDSolid represents the shape of a part.
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
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)
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation