EIC 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 #include <Geant4/G4Types.hh>
8 
9 #include <set>
10 #include <string> // for string
11 #include <vector>
12 
13 class G4LogicalVolume;
14 class G4VPhysicalVolume;
15 class PHCompositeNode;
16 class PHG4Subsystem;
17 class PHParameters;
18 class G4AssemblyVolume;
20 
22 {
23  public:
25  PHG4TpcEndCapDetector(PHG4Subsystem *subsys, PHCompositeNode *Node, PHParameters *parameters, const std::string &dnam);
26 
28  ~PHG4TpcEndCapDetector() override;
29 
31  void ConstructMe(G4LogicalVolume *world) override;
32 
33  void Print(const std::string &what = "ALL") const override;
34 
36 
37  int IsInDetector(G4VPhysicalVolume *) const;
39 
40  void SuperDetector(const std::string &name) { m_SuperDetector = name; }
41  const std::string SuperDetector() const { return m_SuperDetector; }
42 
43  private:
44  PHParameters *m_Params = nullptr;
46 
47  // active volumes
48  std::set<G4LogicalVolume *> m_LogicalVolumesSet;
49 
50  std::string m_SuperDetector;
51 
52  G4AssemblyVolume *m_EndCapAssembly = nullptr;
53 
54  G4AssemblyVolume *ConstructEndCapAssembly();
55 
56  void ConstructWagonWheel(G4AssemblyVolume *assmeblyvol,
57  G4double &z_start);
58 
59  void ConstructElectronics(G4AssemblyVolume *assmeblyvol,
60  G4double &z_start);
61 
62  void
63  AddLayer( //
64  G4AssemblyVolume *assmeblyvol,
65  G4double &z_start,
66  std::string _name,
67  std::string _material,
68  G4double _depth,
69  double _percentage_filled = 100
70  );
71 
73  std::string compositeName,
74  std::vector<std::string> materialName,
75  std::vector<double> thickness
76  );
77 };
78 
79 #endif // PHG4TPCENDCAPDETECTOR_H