コード例 #1
0
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;
}
コード例 #2
0
ファイル: G4_HcalIn_ref.C プロジェクト: abinashpun/macros
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;
}