EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
EICG4RPDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file EICG4RPDetector.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef EICG4RPDETECTOR_H
4 #define EICG4RPDETECTOR_H
5 
6 #include <g4main/PHG4Detector.h>
7 
8 #include <set>
9 #include <string>
10 
11 class G4LogicalVolume;
12 class G4VPhysicalVolume;
13 class PHCompositeNode;
14 class PHG4Subsystem;
15 class PHParameters;
16 
18 {
19  public:
21  EICG4RPDetector(PHG4Subsystem *subsys, PHCompositeNode *Node, PHParameters *parameters, const std::string &dnam, const int layer = 0);
22 
24  virtual ~EICG4RPDetector() override {}
25 
27  void ConstructMe(G4LogicalVolume *world) override;
28 
29  void Print(const std::string &what = "ALL") const override;
30 
32 
33  int IsInDetector(G4VPhysicalVolume *) const;
34  int IsInVirtualDetector(G4VPhysicalVolume *) const;
36 
37  int GetDetId(G4VPhysicalVolume *) const;
38 
39  void SuperDetector(const std::string &name) { m_SuperDetector = name; }
40  const std::string SuperDetector() const { return m_SuperDetector; }
41  int get_Layer() const { return m_Layer; }
42 
44 
45  private:
47 
48  // active volumes (i.e. G4_Si)
49  std::map<G4VPhysicalVolume *, int> m_ActivePhysicalVolumesMap;
50  // virtual volumes (i.e. G4_Galactic)
51  std::map<G4VPhysicalVolume *, int> m_VirtualPhysicalVolumesMap;
52  // passive volumes (i.e. G4_Cu)
53  std::set<G4VPhysicalVolume *> m_PassivePhysicalVolumesSet;
54 
55  int m_Layer;
56  std::string m_SuperDetector;
57 };
58 
59 #endif // EICG4RPDETECTOR_H