double HCalInner(PHG4Reco* g4Reco, double radius, const int crossings, const int absorberactive = 0, int verbosity = 0) { double innerradius = 116.; double outerradius = 135.; double scintw = 0.7; int nscint = 64*5; if (radius > innerradius) { cout << "inconsistency: radius: " << radius << " larger than HCALIN inner radius: " << innerradius << endl; gSystem->Exit(-1); } gSystem->Load("libg4detectors.so"); gSystem->Load("libg4testbench.so"); double hcal_inner_thickness = outerradius - innerradius; int ilayer = Min_hcal_in_layer; PHG4HcalSubsystem *hcal; hcal = new PHG4HcalSubsystem("HCALIN", ilayer); hcal->SetRadius(innerradius); hcal->SetMaterial("SS304"); // SS304 stainless steel hcal->SetThickness(hcal_inner_thickness); hcal->SetScintWidth(scintw); hcal->SetNumScint(nscint); hcal->SetTiltViaNcross(+crossings); // Jin: correct for the sign for inner HCal tilting per request from Chris hcal->SetActive(); hcal->SuperDetector("HCALIN"); if (absorberactive) hcal->SetAbsorberActive(); hcal->OverlapCheck(overlapcheck); //hcal->SetLightCorrection(116.0,0.85,135.0,1.0); g4Reco->registerSubsystem( hcal ); radius = outerradius; HCalInner_SupportRing(g4Reco,absorberactive); if (verbosity >= 0) { cout << "==================== G4_HcalIn_ref.C::HCalInner() =========================" << endl; cout << " CVS Version: $Id: G4_HcalIn_ref.C,v 1.2 2015/04/21 21:21:14 pinkenbu Exp $" << endl; cout << " HCALIN Material Description:" << endl; cout << " inner radius = " << innerradius << " cm" << endl; cout << " outer radius = " << outerradius << " cm" << endl; cout << " number of scintilators = " << nscint << endl; cout << " width of scintilators = " << scintw << " cm" << endl; cout << " number of crossings = " << crossings << endl; cout << "===========================================================================" << endl; } radius += no_overlapp; return radius; }
double HCalInner(PHG4Reco* g4Reco, double radius, const int crossings, const int absorberactive = 0, int verbosity = 0) { // all sizes are in cm! gSystem->Load("libg4detectors.so"); gSystem->Load("libg4testbench.so"); PHG4InnerHcalSubsystem *hcal = new PHG4InnerHcalSubsystem("HCALIN"); // these are the parameters you can change with their default settings // hcal->set_string_param("material","SS310"); if(inner_hcal_material_Al) { cout <<"HCalInner - construct inner HCal absorber with G4_Al"<<endl; hcal->set_string_param("material","G4_Al"); } // hcal->set_double_param("inner_radius", 117.27); //----------------------------------------- // the light correction can be set in a single call // hcal->set_double_param("light_balance_inner_corr", NAN); // hcal->set_double_param("light_balance_inner_radius", NAN); // hcal->set_double_param("light_balance_outer_corr", NAN); // hcal->set_double_param("light_balance_outer_radius", NAN); // hcal->SetLightCorrection(NAN,NAN,NAN,NAN); //----------------------------------------- // hcal->set_double_param("outer_radius", 134.42); // hcal->set_double_param("place_x", 0.); // hcal->set_double_param("place_y", 0.); // hcal->set_double_param("place_z", 0.); // hcal->set_double_param("rot_x", 0.); // hcal->set_double_param("rot_y", 0.); // hcal->set_double_param("rot_z", 0.); // hcal->set_double_param("scinti_eta_coverage", 1.1); // hcal->set_double_param("scinti_gap_neighbor", 0.1); // hcal->set_double_param("scinti_inner_gap", 0.85); // hcal->set_double_param("scinti_outer_gap", 1.22 * (5.0 / 4.0)); // hcal->set_double_param("scinti_outer_radius", 133.3); // hcal->set_double_param("scinti_tile_thickness", 0.7); // hcal->set_double_param("size_z", 175.94 * 2); // hcal->set_double_param("steplimits", NAN); // hcal->set_double_param("tilt_angle", 36.15); // hcal->set_int_param("light_scint_model", 1); // hcal->set_int_param("ncross", 0); // hcal->set_int_param("n_towers", 64); // hcal->set_int_param("n_scinti_plates_per_tower", 4); // hcal->set_int_param("n_scinti_tiles", 12); // hcal->set_string_param("material", "SS310"); hcal->SetActive(); hcal->SuperDetector("HCALIN"); if (absorberactive) { hcal->SetAbsorberActive(); } hcal->OverlapCheck(overlapcheck); g4Reco->registerSubsystem( hcal ); radius = hcal->get_double_param("outer_radius"); HCalInner_SupportRing(g4Reco,absorberactive); radius += no_overlapp; return radius; }