File indexing completed on 2025-08-05 08:20:44
0001
0002
0003 #ifndef G4CALOPROTOTYPE_PHG4PROTOTYPE2INNERHCALDETECTOR_H
0004 #define G4CALOPROTOTYPE_PHG4PROTOTYPE2INNERHCALDETECTOR_H
0005
0006 #include <g4main/PHG4Detector.h>
0007
0008 #include <Geant4/G4TwoVector.hh>
0009
0010 #include <map>
0011 #include <set>
0012 #include <string> // for string
0013
0014 class G4AssemblyVolume;
0015 class G4LogicalVolume;
0016 class G4VPhysicalVolume;
0017 class PHCompositeNode;
0018 class PHG4Subsystem;
0019 class PHParameters;
0020
0021 class PHG4Prototype2InnerHcalDetector : public PHG4Detector
0022 {
0023 public:
0024
0025 PHG4Prototype2InnerHcalDetector(PHG4Subsystem* subsys, PHCompositeNode* Node, PHParameters* parameters, const std::string& dnam);
0026
0027
0028 virtual ~PHG4Prototype2InnerHcalDetector();
0029
0030
0031 virtual void ConstructMe(G4LogicalVolume* world);
0032
0033 virtual void Print(const std::string& what = "ALL") const;
0034
0035
0036
0037 int IsInPrototype2InnerHcal(G4VPhysicalVolume*) const;
0038
0039
0040 void SuperDetector(const std::string& name) { superdetector = name; }
0041 const std::string SuperDetector() const { return superdetector; }
0042 int get_Layer() const { return m_Layer; }
0043
0044 G4LogicalVolume* ConstructSteelPlate(G4LogicalVolume* hcalenvelope);
0045 G4LogicalVolume* ConstructScintillatorBox(G4LogicalVolume* hcalenvelope);
0046 G4LogicalVolume* ConstructScintillatorBoxHiEta(G4LogicalVolume* hcalenvelope);
0047 G4LogicalVolume* ConstructScintiTileU1(G4LogicalVolume* hcalenvelope);
0048 G4LogicalVolume* ConstructScintiTileU2(G4LogicalVolume* hcalenvelope);
0049 G4LogicalVolume* ConstructScintiTile9(G4LogicalVolume* hcalenvelope);
0050 G4LogicalVolume* ConstructScintiTile10(G4LogicalVolume* hcalenvelope);
0051 G4LogicalVolume* ConstructScintiTile11(G4LogicalVolume* hcalenvelope);
0052 G4LogicalVolume* ConstructScintiTile12(G4LogicalVolume* hcalenvelope);
0053 double GetScintiAngle();
0054
0055 int get_scinti_row_id(const std::string& volname);
0056 int get_steel_plate_id(const std::string& volname);
0057
0058 protected:
0059 int ConstructInnerHcal(G4LogicalVolume* sandwich);
0060 std::set<G4LogicalVolume*> m_ActiveVolumeSet;
0061 std::string superdetector;
0062 std::map<std::string, int> m_SteelPlateIdMap;
0063 std::map<std::string, int> m_ScintillatorIdMap;
0064 PHParameters* m_Params;
0065 G4LogicalVolume* m_InnerHcalSteelPlate;
0066 G4AssemblyVolume* m_InnerHcalAssembly;
0067 G4TwoVector m_SteelPlateCornerUpperLeft;
0068 G4TwoVector m_SteelPlateCornerUpperRight;
0069 G4TwoVector m_SteelPlateCornerLowerRight;
0070 G4TwoVector m_SteelPlateCornerLowerLeft;
0071 double m_ScintiUoneFrontSize;
0072 G4TwoVector m_ScintiUoneCornerUpperLeft;
0073 G4TwoVector m_ScintiUoneCornerUpperRight;
0074 G4TwoVector m_ScintiUoneCornerLowerRight;
0075 G4TwoVector m_ScintiUoneCornerLowerLeft;
0076
0077 G4TwoVector m_ScintiU2CornerUpperLeft;
0078 G4TwoVector m_ScintiU2CornerUpperRight;
0079 G4TwoVector m_ScintiU2CornerLowerRight;
0080 G4TwoVector m_ScintiU2CornerLowerLeft;
0081
0082 double m_ScintiT9DistanceToCorner;
0083 double m_ScintiT9FrontSize;
0084 G4TwoVector m_ScintiT9CornerUpperLeft;
0085 G4TwoVector m_ScintiT9CornerUpperRight;
0086 G4TwoVector m_ScintiT9CornerLowerRight;
0087 G4TwoVector m_ScintiT9CornerLowerLeft;
0088
0089 double m_ScintiT10FrontSize;
0090 G4TwoVector m_ScintiT10CornerUpperLeft;
0091 G4TwoVector m_ScintiT10CornerUpperRight;
0092 G4TwoVector m_ScintiT10CornerLowerRight;
0093 G4TwoVector m_ScintiT10CornerLowerLeft;
0094
0095 double m_ScintiT11FrontSize;
0096 G4TwoVector m_ScintiT11CornerUpperLeft;
0097 G4TwoVector m_ScintiT11CornerUpperRight;
0098 G4TwoVector m_ScintiT11CornerLowerRight;
0099 G4TwoVector m_ScintiT11CornerLowerLeft;
0100
0101 double m_ScintiT12FrontSize;
0102 G4TwoVector m_ScintiT12CornerUpperLeft;
0103 G4TwoVector m_ScintiT12CornerUpperRight;
0104 G4TwoVector m_ScintiT12CornerLowerRight;
0105 G4TwoVector m_ScintiT12CornerLowerLeft;
0106
0107 double m_ScintiX;
0108 double m_SteelZ;
0109 double m_SizeZ;
0110 double m_ScintiTileZ;
0111 double m_ScintiTileThickness;
0112 double m_ScintiBoxSmaller;
0113 double m_GapBetweenTiles;
0114 double m_ScintiGap;
0115 double m_DeltaPhi;
0116 double m_VolumeSteel;
0117 double m_VolumeScintillator;
0118
0119 int m_NScintiPlates;
0120 int m_NSteelPlates;
0121
0122 int m_ActiveFlag;
0123 int m_AbsorberActiveFlag;
0124
0125 int m_Layer;
0126 };
0127
0128 #endif