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