10
10
#ifndef CkovMirror_h
11
11
#define CkovMirror_h 1
13
#include "Geant4/G4UnionSolid.hh"
14
#include "Geant4/G4SubtractionSolid.hh"
15
#include "Geant4/G4IntersectionSolid.hh"
16
#include "Geant4/G4Box.hh"
17
#include "Geant4/G4Cons.hh"
18
#include "Geant4/G4EllipticalCone.hh"
19
13
#include "Geant4/G4LogicalVolume.hh"
20
#include "Geant4/G4PVPlacement.hh"
22
#include "Geant4/G4RotationMatrix.hh"
14
#include "Geant4/G4Trd.hh"
23
15
#include "Geant4/G4LogicalSkinSurface.hh"
24
16
#include "Geant4/G4OpBoundaryProcess.hh"
17
#include "Geant4/G4PVPlacement.hh"
26
#include "Geant4/G4ThreeVector.hh"
27
19
#include "Geant4/globals.hh"
28
20
#include "Config/MiceModule.hh"
22
class G4LogicalVolume;
23
class G4PhysicalVolume;
34
CkovMirror( MiceModule*, G4Material*, G4VPhysicalVolume* );
36
G4LogicalVolume* logicalMirror() const { return fLogic; }
37
G4PVPlacement* placementMirror() const { return fPlace; }
41
G4LogicalVolume* fLogic;
42
G4PVPlacement* fPlace;
43
G4LogicalSkinSurface* MirrorSurface;
44
G4OpticalSurface* fOpticalSurface;
60
// Solids used for boolean operation
67
G4RotationMatrix* fRot045;
68
G4RotationMatrix* fRot090;
69
G4RotationMatrix* fRot180;
70
G4RotationMatrix* fRotcon;
76
G4ThreeVector fPosOfGate;
78
// Cutter for neighboring
82
G4ThreeVector fPosOfSide;
88
G4ThreeVector fPosOfPmts;
95
G4ThreeVector fPosOfEcon;
105
G4ThreeVector fPosOfCone;
110
G4ThreeVector fPosOfZero;
112
// Calculate vertecies of Cone
113
void calVertex( MiceModule* mod);
115
// Methods used in calculating vertecies
116
G4double getAngle(const G4ThreeVector& a, G4ThreeVector& b) const;
117
G4double getLength(const G4ThreeVector& a, const G4ThreeVector& b) const;
118
G4ThreeVector getCenter(const G4ThreeVector& a, const G4ThreeVector& b) const;
119
G4ThreeVector getCross(const G4ThreeVector& a,const G4ThreeVector&b,
120
const G4ThreeVector& u,const G4ThreeVector& v) const;
29
CkovMirror( MiceModule*, G4Material*, G4VPhysicalVolume* );
31
G4LogicalVolume* logicalMirror() const { return fLogicTrapezoid; }
32
G4PVPlacement* placementMirror() const { return fPlace; }
35
G4Trd* fSolidTrapezoid;
36
G4LogicalVolume* fLogicTrapezoid;
37
G4PVPlacement* fPlace;
38
G4LogicalSkinSurface* MirrorSurface;
39
G4OpticalSurface* fOpticalSurface;