CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions
build.h File Reference
#include <string>
#include <DetectorDescription/Core/interface/DDCompactView.h>

Go to the source code of this file.

Functions

void output (std::string filename)
 
void regressionTest_first ()
 
void regressionTest_forth ()
 
void regressionTest_second ()
 
void regressionTest_setup ()
 
void regressionTest_third ()
 
void testParser ()
 
void testrot ()
 

Function Documentation

void output ( std::string  filename)
void regressionTest_first ( )

load the new cpv

Definition at line 110 of file build.cc.

References DDSolidFactory::box(), gather_cfg::cout, DDrot(), ClhepEvaluator::eval(), DDI::Singleton< I >::instance(), DDCompactView::position(), submit::rm, AlCaHLTBitMon_QueryRunRegistry::string, and csvLumiCalc::unit.

110  {
112  DDCompactView cpv;
113  cout << "main::initialize DDL parser" << endl;
114  DDLParser myP(cpv);// = DDLParser::instance();
115 
116  cout << "main::about to set configuration" << endl;
117 
119  string ns("first");
120  DDSolid support = DDSolidFactory::box(DDName("support",ns),
121  eval.eval(ns,"[setup:corner]/4."),
122  eval.eval(ns,"[setup:corner]/8."),
123  eval.eval(ns,"[setup:corner]/4.")
124  );
125  DDSolid sensor = DDSolidFactory::box(DDName("sensor",ns),
126  eval.eval(ns,"[setup:corner]/16."),
127  eval.eval(ns,"[setup:corner]/16."),
128  eval.eval(ns,"[setup:corner]/16.")
129  );
130 
131  DDLogicalPart supportLP(DDName("support",ns), // name
132  DDName("Oxygen","elements"), // material
133  DDName("support",ns)); // solid
134 
135  DDLogicalPart sensorLP(DDName("sensor",ns),
136  DDName("Nitrogen","elements"),
137  DDName("sensor",ns));
138 
139  DDLogicalPart part(DDName("group",ns),
140  DDName("Air","setup"),
141  DDName("group","setup")
142  );
143 
144  DDRotation r30(DDName("R30","setup"));
145  DDRotation r60(DDName("R60","setup"));
146  DDRotation r90(DDName("R90","setup"));
147  DDRotation unit(DDName("Unit","setup"));
148  DDTranslation t0;
149  DDTranslation t1(eval.eval(ns,"[setup:corner]/8."),
150  eval.eval(ns,"[setup:corner]/16."),
151  eval.eval(ns,"[setup:corner]/8.")
152  );
153  DDTranslation t2(eval.eval(ns,"[setup:corner]*1.25*cos(0.)"),
154  eval.eval(ns,"[setup:corner]*1.25*sin(0.)"),
155  eval.eval(ns,"0."));
156  DDTranslation t3(eval.eval(ns,"[setup:corner]*1.25*cos(30.*deg)"),
157  eval.eval(ns,"[setup:corner]*1.25*sin(30.*deg)"),
158  eval.eval(ns,"0."));
159  DDTranslation t4(eval.eval(ns,"[setup:corner]*1.25*cos(60.*deg)"),
160  eval.eval(ns,"[setup:corner]*1.25*sin(60.*deg)"),
161  eval.eval(ns,"0."));
162  DDTranslation t5(eval.eval(ns,"[setup:corner]*1.25*cos(90.*deg)"),
163  eval.eval(ns,"[setup:corner]*1.25*sin(90.*deg)"),
164  eval.eval(ns,"0."));
165 
166  cpv.position(sensorLP, supportLP, std::string("1"), t1, unit);
167  cpv.position(supportLP, part, std::string("1"), t2, unit);
168  cpv.position(supportLP, part, std::string("2"), t3, r30);
169  cpv.position(supportLP, part, std::string("3"), t4, r60);
170  cpv.position(supportLP, part, std::string("4"), t5, r90);
171 
172  DDRotationMatrix * rm = new DDRotationMatrix(ROOT::Math::AxisAngle(DD3Vector(1.,1.,1.),20.*deg));
173  DDRotation rw= DDrot(DDName("group", ns), rm);
174  DDLogicalPart ws(DDName("world","setup"));
175  cpv.position(part, ws, std::string("1"), t0, rw);
176 }
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.
Definition: DDName.h:18
type of data representation of DDCompactView
Definition: DDCompactView.h:77
A DDSolid represents the shape of a part.
Definition: DDSolid.h:35
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
Definition: DDTranslation.h:7
Represents a uniquely identifyable rotation matrix.
Definition: DDTransform.h:66
static value_type & instance()
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
Definition: DDTranslation.h:6
string unit
Definition: csvLumiCalc.py:46
string rm
Definition: submit.py:76
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:88
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:519
DDRotation DDrot(const DDName &name, DDRotationMatrix *rot)
Definition of a uniquely identifiable rotation matrix named by DDName name.
Definition: DDRotation.cc:90
DDLParser is the main class of Detector Description Language Parser.
Definition: DDLParser.h:64
part
Definition: HCALResponse.h:20
double eval(const std::string &ns, const std::string &expr)
tuple cout
Definition: gather_cfg.py:121
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
void regressionTest_forth ( )
void regressionTest_second ( )
void regressionTest_setup ( )

Definition at line 36 of file build.cc.

References DDMaterial::addMaterial(), DDSolidFactory::box(), gather_cfg::cout, DDrot(), ClhepEvaluator::eval(), DDI::Singleton< I >::instance(), ClhepEvaluator::set(), and DDSolidFactory::shapeless().

