OMSim
Geant4 for IceCube optical module studies
OMSimPMTConstruction.hh
Go to the documentation of this file.
1 
7 #pragma once
10 #include "OMSimPMTResponse.hh"
11 //#include "OMSimDetectorConstruction.hh"
12 
13 #include <G4UnionSolid.hh>
14 #include <G4Tubs.hh>
16 
17 
19 {
20 
21 public:
23 
24  void construction();
25  void configureSensitiveVolume(OMSimDetectorConstruction* pDetConst, G4String pName);
26 
27  G4double getDistancePMTCenterToTip();
28  G4double getMaxPMTRadius();
29  G4VSolid *getPMTSolid();
30  G4LogicalVolume *getLogicalVolume();
31  G4LogicalVolume* getPhotocathodeLV(){return m_photocathodeLV;};
32  double getPMTGlassWeight();
33 
34  void placeIt(G4ThreeVector pPosition, G4RotationMatrix pRotation, G4LogicalVolume *&pMother, G4String pNameExtension = "");
35  void placeIt(G4Transform3D pTrans, G4LogicalVolume *&pMother, G4String pNameExtension = "");
36  void selectPMT(G4String pPMTtoSelect);
37  void includeHAcoating();
38 
39 private:
40  G4LogicalVolume* m_photocathodeLV;
41  G4String m_selectedPMT;
42  G4bool m_dynodeSystem = false;
43  G4bool m_internalReflections = false;
44  G4bool m_HACoatingBool = false;
45  G4bool m_constructionFinished = false;
46  G4double m_centreToTipDistance;
47  std::tuple<G4VSolid *, G4VSolid *> getBulbSolid(G4String pSide);
48  std::tuple<G4VSolid *, G4VSolid *> simpleBulbConstruction(G4String pSide);
49  std::tuple<G4VSolid *, G4VSolid *> fullBulbConstruction(G4String pSide);
50  G4VSolid *frontalBulbConstruction(G4String pSide);
51 
52  void readGlobalParameters(G4String pSide);
53 
54  G4VSolid *sphereEllipsePhotocathode(G4String p_side);
55  G4VSolid *doubleEllipsePhotocathode(G4String pSide);
56  G4VSolid *ellipsePhotocathode(G4String p_side);
57 
58 
59  void constructHAcoating();
60  void constructCathodeBackshield(G4LogicalVolume *pPMTIinner);
61  void constructCADdynodeSystem(G4LogicalVolume *p_mother);
62 
64 
65  G4bool m_simpleBulb = false;
66  G4double m_missingTubeLength;
67  G4PVPlacement *m_vacuumBackPhysical;
68  G4PVPlacement* m_photocathodeRegionVacuumPhysical;
69  G4OpticalSurface* m_photocathodeOpticalSurface;
70 
71  bool m_checkOverlaps;
72 
73  // Variables from json files are saved in the following members
74  G4double m_totalLenght;
75  G4double m_tubeWidth;
76  G4double m_outRad;
77  G4double m_ellipseXYaxis;
78  G4double m_ellipseZaxis;
79  G4double m_sphereEllipseTransition_r;
80  G4double m_spherePosY;
81  G4double m_ellipsePosY;
82 };
83 
Provides helper base class OMSimDetectorComponent for constructing and managing detector components i...
Construction of the PMTs.
Simulation of PMT response.
Abstract base class used for constructing detector components.
Definition: OMSimDetectorComponent.hh:26
Class for detector construction in the effective area simulation.
Definition: OMSimDetectorConstruction.hh:19
Definition: OMSimPMTConstruction.hh:19
void constructCathodeBackshield(G4LogicalVolume *pPMTIinner)
Definition: OMSimPMTConstruction.cc:239
void selectPMT(G4String pPMTtoSelect)
Definition: OMSimPMTConstruction.cc:459
void placeIt(G4ThreeVector pPosition, G4RotationMatrix pRotation, G4LogicalVolume *&pMother, G4String pNameExtension="")
Definition: OMSimPMTConstruction.cc:108
G4VSolid * doubleEllipsePhotocathode(G4String pSide)
Definition: OMSimPMTConstruction.cc:382
std::tuple< G4VSolid *, G4VSolid * > simpleBulbConstruction(G4String pSide)
Definition: OMSimPMTConstruction.cc:165
OMSimPMTResponse * getPMTResponseInstance()
Creates and configures an instance of OMSimPMTResponse based on PMT model selected.
Definition: OMSimPMTConstruction.cc:509
void construction()
Constructs the PMT solid with all its components.
Definition: OMSimPMTConstruction.cc:26
G4VSolid * sphereEllipsePhotocathode(G4String p_side)
Definition: OMSimPMTConstruction.cc:344
std::tuple< G4VSolid *, G4VSolid * > fullBulbConstruction(G4String pSide)
Definition: OMSimPMTConstruction.cc:183
std::tuple< G4VSolid *, G4VSolid * > getBulbSolid(G4String pSide)
Definition: OMSimPMTConstruction.cc:143
G4VSolid * getPMTSolid()
Definition: OMSimPMTConstruction.cc:442
G4double getDistancePMTCenterToTip()
Definition: OMSimPMTConstruction.cc:424
void constructCADdynodeSystem(G4LogicalVolume *p_mother)
Definition: OMSimPMTConstruction.cc:257
void readGlobalParameters(G4String pSide)
Reads the parameter table and assigns the value and dimension of member variables.
Definition: OMSimPMTConstruction.cc:307
G4double getMaxPMTRadius()
Definition: OMSimPMTConstruction.cc:433
G4VSolid * ellipsePhotocathode(G4String p_side)
Definition: OMSimPMTConstruction.cc:364
G4LogicalVolume * getLogicalVolume()
Definition: OMSimPMTConstruction.cc:450
Class to simulate PMT response.
Definition: OMSimPMTResponse.hh:20