Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:17:53

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef G4DETECTORS_PHG4ZDCDETECTOR_H
0004 #define G4DETECTORS_PHG4ZDCDETECTOR_H
0005 
0006 #include <g4main/PHG4Detector.h>
0007 
0008 #include <set>
0009 #include <string>
0010 
0011 class G4LogicalVolume;
0012 class G4VPhysicalVolume;
0013 class PHCompositeNode;
0014 class PHG4ZDCDisplayAction;
0015 class PHG4Subsystem;
0016 class PHG4GDMLConfig;
0017 class PHParameters;
0018 
0019 /**
0020  */
0021 
0022 class PHG4ZDCDetector : public PHG4Detector
0023 {
0024  public:
0025   //! constructor
0026   explicit PHG4ZDCDetector(PHG4Subsystem *subsys, PHCompositeNode *Node, PHParameters *parameters, const std::string &dnam, const int detid);
0027 
0028   //! destructor
0029   ~PHG4ZDCDetector() override = default;
0030 
0031   //! construct
0032   void ConstructMe(G4LogicalVolume *world) override;
0033 
0034   //!@name volume accessors
0035   int IsInZDC(G4VPhysicalVolume *) const;
0036 
0037   void SuperDetector(const std::string &name) { m_SuperDetector = name; }
0038   const std::string &SuperDetector() const { return m_SuperDetector; }
0039 
0040   int get_Layer() const { return m_Layer; }
0041 
0042   PHG4ZDCDisplayAction *GetDisplayAction() { return m_DisplayAction; }
0043 
0044  private:
0045   G4LogicalVolume *ConstructTower(int type);
0046   PHParameters *GetParams() const { return m_Params; }
0047 
0048   PHG4ZDCDisplayAction *m_DisplayAction = nullptr;
0049   PHParameters *m_Params = nullptr;
0050   //! registry for volumes that should not be exported, i.e. fibers
0051   PHG4GDMLConfig *m_GdmlConfig = nullptr;
0052 
0053   /* ZDC geometry */
0054   double m_Angle;
0055 
0056   double m_TPlate;
0057   double m_HPlate;
0058   double m_WPlate;
0059 
0060   double m_TAbsorber;
0061   double m_HAbsorber;
0062   double m_WAbsorber;
0063 
0064   double m_DFiber;
0065   double m_HFiber;
0066   double m_WFiber;
0067   double m_GFiber;
0068 
0069   double m_Gap;
0070 
0071   double m_TSMD;
0072   double m_HSMD;
0073   double m_WSMD;
0074 
0075   double m_RHole;
0076   double m_TWin;
0077   double m_RWin;
0078 
0079   double m_PlaceHole;
0080   double m_Pxwin;
0081   double m_Pywin;
0082   double m_Pzwin;
0083 
0084   int m_NMod;
0085   int m_NLay;
0086 
0087   int m_ActiveFlag;
0088   int m_AbsorberActiveFlag;
0089   int m_SupportActiveFlag;
0090   int m_Layer;
0091 
0092   std::string m_SuperDetector;
0093 
0094   std::set<G4LogicalVolume *> m_AbsorberLogicalVolSet;
0095   std::set<G4LogicalVolume *> m_ScintiLogicalVolSet;
0096   std::set<G4LogicalVolume *> m_FiberLogicalVolSet;
0097   std::set<G4LogicalVolume *> m_SupportLogicalVolSet;
0098 };
0099 
0100 #endif