OMSim
Geant4 for IceCube optical module studies
Loading...
Searching...
No Matches
OMSimLOM18.hh
Go to the documentation of this file.
1
5#pragma once
6
8#include "OMSimOpticalModule.hh"
9
10#include <G4LogicalVolume.hh>
11#include <G4Polycone.hh>
12
14{
15public:
16 LOM18(G4bool pPlaceHarness = false);
17 ~LOM18();
18 void construction();
19 double getPressureVesselWeight() {return 17.0*kg;};
20 int getNumberOfPMTs() { return m_totalNumberPMTs;};
21 G4String getName()
22 {
23 std::stringstream ss;
24 ss << "LOM18/" << m_index;
25 return ss.str();
26 }
27private:
28
29 G4Polycone* createLOM18OuterSolid();
30 G4Polycone* createLOM18InnerSolid();
31
32 void appendEquatorBand();
33 void placeCADSupportStructure(G4LogicalVolume* lInnerVolumeLogical);
34 void placeCADPenetrator(G4LogicalVolume* lInnerVolumeLogical);
35
36
37 void setPMTPositions();
38 void createGelpadLogicalVolumes(G4Polycone* lGelSolid);
39
40 void placePMTs(G4LogicalVolume* lInnerVolumeLogical);
41 void placeGelpads(G4LogicalVolume* lInnerVolumeLogical);
42
43 //selection variables
44 G4bool m_placeHarness = true;
45 G4bool m_harnessUnion = true; //it should be true for the first module that you build, and then false
46
47 //vectors for positions and rotations
48 std::vector<G4ThreeVector> m_positionsPMT;
49 std::vector<G4ThreeVector> m_positionsGelpad;
50 std::vector<G4double> m_thetaPMT;
51 std::vector<G4double> m_phiPMT;
52
53
54
55
56 //from PMTConstruction class (not readable directly...needs to be changed)
57 G4double m_totalLenght;
58 G4double m_outRad;
59 G4double m_spherePosY;
60 G4double m_ellipsePosY;
61 G4double m_ellipseZaxis;
62
63 //helper variables
64 std::stringstream m_conv;
65 std::stringstream m_converter2;
66
67 //logical of gelpads
68 std::vector<G4LogicalVolume*> m_gelPadLogical;
69
70 G4double m_GlassEquatorWidth = 159*mm;
71 G4double m_GlassPoleLength = 270*mm;
72 G4double m_GlassThickPole = 12.5*mm;
73 G4double m_GlassThickEquator = 16.5*mm;
74
75 G4double m_thetaCenter = 48.0*deg;
76 G4double m_thetaEquatorial = 60.0*deg;
77 G4int m_numberPolarPMTs = 1;
78 G4int m_NrCenterPMTs = 4;
79 G4int m_NrEquatorialPMTs = 4;
80 G4double m_EqPMTPhiPhase = 45.0*deg;
81
82 //gelpad specific
83 G4double m_polarPadOpeningAngle = 30.0*deg;
84 G4double m_centerPadOpeningAngle = 10.0*deg;
85 G4double m_equatorialPadOpeningAngle = 5.0*deg;
86 G4double m_GelThicknessFrontPolarPMT = 3.5*mm;
87 G4double m_gelThicknessFrontCenterPMT = 12.93*mm;
88 G4double m_gelThicknessFrontEquatorialPMT = 14.52*mm;
89
90 G4int m_numberPMTsPerHalf = m_numberPolarPMTs + m_NrCenterPMTs + m_NrEquatorialPMTs;
91 G4int m_totalNumberPMTs = (m_numberPolarPMTs + m_NrCenterPMTs + m_NrEquatorialPMTs) * 2;
92 //from PMT manager
93 G4double m_PMToffset;
94 G4double m_maxPMTRadius;
95
96 public:
97 G4double m_cylinderAngle = 1.5*deg;
98 G4double m_glassOutRad;
99};
100
Construction of the PMTs.
Definition OMSimLOM18.hh:14
void construction()
Definition OMSimLOM18.cc:46
void setPMTPositions()
Definition OMSimLOM18.cc:340
G4Polycone * createLOM18OuterSolid()
Definition OMSimLOM18.cc:96
void placeGelpads(G4LogicalVolume *lInnerVolumeLogical)
Definition OMSimLOM18.cc:556
void placePMTs(G4LogicalVolume *lInnerVolumeLogical)
Definition OMSimLOM18.cc:536
G4Polycone * createLOM18InnerSolid()
Definition OMSimLOM18.cc:169
double getPressureVesselWeight()
Virtual method to get the weight of the pressure vessel.
Definition OMSimLOM18.hh:19
void placeCADPenetrator(G4LogicalVolume *lInnerVolumeLogical)
Definition OMSimLOM18.cc:304
void placeCADSupportStructure(G4LogicalVolume *lInnerVolumeLogical)
Definition OMSimLOM18.cc:270
void createGelpadLogicalVolumes(G4Polycone *lGelSolid)
Definition OMSimLOM18.cc:444
int getNumberOfPMTs()
Virtual method to get the number of PMTs in the optical module.
Definition OMSimLOM18.hh:20
Base class for OMs works as interface.
Definition OMSimOpticalModule.hh:23