CMS 3D CMS Logo

DDG4SolidConverter.h
Go to the documentation of this file.
1 #ifndef SimG4Core_DDG4SolidConverter_h
2 #define SimG4Core_DDG4SolidConverter_h
3 
5 
6 #include "G4RotationMatrix.hh"
7 
8 #include <map>
9 #include <vector>
10 
11 class G4VSolid;
12 class DDSolid;
13 
15 public:
18  typedef G4VSolid *(*FNPTR)(const DDSolid &); // pointer to function
19  G4VSolid *convert(const DDSolid &);
20 
21 private:
22  /* foreach supported solid add a static conversion routine ,
23  register this method in the convDispatch_-map */
24  static G4VSolid *box(const DDSolid &);
25  static G4VSolid *tubs(const DDSolid &);
26  static G4VSolid *cuttubs(const DDSolid &);
27  static G4VSolid *trap(const DDSolid &);
28  static G4VSolid *cons(const DDSolid &);
29  static G4VSolid *unionsolid(const DDSolid &);
30  static G4VSolid *subtraction(const DDSolid &);
31  static G4VSolid *intersection(const DDSolid &);
32  static G4VSolid *shapeless(const DDSolid &);
33  static G4VSolid *polycone_rz(const DDSolid &);
34  static G4VSolid *polycone_rrz(const DDSolid &);
35  static G4VSolid *polyhedra_rz(const DDSolid &);
36  static G4VSolid *polyhedra_rrz(const DDSolid &);
37  static G4VSolid *extrudedpolygon(const DDSolid &);
38  static G4VSolid *pseudotrap(const DDSolid &s);
39  static G4VSolid *torus(const DDSolid &);
40  static G4VSolid *trunctubs(const DDSolid &);
41  static G4VSolid *sphere(const DDSolid &);
42  static G4VSolid *ellipticaltube(const DDSolid &);
43  static const std::vector<double> *par_;
44  std::map<DDSolidShape, FNPTR> convDispatch_;
45 
46  static G4RotationMatrix *rot;
47 
48  friend class testTruncTubs;
49  friend class testPseudoTrap;
50 };
51 
52 #endif
static G4VSolid * polyhedra_rrz(const DDSolid &)
static G4RotationMatrix * rot
friend class testTruncTubs
friend class testPseudoTrap
static G4VSolid * trap(const DDSolid &)
static G4VSolid * cons(const DDSolid &)
static G4VSolid * tubs(const DDSolid &)
static G4VSolid * sphere(const DDSolid &)
A DDSolid represents the shape of a part.
Definition: DDSolid.h:39
static G4VSolid * cuttubs(const DDSolid &)
static G4VSolid * pseudotrap(const DDSolid &s)
static const std::vector< double > * par_
static G4VSolid * box(const DDSolid &)
static G4VSolid * ellipticaltube(const DDSolid &)
static G4VSolid * polycone_rz(const DDSolid &)
static G4VSolid * intersection(const DDSolid &)
G4VSolid * convert(const DDSolid &)
static G4VSolid * unionsolid(const DDSolid &)
static G4VSolid * extrudedpolygon(const DDSolid &)
std::map< DDSolidShape, FNPTR > convDispatch_
static G4VSolid * trunctubs(const DDSolid &)
static G4VSolid * torus(const DDSolid &)
static G4VSolid * polyhedra_rz(const DDSolid &)
static G4VSolid * polycone_rrz(const DDSolid &)
static G4VSolid * shapeless(const DDSolid &)
static G4VSolid * subtraction(const DDSolid &)