Back to home page

sPhenix code displayed by LXR

 
 

    


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   /* create magnet */
0026   detector_ = new PHG4BeamlineMagnetDetector(this, topNode, GetParams(), Name(), GetLayer());
0027 
0028   return 0;
0029 }
0030 
0031 //_______________________________________________________________________
0032 int PHG4BeamlineMagnetSubsystem::process_event(PHCompositeNode* /*topNode*/)
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& /*what*/) 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 }