ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4InttDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4InttDetector.h
1 // Tell emacs that this is a C++ source
2 // This file is really -*- C++ -*-.
3 #ifndef G4INTT_PHG4INTTDETECTOR_H
4 #define G4INTT_PHG4INTTDETECTOR_H
5 
6 #include <g4main/PHG4Detector.h>
7 
8 #include <map>
9 #include <set>
10 #include <string> // for string
11 #include <tuple>
12 #include <utility> // for pair
13 #include <vector>
14 
15 class G4LogicalVolume;
16 class G4VPhysicalVolume;
17 class PHCompositeNode;
19 class PHG4Subsystem;
21 
23 {
24  public:
26  PHG4InttDetector(PHG4Subsystem *subsys, PHCompositeNode *Node, PHParametersContainer *parameters, const std::string &dnam, const std::pair<std::vector<std::pair<int, int>>::const_iterator, std::vector<std::pair<int, int>>::const_iterator> &layer_b_e);
27 
29  ~PHG4InttDetector() override {}
31  void ConstructMe(G4LogicalVolume *world) override;
32 
34 
35  int IsInIntt(G4VPhysicalVolume *) const;
37 
38  void SuperDetector(const std::string &name)
39  {
41  }
42  const std::string SuperDetector() const
43  {
44  return m_SuperDetector;
45  }
46  void Detector(const std::string &name)
47  {
49  }
50  const std::string Detector() const
51  {
52  return m_DetectorType;
53  }
54 
55  std::map<G4VPhysicalVolume *, std::tuple<int, int, int, int>>::const_iterator get_ActiveVolumeTuple(G4VPhysicalVolume *physvol) const;
56  std::map<G4LogicalVolume *, std::tuple<int, int>>::const_iterator get_PassiveVolumeTuple(G4LogicalVolume *logvol) const;
57 
58  private:
59  void AddGeometryNode();
60  int ConstructIntt(G4LogicalVolume *sandwich);
61 
64 
65  std::string m_DetectorType;
66  std::string m_SuperDetector;
67 
70 
71  double m_PosZ[8][2];
72  double m_SensorRadius[8];
73  double m_StripOffsetX[8];
74 
75  std::set<G4LogicalVolume *> m_ActiveLogVols;
76  std::map<int, int> m_IsActiveMap;
77  std::map<int, int> m_IsAbsorberActiveMap;
78  std::pair<std::vector<std::pair<int, int>>::const_iterator, std::vector<std::pair<int, int>>::const_iterator> m_LayerBeginEndIteratorPair;
79  std::map<G4VPhysicalVolume *, std::tuple<int, int, int, int>> m_ActiveVolumeTuple;
80  std::map<G4LogicalVolume *, std::tuple<int, int>> m_PassiveVolumeTuple;
81 };
82 
83 #endif