11 #include <Math/RotationZ.h>
16 compNDiv_( div.nReplicas()),
17 compWidth_( div.
width()),
19 theVoluFirstCopyNo_( 1 ),
29 DCOUT_V(
'P',
" DDDividedGeometryObject Divisions " <<
div_ << std::endl );
45 DCOUT_V(
'P',
" DDDividedGeometryObject::calculateNDiv: " << ( motherDim - offset ) / width <<
" Motherdim: " << motherDim <<
", Offset: " << offset <<
", Width: " << width << std::endl);
46 return int( ( motherDim - offset ) / width );
52 DCOUT_V(
'P',
" DDDividedGeometryObject::calculateWidth: " << ( motherDim - offset ) / nDiv <<
", Motherdim: " << motherDim <<
", Offset: " << offset <<
", Number of divisions: " << nDiv << std::endl);
54 return ( motherDim - offset ) / nDiv;
64 std::string
s =
"DDDividedGeometryObject::checkParametersValidity() :";
65 s+=
"\n ERROR - the LogicalPart of the parent must be ";
66 s+=
"\n defined before a division can occur.";
77 DCOUT_V(
'P',
"DDDividedGeometryObject::checkOffset() Division of LogicalPart " <<
div_.
parent() <<
" offset=" <<
div_.
offset() <<
" maxPar=" << maxPar <<
"\n");
78 std::string
s =
"DDDividedGeometryObject::checkOffset() IllegalConstruct";
79 s +=
"\nERROR - DDDividedGeometryObject::checkOffset()";
81 s +=
" Too big an offset.";
92 std::string
s =
"ERROR - DDDividedGeometryObject::checkNDivAndWidth()";
93 s+=
"\n Division of LogicalPart " +
div_.
parent();
94 s+=
" has too big an offset.";
105 static const double tol = 1.0/1000.00;
124 DCOUT_V(
'D',
"about to make " <<
compNDiv_ <<
" divisions." << std::endl );
129 DCOUT_V(
'D',
" copyNo:" <<
i << std::endl );
virtual DDLogicalPart makeDDLogicalPart(const int copyNo) const
def_type isDefined() const
virtual double getMaxParameter(void) const
int calculateNDiv(double motherDim, double width, double offset) const
void checkOffset(double maxPar)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
double calculateWidth(double motherDim, int nDiv, double offset) const
virtual ~DDDividedGeometryObject(void)
type of data representation of DDCompactView
virtual void checkParametersValidity(void)
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
DDDividedGeometryObject(const DDDivision &div, DDCompactView *cpv)
virtual DDTranslation makeDDTranslation(const int copyNo) const
Represents a uniquely identifyable rotation matrix.
static const double tolerance(void)
DivisionType divisionType_
virtual void execute(void)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
virtual void setType(const std::string &type)
unsigned int offset(bool)
virtual const std::string & getType(void) const
#define DCOUT_V(M_v_Y, M_v_S)
std::string toString() const
virtual DDRotation makeDDRotation(const int copyNo) const
const DDLogicalPart & parent() const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
void checkNDivAndWidth(double maxPar)
DDRotationMatrix * changeRotMatrix(double rotZ=0.) const