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

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/geo/include/RAT/PMTConstruction.hh Source File
Ratpac-two
PMTConstruction.hh
1 #ifndef __RAT_PMTConstruction__
2 #define __RAT_PMTConstruction__
3 
4 #include <G4LogicalVolume.hh>
5 #include <G4PVPlacement.hh>
6 #include <G4RotationMatrix.hh>
7 #include <G4VSolid.hh>
8 #include <RAT/DB.hh>
9 #include <string>
10 
11 namespace RAT {
12 
13 // Superclass for building all possible PMT types
15  public:
16  // Returns a new PMTConstruction based on the given table
17  static PMTConstruction *NewConstruction(DBLinkPtr params, G4LogicalVolume *mother);
18 
19  PMTConstruction(std::string _name) : name(_name) {}
20 
21  virtual ~PMTConstruction() {}
22 
23  // Subclass should build a solid representing just the PMT body
24  virtual G4VSolid *BuildSolid(const std::string &prefix) = 0;
25 
26  // Subclass should build the total single volume to be placed and return
27  virtual G4LogicalVolume *BuildVolume(const std::string &prefix) = 0;
28 
29  // Subclass should do any extra PMT placement finalization here e.g. optical
30  // surfaces
31  virtual G4PVPlacement *PlacePMT(G4RotationMatrix *pmtrot, G4ThreeVector pmtpos, const std::string &name,
32  G4LogicalVolume *logi_pmt, G4VPhysicalVolume *mother_phys, bool booleanSolid,
33  int copyNo) = 0;
34 
35  protected:
36  std::string name;
37 };
38 
39 } // namespace RAT
40 
41 #endif
Definition: PMTConstruction.hh:14
Definition: CCCrossSecMessenger.hh:29