Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc (Version 11.3.0) and /examples/extended/electromagnetic/TestEm0/src/DetectorConstruction.cc (Version 8.0)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 /// \file electromagnetic/TestEm0/src/Detector    
 27 /// \brief Implementation of the DetectorConst    
 28 //                                                
 29                                                   
 30 //                                                
 31 //                                                
 32 //                                                
 33                                                   
 34 //....oooOO0OOooo........oooOO0OOooo........oo    
 35 //....oooOO0OOooo........oooOO0OOooo........oo    
 36                                                   
 37 #include "DetectorConstruction.hh"                
 38                                                   
 39 #include "DetectorMessenger.hh"                   
 40                                                   
 41 #include "G4Box.hh"                               
 42 #include "G4GeometryManager.hh"                   
 43 #include "G4LogicalVolume.hh"                     
 44 #include "G4LogicalVolumeStore.hh"                
 45 #include "G4Material.hh"                          
 46 #include "G4NistManager.hh"                       
 47 #include "G4PVPlacement.hh"                       
 48 #include "G4PhysicalVolumeStore.hh"               
 49 #include "G4SolidStore.hh"                        
 50 #include "G4SystemOfUnits.hh"                     
 51 #include "G4UnitsTable.hh"                        
 52                                                   
 53 //....oooOO0OOooo........oooOO0OOooo........oo    
 54                                                   
 55 DetectorConstruction::DetectorConstruction()      
 56 {                                                 
 57   fBoxSize = 1 * mm;                              
 58   DefineMaterials();                              
 59   SetMaterial("Germanium");                       
 60   fDetectorMessenger = new DetectorMessenger(t    
 61 }                                                 
 62                                                   
 63 //....oooOO0OOooo........oooOO0OOooo........oo    
 64                                                   
 65 DetectorConstruction::~DetectorConstruction()     
 66 {                                                 
 67   delete fDetectorMessenger;                      
 68 }                                                 
 69                                                   
 70 //....oooOO0OOooo........oooOO0OOooo........oo    
 71                                                   
 72 void DetectorConstruction::DefineMaterials()      
 73 {                                                 
 74   //                                              
 75   // define Elements                              
 76   //                                              
 77   G4double z, a;                                  
 78                                                   
 79   G4Element* H = new G4Element("Hydrogen", "H"    
 80   G4Element* C = new G4Element("Carbon", "C",     
 81   G4Element* N = new G4Element("Nitrogen", "N"    
 82   G4Element* O = new G4Element("Oxygen", "O",     
 83   G4Element* Ge = new G4Element("Germanium", "    
 84   G4Element* Pb = new G4Element("Lead", "Pb",     
 85   G4Element* Bi = new G4Element("Bismuth", "Bi    
 86                                                   
 87   //                                              
 88   // define materials                             
 89   //                                              
 90   G4double density;                               
 91   G4int ncomponents, natoms;                      
 92   G4double fractionmass;                          
 93                                                   
 94   G4Material* Air = new G4Material("Air", dens    
 95   Air->AddElement(N, fractionmass = 70. * perC    
 96   Air->AddElement(O, fractionmass = 30. * perC    
 97                                                   
 98   G4Material* H2l = new G4Material("H2liquid",    
 99   H2l->AddElement(H, fractionmass = 1.);          
100                                                   
101   G4Material* H2O = new G4Material("Water", de    
102   H2O->AddElement(H, natoms = 2);                 
103   H2O->AddElement(O, natoms = 1);                 
104   /// H2O->SetChemicalFormula("H_2O");            
105   H2O->GetIonisation()->SetMeanExcitationEnerg    
106                                                   
107   G4Material* steam = new G4Material("WaterSte    
108   steam->AddMaterial(H2O, fractionmass = 1.);     
109   steam->GetIonisation()->SetMeanExcitationEne    
110                                                   
111   G4Material* BGO = new G4Material("BGO", dens    
112   BGO->AddElement(O, natoms = 12);                
113   BGO->AddElement(Ge, natoms = 3);                
114   BGO->AddElement(Bi, natoms = 4);                
115                                                   
116   new G4Material("Aluminium", z = 13., a = 26.    
117   new G4Material("Silicon", z = 14., a = 28.09    
118   new G4Material("liquidArgon", z = 18., a = 3    
119   new G4Material("Iron", z = 26., a = 55.85 *     
120   new G4Material("Copper", z = 29., a = 63.55     
121   new G4Material("Germanium", z = 32., a = 72.    
122   new G4Material("Silver", z = 47., a = 107.87    
123   new G4Material("Tungsten", z = 74., a = 183.    
124   new G4Material("Lead", z = 82., a = 207.19 *    
125   new G4Material("Uranium", z = 92., a = 238.0    
126                                                   
127   G4Material* ams = new G4Material("ams", dens    
128   ams->AddElement(Pb, fractionmass = 94.81 * p    
129   ams->AddElement(C, fractionmass = 4.79 * per    
130   ams->AddElement(H, fractionmass = 0.40 * per    
131                                                   
132   G4Material* argonGas =                          
133     new G4Material("ArgonGas", z = 18, a = 39.    
134                    273.15 * kelvin, 1 * atmosp    
135                                                   
136   G4Material* butane = new G4Material("Isobuta    
137                                       kStateGa    
138   butane->AddElement(C, natoms = 4);              
139   butane->AddElement(H, natoms = 10);             
140                                                   
141   G4Material* ArButane = new G4Material("Argon    
142                                         kState    
143   ArButane->AddMaterial(argonGas, fractionmass    
144   ArButane->AddMaterial(butane, fractionmass =    
145                                                   
146   /// exercise: Xenon gas                         
147   //                                              
148   G4Element* Xe = new G4Element("Xenon", "Xe",    
149                                                   
150   // XenonGas0 (NTP)                              
151   G4double temperature0 = 293.15 * kelvin;        
152   G4double pressure0 = 1 * atmosphere;            
153   G4double density0 = 2.953 * mg / cm3;           
154   G4Material* matXe0 =                            
155     new G4Material("XenonGas0", density0, ncom    
156   matXe0->AddElement(Xe, natoms = 1);             
157                                                   
158   // XenonGas1                                    
159   G4double temperature1 = 293.15 * kelvin;        
160   G4double pressure1 = 50 * atmosphere;           
161   G4double density1 = density0 * (pressure1 /     
162   G4Material* matXe1 =                            
163     new G4Material("XenonGas1", density1, ncom    
164   matXe1->AddElement(Xe, natoms = 1);             
165                                                   
166   ////G4cout << *(G4Material::GetMaterialTable    
167 }                                                 
168                                                   
169 //....oooOO0OOooo........oooOO0OOooo........oo    
170                                                   
171 G4VPhysicalVolume* DetectorConstruction::Const    
172 {                                                 
173   // the geometry is created once                 
174   if (fBox) {                                     
175     return fBox;                                  
176   }                                               
177                                                   
178   G4Box* sBox = new G4Box("Container",  // its    
179                           fBoxSize / 2, fBoxSi    
180                                                   
181   G4LogicalVolume* lBox = new G4LogicalVolume(    
182                                                   
183                                                   
184                                                   
185   fBox = new G4PVPlacement(0,  // no rotation     
186                            G4ThreeVector(0., 0    
187                            lBox,  // its logic    
188                            fMaterial->GetName(    
189                            0,  // its mother      
190                            false,  // no boole    
191                            0);  // copy number    
192                                                   
193   // always return the root volume                
194   //                                              
195   return fBox;                                    
196 }                                                 
197                                                   
198 //....oooOO0OOooo........oooOO0OOooo........oo    
199                                                   
200 void DetectorConstruction::PrintParameters() c    
201 {                                                 
202   G4cout << "\n The Box is " << G4BestUnit(fBo    
203          << G4endl;                               
204 }                                                 
205                                                   
206 //....oooOO0OOooo........oooOO0OOooo........oo    
207                                                   
208 #include "G4RunManager.hh"                        
209                                                   
210 void DetectorConstruction::SetMaterial(const G    
211 {                                                 
212   // search the material by its name, or build    
213   G4Material* pttoMaterial = G4NistManager::In    
214                                                   
215   if (pttoMaterial) {                             
216     fMaterial = pttoMaterial;                     
217     if (fBox) {                                   
218       fBox->GetLogicalVolume()->SetMaterial(fM    
219     }                                             
220     G4RunManager::GetRunManager()->PhysicsHasB    
221     G4cout << "\n " << fMaterial << G4endl;       
222   }                                               
223   else {                                          
224     G4cout << "\n--> warning from DetectorCons    
225            << " not found" << G4endl;             
226   }                                               
227 }                                                 
228                                                   
229 //....oooOO0OOooo........oooOO0OOooo........oo    
230