Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
ExG4DetectorConstruction02 Class Reference

Simple detector construction with a box volume placed in a world. More...

#include <ExG4DetectorConstruction02.hh>

Inheritance diagram for ExG4DetectorConstruction02:
G4VUserDetectorConstruction

Public Member Functions

 ExG4DetectorConstruction02 (const G4String &boxMaterialName="G4_AIR", G4double boxHx=40 *CLHEP::cm, G4double boxHy=40 *CLHEP::cm, G4double boxHz=40 *CLHEP::cm, const G4String &worldMaterialName="G4_AIR", G4double worldSizeFactor=1.25)
 
 ~ExG4DetectorConstruction02 ()
 
virtual G4VPhysicalVolumeConstruct ()
 
void SetBoxMaterial (const G4String &materialName)
 
void SetWorldMaterial (const G4String &materialName)
 
void SetBoxDimensions (G4double hx, G4double hy, G4double hz)
 
void SetWorldSizeFactor (G4double factor)
 
- Public Member Functions inherited from G4VUserDetectorConstruction
 G4VUserDetectorConstruction ()
 
virtual ~G4VUserDetectorConstruction ()
 
virtual void ConstructSDandField ()
 
virtual void CloneSD ()
 
virtual void CloneF ()
 
void RegisterParallelWorld (G4VUserParallelWorld *)
 
G4int ConstructParallelGeometries ()
 
void ConstructParallelSD ()
 
G4int GetNumberOfParallelWorld () const
 
G4VUserParallelWorldGetParallelWorld (G4int i) const
 

Additional Inherited Members

