17 #include "CLHEP/Units/GlobalSystemOfUnits.h"
24 std::vector<double> localrMaxVec = msol.
rMaxVec();
25 std::vector<double> localrMinVec = msol.
rMinVec();
27 setType(
"DivisionPolyconeRho" );
58 <<
"DDDividedPolyconeRho::checkParametersValidity()"
60 <<
" Solid " << msol << std::endl
61 <<
" Division along r will be done with a width "
62 <<
"different for each solid section." << std::endl
63 <<
" WIDTH will not be used !" << std::endl;
68 <<
"DDDividedPolyconeRho::checkParametersValidity()"
70 <<
" Solid " << msol << std::endl
71 <<
" Division along R will be done with a width "
72 <<
"different for each solid section." << std::endl
73 <<
" OFFSET will not be used !" << std::endl;
81 std::vector<double> localrMaxVec = msol.
rMaxVec();
82 std::vector<double> localrMinVec = msol.
rMinVec();
84 return localrMaxVec[0] - localrMinVec[0];
91 DCOUT_V (
'P',
"DDDividedPolyconeRho::makeDDRotation : " << myddrot);
110 std::vector<double> localrMaxVec = msol.
rMaxVec();
111 std::vector<double> localrMinVec = msol.rMinVec();
112 std::vector<double> localzVec = msol.zVec();
114 int nZplanes = localzVec.size();
116 std::vector<double> newrMinVec;
117 std::vector<double> newrMaxVec;
120 for(
int ii = 0; ii < nZplanes; ++ii)
128 newrMinVec.push_back(localrMinVec[ii]+
div_.
offset()+width*copyNo);
129 newrMaxVec.push_back(localrMinVec[ii]+
div_.
offset()+width*(copyNo+1));
142 DCOUT_V (
'P',
" DDDividedPolyconeRho::makeDDLogicalPart() lp:" << ddlp);
151 setType(
"DivisionPolyconePhi" );
201 myddrot =
DDrot( ddrotname, rotMat );
203 DCOUT_V(
'P',
"DDDividedPolyconePhi::makeDDRotation : " << myddrot );
222 std::vector<double> localrMaxVec = msol.
rMaxVec();
223 std::vector<double> localrMinVec = msol.rMinVec();
224 std::vector<double> localzVec = msol.zVec();
229 if( !sol.isDefined().second )
243 DCOUT_V(
'P',
" DDDividedPolyconePhi::makeDDLogicalPart() lp:" << ddlp );
252 std::vector<double> localrMaxVec = msol.
rMaxVec();
253 std::vector<double> localrMinVec = msol.
rMinVec();
254 std::vector<double> localzVec = msol.
zVec();
281 std::vector<double> localzVec = msol.
zVec();
287 tempNDiv =
calculateNDiv( localzVec[localzVec.size() - 1] - localzVec[0]
290 if ((msol.
zVec().size() - 1) != tempNDiv)
292 std::string
s =
"ERROR - DDDividedPolyconeZ::checkParametersValidity()";
293 s +=
"\n\tDivision along Z will be done splitting in the defined";
294 s +=
"\n\tz_planes, i.e, the number of division would be :";
306 std::vector<double> localzVec = msol.
zVec();
308 return (localzVec[ localzVec.size() - 1] - localzVec[0]);
315 DCOUT_V (
'P',
"DDDividedPolyconeZ::makeDDRotation : " << myddrot);
324 std::vector<double> localzVec = msol.
zVec();
325 double posi = (localzVec[copyNo] + localzVec[copyNo+1]) / 2;
326 translation.SetZ(posi);
338 std::vector<double> localrMaxVec = msol.
rMaxVec();
339 std::vector<double> localrMinVec = msol.rMinVec();
340 std::vector<double> localzVec = msol.zVec();
346 localrMinVec[copyNo],
347 localrMaxVec[copyNo],
348 localrMinVec[copyNo+1],
349 localrMaxVec[copyNo+1],
355 DCOUT_V(
'P',
" DDDividedPolyconeZ::makeDDLogicalPart() lp:" << ddlp );
def_type isDefined() const
const int nReplicas() const
virtual DDTranslation makeDDTranslation(const int copyNo) const
static std::string itostr(int i)
WARNING: abused by other classes in this system: yet another conversion from int to std::string...
DDDividedPolyconeRho(const DDDivision &div, DDCompactView *cpv)
DDMaterial is used to define and access material information.
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const
static DDSolid cons(const DDName &name, double zhalf, double rInMinusZ, double rOutMinusZ, double rInPlusZ, double rOutPlusZ, double phiFrom, double deltaPhi)
virtual double getMaxParameter() const
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)
int calculateNDiv(double motherDim, double width, double offset) const
An exception for DDD errors.
virtual ~DDDividedPolyconeRho()
const std::string & ns() const
Returns the namespace.
DDName is used to identify DDD entities uniquely.
virtual ~DDDividedPolyconeZ()
virtual DDTranslation makeDDTranslation(const int copyNo) const
double calculateWidth(double motherDim, int nDiv, double offset) const
virtual DDRotation makeDDRotation(const int copyNo) const
virtual double getMaxParameter() const
virtual DDTranslation makeDDTranslation(const int copyNo) const
type of data representation of DDCompactView
virtual void checkParametersValidity()
const DDMaterial & material() const
Returns a reference object of the material this LogicalPart is made of.
A DDSolid represents the shape of a part.
virtual void checkParametersValidity(void)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
virtual DDRotation makeDDRotation(const int copyNo) const
virtual ~DDDividedPolyconePhi()
DivisionType divisionType_
virtual void checkParametersValidity()
virtual DDRotation makeDDRotation(const int copyNo) const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
virtual void setType(const std::string &type)
DDDividedPolyconeZ(const DDDivision &div, DDCompactView *cpv)
#define DCOUT_V(M_v_Y, M_v_S)
std::vector< double > zVec() const
const double width() const
virtual void checkParametersValidity()
DDDividedPolyconePhi(const DDDivision &div, DDCompactView *cpv)
std::vector< double > rMinVec() const
const DDSolid & solid() const
Returns a reference object of the solid being the shape of this LogicalPart.
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const
const double offset() const
const DDLogicalPart & parent() const
virtual double getMaxParameter() const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
std::vector< double > rMaxVec() const
const std::string & name() const
Returns the name.
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const
DDRotationMatrix * changeRotMatrix(double rotZ=0.) const