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 {
16 public:
19  typedef G4VSolid * (*FNPTR) (const DDSolid &); // pointer to function
20  G4VSolid * convert(const DDSolid &);
21 
22 private:
23  /* foreach supported solid add a static conversion routine ,
24  register this method in the convDispatch_-map */
25  static G4VSolid * box(const DDSolid &);
26  static G4VSolid * tubs(const DDSolid &);
27  static G4VSolid * cuttubs(const DDSolid &);
28  static G4VSolid * trap(const DDSolid &);
29  static G4VSolid * cons(const DDSolid &);
30  static G4VSolid * unionsolid(const DDSolid &);
31  static G4VSolid * subtraction(const DDSolid &);
32  static G4VSolid * intersection(const DDSolid &);
33  static G4VSolid * shapeless(const DDSolid &);
34  static G4VSolid * polycone_rz(const DDSolid &);
35  static G4VSolid * polycone_rrz(const DDSolid &);
36  static G4VSolid * polyhedra_rz(const DDSolid &);
37  static G4VSolid * polyhedra_rrz(const DDSolid &);
38  static G4VSolid * extrudedpolygon(const DDSolid &);
39  static G4VSolid * pseudotrap(const DDSolid & s);
40  static G4VSolid * torus(const DDSolid &);
41  static G4VSolid * trunctubs(const DDSolid &);
42  static G4VSolid * sphere(const DDSolid &);
43  static G4VSolid * ellipticaltube(const DDSolid &);
44  static const std::vector<double>* par_;
45  std::map<DDSolidShape,FNPTR> convDispatch_;
46 
47  static G4RotationMatrix* rot;
48 
49  friend class testTruncTubs;
50  friend class testPseudoTrap;
51 };
52 
53 #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 &)
static G4VSolid * trunctubs(const DDSolid &)
static G4VSolid * torus(const DDSolid &)
static G4VSolid * polyhedra_rz(const DDSolid &)
static G4VSolid * polycone_rrz(const DDSolid &)
std::map< DDSolidShape, FNPTR > convDispatch_
static G4VSolid * shapeless(const DDSolid &)
static G4VSolid * subtraction(const DDSolid &)