25 #include <phparameter/PHParameters.h>
29 #include <Geant4/G4Box.hh>
30 #include <Geant4/G4Polycone.hh>
31 #include <Geant4/G4Color.hh>
32 #include <Geant4/G4LogicalVolume.hh>
33 #include <Geant4/G4Material.hh>
34 #include <Geant4/G4PVPlacement.hh>
35 #include <Geant4/G4SystemOfUnits.hh>
36 #include <Geant4/G4VisAttributes.hh>
45 double bp_r(
double z_cm){
return 0.05025461*z_cm-0.180808;}
46 double rmax(
double z_cm){
return 0.6624*z_cm;}
53 const std::string &dnam)
55 , m_Params(parameters)
81 double overall_z_pos = 150 *
cm;
82 double overall_gas_length = 144 *
cm;
85 double z_m_1 = overall_z_pos;
86 double t_m_1 = 0.02*
cm;
89 double z_aero = z_m_1+t_m_1;
90 double t_aero = 4.*
cm;
93 double z_PMMA = z_aero+t_aero;
97 double z_C2F6 = z_PMMA+t_PMMA;
98 double t_C2F6 = overall_gas_length;
101 double z_mr_1 = z_C2F6+t_C2F6;
102 double t_mr_1 = 0.1*
mm;
105 double z_mr_2 = z_mr_1+t_mr_1;
106 double t_mr_2 = 0.05*
mm;
109 double z_m_2 = z_mr_2+t_mr_2;
110 double t_m_2 = 0.02*
cm;
112 addDetectorSection( logicWorld ,
"RICH_mylar_ent" , z_m_1 , t_m_1 ,
"mylar" ,
"cyan" );
113 addDetectorSection( logicWorld ,
"RICH_aerogel" , z_aero , t_aero ,
"aerogel" ,
"gray" );
115 addDetectorSection( logicWorld ,
"RICH_C2F6" , z_C2F6 , t_C2F6 ,
"C2F6" ,
"magenta" );
116 addDetectorSection( logicWorld ,
"RICH_mirror_l1" , z_mr_1 , t_mr_1 ,
"SiO2" ,
"white" );
117 addDetectorSection( logicWorld ,
"RICH_mirror_l2" , z_mr_2 , t_mr_2 ,
"cf_epo" ,
"yellow" );
118 addDetectorSection( logicWorld ,
"RICH_mylar_ext" , z_m_2 , t_m_2 ,
"mylar" ,
"cyan" );
126 cout <<
"EicFRich Detector:" << endl;
127 if (what ==
"ALL" || what ==
"VOLUME")
129 cout <<
"Version 0.1" << endl;
130 cout <<
"Parameters:" << endl;
139 G4int ncomponents, natoms;
141 if(identifier==
"mylar"){
144 else if(identifier==
"C2F6"){
145 G4_mat =
new G4Material(
"C2F6", density = 0.0057 *
g /
cm3, ncomponents = 2);
149 else if(identifier==
"PMMA"){
150 G4_mat =
new G4Material(
"PMMA", density = 1.18 *
g /
cm3, ncomponents = 3);
155 else if(identifier==
"SiO2"){
156 G4_mat =
new G4Material(
"SiO2", density = 2.5 *
g /
cm3 , ncomponents = 2);
160 else if(identifier==
"aerogel"){
168 G4_mat =
new G4Material(
"aerogel", density = 0.094 *
g /
cm3 , ncomponents = 2);
172 else if(identifier==
"cf_epo"){
185 G4_mat =
new G4Material(
"CarbonFiber", density = 1.750*
g/
cm3, natoms=2);
194 double z_det [] = {z_pos,z_pos+thick};
195 double rin [2] = {0};
196 double rout[2] = {0};
198 for(
int i = 0 ; i < 2 ; i++){
199 rin [i] =
bp_r(z_det[i]);
200 rout[i] =
rmax(z_det[i]);