/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/geo/include/RAT/ToroidalPMTConstruction.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/geo/include/RAT/ToroidalPMTConstruction.hh Source File
Ratpac-two
ToroidalPMTConstruction.hh
1 #ifndef __RAT_ToroidalPMTConstruction__
2 #define __RAT_ToroidalPMTConstruction__
3 
4 #include <G4LogicalVolume.hh>
5 #include <G4Material.hh>
6 #include <G4OpticalSurface.hh>
7 #include <G4PVPlacement.hh>
8 #include <G4VSensitiveDetector.hh>
9 #include <G4VSolid.hh>
10 #include <RAT/DB.hh>
11 #include <RAT/Factory.hh>
12 #include <RAT/GLG4TorusStack.hh>
13 #include <RAT/PMTConstruction.hh>
14 #include <RAT/WaveguideFactory.hh>
15 #include <string>
16 #include <vector>
17 
18 namespace RAT {
19 
22  efficiencyCorrection = 1.0;
23  simpleVis = false;
24  photocathode_MINrho = 0.0;
25  photocathode_MAXrho = 0.0;
26  };
27 
28  bool simpleVis;
29 
30  // Envelope control
31  bool useEnvelope;
32  double faceGap;
33  double minEnvelopeRadius;
34 
35  // Body
36  std::vector<double> zEdge; // n+1
37  std::vector<double> rhoEdge; // n+1
38  std::vector<double> zOrigin; // n
39  double wallThickness; // mm
40 
41  double dynodeRadius; // mm
42  double dynodeTop; // mm
43  double photocathode_MINrho; // mm
44  double photocathode_MAXrho; // mm
45 
46  G4Material *exterior;
47  G4Material *glass;
48  G4Material *vacuum;
49  G4Material *dynode;
50 
51  G4OpticalSurface *photocathode;
52  G4OpticalSurface *mirror;
53  G4OpticalSurface *dynode_surface;
54 
55  double efficiencyCorrection; // default to 1.0 for no correction
56 };
57 
58 // Construction for PMTs based on GLG4TorusStack
60  public:
61  ToroidalPMTConstruction(DBLinkPtr params, G4LogicalVolume *mother);
62  virtual ~ToroidalPMTConstruction() {}
63 
64  virtual G4LogicalVolume *BuildVolume(const std::string &prefix);
65  virtual G4VSolid *BuildSolid(const std::string &prefix);
66  virtual G4PVPlacement *PlacePMT(G4RotationMatrix *pmtrot, G4ThreeVector pmtpos, const std::string &name,
67  G4LogicalVolume *logi_pmt, G4VPhysicalVolume *mother_phys, bool booleanSolid,
68  int copyNo);
69 
70  protected:
71  G4VSolid *NewEnvelopeSolid(const std::string &name);
72 
73  void CalcInnerParams(GLG4TorusStack *body, std::vector<double> &innerZEdge, std::vector<double> &innerRhoEdge,
74  int &equatorIndex, double &zLowestDynode);
75 
76  // phyiscal volumes
77  G4PVPlacement *body_phys;
78  G4PVPlacement *inner1_phys;
79  G4PVPlacement *inner2_phys;
80  G4PVPlacement *central_gap_phys;
81  G4PVPlacement *dynode_phys;
82 
83  G4LogicalVolume *log_pmt;
84 
85  WaveguideFactory *fWaveguideFactory;
86 
88 };
89 
90 } // namespace RAT
91 
92 #endif
Definition: GLG4TorusStack.hh:62
Definition: PMTConstruction.hh:14
Definition: ToroidalPMTConstruction.hh:59
Definition: WaveguideFactory.hh:9
Definition: CCCrossSecMessenger.hh:29
Definition: ToroidalPMTConstruction.hh:20