Geant4  v4-10.4-release
 모두 클래스 네임스페이스들 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 Friends 매크로 그룹들 페이지들
G4GDMLReadDefine.cc
이 파일의 문서화 페이지로 가기
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // $Id: G4GDMLReadDefine.cc 108895 2018-03-15 10:27:25Z gcosmo $
27 //
28 // class G4GDMLReadDefine Implementation
29 //
30 // Original author: Zoltan Torzsok, November 2007
31 //
32 // --------------------------------------------------------------------
33 
34 #include "G4GDMLReadDefine.hh"
35 #include "G4UnitsTable.hh"
36 
38  : m(0), rows(0), cols(0)
39 {
40 }
41 
42 G4GDMLMatrix::G4GDMLMatrix(size_t rows0, size_t cols0)
43 {
44  if ((rows0==0) || (cols0==0))
45  {
46  G4Exception("G4GDMLMatrix::G4GDMLMatrix(r,c)", "InvalidSetup",
47  FatalException, "Zero indeces as arguments!?");
48  }
49  rows = rows0;
50  cols = cols0;
51  m = new G4double[rows*cols];
52 }
53 
55  : m(0), rows(0), cols(0)
56 {
57  if (rhs.m)
58  {
59  rows = rhs.rows;
60  cols = rhs.cols;
61  m = new G4double[rows*cols];
62  for (size_t i=0; i<rows*cols; i++) { m[i] = rhs.m[i]; }
63  }
64 }
65 
67 {
68  // Check assignment to self
69  //
70  if (this == &rhs) { return *this; }
71 
72  // Copy data
73  //
74  rows = rhs.rows;
75  cols = rhs.cols;
76  if (rhs.m)
77  {
78  m = new G4double[rows*cols];
79  for (size_t i=0; i<rows*cols; i++) { m[i] = rhs.m[i]; }
80  }
81  else
82  {
83  m = 0;
84  }
85 
86  return *this;
87 }
88 
90 {
91  delete [] m;
92 }
93 
94 void G4GDMLMatrix::Set(size_t r,size_t c,G4double a)
95 {
96  if (r>=rows || c>=cols)
97  {
98  G4Exception("G4GDMLMatrix::set()", "InvalidSetup",
99  FatalException, "Index out of range!");
100  }
101  m[cols*r+c] = a;
102 }
103 
104 G4double G4GDMLMatrix::Get(size_t r,size_t c) const
105 {
106  if (r>=rows || c>=cols)
107  {
108  G4Exception("G4GDMLMatrix::get()", "InvalidSetup",
109  FatalException, "Index out of range!");
110  }
111  return m[cols*r+c];
112 }
113 
114 size_t G4GDMLMatrix::GetRows() const
115 {
116  return rows;
117 }
118 
119 size_t G4GDMLMatrix::GetCols() const
120 {
121  return cols;
122 }
123 
125 {
126 }
127 
129 {
130 }
131 
134 {
135  G4RotationMatrix rot;
136 
137  rot.rotateX(angles.x());
138  rot.rotateY(angles.y());
139  rot.rotateZ(angles.z());
140  rot.rectify(); // Rectify matrix from possible roundoff errors
141 
142  return rot;
143 }
144 
145 void
146 G4GDMLReadDefine::ConstantRead(const xercesc::DOMElement* const constantElement)
147 {
148  G4String name = "";
149  G4double value = 0.0;
150 
151  const xercesc::DOMNamedNodeMap* const attributes
152  = constantElement->getAttributes();
153  XMLSize_t attributeCount = attributes->getLength();
154 
155  for (XMLSize_t attribute_index=0;
156  attribute_index<attributeCount; attribute_index++)
157  {
158  xercesc::DOMNode* node = attributes->item(attribute_index);
159 
160  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
161 
162  const xercesc::DOMAttr* const attribute
163  = dynamic_cast<xercesc::DOMAttr*>(node);
164  if (!attribute)
165  {
166  G4Exception("G4GDMLRead::ConstantRead()", "InvalidRead",
167  FatalException, "No attribute found!");
168  return;
169  }
170  const G4String attName = Transcode(attribute->getName());
171  const G4String attValue = Transcode(attribute->getValue());
172 
173  if (attName=="name") { name = attValue; } else
174  if (attName=="value") { value = eval.Evaluate(attValue); }
175  }
176 
177  eval.DefineConstant(name,value);
178 }
179 
180 void
181 G4GDMLReadDefine::ExpressionRead(const xercesc::DOMElement* const expElement)
182 {
183  G4String name = "";
184  G4double value = 0.0;
185 
186  const xercesc::DOMNamedNodeMap* const attributes
187  = expElement->getAttributes();
188  XMLSize_t attributeCount = attributes->getLength();
189 
190  for (XMLSize_t attribute_index=0;
191  attribute_index<attributeCount; attribute_index++)
192  {
193  xercesc::DOMNode* node = attributes->item(attribute_index);
194 
195  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
196 
197  const xercesc::DOMAttr* const attribute
198  = dynamic_cast<xercesc::DOMAttr*>(node);
199  if (!attribute)
200  {
201  G4Exception("G4GDMLRead::ExpressionRead()", "InvalidRead",
202  FatalException, "No attribute found!");
203  return;
204  }
205  const G4String attName = Transcode(attribute->getName());
206  const G4String attValue = Transcode(attribute->getValue());
207 
208  if (attName=="name") { name = attValue; }
209  }
210 
211  const G4String expValue = Transcode(expElement->getTextContent());
212  value = eval.Evaluate(expValue);
213  eval.DefineConstant(name,value);
214 }
215 
216 void
217 G4GDMLReadDefine::MatrixRead(const xercesc::DOMElement* const matrixElement)
218 {
219  G4String name = "";
220  G4int coldim = 0;
221  G4String values = "";
222 
223  const xercesc::DOMNamedNodeMap* const attributes
224  = matrixElement->getAttributes();
225  XMLSize_t attributeCount = attributes->getLength();
226 
227  for (XMLSize_t attribute_index=0;
228  attribute_index<attributeCount; attribute_index++)
229  {
230  xercesc::DOMNode* node = attributes->item(attribute_index);
231 
232  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
233 
234  const xercesc::DOMAttr* const attribute
235  = dynamic_cast<xercesc::DOMAttr*>(node);
236  if (!attribute)
237  {
238  G4Exception("G4GDMLRead::MatrixRead()", "InvalidRead",
239  FatalException, "No attribute found!");
240  return;
241  }
242  const G4String attName = Transcode(attribute->getName());
243  const G4String attValue = Transcode(attribute->getValue());
244 
245  if (attName=="name") { name = GenerateName(attValue); } else
246  if (attName=="coldim") { coldim = eval.EvaluateInteger(attValue); } else
247  if (attName=="values") { values = attValue; }
248  }
249 
250  std::stringstream MatrixValueStream(values);
251  std::vector<G4double> valueList;
252 
253  while (!MatrixValueStream.eof())
254  {
255  G4String MatrixValue;
256  MatrixValueStream >> MatrixValue;
257  valueList.push_back(eval.Evaluate(MatrixValue));
258  }
259 
260  eval.DefineMatrix(name,coldim,valueList);
261 
262  G4GDMLMatrix matrix(valueList.size()/coldim,coldim);
263 
264  for (size_t i=0;i<valueList.size();i++)
265  {
266  matrix.Set(i/coldim,i%coldim,valueList[i]);
267  }
268 
269  matrixMap[name] = matrix;
270 }
271 
272 void
273 G4GDMLReadDefine::PositionRead(const xercesc::DOMElement* const positionElement)
274 {
275  G4String name = "";
276  G4double unit = 1.0;
277  G4ThreeVector position(0.,0.,0.);
278 
279  const xercesc::DOMNamedNodeMap* const attributes
280  = positionElement->getAttributes();
281  XMLSize_t attributeCount = attributes->getLength();
282 
283  for (XMLSize_t attribute_index=0;
284  attribute_index<attributeCount; attribute_index++)
285  {
286  xercesc::DOMNode* node = attributes->item(attribute_index);
287 
288  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
289 
290  const xercesc::DOMAttr* const attribute
291  = dynamic_cast<xercesc::DOMAttr*>(node);
292  if (!attribute)
293  {
294  G4Exception("G4GDMLRead::PositionRead()", "InvalidRead",
295  FatalException, "No attribute found!");
296  return;
297  }
298  const G4String attName = Transcode(attribute->getName());
299  const G4String attValue = Transcode(attribute->getValue());
300 
301  if (attName=="name") { name = GenerateName(attValue); } else
302  if (attName=="unit") { unit = G4UnitDefinition::GetValueOf(attValue);
303  if (G4UnitDefinition::GetCategory(attValue)!="Length") {
304  G4Exception("G4GDMLReadDefine::PositionRead()", "InvalidRead",
305  FatalException, "Invalid unit for length!"); }
306  } else
307  if (attName=="x") { position.setX(eval.Evaluate(attValue)); } else
308  if (attName=="y") { position.setY(eval.Evaluate(attValue)); } else
309  if (attName=="z") { position.setZ(eval.Evaluate(attValue)); }
310  }
311 
312  positionMap[name] = position*unit;
313 }
314 
315 void
316 G4GDMLReadDefine::RotationRead(const xercesc::DOMElement* const rotationElement)
317 {
318  G4String name = "";
319  G4double unit = 1.0;
320  G4ThreeVector rotation(0.,0.,0.);
321 
322  const xercesc::DOMNamedNodeMap* const attributes
323  = rotationElement->getAttributes();
324  XMLSize_t attributeCount = attributes->getLength();
325 
326  for (XMLSize_t attribute_index=0;
327  attribute_index<attributeCount; attribute_index++)
328  {
329  xercesc::DOMNode* node = attributes->item(attribute_index);
330 
331  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
332 
333  const xercesc::DOMAttr* const attribute
334  = dynamic_cast<xercesc::DOMAttr*>(node);
335  if (!attribute)
336  {
337  G4Exception("G4GDMLRead::RotationRead()", "InvalidRead",
338  FatalException, "No attribute found!");
339  return;
340  }
341  const G4String attName = Transcode(attribute->getName());
342  const G4String attValue = Transcode(attribute->getValue());
343 
344  if (attName=="name") { name = GenerateName(attValue); } else
345  if (attName=="unit") { unit = G4UnitDefinition::GetValueOf(attValue);
346  if (G4UnitDefinition::GetCategory(attValue)!="Angle") {
347  G4Exception("G4GDMLReadDefine::RotationRead()", "InvalidRead",
348  FatalException, "Invalid unit for angle!"); }
349  } else
350  if (attName=="x") { rotation.setX(eval.Evaluate(attValue)); } else
351  if (attName=="y") { rotation.setY(eval.Evaluate(attValue)); } else
352  if (attName=="z") { rotation.setZ(eval.Evaluate(attValue)); }
353  }
354 
355  rotationMap[name] = rotation*unit;
356 }
357 
358 void G4GDMLReadDefine::ScaleRead(const xercesc::DOMElement* const scaleElement)
359 {
360  G4String name = "";
361  G4ThreeVector scale(1.0,1.0,1.0);
362 
363  const xercesc::DOMNamedNodeMap* const attributes
364  = scaleElement->getAttributes();
365  XMLSize_t attributeCount = attributes->getLength();
366 
367  for (XMLSize_t attribute_index=0;
368  attribute_index<attributeCount; attribute_index++)
369  {
370  xercesc::DOMNode* node = attributes->item(attribute_index);
371 
372  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
373 
374  const xercesc::DOMAttr* const attribute
375  = dynamic_cast<xercesc::DOMAttr*>(node);
376  if (!attribute)
377  {
378  G4Exception("G4GDMLRead::ScaleRead()", "InvalidRead",
379  FatalException, "No attribute found!");
380  return;
381  }
382  const G4String attName = Transcode(attribute->getName());
383  const G4String attValue = Transcode(attribute->getValue());
384 
385  if (attName=="name") { name = GenerateName(attValue); } else
386  if (attName=="x") { scale.setX(eval.Evaluate(attValue)); } else
387  if (attName=="y") { scale.setY(eval.Evaluate(attValue)); } else
388  if (attName=="z") { scale.setZ(eval.Evaluate(attValue)); }
389  }
390 
391  scaleMap[name] = scale;
392 }
393 
394 void
395 G4GDMLReadDefine::VariableRead(const xercesc::DOMElement* const variableElement)
396 {
397  G4String name = "";
398  G4double value = 0.0;
399 
400  const xercesc::DOMNamedNodeMap* const attributes
401  = variableElement->getAttributes();
402  XMLSize_t attributeCount = attributes->getLength();
403 
404  for (XMLSize_t attribute_index=0;
405  attribute_index<attributeCount; attribute_index++)
406  {
407  xercesc::DOMNode* node = attributes->item(attribute_index);
408 
409  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
410 
411  const xercesc::DOMAttr* const attribute
412  = dynamic_cast<xercesc::DOMAttr*>(node);
413  if (!attribute)
414  {
415  G4Exception("G4GDMLRead::VariableRead()", "InvalidRead",
416  FatalException, "No attribute found!");
417  return;
418  }
419  const G4String attName = Transcode(attribute->getName());
420  const G4String attValue = Transcode(attribute->getValue());
421 
422  if (attName=="name") { name = attValue; } else
423  if (attName=="value") { value = eval.Evaluate(attValue); }
424  }
425 
426  eval.DefineVariable(name,value);
427 }
428 
429 void G4GDMLReadDefine::QuantityRead(const xercesc::DOMElement* const element)
430 {
431  G4String name = "";
432  G4double unit = 1.0;
433  G4double value = 0.0;
434 
435  const xercesc::DOMNamedNodeMap* const attributes
436  = element->getAttributes();
437  XMLSize_t attributeCount = attributes->getLength();
438 
439  for (XMLSize_t attribute_index=0;
440  attribute_index<attributeCount; attribute_index++)
441  {
442  xercesc::DOMNode* node = attributes->item(attribute_index);
443 
444  if (node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE) { continue; }
445 
446  const xercesc::DOMAttr* const attribute
447  = dynamic_cast<xercesc::DOMAttr*>(node);
448  if (!attribute)
449  {
450  G4Exception("G4GDMLRead::QuantityRead()", "InvalidRead",
451  FatalException, "No attribute found!");
452  return;
453  }
454  const G4String attName = Transcode(attribute->getName());
455  const G4String attValue = Transcode(attribute->getValue());
456 
457  if (attName=="name") { name = attValue; } else
458  if (attName=="value") { value = eval.Evaluate(attValue); } else
459  if (attName=="unit") { unit = G4UnitDefinition::GetValueOf(attValue); }
460  }
461 
462  quantityMap[name] = value*unit;
463  eval.DefineConstant(name,value*unit);
464 }
465 
466 void
467 G4GDMLReadDefine::DefineRead(const xercesc::DOMElement* const defineElement)
468 {
469 #ifdef G4VERBOSE
470  G4cout << "G4GDML: Reading definitions..." << G4endl;
471 #endif
472  for (xercesc::DOMNode* iter = defineElement->getFirstChild();
473  iter != 0;iter = iter->getNextSibling())
474  {
475  if (iter->getNodeType() != xercesc::DOMNode::ELEMENT_NODE) { continue; }
476 
477  const xercesc::DOMElement* const child
478  = dynamic_cast<xercesc::DOMElement*>(iter);
479  if (!child)
480  {
481  G4Exception("G4GDMLRead::DefineRead()", "InvalidRead",
482  FatalException, "No child found!");
483  return;
484  }
485  const G4String tag = Transcode(child->getTagName());
486 
487  if (tag=="constant") { ConstantRead(child); } else
488  if (tag=="matrix") { MatrixRead(child); } else
489  if (tag=="position") { PositionRead(child); } else
490  if (tag=="rotation") { RotationRead(child); } else
491  if (tag=="scale") { ScaleRead(child); } else
492  if (tag=="variable") { VariableRead(child); } else
493  if (tag=="quantity") { QuantityRead(child); } else
494  if (tag=="expression") { ExpressionRead(child); }
495  else
496  {
497  G4String error_msg = "Unknown tag in define: "+tag;
498  G4Exception("G4GDMLReadDefine::defineRead()", "ReadError",
499  FatalException, error_msg);
500  }
501  }
502 }
503 
504 void
505 G4GDMLReadDefine::VectorRead(const xercesc::DOMElement* const vectorElement,
506  G4ThreeVector& vec)
507 {
508  G4double unit = 1.0;
509 
510  const xercesc::DOMNamedNodeMap* const attributes
511  = vectorElement->getAttributes();
512  XMLSize_t attributeCount = attributes->getLength();
513 
514  for (XMLSize_t attribute_index=0;
515  attribute_index<attributeCount; attribute_index++)
516  {
517  xercesc::DOMNode* attribute_node = attributes->item(attribute_index);
518 
519  if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE)
520  { continue; }
521 
522  const xercesc::DOMAttr* const attribute
523  = dynamic_cast<xercesc::DOMAttr*>(attribute_node);
524  if (!attribute)
525  {
526  G4Exception("G4GDMLRead::VectorRead()", "InvalidRead",
527  FatalException, "No attribute found!");
528  return;
529  }
530  const G4String attName = Transcode(attribute->getName());
531  const G4String attValue = Transcode(attribute->getValue());
532 
533  if (attName=="unit") { unit = G4UnitDefinition::GetValueOf(attValue); } else
534  if (attName=="x") { vec.setX(eval.Evaluate(attValue)); } else
535  if (attName=="y") { vec.setY(eval.Evaluate(attValue)); } else
536  if (attName=="z") { vec.setZ(eval.Evaluate(attValue)); }
537  }
538 
539  vec *= unit;
540 }
541 
542 G4String G4GDMLReadDefine::RefRead(const xercesc::DOMElement* const element)
543 {
544  G4String ref;
545 
546  const xercesc::DOMNamedNodeMap* const attributes = element->getAttributes();
547  XMLSize_t attributeCount = attributes->getLength();
548 
549  for (XMLSize_t attribute_index=0;
550  attribute_index<attributeCount; attribute_index++)
551  {
552  xercesc::DOMNode* attribute_node = attributes->item(attribute_index);
553 
554  if (attribute_node->getNodeType() != xercesc::DOMNode::ATTRIBUTE_NODE)
555  { continue; }
556 
557  const xercesc::DOMAttr* const attribute
558  = dynamic_cast<xercesc::DOMAttr*>(attribute_node);
559  if (!attribute)
560  {
561  G4Exception("G4GDMLRead::Read()", "InvalidRead",
562  FatalException, "No attribute found!");
563  return ref;
564  }
565  const G4String attName = Transcode(attribute->getName());
566  const G4String attValue = Transcode(attribute->getValue());
567 
568  if (attName=="ref") { ref = attValue; }
569  }
570 
571  return ref;
572 }
573 
575 {
576  return eval.IsVariable(ref);
577 }
578 
580 {
581  return eval.GetConstant(ref);
582 }
583 
585 {
586  return eval.GetVariable(ref);
587 }
588 
590 {
591  if (quantityMap.find(ref) == quantityMap.end())
592  {
593  G4String error_msg = "Quantity '"+ref+"' was not found!";
594  G4Exception("G4GDMLReadDefine::getQuantity()", "ReadError",
595  FatalException, error_msg);
596  }
597  return quantityMap[ref];
598 }
599 
601 {
602  if (positionMap.find(ref) == positionMap.end())
603  {
604  G4String error_msg = "Position '"+ref+"' was not found!";
605  G4Exception("G4GDMLReadDefine::getPosition()", "ReadError",
606  FatalException, error_msg);
607  }
608  return positionMap[ref];
609 }
610 
612 {
613  if (rotationMap.find(ref) == rotationMap.end())
614  {
615  G4String error_msg = "Rotation '"+ref+"' was not found!";
616  G4Exception("G4GDMLReadDefine::getRotation()", "ReadError",
617  FatalException, error_msg);
618  }
619  return rotationMap[ref];
620 }
621 
623 {
624  if (scaleMap.find(ref) == scaleMap.end())
625  {
626  G4String error_msg = "Scale '"+ref+"' was not found!";
627  G4Exception("G4GDMLReadDefine::getScale()", "ReadError",
628  FatalException, error_msg);
629  }
630  return scaleMap[ref];
631 }
632 
634 {
635  if (matrixMap.find(ref) == matrixMap.end())
636  {
637  G4String error_msg = "Matrix '"+ref+"' was not found!";
638  G4Exception("G4GDMLReadDefine::getMatrix()", "ReadError",
639  FatalException, error_msg);
640  }
641  return matrixMap[ref];
642 }
G4GDMLEvaluator eval
Definition: G4GDMLRead.hh:155
const XML_Char * name
Definition: expat.h:151
void DefineVariable(const G4String &, G4double)
std::vector< ExP01TrackerHit * > a
Definition: ExP01Classes.hh:33
G4double GetQuantity(const G4String &)
#define G4endl
Definition: G4ios.hh:61
Definition: xmlparse.cc:187
G4String GenerateName(const G4String &name, G4bool strip=false)
Definition: G4GDMLRead.cc:68
double z() const
G4double Evaluate(const G4String &)
void QuantityRead(const xercesc::DOMElement *const)
void VectorRead(const xercesc::DOMElement *const, G4ThreeVector &)
void ConstantRead(const xercesc::DOMElement *const)
G4double GetConstant(const G4String &)
void setX(double)
std::map< G4String, G4double > quantityMap
void VariableRead(const xercesc::DOMElement *const)
std::map< G4String, G4ThreeVector > scaleMap
G4GDMLMatrix & operator=(const G4GDMLMatrix &rhs)
static constexpr double m
Definition: G4SIunits.hh:129
G4String RefRead(const xercesc::DOMElement *const)
double G4double
Definition: G4Types.hh:76
bool G4bool
Definition: G4Types.hh:79
Double_t scale
#define position
Definition: xmlparse.cc:622
virtual void DefineRead(const xercesc::DOMElement *const)
G4double GetVariable(const G4String &)
const XML_Char int const XML_Char * value
Definition: expat.h:331
G4String Transcode(const XMLCh *const)
Definition: G4GDMLRead.cc:55
void setZ(double)
G4bool IsValidID(const G4String &) const
G4ThreeVector GetScale(const G4String &)
G4RotationMatrix GetRotationMatrix(const G4ThreeVector &)
static G4double GetValueOf(const G4String &)
void ScaleRead(const xercesc::DOMElement *const)
std::map< G4String, G4GDMLMatrix > matrixMap
void PositionRead(const xercesc::DOMElement *const)
void ExpressionRead(const xercesc::DOMElement *const)
G4double GetConstant(const G4String &)
size_t GetCols() const
void DefineConstant(const G4String &, G4double)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.hh:65
HepRotation & rotateY(double delta)
Definition: Rotation.cc:79
size_t GetRows() const
int G4int
Definition: G4Types.hh:78
void DefineMatrix(const G4String &, G4int, std::vector< G4double >)
void Set(size_t r, size_t c, G4double a)
G4double GetVariable(const G4String &)
HepRotation & rotateZ(double delta)
Definition: Rotation.cc:92
void RotationRead(const xercesc::DOMElement *const)
std::map< G4String, G4ThreeVector > positionMap
G4GLOB_DLL std::ostream G4cout
double x() const
G4double Get(size_t r, size_t c) const
G4bool IsVariable(const G4String &) const
static G4String GetCategory(const G4String &)
G4GDMLMatrix GetMatrix(const G4String &)
G4int EvaluateInteger(const G4String &)
double y() const
G4ThreeVector GetPosition(const G4String &)
std::map< G4String, G4ThreeVector > rotationMap
HepRotation & rotateX(double delta)
Definition: Rotation.cc:66
void MatrixRead(const xercesc::DOMElement *const)
void setY(double)
virtual ~G4GDMLReadDefine()
G4ThreeVector GetRotation(const G4String &)