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
0023 m_Detector = new PHG4BeamlineMagnetDetector(this, topNode, GetParams(), Name(), GetLayer());
0024
0025 return 0;
0026 }
0027
0028
0029 int PHG4BeamlineMagnetSubsystem::process_event(PHCompositeNode* )
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& ) 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 }