16 #include "CLHEP/Units/GlobalPhysicalConstants.h" 17 #include "CLHEP/Units/GlobalSystemOfUnits.h" 20 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo info: Creating an instance";
37 width = nArgs[
"Width"];
44 if (fabs(
rangeAngle-360.0*CLHEP::deg)<0.001*CLHEP::deg) {
54 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo debug: Parameters for creating " 55 <<
startAngle.size() <<
" axial cables and positioning " 56 <<
n <<
" copies in Service volume\n" 58 <<
" zEnd " <<
zEnd <<
" rMin " <<
rMin <<
" rMax " 59 <<
rMax <<
" Cable width " <<
width/CLHEP::deg
61 <<
dZ <<
"\n Range, Delta " 65 <<
" from Z " <<
zPos[
i] <<
" startAngle " 73 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo debug: Parent " << parentName
74 <<
"\tChild " <<
childName <<
" NameSpace " 81 double theta = 90.*CLHEP::deg;
87 std::vector<double> pconZ, pconRmin, pconRmax;
88 pconZ.emplace_back(zv);
89 pconRmin.emplace_back(
rMin);
90 pconRmax.emplace_back(
rMax);
91 pconZ.emplace_back(zv+
thickZ);
92 pconRmin.emplace_back(
rMin);
93 pconRmax.emplace_back(
rMax);
94 pconZ.emplace_back(zv+
thickZ);
96 pconRmax.emplace_back(
rMax);
98 pconZ.emplace_back(zv-
thickZ);
100 pconRmax.emplace_back(
rMax);
101 pconZ.emplace_back(zv-
thickZ);
102 pconRmin.emplace_back(
rMin);
103 pconRmax.emplace_back(
rMax);
104 pconZ.emplace_back(zv);
105 pconRmin.emplace_back(
rMin);
106 pconRmax.emplace_back(
rMax);
107 pconZ.emplace_back(zv);
109 pconRmax.emplace_back(
rMax);
112 pconRmax.emplace_back(
rMax);
119 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo test: " 122 << 0.5*
width/CLHEP::deg <<
" and with " << pconZ.size()
124 for (
int ii = 0;
ii <(
int)(pconZ.size());
ii++)
125 LogDebug(
"TECGeom") <<
"\t" <<
"\tZ[" <<
ii <<
"] = " << pconZ[
ii]
126 <<
"\tRmin[" <<
ii <<
"] = "<< pconRmin[
ii]
127 <<
"\tRmax[" <<
ii <<
"] = " << pconRmax[
ii];
133 for (i=0; i<
n; i++) {
135 double phiy = phix + 90.*CLHEP::deg;
136 double phideg = phix/CLHEP::deg;
143 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo test: Creating a new" 144 <<
" rotation: " << rotstr <<
"\t90., " 145 << phix/CLHEP::deg <<
", 90.," 146 << phiy/CLHEP::deg <<
", 0, 0";
154 LogDebug(
"TECGeom") <<
"DDTECAxialCableAlgo test " 156 <<
" positioned in " << mother <<
" at " << tran
std::vector< double > zPos
~DDTECAxialCableAlgo() override
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)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
static std::string & ns()
std::vector< double > startAngle
type of data representation of DDCompactView
A DDSolid represents the shape of a part.
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
void execute(DDCompactView &cpv) override
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
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 = ':'