EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PHG4HcalSubsystem.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PHG4HcalSubsystem.h
1 // Tell emacs that this is a C++ source
2 // -*- C++ -*-.
3 #ifndef G4DETECTORS_PHG4HCALSUBSYSTEM_H
4 #define G4DETECTORS_PHG4HCALSUBSYSTEM_H
5 
6 #include <g4main/PHG4Subsystem.h>
7 
8 #include <Geant4/G4String.hh>
9 #include <Geant4/G4Types.hh>
10 
11 #include <string> // for string
12 
13 class PHCompositeNode;
14 class PHG4Detector;
15 class PHG4HcalDetector;
17 class PHG4SteppingAction;
18 
20 {
21  public:
23  PHG4HcalSubsystem(const std::string &name = "HCALCYLINDER", const int layer = 0);
24 
26  ~PHG4HcalSubsystem(void) override
27  {
28  }
29 
31 
36  int InitRun(PHCompositeNode *) override;
37 
39 
43  int process_event(PHCompositeNode *) override;
44 
46  PHG4Detector *GetDetector(void) const override;
47  PHG4SteppingAction *GetSteppingAction(void) const override;
48 
49  void SetRadius(const G4double dbl) { radius = dbl; }
50  void SetLength(const G4double dbl) { length = dbl; }
52  void SetPosition(const G4double x, const G4double y, const G4double z)
53  {
54  xpos = x;
55  ypos = y;
56  zpos = z;
57  }
58  void SetTilt(const double tilt) { _sciTilt = tilt; }
59  void SetTiltViaNcross(const int ncross);
60  void SetScintWidth(const double wid) { _sciWidth = wid; }
61  void SetNumScint(const int num) { _sciNum = num; }
62  void SetScintPhi0(const G4double phi0) { _sciPhi0 = phi0; } // in units of sampling cells
63  void SetThickness(const G4double dbl) { TrackerThickness = dbl; }
64  void SetMaterial(const std::string &mat) { material = mat; }
65  void SetActive(const int i = 1) { active = i; }
66  void SetAbsorberActive(const int i = 1) { absorberactive = i; }
67  void SuperDetector(const std::string &name) { superdetector = name; }
68  const std::string SuperDetector() { return superdetector; }
69 
70  void SetLightCorrection(float inner_radius, float inner_corr,
71  float outer_radius, float outer_corr)
72  {
73  light_balance_ = true;
75  light_balance_inner_corr_ = inner_corr;
77  light_balance_outer_corr_ = outer_corr;
78  }
79  void SetLightScintModel(const bool b = true)
80  {
82  }
83 
84  void Print(const std::string &what = "ALL") const override;
85 
86  private:
88 
90 
92 
94  G4double radius;
95  G4double length;
96  G4double xpos, ypos, zpos;
98  G4double TrackerThickness;
99  G4String material;
100  G4double _sciTilt;
101  G4double _sciWidth;
102  G4int _sciNum;
103  G4double _sciPhi0; // in units of sampling cells
104  int active;
106  int layer;
107  std::string detector_type;
108  std::string superdetector;
109 
116 };
117 
118 #endif