EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4HybridHomogeneousCalorimeterDetector.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4HybridHomogeneousCalorimeterDetector.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef G4DETECTORS_PHG4HYBRIDHOMOGENEOUSCALORIMETERDETECTOR_H
4 #define G4DETECTORS_PHG4HYBRIDHOMOGENEOUSCALORIMETERDETECTOR_H
5 
7 
8 #include <g4main/PHG4Detector.h>
9 
10 #include <map>
11 #include <set>
12 #include <string>
13 
14 class G4LogicalVolume;
15 class G4Material;
16 class G4VPhysicalVolume;
17 class PHCompositeNode;
19 class PHG4Subsystem;
20 class PHParameters;
21 
29 {
30  public:
33 
36 
38  virtual void ConstructMe(G4LogicalVolume *world);
39 
41  virtual int IsInCrystalCalorimeter(G4VPhysicalVolume *) const;
42 
43  // ----- accessing member variables: ------------
44 
45  void SuperDetector(const std::string &name) { m_SuperDetector = name; }
46  const std::string SuperDetector() const { return m_SuperDetector; }
47 
48  int get_DetectorId() const { return m_DetectorId; }
49  void DetectorId(const int i) { m_DetectorId = i; }
50  void DoFullLightProp(bool doProp) { m_doLightProp = doProp; }
51 
52  // ----- additional accessors used by derived classes: ------------
53 
55 
56  protected: // for variables also used in PHG4ProjCrystalCalorimeterDetector
58  G4Material *GetCarbonFiber();
60 
61  private: // private stuff
62  G4LogicalVolume *ConstructSupportFrame(G4LogicalVolume *envelope);
63  G4LogicalVolume *ConstructTower();
64  int PlaceTower(G4LogicalVolume *envelope, G4LogicalVolume *tower); //, G4LogicalVolume *support);
65  G4Material *GetScintillatorMaterial(float setting);
66  G4Material *GetTedlarMaterial();
67  G4Material *GetVM2000Material();
69  void CrystalTable(G4Material *mat);
70  void SurfaceTable(G4LogicalVolume *vol);
71  void MakeBoundary(G4VPhysicalVolume *vol1, G4VPhysicalVolume *vol2);
73  {
74  G4double x;
75  G4double y;
76  G4double z;
77  int idx_j;
78  int idx_k;
79  };
80 
81  int m_DetectorId = 0;
82 
83  std::string m_SuperDetector;
84 
85  PHParameters *m_Params = nullptr;
86 
88 
89  std::string _towerlogicnameprefix;
90 
91  std::map<std::string, G4double> _map_global_parameter;
92  std::map<std::string, towerposition> _map_tower;
93  std::set<G4VPhysicalVolume *> m_ActiveVolumeSet;
94  std::set<G4VPhysicalVolume *> m_PassiveVolumeSet;
95  // since getting parameters is a map search we do not want to
96  // do this in every step, the parameters used are cached
97  // in the following variables
101 };
102 
103 #endif