Back to home page

sPhenix code displayed by LXR

 
 

    


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

0001 // Tell emacs that this is a C++ source
0002 //  -*- C++ -*-.
0003 #ifndef G4DETECTORS_BEAMLINEMAGNETSUBSYSTEM_H
0004 #define G4DETECTORS_BEAMLINEMAGNETSUBSYSTEM_H
0005 
0006 #include "PHG4DetectorSubsystem.h"
0007 
0008 #include <string>  // for string
0009 
0010 class BeamLineMagnetDetector;
0011 class PHCompositeNode;
0012 class PHG4Detector;
0013 class PHG4DisplayAction;
0014 class PHG4SteppingAction;
0015 
0016 class BeamLineMagnetSubsystem : public PHG4DetectorSubsystem
0017 {
0018  public:
0019   //! constructor
0020   BeamLineMagnetSubsystem(const std::string& name = "CYLINDER", const int layer = 0);
0021 
0022   //! destructor
0023   ~BeamLineMagnetSubsystem() override;
0024 
0025   //! init runwise stuff
0026   /*!
0027   creates the m_Detector object and place it on the node tree, under "DETECTORS" node (or whatever)
0028   reates the stepping action and place it on the node tree, under "ACTIONS" node
0029   creates relevant hit nodes that will be populated by the stepping action and stored in the output DST
0030   */
0031   int InitRunSubsystem(PHCompositeNode*) override;
0032 
0033   //! event processing
0034   /*!
0035   get all relevant nodes from top nodes (namely hit list)
0036   and pass that to the stepping action
0037   */
0038   int process_event(PHCompositeNode*) override;
0039 
0040   //! Print info (from SubsysReco)
0041   void Print(const std::string& what = "ALL") const override;
0042 
0043   //! accessors (reimplemented)
0044   PHG4Detector* GetDetector(void) const override;
0045   PHG4SteppingAction* GetSteppingAction(void) const override { return m_SteppingAction; }
0046   PHG4DisplayAction* GetDisplayAction() const override { return m_DisplayAction; }
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   BeamLineMagnetDetector* 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  // G4DETECTORS_BEAMLINEMAGNETSUBSYSTEM_H