7 #include "CLHEP/Units/GlobalSystemOfUnits.h" 8 #include "CLHEP/Units/SystemOfUnits.h" 23 #include "Math/GenVector/AxisAngle.h" 24 #include "Math/GenVector/Cartesian3D.h" 25 #include "Math/GenVector/DisplacementVector3D.h" 26 #include "Math/GenVector/Rotation3D.h" 27 #include "Math/GenVector/RotationZ.h" 48 eval.
set(ns,
"length",
"20.*m");
51 eval.
set(ns,
"corner",
"[length]/4.");
54 DDName worldName(
"world",ns);
56 DDName nitrogenName(
"Nitrogen",
"elements");
57 DDName oxygenName(
"Oxygen",
"elements");
60 eval.
eval(ns,
"[length]/2."),
61 eval.
eval(ns,
"[length]/2."));
76 eval.
eval(ns,
"14.007*g/mole"),
77 eval.
eval(ns,
"0.808*g/cm3") );
81 eval.
eval(ns,
"15.999*g/mole"),
82 eval.
eval(ns,
"1.43*g/cm3") );
119 cout <<
"main::initialize DDL parser" << endl;
122 cout <<
"main::about to set configuration" << endl;
127 eval.
eval(ns,
"[setup:corner]/4."),
128 eval.
eval(ns,
"[setup:corner]/8."),
129 eval.
eval(ns,
"[setup:corner]/4.")
132 eval.
eval(ns,
"[setup:corner]/16."),
133 eval.
eval(ns,
"[setup:corner]/16."),
134 eval.
eval(ns,
"[setup:corner]/16.")
138 DDName(
"Oxygen",
"elements"),
142 DDName(
"Nitrogen",
"elements"),
156 eval.
eval(ns,
"[setup:corner]/16."),
157 eval.
eval(ns,
"[setup:corner]/8.")
160 eval.
eval(ns,
"[setup:corner]*1.25*sin(0.)"),
163 eval.
eval(ns,
"[setup:corner]*1.25*sin(30.*deg)"),
166 eval.
eval(ns,
"[setup:corner]*1.25*sin(60.*deg)"),
169 eval.
eval(ns,
"[setup:corner]*1.25*sin(90.*deg)"),
189 os <<
"Starting Regressiontest Output" << endl;
192 cout <<
"main::initialize DDL parser" << endl;
195 cout <<
"main::about to set configuration" << endl;
197 cf.
readConfig(
"DetectorDescription/RegressionTest/test/configuration.xml");
199 cout <<
"main::about to start parsing" << endl;
203 cout <<
"main::completed Parser" << endl;
206 vector<DDTranslation> tvec;
208 std::cout <<
"Before the loop..." << std::endl;
210 ROOT::Math::AxisAngle ra(exv.
rotation());
215 os <<
" " << ra.Axis() << ra.Angle()/deg << endl;
220 vector<DDTranslation>::iterator it = tvec.begin();
221 os << endl <<
"center points of all solids" << endl;
222 for (; it != tvec.end(); ++it) {
223 os << (*it).x() <<
" " << (*it).y() <<
" " << (*it).z() << endl;
230 cout <<
"main:: initialize" << endl;
232 cout <<
"main::initialize DDL parser" << endl;
235 cout <<
"main::about to set configuration" << endl;
238 cf.
readConfig(
"DetectorDescription/RegressionTest/test/configuration.xml");
240 cout <<
"main::about to start parsing" << endl;
244 cout <<
"main::completed Parser" << endl;
246 cout << endl << endl <<
"main::Start checking!" << endl << endl;
251 cout <<
"main::PROBLEM:" << endl
257 std::cout <<
"rot asis\n" << rot << std::endl;
259 rot.GetComponents(x,y,z);
264 cout <<
"phiX=" << x.phi() <<
" or in degrees = " 265 << x.phi()/deg << endl;
266 cout <<
"thetaX=" << x.theta() <<
" or in degrees = " 267 << x.theta()/deg << endl;
268 cout <<
"phiY=" << y.phi() <<
" or in degrees = " 269 << y.phi()/deg << endl;
270 cout <<
"thetaY=" << y.theta() <<
" or in degrees = " 271 << y.theta()/deg << endl;
272 cout <<
"phiZ=" << z.phi() <<
" or in degrees = " 273 << z.phi()/deg << endl;
274 cout <<
"thetaZ=" << z.theta() <<
" or in degrees = " 275 << z.theta()/deg << endl;
277 cout <<
"some factor/equations..." << endl;
278 cout <<
" sin(thetaX()) * cos(phiX()) = " 279 <<
sin(x.theta()) *
cos(x.phi()) << endl;
286 ROOT::Math::AxisAngle aa(
DD3Vector(1.,1.,1.), 20.*deg);
288 cout <<
"DD3Vector was " <<
DD3Vector(1.,1.,1.) <<
" and the rotation was 20*deg around that axis." << endl;
293 cout <<
"(1,0,0, 0,-1,0, 0,0,1)" << endl;
bool next()
set current node to the next node in the expanded tree
const DDRotationMatrix & rotation() const
The absolute rotation of the current node.
int parse(const DDLDocumentProvider &dp)
Parse all files. Return is meaningless.
DDMaterial is used to define and access material information.
Sin< T >::type sin(const T &t)
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.
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
type of data representation of DDCompactView
void regressionTest_first()
A DDSolid represents the shape of a part.
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Represents a uniquely identifyable rotation matrix.
void printRot(const DDRotationMatrix &rot)
int addMaterial(const DDMaterial &m, double fm)
adds a material to the mixture proportional to its fraction-mass fm.
T x() const
Cartesian x coordinate.
static value_type & instance()
void regressionTest_setup()
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
auto const T2 &decltype(t1.eta()) t2
Cos< T >::type cos(const T &t)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
const DDTranslation & translation() const
The absolute translation of the current node.
DDLParser is the main class of Detector Description Language Parser.
FIPConfiguration reads in the configuration file for the DDParser.
void output(string filename)
int readConfig(const std::string &filename)
Read in the configuration file.
static DDSolid shapeless(const DDName &name)
void set(const std::string &ns, const std::string &name, const std::string &exprValue)
double eval(const std::string &ns, const std::string &expr)
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the expanded-view.
Provides an exploded view of the detector (tree-view)
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
const DDMaterial & material(void) const
Returns a reference object of the material this LogicalPart is made of.