17 #include "CLHEP/Units/GlobalSystemOfUnits.h" 20 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle info: Creating an instance";
36 rStart = vArgs[
"RadiusStart"];
37 rEnd = vArgs[
"RadiusEnd"];
39 tilt = nArgs[
"TiltAngle"];
44 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle debug: Parent " << parentName
45 <<
" with " <<
bundle.size() <<
" children with prefix " 47 <<
numberPhi <<
" bundles along phi; width of mother " 49 <<
" along phi and with " <<
rStart.size()
50 <<
" different bundle types";
52 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle debug: Child[" <<
i <<
"] Area " 54 <<
" R at End " <<
rEnd[
i];
55 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle debug: NameSpace " 57 <<
" Bundle type at different positions";
58 for (
unsigned int i=0;
i<
bundle.size(); ++
i) {
59 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle debug: Position[" <<
i <<
"] " 75 double phideg = phi/CLHEP::deg;
79 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle test: Creating a new " 80 <<
"rotation " << rotstr <<
"\t" << 90 <<
"," 81 << phideg <<
"," << 90 <<
"," << (phideg+90)
84 90*CLHEP::deg, (90*CLHEP::deg+phi), 0, 0);
86 rotation.push_back(rot);
90 std::vector<DDLogicalPart> logs;
98 r0-dEnd, r0+dEnd, -0.5*dPhi, dPhi);
99 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle test: Creating a new solid " 100 << name <<
" a cons with dZ " <<
deltaZ <<
" rStart " 102 <<
" rEnd " << r0-dEnd <<
":" << r0+dEnd <<
" Phi " 103 << -0.5*dPhi/CLHEP::deg <<
":" << 0.5*dPhi/CLHEP::deg;
111 for (
unsigned int i=0;
i<
bundle.size();
i++) {
113 int ir = (
int)(
i)/nY;
114 if (ir >= numberPhi) ir = numberPhi-1;
117 if (ib>=0 && ib<(
int)(logs.size())) {
118 cpv.
position(logs[ib], mother, copy, tran, rotation[ir]);
119 LogDebug(
"HCalGeom") <<
"DDHCalFibreBundle test: " << logs[
ib].name()
120 <<
" number " << copy <<
" positioned in " 121 << mother <<
" at " << tran <<
" with "
void execute(DDCompactView &cpv)
DDMaterial is used to define and access material information.
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
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.
static std::string & ns()
type of data representation of DDCompactView
A DDSolid represents the shape of a part.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
U second(std::pair< T, U > const &p)
std::vector< int > dbl_to_int(const std::vector< double > &vecdbl)
Converts a std::vector of doubles to a std::vector of int.
double dPhi(double phi1, double phi2)
Cos< T >::type cos(const T &t)
std::vector< double > areaSection
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
virtual ~DDHCalFibreBundle()
std::vector< double > rEnd
std::vector< double > rStart
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
std::vector< int > bundle