Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-17 09:21:31

0001 #include "PHG4BeamlineMagnetSubsystem.h"
0002 #include "PHG4BeamlineMagnetDetector.h"
0003 
0004 #include <phparameter/PHParameters.h>
0005 
0006 #include <iostream>  // for operator<<, endl, basic_ostream
0007 #include <limits>
0008 
0009 class PHCompositeNode;
0010 class PHG4Detector;
0011 
0012 //_______________________________________________________________________
0013 PHG4BeamlineMagnetSubsystem::PHG4BeamlineMagnetSubsystem(const std::string& na, const int lyr)
0014   : PHG4DetectorSubsystem(na, lyr)
0015 {
0016   InitializeParameters();
0017 }
0018 
0019 //_______________________________________________________________________
0020 int PHG4BeamlineMagnetSubsystem::InitRunSubsystem(PHCompositeNode* topNode)
0021 {
0022   /* create magnet */
0023   m_Detector = new PHG4BeamlineMagnetDetector(this, topNode, GetParams(), Name(), GetLayer());
0024 
0025   return 0;
0026 }
0027 
0028 //_______________________________________________________________________
0029 int PHG4BeamlineMagnetSubsystem::process_event(PHCompositeNode* /*topNode*/)
0030 {
0031   return 0;
0032 }
0033 
0034 //_______________________________________________________________________
0035 PHG4Detector* PHG4BeamlineMagnetSubsystem::GetDetector() const
0036 {
0037   return m_Detector;
0038 }
0039 
0040 void PHG4BeamlineMagnetSubsystem::SetDefaultParameters()
0041 {
0042   set_default_string_param("magtype", "");
0043 
0044   set_default_double_param("field_y", std::numeric_limits<double>::quiet_NaN());
0045   set_default_double_param("fieldgradient", std::numeric_limits<double>::quiet_NaN());
0046 
0047   set_default_double_param("length", 100);
0048   set_default_double_param("place_x", 0.);
0049   set_default_double_param("place_y", 0.);
0050   set_default_double_param("place_z", 0.);
0051   set_default_double_param("rot_x", 0.);
0052   set_default_double_param("rot_y", 0.);
0053   set_default_double_param("rot_z", 0.);
0054   set_default_double_param("radius", 100);
0055   set_default_double_param("thickness", 100);
0056   set_default_double_param("tmin", std::numeric_limits<double>::quiet_NaN());
0057   set_default_double_param("tmax", std::numeric_limits<double>::quiet_NaN());
0058 
0059   set_default_int_param("lengthviarapidity", 1);
0060 
0061   set_default_string_param("material", "G4_Galactic");
0062 }
0063 
0064 void PHG4BeamlineMagnetSubsystem::Print(const std::string& /*what*/) const
0065 {
0066   std::cout << Name() << " Parameters: " << std::endl;
0067   if (!BeginRunExecuted())
0068   {
0069     std::cout << "Need to execute BeginRun() before parameter printout is meaningful" << std::endl;
0070     std::cout << "To do so either run one or more events or on the command line execute: " << std::endl;
0071     std::cout << "Fun4AllServer *se = Fun4AllServer::instance();" << std::endl;
0072     std::cout << "PHG4Reco *g4 = (PHG4Reco *) se->getSubsysReco(\"PHG4RECO\");" << std::endl;
0073     std::cout << "g4->InitRun(se->topNode());" << std::endl;
0074     std::cout << "PHG4BeamlineMagnetSubsystem *cyl = (PHG4BeamlineMagnetSubsystem *) g4->getSubsystem(\"" << Name() << "\");" << std::endl;
0075     std::cout << "cyl->Print()" << std::endl;
0076     return;
0077   }
0078   GetParams()->Print();
0079   return;
0080 }