36  {
38 
39  string ns = "setup"; // current namespace faking the filename 'setup.xml'
40 
41  // length of a side of world cube
42  eval.set(ns,"length","20.*m");
43 
44  // center of a corner in the cube
45  eval.set(ns,"corner","[length]/4.");
46 
47  // world-solid
48  DDName worldName("world",ns);
49  DDName airName("Air",ns);
50  DDName nitrogenName("Nitrogen","elements");
51  DDName oxygenName("Oxygen","elements");
52 
53  DDSolidFactory::box(worldName, eval.eval(ns,"[length]/2."),
54  eval.eval(ns,"[length]/2."),
55  eval.eval(ns,"[length]/2."));
56 
57  DDLogicalPart(worldName, // name
58  airName, // material
59  worldName // solid
60  );
61 
62  DDMaterial air(airName,eval.eval(ns,"1.214*mg/cm3")); // mixture for Air
63  air.addMaterial(DDMaterial(nitrogenName),eval.eval(ns,"0.75"));
64  air.addMaterial(DDMaterial(oxygenName),eval.eval(ns,"0.25"));
65 
66  cout << air << endl;
67 
68  DDMaterial(nitrogenName, // name
69  eval.eval(ns,"7"), // Z
70  eval.eval(ns,"14.007*g/mole"), // A
71  eval.eval(ns,"0.808*g/cm3") ); // density
72 
73  DDMaterial(oxygenName, // name
74  eval.eval(ns,"8"), // Z
75  eval.eval(ns,"15.999*g/mole"), // A
76  eval.eval(ns,"1.43*g/cm3") ); // density
77 
78  cout << air << endl;
79 
80  // Some rotations in the x-y plane (Unit, 30,60,90 degs)
82  DDRotationMatrix * r30 = new DDRotationMatrix(ROOT::Math::RotationZ(30.*deg));
83  DDRotationMatrix * r60 = new DDRotationMatrix(ROOT::Math::RotationZ(60.*deg));
84  DDRotationMatrix * r90 = new DDRotationMatrix(ROOT::Math::RotationZ(90.*deg));
85 
86  DDrot(DDName("Unit",ns),r0);
87  DDrot(DDName("R30",ns),r30);
88  DDrot(DDName("R60",ns),r60);
89  DDrot(DDName("R90",ns),r90);
90 
91  DDSolid collectorSolid = DDSolidFactory::shapeless(DDName("group",ns));
92 
93  DDRootDef::instance().set(worldName);
94 }
DDMaterial is used to define and access material information.
Definition: DDMaterial.h:41
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:18
A DDSolid represents the shape of a part.
Definition: DDSolid.h:35
int addMaterial(const DDMaterial &m, double fm)
adds a material to the mixture proportional to its fraction-mass fm.
Definition: DDMaterial.cc:72
static value_type & instance()
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
Definition: DDLogicalPart.h:88
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
Definition: DDSolid.cc:519
DDRotation DDrot(const DDName &name, DDRotationMatrix *rot)
Definition of a uniquely identifiable rotation matrix named by DDName name.
Definition: DDRotation.cc:90
static DDSolid shapeless(const DDName &name)
Definition: DDSolid.cc:846
void set(const std::string &ns, const std::string &name, const std::string &exprValue)
double eval(const std::string &ns, const std::string &expr)
tuple cout
Definition: gather_cfg.py:121
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
void regressionTest_third ( )
void testParser ( )

Definition at line 222 of file build.cc.

References gather_cfg::cout, alignCSCRings::e, DDLParser::parse(), and FIPConfiguration::readConfig().

223 {
224  try {
225  cout << "main:: initialize" << endl;
226  DDCompactView cpv;
227  cout << "main::initialize DDL parser" << endl;
228  DDLParser myP(cpv);// = DDLParser::instance();
229 
230  cout << "main::about to set configuration" << endl;
231  // myP->SetConfig("configuration.xml");
232  FIPConfiguration cf(cpv);
233  cf.readConfig("DetectorDescription/RegressionTest/test/configuration.xml");
234 
235  cout << "main::about to start parsing" << endl;
236 
237  myP.parse(cf);
238 
239  cout << "main::completed Parser" << endl;
240 
241  cout << endl << endl << "main::Start checking!" << endl << endl;
242 
243  }
244  catch (cms::Exception& e)
245  {
246  cout << "main::PROBLEM:" << endl
247  << " " << e << endl;
248  }
249 }
type of data representation of DDCompactView
Definition: DDCompactView.h:77
DDLParser is the main class of Detector Description Language Parser.
Definition: DDLParser.h:64
FIPConfiguration reads in the configuration file for the DDParser.
tuple cout
Definition: gather_cfg.py:121
void testrot ( )

Definition at line 277 of file build.cc.

References gather_cfg::cout, printRot(), and submit::rm.

278 {
279  {
280  ROOT::Math::AxisAngle aa(DD3Vector(1.,1.,1.), 20.*deg);
281  DDRotationMatrix rm(aa);
282  cout << "DD3Vector was " << DD3Vector(1.,1.,1.) << " and the rotation was 20*deg around that axis." << endl;
283  printRot(rm);
284  }
285  {
286  DDRotationMatrix rm(1,0,0, 0,-1,0, 0,0,1);
287  cout << "(1,0,0, 0,-1,0, 0,0,1)" << endl;
288  printRot(rm);
289  }
290 }
void printRot(const DDRotationMatrix &rot)
Definition: build.cc:251
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DD3Vector
A DD Translation is currently implemented with Root Vector3D.
Definition: DDTranslation.h:6
string rm
Definition: submit.py:76
tuple cout
Definition: gather_cfg.py:121
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.