9 #include <Geant4/G4Box.hh>
10 #include <Geant4/G4Tubs.hh>
11 #include <Geant4/G4SubtractionSolid.hh>
12 #include <Geant4/G4Cons.hh>
13 #include <Geant4/G4LogicalVolume.hh>
14 #include <Geant4/G4PVPlacement.hh>
15 #include <Geant4/G4RotationMatrix.hh>
16 #include <Geant4/G4String.hh>
17 #include <Geant4/G4SystemOfUnits.hh>
18 #include <Geant4/G4ThreeVector.hh>
19 #include <Geant4/G4Transform3D.hh>
20 #include <Geant4/G4Types.hh>
21 #include <Geant4/G4VPhysicalVolume.hh>
22 #include <Geant4/G4PVParameterised.hh>
23 #include <Geant4/G4PVReplica.hh>
24 #include <Geant4/G4NistManager.hh>
25 #include <Geant4/G4OpticalSurface.hh>
26 #include <Geant4/G4LogicalSkinSurface.hh>
27 #include <Geant4/G4LogicalBorderSurface.hh>
48 , _place_in_x(0.0 *
mm)
49 , _place_in_y(0.0 *
mm)
50 , _place_in_z(4000.0 *
mm)
51 , _center_offset_x(0.0 *
mm)
52 , _center_offset_y(0.0 *
mm)
53 , _quadratic_detector(0)
65 , _tower_readout(0.5 *
mm)
68 , _tower_dz(1000.0 *
mm)
69 , _scintFiber_diam(1.0 *
mm)
70 , _cerenkovFiber_diam(1.0 *
mm)
71 , _cerenkovFiber_material(0)
72 , _tower_makeNotched(0)
73 , _absorber_Material(0)
74 , _materialScintillator(
"G4_POLYSTYRENE")
75 , _materialAbsorber(
"G4_Fe")
80 , _towerlogicnameprefix(
"hdrcaloTower")
81 , _superdetector(
"NONE")
82 , _mapping_tower_file(
"")
90 if (volume->
GetName().find(
"scintillator") != string::npos)
97 else if (volume->
GetName().find(
"cherenkov") != string::npos)
105 else if (volume->
GetName().find(
"absorber") != string::npos)
112 else if (volume->
GetName().find(
"envelope") != string::npos)
126 cout <<
"PHG4ForwardDualReadoutDetector: Begin Construction" << endl;
143 drcalo_envelope_solid =
new G4Box(
"hdrcalo_envelope_solid_precut",
150 drcalo_envelope_solid =
new G4Cons(
"hdrcalo_envelope_solid",
168 ostringstream name_envelope;
169 name_envelope.str(
"");
173 drcalo_envelope_log, name_envelope.str().c_str(), logicWorld, 0,
false,
OverlapCheck());
184 for(
int row=rowNtow;row>=-rowNtow;row--){
188 if(currRowNtow==0)
continue;
190 if ( currRowNtow % 2 == 0) currRowNtow-=1;
196 int currRowNtowInner = (
int) ( ( 2* sqrt(pow(
_rMin1,2)-pow( (
abs(row)*_tower_dy) ,2)) ) /
_tower_dy );
199 if ( currRowNtowInner % 2 == 0) currRowNtowInner+=1;
202 if ( currRowNtowInner % 2 == 0) currRowNtowInner+=1;
205 if ( offsetrows % 2 != 1) offsetrows-=1;
207 int currRowNtowMod = currRowNtow;
209 currRowNtowMod = 2*rowNtow;
213 auto DRCalRowLeftSolid =
new G4Box(
"DRCalRowLeftBox" +
std::to_string(row), ((currRowNtowMod - currRowNtowInner) / 2 + offsetrows) *
_tower_dx / 2.0,_tower_dy / 2.0,
_tower_dz / 2.0);
217 kXAxis,((currRowNtowMod - currRowNtowInner) / 2 + offsetrows),
_tower_dx);
219 ostringstream name_row_twr_left;
220 name_row_twr_left.str(
"");
223 DRCalRowLeftLogical, name_row_twr_left.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
226 auto DRCalRowRightSolid =
new G4Box(
"DRCalRowRightBox" +
std::to_string(row), ((currRowNtowMod - currRowNtowInner) / 2 - offsetrows ) *
_tower_dx / 2.0,_tower_dy / 2.0,
_tower_dz / 2.0);
230 kXAxis,((currRowNtowMod - currRowNtowInner) / 2 - offsetrows ),
_tower_dx);
232 ostringstream name_row_twr_right;
233 name_row_twr_right.str(
"");
236 DRCalRowRightLogical, name_row_twr_right.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
240 int currRowNtowInner = (
int) ( ( 2* sqrt(pow(
_rMin1,2)-pow( (
abs(row)*_tower_dy) - (_tower_dy/2.0) ,2)) ) / _tower_dy );
242 if ( currRowNtowInner % 2 != 0) currRowNtowInner-=1;
244 int currRowNtowMod = currRowNtow;
246 currRowNtowMod = rowNtow;
255 ostringstream name_row_twr;
256 name_row_twr.str(
"");
259 DRCalRowLogical, name_row_twr.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
261 ostringstream name_row_twr2;
262 name_row_twr2.str(
"");
265 DRCalRowLogical, name_row_twr2.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
278 ostringstream name_row_twr;
279 name_row_twr.str(
"");
282 DRCalRowLogical, name_row_twr.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
292 ostringstream name_row_twr;
293 name_row_twr.str(
"");
296 DRCalRowLogical, name_row_twr.str().c_str(), drcalo_envelope_log, 0,
false,
OverlapCheck());
310 cout <<
"PHG4ForwardDualReadoutDetector: Build logical volume for single tower..." << endl;
335 "single_tower_logic",
348 ( diameter_fiber + airgap ) / 2.0,
353 ( diameter_fiber_cherenkov + airgap ) / 2.0,
358 ( diameter_fiber + airgap ) / 2.0,
359 1.03 * ( diameter_fiber + airgap ) / 4.0,
362 ( diameter_fiber_cherenkov + airgap ) / 2.0,
363 1.03 * ( diameter_fiber_cherenkov + airgap ) / 4.0,
377 solid_absorber_cher =
new G4SubtractionSolid(
G4String(
"solid_absorber_cher_f1"), solid_absorber_cher, single_cutout_tube_cherenkov
382 solid_absorber_cher =
new G4SubtractionSolid(
G4String(
"solid_absorber_cher_box1"), solid_absorber_cher, single_cutout_box_cherenkov
387 solid_absorber_cher =
new G4SubtractionSolid(
G4String(
"solid_absorber_temp_cher_f1"), solid_absorber_cher, single_cutout_tube_cherenkov
394 diameter_fiber / 2.0,
401 diameter_fiber_cherenkov / 2.0,
420 "absorber_solid_logic_cher",
425 "absorber_solid_logic_scin",
429 material_scintillator,
430 "hdrcalo_single_scintillator_fiber_logic",
440 "hdrcalo_single_cherenkov_fiber_logic",
451 ostringstream name_absorber;
452 name_absorber.str(
"");
455 ostringstream name_scintillator;
456 name_scintillator.str(
"");
459 ostringstream name_cherenkov;
460 name_cherenkov.str(
"");
540 for(
int row=(rowNtow / 2);row>=-rowNtow / 2;row--){
549 ostringstream name_row_twr;
550 name_row_twr.str(
"");
553 DRCalRowLogical, name_row_twr.str().c_str(), base_tower_logic, 0,
false,
OverlapCheck());
558 cout <<
"PHG4ForwardDualReadoutDetector: Building logical volume for single tower done." << endl;
561 return base_tower_logic;
570 cout <<
"PHG4ForwardDualReadoutDetector: Build logical volume for single tower..." << endl;
586 int maxsubtow = (
int) ( (
_tower_dx) / (2 * copperTubeDiam));
590 (2 * copperTubeDiam + addtowsize) / 2.0,
591 (2 * copperTubeDiam + addtowsize) / 2.0,
596 "single_tower_logic",
608 copperTubeDiam / 2.0,
614 diameter_fiber / 2.0,
621 diameter_fiber_cherenkov / 2.0,
640 "absorber_solid_logic",
644 material_scintillator,
645 "hdrcalo_single_scintillator_fiber_logic",
655 "hdrcalo_single_cherenkov_fiber_logic",
664 ostringstream name_absorber;
665 name_absorber.str(
"");
668 ostringstream name_scintillator;
669 name_scintillator.str(
"");
672 ostringstream name_cherenkov;
673 name_cherenkov.str(
"");
679 name_absorber.str().c_str(),
684 name_absorber.str().c_str(),
689 name_absorber.str().c_str(),
694 name_absorber.str().c_str(),
701 name_scintillator.str().c_str(),
706 name_scintillator.str().c_str(),
713 name_cherenkov.str().c_str(),
718 name_cherenkov.str().c_str(),
723 int rowNtow = (
int) ( (
_tower_dx) / (2 * copperTubeDiam + addtowsize));
724 for(
int row=(rowNtow / 2);row>=-rowNtow / 2;row--){
726 auto DRCalRowSolid =
new G4Box(
"DRCalRowBox",
_tower_dx / 2.0, (2 * copperTubeDiam + addtowsize) / 2.0,
_tower_dz / 2.0);
727 auto DRCalRowLogical =
new G4LogicalVolume(DRCalRowSolid,material_air,
"DRCalRowLogical");
729 new G4PVReplica(
"DRCalRowPhysical",single_tower_logic,DRCalRowLogical,
730 kXAxis, rowNtow, 2 * copperTubeDiam + addtowsize);
733 ostringstream name_row_twr;
734 name_row_twr.str(
"");
737 DRCalRowLogical, name_row_twr.str().c_str(), base_tower_logic, 0,
false,
OverlapCheck());
748 cout <<
"PHG4ForwardDualReadoutDetector: Building logical volume for single tower done." << endl;
751 return base_tower_logic;
760 cout <<
"PHG4ForwardDualReadoutDetector: Making Scintillator material..." << endl;
766 const G4int ntab = 31;
773 { 1.37760*
eV, 1.45864*
eV, 1.54980*
eV, 1.65312*
eV, 1.71013*
eV, 1.77120*
eV, 1.83680*
eV, 1.90745*
eV, 1.98375*
eV, 2.06640*
eV,
774 2.10143*
eV, 2.13766*
eV, 2.17516*
eV, 2.21400*
eV, 2.25426*
eV, 2.29600*
eV, 2.33932*
eV, 2.38431*
eV, 2.43106*
eV, 2.47968*
eV,
775 2.53029*
eV, 2.58300*
eV, 2.63796*
eV, 2.69531*
eV, 2.75520*
eV, 2.81782*
eV, 2.88335*
eV, 2.95200*
eV, 3.09960*
eV, 3.54241*
eV,
778 { 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0003, 0.0008, 0.0032,
779 0.0057, 0.0084, 0.0153, 0.0234, 0.0343, 0.0604, 0.0927, 0.1398, 0.2105, 0.2903,
780 0.4122, 0.5518, 0.7086, 0.8678, 1.0000, 0.8676, 0.2311, 0.0033, 0.0012, 0.0000,
782 tab->
AddProperty(
"FASTCOMPONENT", opt_en, scin_fast, ntab);
785 { 1.5749, 1.5764, 1.5782, 1.5803, 1.5815, 1.5829, 1.5845, 1.5862, 1.5882, 1.5904,
786 1.5914, 1.5924, 1.5935, 1.5947, 1.5959, 1.5972, 1.5986, 1.6000, 1.6016, 1.6033,
787 1.6051, 1.6070, 1.6090, 1.6112, 1.6136, 1.6161, 1.6170, 1.6230, 1.62858, 1.65191,
792 { 2.714*
m, 3.619*
m, 5.791*
m, 4.343*
m, 7.896*
m, 5.429*
m, 36.19*
m, 17.37*
m, 36.19*
m, 5.429*
m,
793 13.00*
m, 14.50*
m, 16.00*
m, 18.00*
m, 16.50*
m, 17.00*
m, 14.00*
m, 16.00*
m, 15.00*
m, 14.50*
m,
794 13.00*
m, 12.00*
m, 10.00*
m, 8.000*
m, 7.238*
m, 4.000*
m, 1.200*
m, 0.500*
m, 0.200*
m, 0.200*
m,
796 tab->
AddProperty(
"ABSLENGTH", opt_en, opt_abs, ntab);
809 cout <<
"PHG4ForwardDualReadoutDetector: Making Scintillator material done." << endl;
812 return material_G4_POLYSTYRENE;
821 cout <<
"PHG4ForwardDualReadoutDetector: Making PMMA material..." << endl;
832 const G4int nEntries = 31;
835 { 1.37760*
eV, 1.45864*
eV, 1.54980*
eV, 1.65312*
eV, 1.71013*
eV, 1.77120*
eV, 1.83680*
eV, 1.90745*
eV, 1.98375*
eV, 2.06640*
eV,
836 2.10143*
eV, 2.13766*
eV, 2.17516*
eV, 2.21400*
eV, 2.25426*
eV, 2.29600*
eV, 2.33932*
eV, 2.38431*
eV, 2.43106*
eV, 2.47968*
eV,
837 2.53029*
eV, 2.58300*
eV, 2.63796*
eV, 2.69531*
eV, 2.75520*
eV, 2.81782*
eV, 2.88335*
eV, 2.95200*
eV, 3.09960*
eV, 3.54241*
eV,
839 G4double refractiveIndexWLSfiber[nEntries] =
840 { 1.4852, 1.4859, 1.4867, 1.4877, 1.4882, 1.4888, 1.4895, 1.4903, 1.4911, 1.4920,
841 1.4924, 1.4929, 1.4933, 1.4938, 1.4943, 1.4948, 1.4954, 1.4960, 1.4966, 1.4973,
842 1.4981, 1.4989, 1.4997, 1.5006, 1.5016, 1.5026, 1.5038, 1.5050, 1.5052, 1.5152,
846 { 0.414*
m, 0.965*
m, 2.171*
m, 4.343*
m, 1.448*
m, 4.343*
m, 14.48*
m, 21.71*
m, 8.686*
m, 39.48*
m,
847 48.25*
m, 54.29*
m, 57.91*
m, 54.29*
m, 33.40*
m, 31.02*
m, 43.43*
m, 43.43*
m, 41.36*
m, 39.48*
m,
848 37.76*
m, 36.19*
m, 36.19*
m, 33.40*
m, 31.02*
m, 28.95*
m, 25.55*
m, 24.13*
m, 21.71*
m, 2.171*
m,
854 mptWLSfiber->
AddProperty(
"RINDEX",photonEnergy,refractiveIndexWLSfiber,nEntries);
855 mptWLSfiber->
AddProperty(
"ABSLENGTH",photonEnergy,absWLSfiber,nEntries);
859 cout <<
"PHG4ForwardDualReadoutDetector: Making PMMA material done." << endl;
862 return material_PMMA;
871 cout <<
"PHG4ForwardDualReadoutDetector: Making Scintillator material..." << endl;
884 const G4int nEntriesQuartz = 279;
886 G4double photonEnergyQuartz[nEntriesQuartz] =
887 { 5.9040*
eV, 5.7667*
eV, 5.6356*
eV, 5.5104*
eV, 5.3906*
eV, 5.2759*
eV, 5.1660*
eV, 5.0606*
eV, 4.9594*
eV, 4.8621*
eV,
888 4.7686*
eV, 4.6786*
eV, 4.5920*
eV, 4.5085*
eV, 4.4280*
eV, 4.3503*
eV, 4.2753*
eV, 4.2029*
eV, 4.1328*
eV, 4.0651*
eV,
889 3.9995*
eV, 3.9360*
eV, 3.8745*
eV, 3.8149*
eV, 3.7571*
eV, 3.7010*
eV, 3.6466*
eV, 3.5937*
eV, 3.5424*
eV, 3.4925*
eV,
890 3.4440*
eV, 3.3968*
eV, 3.3509*
eV, 3.3062*
eV, 3.2627*
eV, 3.2204*
eV, 3.1791*
eV, 3.1388*
eV, 3.0996*
eV, 3.0613*
eV,
891 3.0240*
eV, 2.9876*
eV, 2.9520*
eV, 2.9173*
eV, 2.8834*
eV, 2.8502*
eV, 2.8178*
eV, 2.7862*
eV, 2.7552*
eV, 2.7249*
eV,
892 2.6953*
eV, 2.6663*
eV, 2.6380*
eV, 2.6102*
eV, 2.5830*
eV, 2.5564*
eV, 2.5303*
eV, 2.5047*
eV, 2.4797*
eV, 2.4551*
eV,
893 2.4311*
eV, 2.4075*
eV, 2.3843*
eV, 2.3616*
eV, 2.3393*
eV, 2.3175*
eV, 2.2960*
eV, 2.2749*
eV, 2.2543*
eV, 2.2339*
eV,
894 2.2140*
eV, 2.1944*
eV, 2.1752*
eV, 2.1562*
eV, 2.1377*
eV, 2.1194*
eV, 2.1014*
eV, 2.0838*
eV, 2.0664*
eV, 2.0493*
eV,
895 2.0325*
eV, 2.0160*
eV, 1.9997*
eV, 1.9837*
eV, 1.9680*
eV, 1.9525*
eV, 1.9373*
eV, 1.9222*
eV, 1.9074*
eV, 1.8929*
eV,
896 1.8785*
eV, 1.8644*
eV, 1.8505*
eV, 1.8368*
eV, 1.8233*
eV, 1.8100*
eV, 1.7969*
eV, 1.7839*
eV, 1.7712*
eV, 1.7463*
eV,
897 1.7220*
eV, 1.6984*
eV, 1.6755*
eV, 1.6531*
eV, 1.6314*
eV, 1.6102*
eV, 1.5895*
eV, 1.5694*
eV, 1.5498*
eV, 1.5307*
eV,
898 1.5120*
eV, 1.4938*
eV, 1.4760*
eV, 1.4586*
eV, 1.4417*
eV, 1.4251*
eV, 1.4089*
eV, 1.3931*
eV, 1.3776*
eV, 1.3625*
eV,
899 1.3477*
eV, 1.3332*
eV, 1.3190*
eV, 1.3051*
eV, 1.2915*
eV, 1.2782*
eV, 1.2651*
eV, 1.2524*
eV, 1.2398*
eV, 1.2276*
eV,
900 1.2155*
eV, 1.2037*
eV, 1.1922*
eV, 1.1808*
eV, 1.1697*
eV, 1.1587*
eV, 1.1480*
eV, 1.1375*
eV, 1.1271*
eV, 1.1170*
eV,
901 1.1070*
eV, 1.0972*
eV, 1.0876*
eV, 1.0781*
eV, 1.0688*
eV, 1.0597*
eV, 1.0507*
eV, 1.0419*
eV, 1.0332*
eV, 1.0247*
eV,
902 1.0163*
eV, 1.0080*
eV, 0.9999*
eV, 0.9919*
eV, 0.9840*
eV, 0.9763*
eV, 0.9686*
eV, 0.9611*
eV, 0.9537*
eV, 0.9464*
eV,
903 0.9393*
eV, 0.9322*
eV, 0.9253*
eV, 0.9184*
eV, 0.9116*
eV, 0.9050*
eV, 0.8984*
eV, 0.8920*
eV, 0.8856*
eV, 0.8793*
eV,
904 0.8731*
eV, 0.8670*
eV, 0.8610*
eV, 0.8551*
eV, 0.8492*
eV, 0.8434*
eV, 0.8377*
eV, 0.8321*
eV, 0.8266*
eV, 0.8211*
eV,
905 0.8157*
eV, 0.8104*
eV, 0.8051*
eV, 0.7999*
eV, 0.7948*
eV, 0.7897*
eV, 0.7847*
eV, 0.7798*
eV, 0.7749*
eV, 0.7701*
eV,
906 0.7653*
eV, 0.7606*
eV, 0.7560*
eV, 0.7514*
eV, 0.7469*
eV, 0.7424*
eV, 0.7380*
eV, 0.7336*
eV, 0.7293*
eV, 0.7251*
eV,
907 0.7208*
eV, 0.7167*
eV, 0.7126*
eV, 0.7085*
eV, 0.7045*
eV, 0.7005*
eV, 0.6965*
eV, 0.6926*
eV, 0.6888*
eV, 0.6850*
eV,
908 0.6812*
eV, 0.6775*
eV, 0.6738*
eV, 0.6702*
eV, 0.6666*
eV, 0.6630*
eV, 0.6595*
eV, 0.6560*
eV, 0.6525*
eV, 0.6491*
eV,
909 0.6458*
eV, 0.6424*
eV, 0.6391*
eV, 0.6358*
eV, 0.6326*
eV, 0.6294*
eV, 0.6262*
eV, 0.6230*
eV, 0.6199*
eV, 0.6168*
eV,
910 0.6138*
eV, 0.6108*
eV, 0.6078*
eV, 0.6048*
eV, 0.6019*
eV, 0.5990*
eV, 0.5961*
eV, 0.5932*
eV, 0.5904*
eV, 0.5876*
eV,
911 0.5848*
eV, 0.5821*
eV, 0.5794*
eV, 0.5767*
eV, 0.5740*
eV, 0.5714*
eV, 0.5687*
eV, 0.5661*
eV, 0.5636*
eV, 0.5610*
eV,
912 0.5585*
eV, 0.5560*
eV, 0.5535*
eV, 0.5510*
eV, 0.5486*
eV, 0.5462*
eV, 0.5438*
eV, 0.5414*
eV, 0.5391*
eV, 0.5367*
eV,
913 0.5344*
eV, 0.5321*
eV, 0.5298*
eV, 0.5276*
eV, 0.5254*
eV, 0.5231*
eV, 0.5209*
eV, 0.5188*
eV, 0.5166*
eV, 0.5145*
eV,
914 0.5123*
eV, 0.5102*
eV, 0.5081*
eV, 0.5061*
eV, 0.5040*
eV, 0.5020*
eV, 0.4999*
eV, 0.4979*
eV, 0.4959*
eV};
915 G4double refractiveIndexQuartz[nEntriesQuartz] =
916 { 1.5384, 1.5332, 1.5285, 1.5242, 1.5202, 1.5166, 1.5133, 1.5103, 1.5074, 1.5048,
917 1.5024, 1.5001, 1.4980, 1.4960, 1.4942, 1.4924, 1.4908, 1.4892, 1.4878, 1.4864,
918 1.4851, 1.4839, 1.4827, 1.4816, 1.4806, 1.4796, 1.4787, 1.4778, 1.4769, 1.4761,
919 1.4753, 1.4745, 1.4738, 1.4731, 1.4725, 1.4719, 1.4713, 1.4707, 1.4701, 1.4696,
920 1.4691, 1.4686, 1.4681, 1.4676, 1.4672, 1.4668, 1.4663, 1.4660, 1.4656, 1.4652,
921 1.4648, 1.4645, 1.4641, 1.4638, 1.4635, 1.4632, 1.4629, 1.4626, 1.4623, 1.4621,
922 1.4618, 1.4615, 1.4613, 1.4610, 1.4608, 1.4606, 1.4603, 1.4601, 1.4599, 1.4597,
923 1.4595, 1.4593, 1.4591, 1.4589, 1.4587, 1.4586, 1.4584, 1.4582, 1.4580, 1.4579,
924 1.4577, 1.4576, 1.4574, 1.4572, 1.4571, 1.4570, 1.4568, 1.4567, 1.4565, 1.4564,
925 1.4563, 1.4561, 1.4560, 1.4559, 1.4558, 1.4556, 1.4555, 1.4554, 1.4553, 1.4551,
926 1.4549, 1.4546, 1.4544, 1.4542, 1.4540, 1.4539, 1.4537, 1.4535, 1.4533, 1.4531,
927 1.4530, 1.4528, 1.4527, 1.4525, 1.4523, 1.4522, 1.4520, 1.4519, 1.4518, 1.4516,
928 1.4515, 1.4513, 1.4512, 1.4511, 1.4509, 1.4508, 1.4507, 1.4505, 1.4504, 1.4503,
929 1.4502, 1.4500, 1.4499, 1.4498, 1.4497, 1.4496, 1.4494, 1.4493, 1.4492, 1.4491,
930 1.4490, 1.4489, 1.4487, 1.4486, 1.4485, 1.4484, 1.4483, 1.4482, 1.4481, 1.4479,
931 1.4478, 1.4477, 1.4476, 1.4475, 1.4474, 1.4473, 1.4471, 1.4470, 1.4469, 1.4468,
932 1.4467, 1.4466, 1.4465, 1.4464, 1.4462, 1.4461, 1.4460, 1.4459, 1.4458, 1.4457,
933 1.4455, 1.4454, 1.4453, 1.4452, 1.4451, 1.4450, 1.4449, 1.4447, 1.4446, 1.4445,
934 1.4444, 1.4443, 1.4441, 1.4440, 1.4439, 1.4438, 1.4437, 1.4435, 1.4434, 1.4433,
935 1.4432, 1.4431, 1.4429, 1.4428, 1.4427, 1.4426, 1.4424, 1.4423, 1.4422, 1.4420,
936 1.4419, 1.4418, 1.4417, 1.4415, 1.4414, 1.4413, 1.4411, 1.4410, 1.4409, 1.4407,
937 1.4406, 1.4405, 1.4403, 1.4402, 1.4401, 1.4399, 1.4398, 1.4397, 1.4395, 1.4394,
938 1.4392, 1.4391, 1.4389, 1.4388, 1.4387, 1.4385, 1.4384, 1.4382, 1.4381, 1.4379,
939 1.4378, 1.4376, 1.4375, 1.4373, 1.4372, 1.4370, 1.4369, 1.4367, 1.4366, 1.4364,
940 1.4363, 1.4361, 1.4360, 1.4358, 1.4357, 1.4355, 1.4353, 1.4352, 1.4350, 1.4349,
941 1.4347, 1.4345, 1.4344, 1.4342, 1.4340, 1.4339, 1.4337, 1.4335, 1.4334, 1.4332,
942 1.4330, 1.4328, 1.4327, 1.4325, 1.4323, 1.4322, 1.4320, 1.4318, 1.4316, 1.4314,
943 1.4313, 1.4311, 1.4309, 1.4307, 1.4305, 1.4304, 1.4302, 1.4300, 1.4298 };
944 mptWLSfiber->
AddProperty(
"RINDEX",photonEnergyQuartz,refractiveIndexQuartz,nEntriesQuartz);
947 const G4int nEntries_Quartz = 14;
948 G4double PhotonEnergy_Quartz[nEntries_Quartz] =
949 { 2.21*
eV, 2.30*
eV, 2.38*
eV, 2.48*
eV, 2.58*
eV, 2.70*
eV, 2.82*
eV, 2.95*
eV, 3.10*
eV, 3.26*
eV,
950 3.44*
eV, 3.65*
eV, 3.88*
eV, 4.13*
eV };
951 G4double Quartz_Abs[nEntries_Quartz] =
952 { 550.7*
mm, 530.7*
mm, 590.1*
mm, 490.7*
mm, 470.7*
mm, 520.3*
mm, 500.0*
mm, 470.7*
mm, 450.5*
mm, 270.5*
mm,
953 190.1*
mm, 60.9*
mm, 10.6*
mm, 4.0*
mm};
954 mptWLSfiber->
AddProperty(
"ABSLENGTH", PhotonEnergy_Quartz, Quartz_Abs, nEntries_Quartz);
960 cout <<
"PHG4ForwardDualReadoutDetector: Making Scintillator material done." << endl;
963 return material_Quartz;
970 ifstream istream_mapping;
972 if (!istream_mapping.is_open())
974 std::cout <<
"ERROR in PHG4ForwardHcalDetector: Failed to open mapping file " <<
_mapping_tower_file << std::endl;
980 while (getline(istream_mapping, line_mapping))
983 if (line_mapping.find(
"#") != string::npos)
987 std::cout <<
"PHG4ForwardHcalDetector: SKIPPING line in mapping file: " << line_mapping << std::endl;
992 istringstream iss(line_mapping);
998 if (!(iss >> parname >> parval))
1000 cout <<
"ERROR in PHG4ForwardHcalDetector: Failed to read line in mapping file " <<
_mapping_tower_file << std::endl;
1008 std::map<string, G4double>::iterator parit;
1103 _dZ = parit->second *
cm;