ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DetectorConstruction.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file DetectorConstruction.cc
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
28 
29 #include "DetectorConstruction.hh"
30 #include "DetectorMessenger.hh"
31 
32 #include "G4NistManager.hh"
33 #include "G4Sphere.hh"
34 #include "G4PVPlacement.hh"
35 #include "G4PVReplica.hh"
36 #include "G4GeometryManager.hh"
37 #include "G4PhysicalVolumeStore.hh"
38 #include "G4LogicalVolumeStore.hh"
39 #include "G4SolidStore.hh"
40 #include "G4RunManager.hh"
41 #include "G4UnitsTable.hh"
42 #include "G4PhysicalConstants.hh"
43 #include "G4SystemOfUnits.hh"
44 
45 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
46 
49  fAbsorMaterial(0),
50  fAbsor(0),
51  fDetectorMessenger(0)
52 {
53  // default parameter values
54  fAbsorRadius = 1*m;
55 
57  SetMaterial("G4_WATER");
58 
59  // create commands for interactive definition of the detector
61 }
62 
63 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
64 
66 { delete fDetectorMessenger;}
67 
68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
69 
71 {
72  return ConstructVolumes();
73 }
74 
75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
76 
78 {
80 
81  man->FindOrBuildMaterial("G4_WATER");
82 }
83 
84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
85 
87 {
92 
93  // spherical absorber
94  G4Sphere*
95  sAbsor = new G4Sphere("Absorber", //name
96  0., fAbsorRadius, 0., twopi, 0., pi); //size
97 
98  fLogicalAbsor = new G4LogicalVolume(sAbsor, //solid
99  fAbsorMaterial, //material
100  "Absorber"); //name
101 
102  fAbsor = new G4PVPlacement(0, //no rotation
103  G4ThreeVector(), //at (0,0,0)
104  fLogicalAbsor, //logical volume
105  "Absorber", //name
106  0, //mother volume
107  false, //no boolean operation
108  0); //copy number
109 
110  PrintParameters();
111 
112  return fAbsor;
113 }
114 
115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
116 
118 {
119  G4cout << "\n---------------------------------------------------------\n";
120  G4cout << "---> The Absorber is a sphere of "
121  << G4BestUnit(fAbsorRadius,"Length") << " radius of "
122  << fAbsorMaterial->GetName() << " made of"
123  << "\n \n" << fAbsorMaterial << G4endl;
124  G4cout << "\n---------------------------------------------------------\n";
125 }
126 
127 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
128 
130 {
133 }
134 
135 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
136 
137 void DetectorConstruction::SetMaterial(G4String materialChoice)
138 {
139  // search the material by its name
140  G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
141  if (pttoMaterial) fAbsorMaterial = pttoMaterial;
143 }