EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4EicDircDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4EicDircDetector.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef G4EICDIRCDETECTOR_H
4 #define G4EICDIRCDETECTOR_H
5 
6 #include <g4main/PHG4Detector.h>
7 #include <Geant4/G4LogicalVolume.hh>
8 #include <Geant4/G4Material.hh>
9 #include <Geant4/G4ThreeVector.hh>
10 #include <Geant4/G4Types.hh>
11 
12 #include <map>
13 #include <set>
14 #include <string> // for string
15 
17 class G4LogicalVolume;
18 class G4VPhysicalVolume;
19 class PHCompositeNode;
20 class PHG4Subsystem;
21 class PHParameters;
22 
24 {
25  public:
27  G4EicDircDetector(PHG4Subsystem* subsys, PHCompositeNode* Node, PHParameters* parameters, const std::string& dnam);
28 
30  virtual ~G4EicDircDetector() {}
31 
33  virtual void ConstructMe(G4LogicalVolume* world) override;
34 
35  void SetVisualization();
36  void SetQuantumEfficiency(G4int id);
37 
38  virtual void Print(const std::string& what = "ALL") const override;
39 
41 
42  int IsInDetector(G4VPhysicalVolume*) const;
44 
45  void SuperDetector(const std::string& name) { m_SuperDetector = name; }
46  const std::string SuperDetector() const { return m_SuperDetector; }
47  std::string name_base = "test";
48 
49  private:
50  //G4LogicalVolume* DetectorLog_Det;
51  //G4LogicalVolume* log_module_envelope;
52  //G4LogicalVolume* Log_End_Support;
53  //G4LogicalVolume* Log_Longitudinal_Support;
54  //G4LogicalVolume* log_module_envelope_inner;
55  //G4LogicalVolume* Log_End_Support_inner;
56  //G4LogicalVolume* Log_Longitudinal_Support_inner;
57 
58  //G4LogicalVolume* lDirc;
59  G4LogicalVolume* lFd;
60  G4LogicalVolume *lBarL, *lBarS;
61  G4LogicalVolume* lGlue;
62  G4LogicalVolume* lMirror;
63  G4LogicalVolume* lLens1;
64  G4LogicalVolume* lLens2;
65  G4LogicalVolume* lLens3;
66  G4LogicalVolume* lPrizm;
67  G4LogicalVolume* lMcp;
68  G4LogicalVolume* lPixel;
69  //G4VPhysicalVolume* pDirc[100];
70  //G4VPhysicalVolume* wGlue;
71  //G4VPhysicalVolume* wMirror;
72 
73  G4Material* defaultMaterial; // material for bars
74  G4Material* BarMaterial; // material for bars
75  G4Material* OilMaterial;
76  G4Material* MirrorMaterial; // material of mirror
77  G4Material* epotekMaterial;
78  G4Material* Nlak33aMaterial;
79  G4Material* PbF2Material;
80  G4Material* SapphireMaterial;
81  G4Material* frontMaterial;
82 
83  G4int fNRow;
84  G4int fNCol;
85  G4int fNBoxes;
86  G4double fRadius;
87  G4double fNpix1;
88  G4double fNpix2;
89  G4double fBoxWidth;
90  G4int fGeomType;
91  G4int fMcpLayout;
92  G4int fLensId;
93  G4double fNBar;
94  G4double fBar[3];
95  G4double fBarL[3], fBarS[3];
96  G4double fMirror[3];
97  G4double fFd[3];
98  G4double fPrizm[4];
99  G4double fLens[4];
100  G4double fMcpTotal[3];
101  G4double fMcpActive[3];
102  G4ThreeVector fPrismShift;
103  G4double fBarsGap;
104  G4double zshift;
105 
106  //G4double fRotAngle;
107  G4RotationMatrix* fPrtRot;
109 
110  protected:
111  void DefineMaterials();
113 
115 
116  // active volumes
117  //std::map<G4VPhysicalVolume *, int> m_PhysicalVolumes_active;
118  std::map<G4LogicalVolume*, int> m_LogicalVolumes_active;
119 
120  std::string m_SuperDetector;
121 };
122 
123 #endif // G4EICDIRCDETECTOR_H