~gkafka/maus/CkovMC

« back to all changes in this revision

Viewing changes to src/legacy/DetModel/Ckov/CkovMirror.hh

  • Committer: Gene Kafka
  • Date: 2012-10-11 09:52:04 UTC
  • Revision ID: gkafka@iit.edu-20121011095204-00uzes6atcpowjel
ckov MC

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
#ifndef CkovMirror_h
11
11
#define CkovMirror_h 1
12
12
 
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"
21
 
 
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"
25
18
 
26
 
#include "Geant4/G4ThreeVector.hh"
27
19
#include "Geant4/globals.hh"
28
20
#include "Config/MiceModule.hh"
29
 
#include <cmath> 
 
21
 
 
22
class G4LogicalVolume;
 
23
class G4PhysicalVolume;
 
24
class G4Material;
30
25
 
31
26
class CkovMirror
32
27
{
33
 
        public:
34
 
      CkovMirror( MiceModule*, G4Material*, G4VPhysicalVolume* );
35
 
                ~CkovMirror();
36
 
                G4LogicalVolume*   logicalMirror()   const { return fLogic; }
37
 
                G4PVPlacement*     placementMirror() const { return fPlace; }
38
 
 
39
 
        private:
40
 
                G4VSolid*                                       fSolid;
41
 
                G4LogicalVolume*                        fLogic;
42
 
                G4PVPlacement*                          fPlace;
43
 
                G4LogicalSkinSurface*   MirrorSurface;
44
 
                G4OpticalSurface*               fOpticalSurface;
45
 
 
46
 
/*
47
 
                // Ellipcital Cone
48
 
                G4VSolid* fEcon;
49
 
                G4VSolid* fConA;
50
 
                G4VSolid* fConB;
51
 
*/
52
 
                // Simple Cone
53
 
                G4VSolid* fCone;
54
 
 
55
 
                // Cutters
56
 
                G4VSolid* fPmts;
57
 
                G4VSolid* fSide;
58
 
                G4VSolid* fGate;
59
 
 
60
 
                // Solids used for boolean operation
61
 
      G4VSolid* fCon1;
62
 
      G4VSolid* fCon2;
63
 
      G4VSolid* fCon3;
64
 
      G4VSolid* fCon4;
65
 
 
66
 
                // Rotation Matrices
67
 
                G4RotationMatrix* fRot045;
68
 
                G4RotationMatrix* fRot090;
69
 
                G4RotationMatrix* fRot180;
70
 
                G4RotationMatrix* fRotcon;
71
 
 
72
 
                // Cutter for Gate
73
 
                G4double fDxOfGate;
74
 
                G4double fDyOfGate;
75
 
                G4double fDzOfGate;
76
 
                G4ThreeVector fPosOfGate;
77
 
 
78
 
                // Cutter for neighboring
79
 
                G4double fDxOfSide;
80
 
                G4double fDyOfSide;
81
 
                G4double fDzOfSide;
82
 
                G4ThreeVector fPosOfSide;
83
 
 
84
 
                // Cutter for PMTs
85
 
                G4double fDxOfPmts;
86
 
                G4double fDyOfPmts;
87
 
                G4double fDzOfPmts;
88
 
                G4ThreeVector fPosOfPmts;
89
 
/*
90
 
                // Elliptical Cone
91
 
                G4double fXSemiAxis;
92
 
                G4double fYSemiAxis;
93
 
                G4double fZMax;
94
 
                G4double fZTopCut;
95
 
                G4ThreeVector fPosOfEcon;
96
 
*/
97
 
                // Simple Cone
98
 
                G4double fRmin1;
99
 
                G4double fRmax1;
100
 
                G4double fRmin2;
101
 
                G4double fRmax2;
102
 
                G4double fDz;
103
 
                G4double fSPhi;
104
 
                G4double fDPhi;
105
 
                G4ThreeVector fPosOfCone;
106
 
 
107
 
                // Thickness of Cone
108
 
                G4double fThickness;
109
 
 
110
 
                G4ThreeVector fPosOfZero;
111
 
                G4ThreeVector fZero;
112
 
                // Calculate vertecies of Cone
113
 
                void calVertex( MiceModule* mod);
114
 
 
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;
 
28
public:
 
29
  CkovMirror( MiceModule*, G4Material*, G4VPhysicalVolume* );
 
30
  ~CkovMirror();
 
31
  G4LogicalVolume*   logicalMirror()   const { return fLogicTrapezoid; }
 
32
  G4PVPlacement*     placementMirror() const { return fPlace; }
 
33
 
 
34
private:
 
35
  G4Trd*                fSolidTrapezoid;
 
36
  G4LogicalVolume*      fLogicTrapezoid;
 
37
  G4PVPlacement*        fPlace;
 
38
  G4LogicalSkinSurface* MirrorSurface;
 
39
  G4OpticalSurface*     fOpticalSurface;
 
40
  
121
41
};
122
42
#endif
123
43