13 #include "CLHEP/Units/GlobalPhysicalConstants.h" 14 #include "CLHEP/Units/GlobalSystemOfUnits.h" 18 sideRod(0), sideRodX(0), sideRodY(0), sideRodZ(0), endRod1Y(0), endRod1Z(0),
19 clampX(0), clampZ(0), sideCoolX(0), sideCoolY(0), sideCoolZ(0),
20 endCoolY(0), endCoolZ(0),
21 optFibreX(0),optFibreZ(0),
22 sideClampX(0), sideClamp1DZ(0), sideClamp2DZ(0), moduleRot(0), moduleY(0),
23 moduleZ(0),
connect(0), connectY(0), connectZ(0),
24 aohCopies(0), aohX(0), aohY(0), aohZ(0) {
25 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo info: Creating an instance";
37 shift = nArgs[
"Shift"];
40 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo debug: Parent " << parentName
41 <<
" Central " <<
central <<
" NameSpace " 44 sideRod = vsArgs[
"SideRodName"];
50 <<
" to be positioned " <<
sideRodX.size()
51 <<
" times at y = " <<
sideRodY[
i] <<
" z = " 61 <<
"positioned " <<
endRod1Y.size() <<
" times at";
70 <<
"positioned at y = " <<
endRod2Y <<
" z = " 73 cable = sArgs[
"CableName"];
75 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo debug: " <<
cable <<
" to be " 76 <<
"positioned at z = " <<
cableZ;
78 clamp = sArgs[
"ClampName"];
81 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo debug: " <<
clamp <<
" to be " 82 <<
"positioned " <<
clampX.size() <<
" times at";
92 <<
"positioned " <<
sideCoolX.size() <<
" times at";
103 <<
"positioned with " <<
endCoolRot <<
" rotation at" 111 <<
"positioned " <<
optFibreX.size() <<
" times at";
120 <<
"positioned " <<
sideClampX.size() <<
" times at";
128 <<
"positioned " <<
sideClampX.size() <<
" times at";
134 module = sArgs[
"ModuleName"];
137 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo debug:\t" <<
module <<
" positioned " 147 <<
" ICC positioned with no rotation";
154 aohX = vArgs[
"AOHx"];
155 aohY = vArgs[
"AOHy"];
156 aohZ = vArgs[
"AOHz"];
157 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo debug:\t" <<
aohName <<
" AOH will be positioned on ICC's";
160 <<
"\tx = " <<
aohX[
i]
161 <<
"\ty = " <<
aohY[
i]
162 <<
"\tz = " <<
aohZ[
i];
168 LogDebug(
"TOBGeom") <<
"==>> Constructing DDTOBRodAlgo...";
178 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 179 << j+1 <<
" positioned in " << rodName <<
" at " 180 << r <<
" with no rotation";
189 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 190 << i+1 <<
" positioned in " << rodName <<
" at " 191 << r <<
" with no rotation";
199 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 200 << i+1 <<
" positioned in " << rodName <<
" at " 201 << r <<
" with no rotation";
209 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 210 << i+1 <<
" positioned in " << rodName <<
" at " 211 << r <<
" with no rotation";
220 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 221 << i+1 <<
" positioned in " << rodName <<
" at " 222 << r <<
" with no rotation";
229 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 230 << i+1 <<
" positioned in " << rodName <<
" at " 231 << r <<
" with no rotation";
239 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 240 << i+1 <<
" positioned in " << centName <<
" at " 241 << r <<
" with no rotation";
246 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child1 <<
" number 1 " 247 <<
"positioned in " << centName <<
" at " << r1
248 <<
" with no rotation";
256 cpv.
position(child2, centName, 1, r2, rot2);
257 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child2 <<
" number 1 " 258 <<
"positioned in " << centName <<
" at " << r2
265 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child3 <<
" number 1 " 266 <<
"positioned in " << centName <<
" at " << r3
267 <<
" with no rotation";
274 if (rotstr !=
"NULL") {
279 cpv.
position(child, centName, i+1, r, rot);
280 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 281 << i+1 <<
" positioned in " << centName <<
" at " 282 << r <<
" with " <<
rot;
290 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 291 << i+1 <<
" positioned in " << centName <<
" at " 292 << r <<
" with no rotation";
304 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 305 << copyNumber <<
" positioned in " << centName <<
" at " 306 << r <<
" with no rotation";
313 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 314 << copyNumber <<
" positioned in " << centName <<
" at " 315 << r <<
" with no rotation";
319 for (
unsigned int j = 1; j<4; j++ ) {
344 LogDebug(
"TOBGeom") <<
"DDTOBRodAlgo test: " << child <<
" number " 345 << copyNumber <<
" positioned in " << centName <<
" at " 346 << r <<
" with no rotation";
352 LogDebug(
"TOBGeom") <<
"<<== End of DDTOBRodAlgo construction ...";
std::vector< double > sideRodZ
std::vector< double > sideCoolX
std::vector< std::string > sideRod
std::vector< double > sideClamp2DZ
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
DDName is used to identify DDD entities uniquely.
std::vector< double > optFibreX
std::vector< double > connectZ
static std::string & ns()
std::vector< double > endRod1Y
type of data representation of DDCompactView
std::vector< double > sideRodY
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
std::vector< double > aohX
std::vector< double > moduleY
U second(std::pair< T, U > const &p)
std::vector< std::string > connect
std::vector< double > clampZ
std::vector< double > optFibreZ
std::vector< double > sideClampX
void execute(DDCompactView &cpv)
std::vector< double > clampX
std::vector< double > sideClamp1DZ
std::vector< double > sideCoolZ
std::vector< double > aohCopies
std::vector< double > moduleZ
std::vector< double > connectY
edm::Handle< T > connect(const T *&ptr, edm::EDGetTokenT< T > token, const edm::Event &evt)
std::vector< double > aohY
std::vector< double > aohZ
std::vector< std::string > moduleRot
std::vector< double > sideCoolY
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
std::vector< double > sideRodX
std::vector< double > endRod1Z