EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4MicromegasDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4MicromegasDetector.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef PHG4MICROMEGASDETECTOR_H
4 #define PHG4MICROMEGASDETECTOR_H
5 
11 #include <g4main/PHG4Detector.h>
12 
13 #include <map>
14 #include <set>
15 #include <string>
16 
17 class G4LogicalVolume;
18 class G4VPhysicalVolume;
19 class PHCompositeNode;
20 class PHG4Subsystem;
21 class PHParameters;
22 
24 {
25  public:
26 
29 
31  void ConstructMe(G4LogicalVolume*) override;
32 
33  void Print(const std::string &what = "ALL") const override;
34 
37 
39  int get_first_layer() const { return m_FirstLayer; }
40 
42  bool IsInDetector(G4VPhysicalVolume*) const;
43 
45  int get_layer(G4VPhysicalVolume*) const;
46 
48  void SuperDetector(const std::string &name) { m_SuperDetector = name; }
49 
51  const std::string SuperDetector() const { return m_SuperDetector; }
52 
53  private:
54 
56  void create_materials() const;
57 
59  void construct_micromegas(G4LogicalVolume*);
60 
62 
63  void add_geometry_node();
64 
66  PHParameters* m_Params = nullptr;
67 
69 
70  std::map<G4VPhysicalVolume*, int> m_activeVolumes;
71 
73  std::set<G4VPhysicalVolume*> m_passiveVolumes;
74 
76  std::string m_SuperDetector;
77 
79  /* there are two layers in the detector */
80  int m_FirstLayer = 0;
81 
82 };
83 
84 #endif // MICROMEGASDETECTOR_H