File indexing completed on 2025-08-03 08:20:24
0001 #ifndef MACRO_G4BLACKHOLE_C
0002 #define MACRO_G4BLACKHOLE_C
0003
0004 #include <GlobalVariables.C>
0005
0006 #include <g4detectors/PHG4CylinderSubsystem.h>
0007 #include <g4main/PHG4Reco.h>
0008
0009 R__LOAD_LIBRARY(libg4detectors.so)
0010
0011 namespace Enable
0012 {
0013 bool BLACKHOLE = false;
0014 bool BLACKHOLE_SAVEHITS = true;
0015 bool BLACKHOLE_FORWARD_SAVEHITS = true;
0016 }
0017
0018 void BlackHoleInit() {}
0019
0020 void BlackHole(PHG4Reco *g4Reco, double radius)
0021 {
0022
0023 if (radius < BlackHoleGeometry::max_radius)
0024 {
0025 radius = BlackHoleGeometry::max_radius;
0026 }
0027 double blackhole_length = (BlackHoleGeometry::max_z - BlackHoleGeometry::min_z) + 2 * BlackHoleGeometry::gap;
0028 double blackhole_zpos = BlackHoleGeometry::min_z - BlackHoleGeometry::gap + blackhole_length / 2.;
0029 double blackhole_radius = radius + BlackHoleGeometry::gap;
0030 PHG4CylinderSubsystem *blackhole = new PHG4CylinderSubsystem("BH", 1);
0031 blackhole->set_double_param("radius", blackhole_radius);
0032 blackhole->set_double_param("length", blackhole_length);
0033 blackhole->set_double_param("place_z", blackhole_zpos);
0034 blackhole->set_double_param("thickness", BlackHoleGeometry::gap / 2.);
0035 if (BlackHoleGeometry::visible)
0036 {
0037 blackhole->set_color(1, 0, 0, 0.7);
0038 }
0039 blackhole->BlackHole();
0040 if (Enable::BLACKHOLE_SAVEHITS)
0041 {
0042 blackhole->SetActive();
0043 }
0044 blackhole->OverlapCheck(true);
0045 g4Reco->registerSubsystem(blackhole);
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057 double blackhole_forward_zpos = blackhole_zpos + blackhole_length / 2. + BlackHoleGeometry::gap / 2.;
0058 blackhole = new PHG4CylinderSubsystem("BH_FORWARD_PLUS", 1);
0059 blackhole->SuperDetector("BH_FORWARD_PLUS");
0060 blackhole->set_double_param("radius", 0.);
0061 blackhole->set_double_param("thickness", blackhole_radius + BlackHoleGeometry::gap);
0062 blackhole->set_double_param("length", BlackHoleGeometry::gap / 2.);
0063 blackhole->set_double_param("place_z", blackhole_forward_zpos);
0064 if (BlackHoleGeometry::visible)
0065 {
0066 blackhole->set_color(1, 0, 0, 0.7);
0067 }
0068 blackhole->BlackHole();
0069 if (Enable::BLACKHOLE_SAVEHITS && Enable::BLACKHOLE_FORWARD_SAVEHITS)
0070 {
0071 blackhole->SetActive();
0072 }
0073 blackhole->OverlapCheck(true);
0074 g4Reco->registerSubsystem(blackhole);
0075
0076
0077 double blackhole_backward_zpos = blackhole_zpos - (blackhole_length / 2. + BlackHoleGeometry::gap / 2.);
0078
0079 blackhole = new PHG4CylinderSubsystem("BH_FORWARD_NEG", 1);
0080 blackhole->SuperDetector("BH_FORWARD_NEG");
0081 blackhole->set_double_param("radius", 0);
0082 blackhole->set_double_param("thickness", blackhole_radius + BlackHoleGeometry::gap);
0083 blackhole->set_double_param("length", BlackHoleGeometry::gap / 2.);
0084 blackhole->set_double_param("place_z", blackhole_backward_zpos);
0085 if (BlackHoleGeometry::visible)
0086 {
0087 blackhole->set_color(1, 0, 0, 0.7);
0088 }
0089 blackhole->BlackHole();
0090 if (Enable::BLACKHOLE_SAVEHITS && Enable::BLACKHOLE_FORWARD_SAVEHITS)
0091 {
0092 blackhole->SetActive();
0093 }
0094 blackhole->OverlapCheck(true);
0095 g4Reco->registerSubsystem(blackhole);
0096 return;
0097 }
0098 #endif