Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:22:07

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef G4CALOPROTOTYPE_PHG4PROTOTYPE3INNERHCALDETECTOR_H
0004 #define G4CALOPROTOTYPE_PHG4PROTOTYPE3INNERHCALDETECTOR_H
0005 
0006 #include <g4main/PHG4Detector.h>
0007 
0008 #include <Geant4/G4TwoVector.hh>
0009 
0010 #include <map>
0011 #include <set>
0012 #include <string>
0013 
0014 class G4AssemblyVolume;
0015 class G4LogicalVolume;
0016 class G4VPhysicalVolume;
0017 class PHCompositeNode;
0018 class PHG4Subsystem;
0019 class PHParameters;
0020 
0021 class PHG4Prototype3InnerHcalDetector : public PHG4Detector
0022 {
0023  public:
0024   //! constructor
0025   PHG4Prototype3InnerHcalDetector(PHG4Subsystem *subsys, PHCompositeNode *Node, PHParameters *parameters, const std::string &dnam);
0026 
0027   //! destructor
0028   virtual ~PHG4Prototype3InnerHcalDetector();
0029   //! construct method called by G4
0030   void ConstructMe(G4LogicalVolume *world);
0031 
0032   //! print detector info
0033   void Print(const std::string &what = "ALL") const;
0034 
0035   //!@name volume accessors
0036   //@{
0037   int IsInPrototype3InnerHcal(G4VPhysicalVolume *) const;
0038   //@}
0039 
0040   void SuperDetector(const std::string &name) { m_SuperDetector = name; }
0041   const std::string SuperDetector() const { return m_SuperDetector; }
0042   int get_Layer() const { return m_Layer; }
0043 
0044   int get_scinti_row_id(const std::string &volname);
0045   int get_steel_plate_id(const std::string &volname);
0046 
0047  private:
0048   G4LogicalVolume *ConstructSteelPlate(G4LogicalVolume *hcalenvelope);
0049   G4LogicalVolume *ConstructScintillatorBoxHiEta(G4LogicalVolume *hcalenvelope);
0050   G4LogicalVolume *ConstructScintiTile9(G4LogicalVolume *hcalenvelope);
0051   G4LogicalVolume *ConstructScintiTile10(G4LogicalVolume *hcalenvelope);
0052   G4LogicalVolume *ConstructScintiTile11(G4LogicalVolume *hcalenvelope);
0053   G4LogicalVolume *ConstructScintiTile12(G4LogicalVolume *hcalenvelope);
0054   double GetScintiAngle();
0055   int ConstructInnerHcal(G4LogicalVolume *sandwich);
0056 
0057   PHParameters *m_params;
0058   G4LogicalVolume *m_InnerHcalSteelPlate;
0059   G4AssemblyVolume *m_InnerHcalAssembly;
0060   G4LogicalVolume *m_scintibox;
0061   std::set<G4LogicalVolume *> m_ActiveVolumeSet;
0062   G4TwoVector m_SteelPlateCornerUpperLeft;
0063   G4TwoVector m_SteelPlateCornerUpperRight;
0064   G4TwoVector m_SteelPlateCornerLowerRight;
0065   G4TwoVector m_SteelPlateCornerLowerLeft;
0066 
0067   double m_ScintiTile9DistanceToCorner;
0068   double m_ScintiTile9FrontSize;
0069   G4TwoVector m_ScintiTile9CornerUpperLeft;
0070   G4TwoVector m_ScintiTile9CornerUpperRight;
0071   G4TwoVector m_ScintiTile9CornerLowerRight;
0072   G4TwoVector m_ScintiTile9CornerLowerLeft;
0073 
0074   double m_ScintiTile10FrontSize;
0075   G4TwoVector m_ScintiTile10CornerUpperLeft;
0076   G4TwoVector m_ScintiTile10CornerUpperRight;
0077   G4TwoVector m_ScintiTile10CornerLowerRight;
0078   G4TwoVector m_ScintiTile10CornerLowerLeft;
0079 
0080   double m_ScintiTile11FrontSize;
0081   G4TwoVector m_ScintiTile11CornerUpperLeft;
0082   G4TwoVector m_ScintiTile11CornerUpperRight;
0083   G4TwoVector m_ScintiTile11CornerLowerRight;
0084   G4TwoVector m_ScintiTile11CornerLowerLeft;
0085 
0086   double m_ScintiTile12FrontSize;
0087   G4TwoVector m_ScintiTile12CornerUpperLeft;
0088   G4TwoVector m_ScintiTile12CornerUpperRight;
0089   G4TwoVector m_ScintiTile12CornerLowerRight;
0090   G4TwoVector m_ScintiTile12CornerLowerLeft;
0091 
0092   double m_ScintiX;
0093   double m_SteelZ;
0094   double m_ScintiTileZ;
0095   double m_ScintiTileThickness;
0096   double m_GapBetweenTiles;
0097   double m_ScintiGap;
0098   double m_DeltaPhi;
0099   double m_VolumeSteel;
0100   double m_VolumeScintillator;
0101 
0102   G4TwoVector m_ScintiCornerLowerLeft;
0103   G4TwoVector m_ScintiCornerLowerRight;
0104   // leave this in in case we ever need those coordinates
0105   // G4TwoVector m_ScintiCornerUpperRight;
0106   // G4TwoVector m_ScintiCornerUpperLeft;
0107 
0108   int m_NumScintiPlates;
0109   int m_NumSteelPlates;
0110 
0111   int m_Active;
0112   int m_AbsorberActive;
0113 
0114   int m_Layer;
0115   std::string m_SuperDetector;
0116   std::map<std::string, int> m_SteelPlateIdMap;
0117   std::map<std::string, int> m_ScintillatorIdMap;
0118 };
0119 
0120 #endif  // G4DETECTORS_PHG4PROTOTYPE3INNERHCALDETECTOR_H