- Protected Member Functions inherited from G4VUserDetectorConstruction
void SetSensitiveDetector (const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void SetSensitiveDetector (G4LogicalVolume *logVol, G4VSensitiveDetector *aSD)
 

Detailed Description

Simple detector construction with a box volume placed in a world.

Definition at line 48 of file ExG4DetectorConstruction02.hh.

Constructor & Destructor Documentation

ExG4DetectorConstruction02::ExG4DetectorConstruction02 ( const G4String boxMaterialName = "G4_AIR",
G4double  boxHx = 40*CLHEP::cm,
G4double  boxHy = 40*CLHEP::cm,
G4double  boxHz = 40*CLHEP::cm,
const G4String worldMaterialName = "G4_AIR",
G4double  worldSizeFactor = 1.25 
)

Definition at line 43 of file ExG4DetectorConstruction02.cc.

49  fMessenger(this),
50  fBoxMaterialName(boxMaterialName),
51  fWorldMaterialName(worldMaterialName),
52  fBoxDimensions(boxHx*2, boxHy*2, boxHz*2),
53  fWorldSizeFactor(worldSizeFactor),
54  fBoxVolume(0),
55  fWorldVolume(0)
56 {
57 }
ExG4DetectorConstruction02::~ExG4DetectorConstruction02 ( )

Definition at line 61 of file ExG4DetectorConstruction02.cc.

62 {
63 }

Member Function Documentation

G4VPhysicalVolume * ExG4DetectorConstruction02::Construct ( void  )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 67 of file ExG4DetectorConstruction02.cc.

References G4NistManager::FindOrBuildMaterial(), G4NistManager::Instance(), CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

68 {
69  // Define materials via NIST manager
70  //
71  G4NistManager* nistManager = G4NistManager::Instance();
72 
73  G4Material* worldMaterial
74  = nistManager->FindOrBuildMaterial(fWorldMaterialName);
75 
76  G4Material* boxMaterial
77  = nistManager->FindOrBuildMaterial(fBoxMaterialName);
78 
79  // Geometry parameters
80  //
81  G4ThreeVector worldDimensions = fBoxDimensions * fWorldSizeFactor;
82 
83 
84  // World
85  //
86  G4Box* sWorld
87  = new G4Box("World", //name
88  worldDimensions.x(), //dimensions (half-lentghs)
89  worldDimensions.y(),
90  worldDimensions.z());
91 
92  fWorldVolume
93  = new G4LogicalVolume(sWorld, //shape
94  worldMaterial, //material
95  "World"); //name
96 
97  G4VPhysicalVolume* pWorld
98  = new G4PVPlacement(0, //no rotation
99  G4ThreeVector(), //at (0,0,0)
100  fWorldVolume, //logical volume
101  "World", //name
102  0, //mother volume
103  false, //no boolean operation
104  0); //copy number
105 
106  // Box
107  //
108  G4Box* sBox
109  = new G4Box("Box", //its name
110  fBoxDimensions.x(), //dimensions (half-lengths)
111  fBoxDimensions.y(),
112  fBoxDimensions.z());
113 
114  fBoxVolume
115  = new G4LogicalVolume(sBox, //its shape
116  boxMaterial, //its material
117  "Box"); //its name
118 
119  new G4PVPlacement(0, //no rotation
120  G4ThreeVector(), //at (0,0,0)
121  fBoxVolume, //its logical volume
122  "Box", //its name
123  fWorldVolume, //its mother volume
124  false, //no boolean operation
125  0); //copy number
126 
127  //always return the root volume
128  //
129  return pWorld;
130 }
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
CLHEP::Hep3Vector G4ThreeVector
double x() const
Definition: G4Box.hh:63
static G4NistManager * Instance()
double z() const
double y() const
void ExG4DetectorConstruction02::SetBoxDimensions ( G4double  hx,
G4double  hy,
G4double  hz 
)

Set box dimension (in half lengths). This setting has effect only if called in PreInit> phase

Definition at line 172 of file ExG4DetectorConstruction02.cc.

Referenced by ExG4DetectorConstruction02Messenger::SetNewValue().

174 {
175 /// Set box dimension (in half lengths).
176 /// This setting has effect only if called in PreInit> phase
177 
178  fBoxDimensions = G4ThreeVector(hx, hy, hz);
179 }
CLHEP::Hep3Vector G4ThreeVector
void ExG4DetectorConstruction02::SetBoxMaterial ( const G4String materialName)

Definition at line 134 of file ExG4DetectorConstruction02.cc.

References G4NistManager::FindOrBuildMaterial(), G4cerr, G4cout, G4endl, G4NistManager::Instance(), and G4LogicalVolume::SetMaterial().

Referenced by ExG4DetectorConstruction02Messenger::SetNewValue().

135 {
136  G4NistManager* nistManager = G4NistManager::Instance();
137 
138  G4Material* newMaterial
139  = nistManager->FindOrBuildMaterial(materialName);
140 
141  if ( ! newMaterial ) {
142  G4cerr << "Material " << materialName << " not found." << G4endl;
143  G4cerr << "The box material was not changed." << G4endl;
144  return;
145  }
146 
147  if ( fBoxVolume ) fBoxVolume->SetMaterial(newMaterial);
148  G4cout << "Material of box changed to " << materialName << G4endl;
149 }
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void SetMaterial(G4Material *pMaterial)
G4GLOB_DLL std::ostream G4cerr
void ExG4DetectorConstruction02::SetWorldMaterial ( const G4String materialName)

Definition at line 153 of file ExG4DetectorConstruction02.cc.

References G4NistManager::FindOrBuildMaterial(), G4cerr, G4cout, G4endl, G4NistManager::Instance(), and G4LogicalVolume::SetMaterial().

Referenced by ExG4DetectorConstruction02Messenger::SetNewValue().

154 {
155  G4NistManager* nistManager = G4NistManager::Instance();
156 
157  G4Material* newMaterial
158  = nistManager->FindOrBuildMaterial(materialName);
159 
160  if ( ! newMaterial ) {
161  G4cerr << "Material " << materialName << " not found." << G4endl;
162  G4cerr << "The box material was not changed." << G4endl;
163  return;
164  }
165 
166  if ( fWorldVolume ) fWorldVolume->SetMaterial(newMaterial);
167  G4cout << "Material of box changed to " << materialName << G4endl;
168 }
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void SetMaterial(G4Material *pMaterial)
G4GLOB_DLL std::ostream G4cerr
void ExG4DetectorConstruction02::SetWorldSizeFactor ( G4double  factor)

Set the multiplication factor from box dimensions to world dimensions. This setting has effect only if called in PreInit> phase

Definition at line 183 of file ExG4DetectorConstruction02.cc.

Referenced by ExG4DetectorConstruction02Messenger::SetNewValue().

184 {
185 /// Set the multiplication factor from box dimensions to world dimensions.
186 /// This setting has effect only if called in PreInit> phase
187 
188  fWorldSizeFactor = factor;
189 }

The documentation for this class was generated from the following files: