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 * reflected(const DDSolid &);
31  static G4VSolid * unionsolid(const DDSolid &);
32  static G4VSolid * subtraction(const DDSolid &);
33  static G4VSolid * intersection(const DDSolid &);
34  static G4VSolid * multiunion(const DDSolid &);
35  static G4VSolid * shapeless(const DDSolid &);
36  static G4VSolid * polycone_rz(const DDSolid &);
37  static G4VSolid * polycone_rrz(const DDSolid &);
38  static G4VSolid * polyhedra_rz(const DDSolid &);
39  static G4VSolid * polyhedra_rrz(const DDSolid &);
40  static G4VSolid * extrudedpolygon(const DDSolid &);
41  static G4VSolid * pseudotrap(const DDSolid & s);
42  static G4VSolid * torus(const DDSolid &);
43  static G4VSolid * trunctubs(const DDSolid &);
44  static G4VSolid * sphere(const DDSolid &);
45  static G4VSolid * orb(const DDSolid &);
46  static G4VSolid * ellipsoid(const DDSolid &);
47  static G4VSolid * ellipticaltube(const DDSolid &);
48  static G4VSolid * para(const DDSolid &);
49  static const std::vector<double>* par_;
50  std::map<DDSolidShape,FNPTR> convDispatch_;
51 
52  static G4RotationMatrix* rot;
53 
54  friend class testTruncTubs;
55  friend class testPseudoTrap;
56 };
57 
58 #endif
static G4VSolid * polyhedra_rrz(const DDSolid &)
static G4RotationMatrix * rot
friend class testTruncTubs
static G4VSolid * orb(const DDSolid &)
static G4VSolid * ellipsoid(const DDSolid &)
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:38
static G4VSolid * cuttubs(const DDSolid &)
static G4VSolid * pseudotrap(const DDSolid &s)
static G4VSolid * reflected(const DDSolid &)
static G4VSolid * para(const DDSolid &)
static const std::vector< double > * par_
static G4VSolid * box(const DDSolid &)
static G4VSolid * ellipticaltube(const DDSolid &)
static G4VSolid * polycone_rz(const DDSolid &)
static G4VSolid * multiunion(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 &)