File indexing completed on 2025-08-05 08:11:58
0001
0002 void MagnetInit() {}
0003
0004 double Magnet(PHG4Reco* g4Reco,
0005 double radius,
0006 const int crossings = 0,
0007 const int absorberactive = 0,
0008 int verbosity = 0) {
0009
0010 double magnet_inner_cryostat_wall_radius = 142;
0011 double magnet_inner_cryostat_wall_thickness = 1;
0012 double magnet_outer_cryostat_wall_radius = 174.5;
0013 double magnet_outer_cryostat_wall_thickness = 2.5;
0014 double magnet_coil_radius = 150.8;
0015 double magnet_coil_thickness = 9.38;
0016 double magnet_length = 379.;
0017 double coil_length = 361.5;
0018 if (radius > magnet_inner_cryostat_wall_radius) {
0019 cout << "inconsistency: radius: " << radius
0020 << " larger than Magnet inner radius: " << magnet_inner_cryostat_wall_radius << endl;
0021 gSystem->Exit(-1);
0022 }
0023
0024 gSystem->Load("libg4detectors.so");
0025 gSystem->Load("libg4testbench.so");
0026
0027 radius = magnet_inner_cryostat_wall_radius;
0028 PHG4CylinderSubsystem *cyl = new PHG4CylinderSubsystem("MAGNET", 0);
0029 cyl->set_double_param("radius",magnet_inner_cryostat_wall_radius);
0030 cyl->set_int_param("lengthviarapidity",0);
0031 cyl->set_double_param("length",magnet_length);
0032 cyl->set_double_param("thickness",magnet_inner_cryostat_wall_thickness);
0033 cyl->set_string_param("material","Al5083");
0034 cyl->SuperDetector("MAGNET");
0035 if (absorberactive) cyl->SetActive();
0036 g4Reco->registerSubsystem( cyl );
0037
0038 cyl = new PHG4CylinderSubsystem("MAGNET", 1);
0039 cyl->set_double_param("radius",magnet_coil_radius);
0040 cyl->set_int_param("lengthviarapidity",0);
0041 cyl->set_double_param("length",coil_length);
0042 cyl->set_double_param("thickness",magnet_coil_thickness);
0043 cyl->set_string_param("material","Al5083");
0044 cyl->SuperDetector("MAGNET");
0045 if (absorberactive) cyl->SetActive();
0046 g4Reco->registerSubsystem( cyl );
0047
0048 cyl = new PHG4CylinderSubsystem("MAGNET", 2);
0049 cyl->set_double_param("radius",magnet_outer_cryostat_wall_radius);
0050 cyl->set_int_param("lengthviarapidity",0);
0051 cyl->set_double_param("length",magnet_length);
0052 cyl->set_double_param("thickness",magnet_outer_cryostat_wall_thickness);
0053 cyl->set_string_param("material","Al5083");
0054 cyl->SuperDetector("MAGNET");
0055 if (absorberactive) cyl->SetActive();
0056 g4Reco->registerSubsystem( cyl );
0057
0058 radius = magnet_outer_cryostat_wall_radius + magnet_outer_cryostat_wall_thickness;
0059
0060 if (verbosity > 0) {
0061 cout << "========================= G4_Magnet.C::Magnet() ===========================" << endl;
0062 cout << " MAGNET Material Description:" << endl;
0063 cout << " inner radius = " << magnet_inner_cryostat_wall_radius << " cm" << endl;
0064 cout << " outer radius = " << magnet_outer_cryostat_wall_radius + magnet_outer_cryostat_wall_thickness << " cm" << endl;
0065 cout << " length = " << magnet_length << " cm" << endl;
0066 cout << "===========================================================================" << endl;
0067 }
0068
0069 radius += no_overlapp;
0070
0071 return radius;
0072 }