110 vector<double> pconZ, pconRmin, pconRmax;
115 pconZ.emplace_back(z);
116 pconRmin.emplace_back(r);
117 pconRmax.emplace_back(
rMax);
120 pconZ.emplace_back(z);
121 pconRmin.emplace_back(r);
122 pconRmax.emplace_back(
rMax);
124 pconZ.emplace_back(z);
125 pconRmin.emplace_back(r);
126 pconRmax.emplace_back(
rMax);
128 pconZ.emplace_back(z);
129 pconRmin.emplace_back(r);
130 pconRmax.emplace_back(
rMax);
136 pconZ.emplace_back(z);
137 pconRmin.emplace_back(r);
138 pconRmax.emplace_back(
rMax);
144 <<
" from " << -0.5 *
width / CLHEP::deg <<
" to " << 0.5 *
width / CLHEP::deg <<
" and with "
145 << pconZ.size() <<
" sections ";
146 for (
int i = 0;
i < (int)(pconZ.size());
i++)
147 LogDebug(
"TIDGeom") <<
"\t[" <<
i <<
"]\tZ = " << pconZ[
i] <<
"\tRmin = " << pconRmin[
i]
148 <<
"\tRmax = " << pconRmax[
i];
157 vector<double> pconZ, pconRmin, pconRmax;
160 LogDebug(
"TIDGeom") <<
"DDTIDAxialCableAlgo test: Thk " << thk <<
" Total " << thktot <<
" rMax " <<
rMax <<
" rTop "
161 <<
rTop <<
" dR " << r <<
" z " <<
z;
162 pconZ.emplace_back(z);
163 pconRmin.emplace_back(
rMax);
164 pconRmax.emplace_back(
rMax);
166 pconZ.emplace_back(z);
167 pconRmin.emplace_back(
rMax);
168 pconRmax.emplace_back(
rTop);
169 pconZ.emplace_back(
zBend);
170 pconRmin.emplace_back(
rMax);
171 pconRmax.emplace_back(
rTop);
177 <<
" from " << -0.5 *
width / CLHEP::deg <<
" to " << 0.5 *
width / CLHEP::deg <<
" and with "
178 << pconZ.size() <<
" sections ";
179 for (
int i = 0;
i < (int)(pconZ.size());
i++)
180 LogDebug(
"TIDGeom") <<
"\t[" <<
i <<
"]\tZ = " << pconZ[
i] <<
"\tRmin = " << pconRmin[
i]
181 <<
"\tRmax = " << pconRmax[
i];
192 <<
" from " << -0.5 *
width / CLHEP::deg <<
" to " << 0.5 *
width / CLHEP::deg <<
" with Rin "
193 << r <<
" Rout " <<
rTop <<
" ZHalf " << 0.5 * (
zEnd -
zBend);
199 double theta = 90. * CLHEP::deg;
200 for (
int i = 0;
i < (int)(
angles.size());
i++) {
202 double phiy = phix + 90. * CLHEP::deg;
203 double phideg = phix / CLHEP::deg;
207 string rotstr =
childName + to_string(phideg * 10.);
210 LogDebug(
"TIDGeom") <<
"DDTIDAxialCableAlgo test: Creating a new "
211 <<
"rotation: " << rotstr <<
" " << theta / CLHEP::deg <<
", " << phix / CLHEP::deg <<
", "
212 << theta / CLHEP::deg <<
", " << phiy / CLHEP::deg <<
", 0, 0";
217 for (
int k = 0;
k < (int)(logs.size());
k++) {
219 if (
k == ((
int)(logs.size()) - 1))
221 cpv.
position(logs[
k], mother,
i + 1, tran, rotation);
222 LogDebug(
"TIDGeom") <<
"DDTIDAxialCableAlgo test " << logs[
k] <<
" number " <<
i + 1 <<
" positioned in "
223 << mother <<
" at " << tran <<
" with " <<
rotation;
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)
Geom::Theta< T > theta() const
DDName is used to identify DDD entities uniquely.
A DDSolid represents the shape of a part.
Represents a uniquely identifyable rotation matrix.
vector< double > zposRing
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)
vector< double > zposWheel
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation