Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4TpcEndCapDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4TpcEndCapDetector.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef PHG4TPCENDCAPDETECTOR_H
4 #define PHG4TPCENDCAPDETECTOR_H
5 
6 #include <g4main/PHG4Detector.h>
7 
8 #include <Geant4/G4Types.hh>
9 
10 #include <set>
11 #include <string> // for string
12 #include <vector>
13 
14 class G4LogicalVolume;
15 class G4VPhysicalVolume;
16 class PHCompositeNode;
17 class PHG4Subsystem;
18 class PHParameters;
19 class G4AssemblyVolume;
21 
23 {
24  public:
27 
29  ~PHG4TpcEndCapDetector() override;
30 
32  void ConstructMe(G4LogicalVolume *world) override;
33 
34  void Print(const std::string &what = "ALL") const override;
35 
37 
38  int IsInDetector(G4VPhysicalVolume *) const;
40 
42  const std::string SuperDetector() const { return m_SuperDetector; }
43 
44  private:
45  PHParameters *m_Params = nullptr;
47 
48  // active volumes
49  std::set<G4LogicalVolume *> m_LogicalVolumesSet;
50 
52 
53  G4AssemblyVolume *m_EndCapAssembly = nullptr;
54 
55  G4AssemblyVolume *ConstructEndCapAssembly();
56 
57  void ConstructWagonWheel(G4AssemblyVolume *assmeblyvol,
58  G4double &z_start); // careful z_start is modified and being used later
59 
60  void ConstructElectronics(G4AssemblyVolume *assmeblyvol,
61  G4double z_start);
62 
63  void
64  AddLayer( //
65  G4AssemblyVolume *assmeblyvol,
66  G4double &z_start,
67  const std::string &_name,
68  std::string _material,
69  G4double _depth,
70  double _percentage_filled = 100
71  );
72 
74  std::string compositeName,
75  std::vector<std::string> materialName,
76  std::vector<double> thickness
77  );
78 };
79 
80 #endif // PHG4TPCENDCAPDETECTOR_H