11 #ifndef BelleCrystal_HH
12 #define BelleCrystal_HH
16 #include "G4CSGSolid.hh"
17 #include "G4Polyhedron.hh"
42 BelleCrystal(
const G4String& pName,
int,
const G4ThreeVector*);
47 Plane_t GetSidePlane(G4int n)
const {
return fPlanes[n];}
57 const G4VPhysicalVolume* pRep);
61 const G4VoxelLimits& pVoxelLimit,
62 const G4AffineTransform& pTransform,
63 G4double& pMin, G4double& pMax)
const;
65 EInside Inside(
const G4ThreeVector& p)
const;
67 G4ThreeVector SurfaceNormal(
const G4ThreeVector& p)
const;
69 G4double DistanceToIn(
const G4ThreeVector& p,
const G4ThreeVector& v)
const;
71 G4double DistanceToIn(
const G4ThreeVector& p)
const;
73 G4double DistanceToOut(
const G4ThreeVector& p,
const G4ThreeVector& v,
74 const G4bool calcNorm =
false,
75 G4bool* validNorm = 0, G4ThreeVector* n = 0)
const;
77 G4double DistanceToOut(
const G4ThreeVector& p)
const;
79 G4GeometryType GetEntityType()
const;
81 G4ThreeVector GetPointOnSurface()
const;
83 G4VSolid* Clone()
const;
85 std::ostream& StreamInfo(std::ostream& os)
const;
89 void DescribeYourselfTo(G4VGraphicsScene& scene)
const;
90 G4Polyhedron* CreatePolyhedron()
const;
93 void BoundingLimits(G4ThreeVector& pMin, G4ThreeVector& pMax)
const;
109 G4ThreeVector vertex(
unsigned int i)
const;
113 G4bool MakePlane(
const G4ThreeVector& p1,
114 const G4ThreeVector& p2,
115 const G4ThreeVector& p3,
116 const G4ThreeVector& p4,
121 double area(
int,
double&)
const;
122 double getvolarea()
const;
123 const unsigned int*
ivertx(
unsigned int i)
const;
127 std::vector<Plane_t> fPlanes;
128 std::vector<Point_t> fx;
130 mutable std::vector<double> fareas;