Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:20:44

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
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   //! constructor
0025   PHG4Prototype2InnerHcalDetector(PHG4Subsystem* subsys, PHCompositeNode* Node, PHParameters* parameters, const std::string& dnam);
0026 
0027   //! destructor
0028   virtual ~PHG4Prototype2InnerHcalDetector();
0029 
0030   //! construct
0031   virtual void ConstructMe(G4LogicalVolume* world);
0032 
0033   virtual void Print(const std::string& what = "ALL") const;
0034 
0035   //!@name volume accessors
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