Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /// \file runAndEvent/RE03/src/RE03DetectorCon << 27 /// \brief Implementation of the RE03DetectorC << 28 // 26 // >> 27 // $Id: RE03DetectorConstruction.cc,v 1.1 2007-11-13 19:55:43 asaim Exp $ >> 28 // GEANT4 tag $Name: geant4-09-04-patch-02 $ 29 // 29 // >> 30 // 30 31 31 #include "RE03DetectorConstruction.hh" 32 #include "RE03DetectorConstruction.hh" 32 33 >> 34 #include "G4Material.hh" 33 #include "G4Box.hh" 35 #include "G4Box.hh" 34 #include "G4Colour.hh" << 35 #include "G4LogicalVolume.hh" 36 #include "G4LogicalVolume.hh" 36 #include "G4Material.hh" << 37 #include "G4PVPlacement.hh" >> 38 >> 39 #include "G4VisAttributes.hh" >> 40 #include "G4Colour.hh" >> 41 >> 42 #include "G4SDManager.hh" 37 #include "G4MultiFunctionalDetector.hh" 43 #include "G4MultiFunctionalDetector.hh" 38 #include "G4NistManager.hh" << 44 #include "G4VPrimitiveScorer.hh" 39 #include "G4PSEnergyDeposit.hh" 45 #include "G4PSEnergyDeposit.hh" 40 #include "G4PSNofStep.hh" << 41 #include "G4PSTrackLength.hh" 46 #include "G4PSTrackLength.hh" 42 #include "G4PVPlacement.hh" << 47 #include "G4PSNofStep.hh" 43 #include "G4SDManager.hh" << 44 #include "G4SDParticleFilter.hh" 48 #include "G4SDParticleFilter.hh" 45 #include "G4SystemOfUnits.hh" << 49 46 #include "G4VPrimitiveScorer.hh" << 47 #include "G4VisAttributes.hh" << 48 #include "G4ios.hh" 50 #include "G4ios.hh" 49 51 50 //....oooOO0OOooo........oooOO0OOooo........oo << 51 RE03DetectorConstruction::RE03DetectorConstruc 52 RE03DetectorConstruction::RE03DetectorConstruction() 52 : G4VUserDetectorConstruction(), << 53 :constructed(false) 53 fAir(0), << 54 {;} 54 fWater(0), << 55 fWorldPhys(0), << 56 fPhantomPhys(0), << 57 fConstructed(false) << 58 { << 59 ; << 60 } << 61 55 62 //....oooOO0OOooo........oooOO0OOooo........oo << 63 RE03DetectorConstruction::~RE03DetectorConstru 56 RE03DetectorConstruction::~RE03DetectorConstruction() 64 { << 57 {;} 65 ; << 66 } << 67 58 68 //....oooOO0OOooo........oooOO0OOooo........oo << 69 G4VPhysicalVolume* RE03DetectorConstruction::C 59 G4VPhysicalVolume* RE03DetectorConstruction::Construct() 70 { 60 { 71 if (!fConstructed) { << 61 if(!constructed) 72 fConstructed = true; << 62 { >> 63 constructed = true; 73 DefineMaterials(); 64 DefineMaterials(); 74 SetupGeometry(); 65 SetupGeometry(); 75 } 66 } 76 return fWorldPhys; << 67 return worldPhys; 77 } 68 } 78 69 79 //....oooOO0OOooo........oooOO0OOooo........oo << 80 void RE03DetectorConstruction::DefineMaterials 70 void RE03DetectorConstruction::DefineMaterials() 81 { << 71 { 82 //-------- NIST Materials ------------------ << 72 G4String name, symbol; //a=mass of a mole; 83 // Material Information imported from NIST << 73 G4double a, z, density; //z=mean number of protons; 84 G4NistManager* NISTman = G4NistManager::Inst << 74 85 fWater = NISTman->FindOrBuildMaterial("G4_WA << 75 G4int ncomponents, natoms; 86 fAir = NISTman->FindOrBuildMaterial("G4_AIR" << 76 G4double fractionmass; 87 } << 88 77 89 //....oooOO0OOooo........oooOO0OOooo........oo << 90 void RE03DetectorConstruction::SetupGeometry() << 91 { << 92 // 78 // 93 // World << 79 // define Elements 94 // 80 // 95 G4VSolid* worldSolid = new G4Box("World", 2. << 81 96 G4LogicalVolume* worldLogical = new G4Logica << 82 a = 1.01*g/mole; 97 fWorldPhys = new G4PVPlacement(0, G4ThreeVec << 83 G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a); >> 84 >> 85 a = 14.01*g/mole; >> 86 G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a); >> 87 >> 88 a = 16.00*g/mole; >> 89 G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a); 98 90 99 // 91 // 100 // Phantom << 92 // define a material from elements. case 1: chemical molecule >> 93 // >> 94 >> 95 density = 1.000*g/cm3; >> 96 water = new G4Material(name="Water", density, ncomponents=2); >> 97 water->AddElement(H, natoms=2); >> 98 water->AddElement(O, natoms=1); >> 99 101 // 100 // 102 G4VSolid* phantomSolid = new G4Box("Calor", << 101 // define a material from elements. case 2: mixture by fractional mass 103 G4LogicalVolume* phantomLogical = new G4Logi << 104 fPhantomPhys = << 105 new G4PVPlacement(0, G4ThreeVector(), phan << 106 // 102 // >> 103 >> 104 density = 1.290*mg/cm3; >> 105 air = new G4Material(name="Air" , density, ncomponents=2); >> 106 air->AddElement(N, fractionmass=0.7); >> 107 air->AddElement(O, fractionmass=0.3); >> 108 } >> 109 >> 110 void RE03DetectorConstruction::SetupGeometry() >> 111 { >> 112 // >> 113 // World >> 114 // >> 115 G4VSolid* worldSolid = new G4Box("World",2.*m,2.*m,2.*m); >> 116 G4LogicalVolume* worldLogical = new G4LogicalVolume(worldSolid,air,"World"); >> 117 worldPhys = new G4PVPlacement(0,G4ThreeVector(),worldLogical,"World", >> 118 0,false,0); >> 119 >> 120 // >> 121 // Phantom >> 122 // >> 123 G4VSolid* phantomSolid = new G4Box("Calor",1.*m,1.*m,1.*m); >> 124 G4LogicalVolume* phantomLogical = new G4LogicalVolume(phantomSolid,water,"Phantom"); >> 125 phantomPhys = new G4PVPlacement(0,G4ThreeVector(),phantomLogical,"Phantom", >> 126 worldLogical,false,0); >> 127 // 107 // Visualization attributes 128 // Visualization attributes 108 // 129 // 109 // worldLogical->SetVisAttributes(G4VisAttri << 130 // worldLogical->SetVisAttributes(G4VisAttributes::Invisible); 110 G4VisAttributes* simpleBoxVisAtt = new G4Vis << 131 G4VisAttributes* simpleBoxVisAtt= new G4VisAttributes(G4Colour(1.0,1.0,1.0)); 111 simpleBoxVisAtt->SetVisibility(true); 132 simpleBoxVisAtt->SetVisibility(true); 112 phantomLogical->SetVisAttributes(simpleBoxVi 133 phantomLogical->SetVisAttributes(simpleBoxVisAtt); 113 } 134 } 114 135 115 void RE03DetectorConstruction::ConstructSDandF << 136 116 { << 117 ; << 118 } << 119 137