Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:19:29

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef G4OHCAL_PHG4OHCALSUBSYSTEM_H
0004 #define G4OHCAL_PHG4OHCALSUBSYSTEM_H
0005 
0006 #include <g4detectors/PHG4DetectorSubsystem.h>
0007 
0008 #include <string>
0009 
0010 class PHCompositeNode;
0011 class PHG4Detector;
0012 class PHG4DisplayAction;
0013 class PHG4OHCalDetector;
0014 class PHG4SteppingAction;
0015 
0016 class PHG4OHCalSubsystem : public PHG4DetectorSubsystem
0017 {
0018  public:
0019   //! constructor
0020   PHG4OHCalSubsystem(const std::string& name = "HCALOUT", const int layer = 0);
0021 
0022   //! destructor
0023   ~PHG4OHCalSubsystem() override;
0024 
0025   /*!
0026   creates the Detector object. Creates the stepping action
0027   creates relevant hit nodes that will be populated by the stepping action and stored in the output DST
0028   */
0029   int InitRunSubsystem(PHCompositeNode*) override;
0030 
0031   //! event processing
0032   /*!
0033   get all relevant nodes from top nodes (namely hit list)
0034   and pass that to the stepping action
0035   */
0036   int process_event(PHCompositeNode*) override;
0037 
0038   //! Print info (from SubsysReco)
0039   void Print(const std::string& what = "ALL") const override;
0040 
0041   //! accessors (reimplemented)
0042   PHG4Detector* GetDetector(void) const override;
0043   PHG4SteppingAction* GetSteppingAction() const override { return m_SteppingAction; }
0044   PHG4DisplayAction* GetDisplayAction() const override { return m_DisplayAction; }
0045 
0046   void SetLightCorrection(const double inner_radius, const double inner_corr, const double outer_radius, const double outer_corr);
0047 
0048   // this method is used to check if it can be used as mothervolume
0049   // Subsystems which can be mothervolume need to implement this
0050   // and return true
0051   bool CanBeMotherSubsystem() const override { return true; }
0052 
0053  private:
0054   void SetDefaultParameters() override;
0055 
0056   //! detector geometry
0057   /*! defives from PHG4Detector */
0058   PHG4OHCalDetector* m_Detector = nullptr;
0059 
0060   //! particle tracking "stepping" action
0061   /*! derives from PHG4SteppingActions */
0062   PHG4SteppingAction* m_SteppingAction = nullptr;
0063 
0064   //! display attribute setting
0065   /*! derives from PHG4DisplayAction */
0066   PHG4DisplayAction* m_DisplayAction = nullptr;
0067 
0068   std::string m_HitNodeName;
0069   std::string m_AbsorberNodeName;
0070 };
0071 
0072 #endif  // G4OHCAL_PHG4OHCALSUBSYSTEM_H