ACTARSim
ACTAR TPC Simulation Reference Guide
ActarSimGasDetectorConstruction.cc
Go to the documentation of this file.
1 // - AUTHOR: Hector Alvarez-Pol 04/2008
2 /******************************************************************
3  * Copyright (C) 2005-2016, Hector Alvarez-Pol *
4  * All rights reserved. *
5  * *
6  * License according to GNU LESSER GPL (see lgpl-3.0.txt). *
7  * For the list of contributors see CREDITS. *
8  ******************************************************************/
9 //////////////////////////////////////////////////////////////////
10 /// \class ActarSimGasDetectorConstruction
11 /// Gas volume detector description
12 /////////////////////////////////////////////////////////////////
13 
17 //#include "ActarSimDetectorMessenger.hh"
18 #include "ActarSimROOTAnalysis.hh"
19 #include "ActarSimGasSD.hh"
20 
21 #include "G4Material.hh"
22 #include "G4Box.hh"
23 #include "G4Tubs.hh"
24 #include "G4Cons.hh"
25 #include "G4LogicalVolume.hh"
26 #include "G4PVPlacement.hh"
27 #include "G4RotationMatrix.hh"
28 #include "G4VisAttributes.hh"
29 #include "G4Colour.hh"
30 #include "G4RunManager.hh"
31 #include "G4Transform3D.hh"
32 
33 #include "globals.hh"
34 
35 #include "G4PhysicalConstants.hh"
36 #include "G4SystemOfUnits.hh"
37 
38 //////////////////////////////////////////////////////////////////
39 /// Constructor
40 /// Sets the material and the pointer to the Messenger
43  : detConstruction(det){
44 
45  SetGasPressure(1.01325*bar);
46  SetGasTemperature(293.15*kelvin);
47  //DefineGas();
48  SetBeamShieldMaterial("Iron");
49  SetGasMaterial("D2");
50 
51  //Default value for the volume is a Box
52  SetDetectorGeometry("box");
53 
54  //default size of GasBox (0.5x0.5x0.5 m3)
55  gasBoxSizeX = 0.5 * m;
56  gasBoxSizeY = 0.5 * m;
57  gasBoxSizeZ = 0.5 * m;
58 
59  //default center of the gas (if the gasChamber is a box)
60  gasBoxCenterX = 0.;
61  gasBoxCenterY = 0.;
62  gasBoxCenterZ = 0.;
63 
64  //default size of GasTub (pi x .5 x 0.5 m3 )
65  radiusGasTub = 0.5 * m;
66  lengthGasTub = 0.5 * m;
67 
68  //default size of BeamShieldTub (pi x 0.1 x 0.5 m3 )
70  outerRadiusBeamShieldTub = 0.1001*m;
71  lengthBeamShieldTub = 0.5 * m;
72 
73  // create commands for interactive definition of the calorimeter
75 }
76 
77 //////////////////////////////////////////////////////////////////
78 /// Destructor
80  delete gasMessenger;
81 }
82 
83 //////////////////////////////////////////////////////////////////
84 /// Wrap for the construction functions within the TOF
85 G4VPhysicalVolume* ActarSimGasDetectorConstruction::Construct(G4LogicalVolume* chamberLog) {
86  return ConstructGas(chamberLog);
87 }
88 
89 //////////////////////////////////////////////////////////////////
90 /// Constructs the Gas volume detector elements
91 G4VPhysicalVolume* ActarSimGasDetectorConstruction::ConstructGas(G4LogicalVolume* chamberLog) {
92  //////////////////////////////////////////////////////////////////////
93  // GAS VOLUME
94  // Several geometries are possible. Select the different options using
95  // the messenger commands
96  //////////////////////////////////////////////////////////////////////
97 
98  G4LogicalVolume* gasLog(0); //pointer to logic gas
99  G4VPhysicalVolume* gasPhys(0); //pointer to physic gas
100 
101  if(detectorGeometry == "box"){
102  G4cout << "##################################################################" << G4endl
103  << "###### ActarSimGasDetectorConstruction::ConstructActarTPC() #######" << G4endl
104  << " Box-like gas geometry." << G4endl;
105  G4cout << " Box Parameters: " << G4endl
106  << " gasBoxSizeX = " << gasBoxSizeX/mm
107  << " mm, gasBoxSizeY = " << gasBoxSizeY/mm
108  << " mm, gasBoxSizeZ = " << gasBoxSizeZ/mm << " mm" << G4endl
109  << " gasBoxCenterX = " << gasBoxCenterX/mm
110  << " mm, gasBoxCenterY = " << gasBoxCenterY/mm
111  << " mm, gasBoxCenterZ = " << gasBoxCenterZ << " mm" << G4endl
112  << " gasMaterial: " << gasMaterial << G4endl;
113  G4cout << "##################################################################"<< G4endl;
114 
115 
117  //gas Box size: (266*170*266)mm
118  gasBoxSizeX = 133.*mm;
119  gasBoxSizeY = 85.*mm;
120  gasBoxSizeZ = 133.*mm;
121  //Pad Size : GasBox height from chamber floor = 4.54mm
122  gasBoxCenterX = 0.*mm;
123  gasBoxCenterY = -105.0+gasBoxSizeY+4.54*mm; // gasBox shifted to be at the bottom of chamber and above the pads
124  gasBoxCenterZ = 0.*mm;
125  }
127  //gas Box size: (74*170*138)mm
128  gasBoxSizeX = 37.*mm;
129  gasBoxSizeY = 85.*mm;
130  gasBoxSizeZ = 69.*mm;
131  //Pad Size : GasBox height from chamber floor = 4.54mm
132  gasBoxCenterX = 0.*mm;
133  gasBoxCenterY = -105.0+gasBoxSizeY+4.54*mm; // gasBox shifted to be at the bottom of chamber and above the pads
134  gasBoxCenterZ = 0.*mm;
135  }
136  else {
140 
144  }
145 
146  G4Box* gasBox;
147  gasBox = new G4Box("gasBox",gasBoxSizeX,gasBoxSizeY,gasBoxSizeZ);
148 
149  gasLog = new G4LogicalVolume(gasBox,gasMaterial,"gasLog");
150 
151  gasPhys = new G4PVPlacement(0,
153  gasLog,"gasPhys",chamberLog,false,0);
154 
155  // //--------------------------
156  // // Field Cage wire replaced by a copper foil around the GasBox
157  // //--------------------------
158  // G4double wireFoilSizeX = gasBoxSizeX;
159  // G4double wireFoilSizeY = gasBoxSizeY;
160  // G4double wireFoilSizeZ = 0.00125/2*mm;//That's for 20 um wire with a pitch of 1 mm
161 
162  // G4Box *wireFoil=new G4Box("wireFoilBox",wireFoilSizeX,wireFoilSizeY,wireFoilSizeZ);
163  // wireFoilLog=new G4LogicalVolume(wireFoil,G4Material::GetMaterial("Copper"),"wireFoilBox");
164 
165  // G4double wireFoilPosX = 0.*mm;
166  // G4double wireFoilPosY = -105.0+gasBoxSizeY+4.54*mm;
167  // G4double wireFoilPosZ = gasBoxSizeZ+wireFoilSizeZ;
168 
169  // wireFoilPhys=new G4PVPlacement(0,G4ThreeVector(wireFoilPosX,wireFoilPosY,wireFoilPosZ),
170  // wireFoilLog,"wireFoilBox",chamberLog,false,0);
171 
172  // G4VisAttributes* wireFoilVisAtt= new G4VisAttributes(G4Colour(1.0,0.5,0.));
173  // wireFoilVisAtt->SetVisibility(true);
174  // wireFoilLog->SetVisAttributes(wireFoilVisAtt);
175  }
176  else if(detectorGeometry == "tube"){
177  G4cout << "##################################################################" << G4endl
178  << "######## ActarSimGasDetectorConstruction::ConstructActarTPC() ########" << G4endl
179  << " Tube-like gas geometry." << G4endl;
180  G4cout << " Tube Parameters: " << G4endl
181  << " radiusGasTub = " << radiusGasTub/mm
182  << " mm, lengthGasTub = " << lengthGasTub/mm << " mm" << G4endl
183  << " gasMaterial: " << gasMaterial << G4endl;
184  G4cout << "##################################################################" << G4endl;
185 
186  //centered in (0,0,lengthGasTub) to have origin in the detector entrance
187  //gasBoxCenterZ = lengthGasTub;
188  gasBoxCenterZ = 0.*mm;
189 
190  G4Tubs* gasTub;
191  gasTub = new G4Tubs("gasTub",0*mm,radiusGasTub,lengthGasTub,0,twopi);
192 
193  gasLog = new G4LogicalVolume(gasTub,gasMaterial,"gasLog");
194 
195  gasPhys = new G4PVPlacement(0,
197  gasLog,"gasPhys",chamberLog,false,0);
198  }
199  else {
200  G4cout << G4endl
201  << " ERROR in ActarSimGasDetectorConstruction::ConstructActarTPC(). No valid volume type defined "
202  << G4endl;
203  }
204 
205  G4LogicalVolume* beamShieldLog(0); //pointer to logic
206  G4VPhysicalVolume* beamShieldPhys; //pointer to physic
207 
208  //if( beamShieldPhys){;}
209 
210  if( beamShieldGeometry == "tube"){
211  G4cout << "##################################################################" << G4endl
212  << "######## ActarSimGasDetectorConstruction::ConstructActarTPC() ########" << G4endl
213  << " Beam shielding geometry." << G4endl;
214  G4cout << " Tube Parameters: " << G4endl
215  << " innerRadiusBeamShieldTub = " << innerRadiusBeamShieldTub/mm
216  << " mm, outerRadiusBeamShieldTub = " << outerRadiusBeamShieldTub/mm << " mm" << G4endl
217  << " lengthBeamShieldTub = " << lengthBeamShieldTub/mm
218  << "mm, beamShieldMaterial: " << beamShieldMaterial << G4endl;
219  G4cout << "##################################################################" << G4endl;
220 
221  G4Tubs* beamShieldTub;
222  beamShieldTub = new G4Tubs("beamShieldTub",innerRadiusBeamShieldTub,
224 
225  beamShieldLog = new G4LogicalVolume(beamShieldTub,beamShieldMaterial,"beamShieldLog");
226 
227  beamShieldPhys = new G4PVPlacement(0,
229  beamShieldLog,"beamShieldPhys",gasLog,false,0);
230  }
231 
232  //------------------------------------------------
233  // Sensitive detectors
234  //------------------------------------------------
235  gasLog->SetSensitiveDetector( detConstruction->GetGasSD() );
236 
237  //------------------------------------------------------------------
238  // Visualization attributes
239  //------------------------------------------------------------------
240  //worldLog->SetVisAttributes (G4VisAttributes::Invisible);
241  G4VisAttributes* gasVisAtt = new G4VisAttributes(G4Colour(1.0,1.0,0.0));
242  G4VisAttributes* beamShieldVisAtt = new G4VisAttributes(G4Colour(1.0,0.0,1.0));
243  gasVisAtt->SetVisibility(true);
244  gasLog->SetVisAttributes(gasVisAtt);
245  if( beamShieldGeometry == "tube") beamShieldLog->SetVisAttributes(beamShieldVisAtt);
246 
247  return gasPhys;
248 }
249 
250 //////////////////////////////////////////////////////////////////
251 /// Sets the material the gas is made of
252 ///
253 /// STP used are P = 1atm and T = 20ÂșC
255  //Gas Pressure & Temperature
256  G4double pressure=GetGasPressure();
257  G4double temperature=GetGasTemperature();
258 
259  G4double density;
260  G4double a; // atomic mass
261  G4double z; // atomic number
262  G4double n;
263 
264  //Gas Mix
265  //const G4int NGasMix=NumberOfGasMix;
266 
267  //HAPOL NOTE: REMOVE REPETITIONS
268  G4Element* ele_H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.00794*g/mole);
269  //G4Element* ele_D = new G4Element("Deuterium","D" , z= 1., a= 2.0140*g/mole);
270  //G4Element* ele_He = new G4Element("Helium" ,"He", z= 2., a= 4.0026*g/mole);
271  G4Element* ele_C = new G4Element("Carbon" ,"C", z=6., a= 12.0107*g/mole);
272  //G4Element* ele_N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.00674*g/mole);
273  //G4Element* ele_O = new G4Element("Oxygen" ,"O" , z= 8., a= 15.9994*g/mole);
274  G4Element* ele_F = new G4Element("Fluorine" ,"F", z=9., a=18.9984032*g/mole);
275  //G4Element* ele_Na = new G4Element("Sodium" ,"Na", z=11., a= 22.98977*g/mole);
276  //G4Element* ele_S = new G4Element("Sulphur" ,"S", z=16., a= 32.066*g/mole);
277  //G4Element* ele_Ar = new G4Element("Argon" ,"Ar", z=18., a= 39.9481*g/mole);
278  /*
279  G4Element* ele_Zn = new G4Element("Zinc", "Zn", z=30., a= 65.39*g/mole);
280  G4Element* ele_Ge = new G4Element("Germanium","Ge", z=32., a= 72.61*g/mole);
281  G4Element* ele_Br = new G4Element("Bromine" ,"Br", z=35., a= 79.904*g/mole);
282  G4Element* ele_Cd = new G4Element("Cadmium" ,"Cd", z=48., a= 112.411*g/mole);
283  G4Element* ele_Te = new G4Element("Tellurium","Te", z=52., a= 127.60*g/mole);
284  G4Element* ele_I = new G4Element("Iodine" ,"I", z=53., a= 126.90447*g/mole);
285  G4Element* ele_Cs = new G4Element("Cesium" ,"Cs", z=55., a= 132.90545*g/mole);
286  G4Element* ele_Ba = new G4Element("Barium" ,"Ba", z=56., a= 137.327*g/mole);
287  G4Element* ele_La = new G4Element("Lanthanum","La", z=57., a= 138.9055*g/mole);
288  G4Element* ele_Ce = new G4Element("Cerium" ,"Ce", z=58., a= 140.116*g/mole);
289  G4Element* ele_Lu = new G4Element("Lutecium" ,"Lu", z=71., a= 174.967*g/mole);
290  G4Element* ele_W = new G4Element("Tungsten" ,"W" , z=74., a= 183.84*g/mole);
291  G4Element* ele_Pb = new G4Element("Lead" ,"Pb", z=82., a= 207.20*g/mole);
292  G4Element* ele_Bi = new G4Element("Bismuth" ,"Bi", z=83., a= 208.98038*g/mole);
293  */
294 
295  G4int ncomponents, natoms;
296  G4double fractionmass, abundance;
297 
298  G4double Vm=0.08206*temperature*atmosphere/(pressure*kelvin);
299 
300  G4Isotope* iso_H2= new G4Isotope("iso_H2",z=1,n=2, a=2.0140*g/mole);
301  G4Element* ele_D= new G4Element("Deuterium","D" , ncomponents=1);
302  ele_D->AddIsotope(iso_H2, abundance = 100.*perCent);
303 
304  //material definition by user's T and P
305 
306  //H2 (default 0.083812*mg/cm3 STP)
307  //density = (0.083812*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
308  density = (2*1.00794/Vm)*mg/cm3;
309  G4Material* H2 =
310  new G4Material("H2", density, ncomponents=2, kStateGas, temperature, pressure);
311  H2->AddElement(ele_H, natoms=1);
312  H2->AddElement(ele_H, natoms=1);
313 
314  //D2 (default 0.16746*mg/cm3 STP)
315  //density =(0.16746*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
316  density = (2*2.0140/Vm)*mg/cm3;
317  G4Material* D2 =
318  new G4Material("D2", density, ncomponents=2, kStateGas, temperature, pressure);
319  D2->AddElement(ele_D, natoms=1);
320  D2->AddElement(ele_D, natoms=1);
321 
322  //He (default 0.16642*mg/cm3 STP)
323  //density =(0.16642*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
324  density = (4.0026/Vm)*mg/cm3;
325  G4Material* He =
326  new G4Material("He", z=2, a=4.0026*g/mole, density, kStateGas, temperature, pressure);
327 
328  //Ar (default 0.16642*mg/cm3 STP)
329  //density =(0.16642*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
330  density = (39.9481/Vm)*mg/cm3;
331  G4Material* Ar =
332  new G4Material("Ar", z=2, a=39.9481*g/mole, density, kStateGas, temperature, pressure);
333 
334  //CF4 (default 3.6586*mg/cm3 STP)
335  //density =(3.6586*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
336  density = ((12.0107+4*18.9984032)/Vm)*mg/cm3;
337  G4Material* CF4 =
338  new G4Material("CF4", density, ncomponents=2, kStateGas, temperature, pressure);
339  CF4->AddElement(ele_C, natoms=1);
340  CF4->AddElement(ele_F, natoms=4);
341 
342  //Methane (default 0.66697*mg/cm3 STP)
343  //density = (0.6669*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
344  density = ((12.0107+4*1.00794)/Vm)*mg/cm3;
345  G4Material* CH4 =
346  new G4Material("CH4", density, ncomponents=2, kStateGas, temperature, pressure) ;
347  CH4->AddElement(ele_C,1);
348  CH4->AddElement(ele_H,4);
349 
350  //Isobutane (default 2.41464*mg/cm3 STP)
351  //density = (2.41464*293.15*kelvin*pressure)/(1.01325*bar*temperature)*mg/cm3;
352  density = ((4*12.0107+10*1.00794)/Vm)*mg/cm3;
353  G4Material* iC4H10 =
354  new G4Material("iC4H10", density, ncomponents=2, kStateGas, temperature, pressure) ;
355  iC4H10->AddElement(ele_C,4);
356  iC4H10->AddElement(ele_H,10);
357 
358  if(mat=="H2"){
359  gasMaterial = H2;
361  }
362  else if(mat=="D2"){
363  gasMaterial = D2;
365  }
366  else if(mat=="He"){
367  gasMaterial = He;
369  }
370  else if(mat=="Ar"){
371  gasMaterial = Ar;
373  }
374  else if(mat=="CF4"){
375  gasMaterial = CF4;
377  }
378  else if(mat=="CH4"){
379  gasMaterial = CH4;
381  }
382  else if(mat=="iC4H10"){
383  gasMaterial = iC4H10;
385  }
386  else if(mat=="GasMix"){
387 
388  density = 0*mg/cm3;
389  G4double DensitySum=0;
390  //G4double FractionMass[NGasMix];
391  G4double FractionMass[10];
392  //G4Material pttoMaterial[NGasMix];
393  G4Material *pttoMaterial[10];
394 
395  for(G4int i=0;i<NumberOfGasMix;i++) {
396  //pttoMaterial[i] = G4Material::GetMaterial(GasMat[i]);
397  if(gasMixMaterial[i]=="H2")pttoMaterial[i]=H2;
398  else if(gasMixMaterial[i]=="D2")pttoMaterial[i]=D2;
399  else if(gasMixMaterial[i]=="He")pttoMaterial[i]=He;
400  else if(gasMixMaterial[i]=="Ar")pttoMaterial[i]=Ar;
401  else if(gasMixMaterial[i]=="CF4")pttoMaterial[i]=CF4;
402  else if(gasMixMaterial[i]=="CH4")pttoMaterial[i]=CH4;
403  else if(gasMixMaterial[i]=="iC4H10")pttoMaterial[i]=iC4H10;
404 
405  density+= ((gasMixRatio[i]*pttoMaterial[i]->GetDensity()));
406  //G4cout <<" Gas Mat "<<gasMixMaterial[i]<<" Gas Ratio "<<gasMixRatio[i]<<" Mat Density "<<gasMixRatio[i]*pttoMaterial[i]->GetDensity()*cm3/mg<< G4endl;
407  DensitySum+=pttoMaterial[i]->GetDensity();
408  }
409 
410  for(G4int i=0;i<NumberOfGasMix;i++) {
411  FractionMass[i]=pttoMaterial[i]->GetDensity()/DensitySum;
412  }
413 
414  G4Material* GasMix =
415  new G4Material("GasMix", density, ncomponents=NumberOfGasMix, kStateGas, temperature, pressure);
416 
417  for(G4int i=0;i<NumberOfGasMix;i++) {
418  GasMix->AddMaterial( pttoMaterial[i], fractionmass = FractionMass[i] ) ;
419  }
420 
421  gasMaterial = GasMix;
423  }
424 }
425 
426 //////////////////////////////////////////////////////////////////
427 /// Sets the material the medium is made of
429  G4Material* pttoMaterial = G4Material::GetMaterial(mat);
430  if (pttoMaterial) beamShieldMaterial = pttoMaterial;
431 }
432 
433 //////////////////////////////////////////////////////////////////
434 /// Sets the geometry of the detector (box or tube)
436  detectorGeometry = type;
437 }
438 
439 //////////////////////////////////////////////////////////////////
440 /// Sets the geometry of the detector (box or tube)
442  beamShieldGeometry = type;
443 }
444 
445 //////////////////////////////////////////////////////////////////
446 /// Updates Gas detector
448  // Construct(detConstruction->GetWorldLogicalVolume());
449  // G4RunManager::GetRunManager()->
450  // DefineWorldVolume(detConstruction->GetWorldPhysicalVolume());
452  G4RunManager::GetRunManager()->
453  DefineWorldVolume(detConstruction->GetChamberPhysicalVolume());
454 }
455 
456 //////////////////////////////////////////////////////////////////
457 /// Prints Gas volume detector parameters
459  G4cout << "##################################################################" << G4endl
460  << "## ActarSimGasDetectorConstruction::PrintDetectorParameters() ###" << G4endl
461  << " The gas volume is a " ;
462  if(detectorGeometry == "box")
463  G4cout << "box; its parameters are:" << G4endl;
464  if(detectorGeometry == "tube")
465  G4cout << "tube; its parameters are:" << G4endl;
466  G4cout << " The gas material is: " << gasMaterial << G4endl;
467  if(detectorGeometry == "box")
468  G4cout << " The gasBox size is : " << gasBoxSizeX/mm << "x" << gasBoxSizeY/mm
469  << "x" << gasBoxSizeZ/mm << " mm3 " << G4endl << G4endl ;
470  if(detectorGeometry == "tube")
471  G4cout << " The gasTube parameters are: " << G4endl
472  << " radiusGasTub = " << radiusGasTub/mm
473  << "mm, lengthGasTub = " << lengthGasTub/mm << " mm" << G4endl ;
474  if( beamShieldGeometry == "tube"){
475  G4cout << " The beam shielding parameters are:" << G4endl
476  << " innerRadiusBeamShieldTub = " << innerRadiusBeamShieldTub/mm
477  << " mm, outerRadiusBeamShieldTub = " << outerRadiusBeamShieldTub/mm << " mm" << G4endl
478  << " lengthBeamShieldTub = " << lengthBeamShieldTub/mm
479  << " mm, beamShieldMaterial: " << beamShieldMaterial << G4endl;
480  }
481  G4cout << "##################################################################"
482  << G4endl;
483 }
G4double lengthGasTub
Length of the Gas Tube.
G4int NumberOfGasMix
Number of gases in the gas mix (maximum 10)
G4VPhysicalVolume * ConstructGas(G4LogicalVolume *)
Constructs the Gas volume detector elements.
void SetBeamShieldMaterial(G4String)
Sets the material the medium is made of.
void PrintDetectorParameters()
Prints Gas volume detector parameters.
G4double innerRadiusBeamShieldTub
Inner radius of the beam shielding tube.
G4double outerRadiusBeamShieldTub
Outer radius of the beam shielding tube.
G4VPhysicalVolume * Construct(G4LogicalVolume *)
Wrap for the construction functions within the TOF.
ActarSimGasDetectorConstruction(ActarSimDetectorConstruction *)
void SetBeamShieldGeometry(G4String)
Sets the geometry of the detector (box or tube)
G4double gasBoxSizeY
Gas Box Y half-lengths.
G4String gasMixMaterial[10]
List of gas materials.
void SetDetectorGeometry(G4String)
Sets the geometry of the detector (box or tube)
G4Material * gasMaterial
Pointer to the gas material.
ActarSimGasDetectorMessenger * gasMessenger
Pointer to the Messenger.
G4double gasMixRatio[10]
List of gas ratios in the mix.
G4double gasBoxSizeZ
Gas Box Z half-lengths.
G4double radiusGasTub
Radius of the Gas Tube.
G4double gasBoxSizeX
Gas Box X half-lengths.
G4double lengthBeamShieldTub
Length of the beam shielding tube.
G4Material * beamShieldMaterial
Pointer to the beam shield material.
ActarSimDetectorConstruction * detConstruction
Pointer to the global detector construction.
G4String beamShieldGeometry
Type of the detector geometry (tube)
G4String detectorGeometry
Type of the detector geometry (box or tube)