Geant4-11
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
DetectorConstruction Class Reference

#include <DetectorConstruction.hh>

Inheritance diagram for DetectorConstruction:
G4VUserDetectorConstruction

Public Member Functions

virtual void CloneF ()
 
virtual void CloneSD ()
 
G4VPhysicalVolumeConstruct ()
 
G4int ConstructParallelGeometries ()
 
void ConstructParallelSD ()
 
virtual void ConstructSDandField ()
 
 DetectorConstruction ()
 
G4MaterialGetMaterial ()
 
G4int GetNumberOfParallelWorld () const
 
G4VUserParallelWorldGetParallelWorld (G4int i) const
 
G4double GetSize ()
 
const G4VPhysicalVolumeGetWorld ()
 
void PrintParameters ()
 
void RegisterParallelWorld (G4VUserParallelWorld *)
 
void SetMaterial (G4String)
 
 ~DetectorConstruction ()
 

Protected Member Functions

void SetSensitiveDetector (const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void SetSensitiveDetector (G4LogicalVolume *logVol, G4VSensitiveDetector *aSD)
 

Private Member Functions

G4VPhysicalVolumeConstructVolumes ()
 
void DefineMaterials ()
 

Private Attributes

G4MaterialaMaterial
 
G4double BoxSize
 
DetectorMessengerdetectorMessenger
 
std::vector< G4VUserParallelWorld * > parallelWorld
 
G4VPhysicalVolumepBox
 

Detailed Description

Definition at line 45 of file DetectorConstruction.hh.

Constructor & Destructor Documentation

◆ DetectorConstruction()

DetectorConstruction::DetectorConstruction ( )

Definition at line 53 of file DetectorConstruction.cc.

54:pBox(0), aMaterial(0)
55{
56 BoxSize = 1*mm;
58 SetMaterial("Germanium");
60}
static constexpr double mm
Definition: G4SIunits.hh:95
DetectorMessenger * detectorMessenger
G4VPhysicalVolume * pBox

References BoxSize, DefineMaterials(), detectorMessenger, mm, and SetMaterial().

◆ ~DetectorConstruction()

DetectorConstruction::~DetectorConstruction ( )

Definition at line 64 of file DetectorConstruction.cc.

65{ delete detectorMessenger;}

References detectorMessenger.

Member Function Documentation

◆ CloneF()

void G4VUserDetectorConstruction::CloneF ( )
virtualinherited

Definition at line 126 of file G4VUserDetectorConstruction.cc.

127{
128 using FMtoFMmap = std::map<G4FieldManager*, G4FieldManager*>;
129 using FMpair = std::pair<G4FieldManager*, G4FieldManager*>;
130
131 FMtoFMmap masterToWorker;
133 for(auto it = logVolStore->cbegin(); it != logVolStore->cend(); ++it)
134 {
135 G4LogicalVolume* g4LogicalVolume = *it;
136 // Use shadow of master to get instance of FM
137 G4FieldManager* masterFM = nullptr; // g4LogicalVolume->fFieldManager;
138 G4FieldManager* clonedFM = nullptr;
139 if(masterFM != nullptr)
140 {
141 auto fmFound = masterToWorker.find(masterFM);
142 if(fmFound == masterToWorker.cend())
143 {
144 // First time we see this SD, let's clone and remember...
145 try
146 {
147 auto insertedEl =
148 masterToWorker.insert(FMpair(masterFM, masterFM->Clone()));
149 clonedFM = (insertedEl.first)->second;
150 } catch(...)
151 {
153 msg << "Cloning of G4FieldManager failed."
154 << " But derived class does not implement cloning. Cannot "
155 "continue.";
156 G4Exception("G4VUserDetectorConstruction::CloneSD()", "Run0053",
157 FatalException, msg);
158 }
159 }
160 else
161 {
162 // We have already seen this SD attached to a different LogicalVolume,
163 // let's re-use previous clone
164 clonedFM = (*fmFound).second;
165 }
166 } // masterFM != 0
167 // Note that we do not push FM to daughters (false argument), however, since
168 // we area looping on all logical volumes and we implemented the "trick" of
169 // the map master<->cloned the final effect is the same as using here the
170 // correct Boolean flag: log-volumes that originally were sharing the same
171 // FM they will have cloned ones
172 g4LogicalVolume->SetFieldManager(clonedFM, false);
173 }
174}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
static constexpr double second
Definition: G4SIunits.hh:137
virtual G4FieldManager * Clone() const
static G4LogicalVolumeStore * GetInstance()
void SetFieldManager(G4FieldManager *pFieldMgr, G4bool forceToAllDaughters)

References G4FieldManager::Clone(), FatalException, G4Exception(), G4LogicalVolumeStore::GetInstance(), second, and G4LogicalVolume::SetFieldManager().

◆ CloneSD()

void G4VUserDetectorConstruction::CloneSD ( )
virtualinherited

Definition at line 177 of file G4VUserDetectorConstruction.cc.

178{
179 // Loop on ALL logial volumes to search for attached SD
181
182 using SDtoSDmap = std::map<G4VSensitiveDetector*, G4VSensitiveDetector*>;
183 using SDpair = std::pair<G4VSensitiveDetector*, G4VSensitiveDetector*>;
184 SDtoSDmap masterToWorker;
185
186 for(auto it = logVolStore->cbegin(); it != logVolStore->cend(); ++it)
187 {
188 G4LogicalVolume* g4LogicalVolume = *it;
189 // Use shadow of master to get the instance of SD
190 G4VSensitiveDetector* masterSD = nullptr;
191 G4VSensitiveDetector* clonedSD = nullptr;
192 if(masterSD != nullptr)
193 {
194 auto sdFound = masterToWorker.find(masterSD);
195 if(sdFound == masterToWorker.cend())
196 {
197 // First time we see this SD, let's clone and remember...
198 try
199 {
200 auto insertedEl =
201 masterToWorker.insert(SDpair(masterSD, masterSD->Clone()));
202 clonedSD = (insertedEl.first)->second;
203 } catch(...)
204 {
206 msg << "Cloning of G4VSensitiveDetector requested for:"
207 << masterSD->GetName() << "\n"
208#ifndef WIN32
209 << " (full path name: " << masterSD->GetFullPathName() << ").\n"
210#endif
211 << " But derived class does not implement cloning. Cannot "
212 "continue.";
213 G4Exception("G4VUserDetectorConstruction::CloneSD()", "Run0053",
214 FatalException, msg);
215 }
216 }
217 else
218 {
219 // We have already seen this SD attached to a different LogicalVolume,
220 // let's re-use previous clone
221 clonedSD = (*sdFound).second;
222 }
223 } // masterSD!=0
224 g4LogicalVolume->SetSensitiveDetector(clonedSD);
225 }
226}
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
virtual G4VSensitiveDetector * Clone() const
G4String GetFullPathName() const

References G4VSensitiveDetector::Clone(), FatalException, G4Exception(), G4VSensitiveDetector::GetFullPathName(), G4LogicalVolumeStore::GetInstance(), G4VSensitiveDetector::GetName(), second, and G4LogicalVolume::SetSensitiveDetector().

◆ Construct()

G4VPhysicalVolume * DetectorConstruction::Construct ( )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 69 of file DetectorConstruction.cc.

70{
71 return ConstructVolumes();
72}
G4VPhysicalVolume * ConstructVolumes()

References ConstructVolumes().

◆ ConstructParallelGeometries()

G4int G4VUserDetectorConstruction::ConstructParallelGeometries ( )
inherited

Definition at line 73 of file G4VUserDetectorConstruction.cc.

74{
75 G4int nP = 0;
76 for(auto pwItr = parallelWorld.cbegin();
77 pwItr != parallelWorld.cend(); ++pwItr)
78 {
79 (*pwItr)->Construct();
80 ++nP;
81 }
82 return nP;
83}
int G4int
Definition: G4Types.hh:85
std::vector< G4VUserParallelWorld * > parallelWorld

References G4VUserDetectorConstruction::parallelWorld.

Referenced by G4RunManager::InitializeGeometry().

◆ ConstructParallelSD()

void G4VUserDetectorConstruction::ConstructParallelSD ( )
inherited

Definition at line 86 of file G4VUserDetectorConstruction.cc.

87{
88 for(auto pwItr = parallelWorld.cbegin();
89 pwItr != parallelWorld.cend(); ++pwItr)
90 {
91 (*pwItr)->ConstructSD();
92 }
93}

References G4VUserDetectorConstruction::parallelWorld.

Referenced by G4RunManager::InitializeGeometry(), and G4WorkerRunManager::InitializeGeometry().

◆ ConstructSDandField()

void G4VUserDetectorConstruction::ConstructSDandField ( )
virtualinherited

Definition at line 111 of file G4VUserDetectorConstruction.cc.

112{
113 // G4RunManager::RMType rmtype =
114 // G4RunManager::GetRunManager()->GetRunManagerType(); if(rmtype !=
115 // G4RunManager::sequentialRM)
116 // {
117 // G4cout
118 // << "User-derived detector construction class does not implement \n"
119 // << "ConstructSDandFiled method: workers will not have SD and fields!\n"
120 // << "The user can safely ignore this message if (s)he has no sensitive\n"
121 // << "detector or field in her/his application." << G4endl;
122 // }
123}

Referenced by G4RunManager::InitializeGeometry(), and G4WorkerRunManager::InitializeGeometry().

◆ ConstructVolumes()

G4VPhysicalVolume * DetectorConstruction::ConstructVolumes ( )
private

Definition at line 140 of file DetectorConstruction.cc.

141{
142 // Cleanup old geometry
147
148 G4Box*
149 sBox = new G4Box("Container", //its name
150 BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
151
153 lBox = new G4LogicalVolume(sBox, //its shape
154 aMaterial, //its material
155 aMaterial->GetName()); //its name
156
157 pBox = new G4PVPlacement(0, //no rotation
158 G4ThreeVector(), //at (0,0,0)
159 lBox, //its logical volume
160 aMaterial->GetName(), //its name
161 0, //its mother volume
162 false, //no boolean operation
163 0); //copy number
164
165 //always return the root volume
166 //
167 return pBox;
168}
CLHEP::Hep3Vector G4ThreeVector
Definition: G4Box.hh:56
static G4GeometryManager * GetInstance()
void OpenGeometry(G4VPhysicalVolume *vol=nullptr)
const G4String & GetName() const
Definition: G4Material.hh:173
static G4PhysicalVolumeStore * GetInstance()
static void Clean()
Definition: G4SolidStore.cc:74
static G4SolidStore * GetInstance()

References aMaterial, BoxSize, G4LogicalVolumeStore::Clean(), G4PhysicalVolumeStore::Clean(), G4SolidStore::Clean(), G4GeometryManager::GetInstance(), G4LogicalVolumeStore::GetInstance(), G4PhysicalVolumeStore::GetInstance(), G4SolidStore::GetInstance(), G4Material::GetName(), G4GeometryManager::OpenGeometry(), and pBox.

Referenced by Construct(), and SetMaterial().

◆ DefineMaterials()

void DetectorConstruction::DefineMaterials ( )
private

H2O->SetChemicalFormula("H_2O");

Definition at line 76 of file DetectorConstruction.cc.

77{
78 //
79 // define Elements
80 //
81 G4double z,a;
82
83 G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
84 G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
85 G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
86 G4Element* Ge = new G4Element("Germanium","Ge", z=32., a= 72.59*g/mole);
87 G4Element* Bi = new G4Element("Bismuth" ,"Bi", z=83., a= 208.98*g/mole);
88
89 //
90 // define materials
91 //
92 G4double density;
93 G4int ncomponents, natoms;
94 G4double fractionmass;
95
96 G4Material* Air =
97 new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
98 Air->AddElement(N, fractionmass=70.*perCent);
99 Air->AddElement(O, fractionmass=30.*perCent);
100
101 G4Material* H2l =
102 new G4Material("H2liquid", density= 70.8*mg/cm3, ncomponents=1);
103 H2l->AddElement(H, fractionmass=1.);
104
105 G4Material* H2O =
106 new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
107 H2O->AddElement(H, natoms=2);
108 H2O->AddElement(O, natoms=1);
111
112 G4Material* steam =
113 new G4Material("WaterSteam", density= 1.0*mg/cm3, ncomponents=1);
114 steam->AddMaterial(H2O, fractionmass=1.);
116
117 G4Material* BGO =
118 new G4Material("BGO", density= 7.10*g/cm3, ncomponents=3);
119 BGO->AddElement(O , natoms=12);
120 BGO->AddElement(Ge, natoms= 3);
121 BGO->AddElement(Bi, natoms= 4);
122
123 new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
124 new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
125 new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
126 new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
127 new G4Material("Copper" , z=29., a= 63.55*g/mole, density= 8.960*g/cm3);
128 new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
129 new G4Material("Silver" , z=47., a=107.87*g/mole, density= 10.50*g/cm3);
130 new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
131 new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
132 new G4Material("Uranium" , z=92., a=238.03*g/mole, density= 18.95*g/cm3);
133
134
136}
static constexpr double perCent
Definition: G4SIunits.hh:325
static constexpr double mole
Definition: G4SIunits.hh:279
static constexpr double cm3
Definition: G4SIunits.hh:101
static constexpr double eV
Definition: G4SIunits.hh:201
static constexpr double g
Definition: G4SIunits.hh:168
static constexpr double mg
Definition: G4SIunits.hh:169
double G4double
Definition: G4Types.hh:83
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
void SetMeanExcitationEnergy(G4double value)
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:222
void AddElement(G4Element *elm, G4int nAtoms)
Definition: G4Material.hh:157
static G4MaterialTable * GetMaterialTable()
Definition: G4Material.cc:672
void AddMaterial(G4Material *material, G4double fraction)
Definition: G4Material.cc:496

References G4Material::AddElement(), G4Material::AddMaterial(), cm3, eV, g, G4cout, G4endl, G4Material::GetIonisation(), G4Material::GetMaterialTable(), mg, mole, perCent, and G4IonisParamMat::SetMeanExcitationEnergy().

Referenced by DetectorConstruction().

◆ GetMaterial()

G4Material * DetectorConstruction::GetMaterial ( )
inline

Definition at line 64 of file DetectorConstruction.hh.

64{return aMaterial;};

References aMaterial.

Referenced by RunAction::BeginOfRunAction(), RunAction::CriticalEnergy(), and RunAction::GetCuts().

◆ GetNumberOfParallelWorld()

G4int G4VUserDetectorConstruction::GetNumberOfParallelWorld ( ) const
inherited

◆ GetParallelWorld()

G4VUserParallelWorld * G4VUserDetectorConstruction::GetParallelWorld ( G4int  i) const
inherited

Definition at line 103 of file G4VUserDetectorConstruction.cc.

104{
105 if(i < 0 || i >= GetNumberOfParallelWorld())
106 return nullptr;
107 return parallelWorld[i];
108}

References G4VUserDetectorConstruction::GetNumberOfParallelWorld(), and G4VUserDetectorConstruction::parallelWorld.

◆ GetSize()

G4double DetectorConstruction::GetSize ( )
inline

Definition at line 63 of file DetectorConstruction.hh.

63{return BoxSize;};

References BoxSize.

Referenced by PrimaryGeneratorAction::SetDefaultKinematic().

◆ GetWorld()

const G4VPhysicalVolume * DetectorConstruction::GetWorld ( )
inline

Definition at line 61 of file DetectorConstruction.hh.

61{return pBox;};

References pBox.

◆ PrintParameters()

void DetectorConstruction::PrintParameters ( )

Definition at line 172 of file DetectorConstruction.cc.

173{
174 G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
175 << " of " << aMaterial->GetName() << G4endl;
176}
#define G4BestUnit(a, b)

References aMaterial, BoxSize, G4BestUnit, G4cout, G4endl, and G4Material::GetName().

◆ RegisterParallelWorld()

void G4VUserDetectorConstruction::RegisterParallelWorld ( G4VUserParallelWorld aPW)
inherited

Definition at line 57 of file G4VUserDetectorConstruction.cc.

59{
60 auto pwItr = std::find(parallelWorld.cbegin(), parallelWorld.cend(), aPW);
61 if (pwItr != parallelWorld.cend())
62 {
63 G4String eM = "A parallel world <";
64 eM += aPW->GetName();
65 eM += "> is already registered to the user detector construction.";
66 G4Exception("G4VUserDetectorConstruction::RegisterParallelWorld",
67 "Run0051", FatalErrorInArgument, eM);
68 }
69 parallelWorld.push_back(aPW);
70}
@ FatalErrorInArgument
const G4String & GetName()

References FatalErrorInArgument, G4Exception(), G4VUserParallelWorld::GetName(), and G4VUserDetectorConstruction::parallelWorld.

◆ SetMaterial()

void DetectorConstruction::SetMaterial ( G4String  materialChoice)

Definition at line 182 of file DetectorConstruction.cc.

183{
184 // search the material by its name, or build it from nist data base
185 G4Material* pttoMaterial =
187
188 if (pttoMaterial) {
189 aMaterial = pttoMaterial;
192 } else {
193 G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
194 << materialChoice << " not found" << G4endl;
195 }
196}
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static G4NistManager * Instance()
static G4RunManager * GetRunManager()
virtual void DefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)

References aMaterial, ConstructVolumes(), G4RunManager::DefineWorldVolume(), G4NistManager::FindOrBuildMaterial(), G4cout, G4endl, G4RunManager::GetRunManager(), G4NistManager::Instance(), and pBox.

Referenced by BOOST_PYTHON_MODULE(), DetectorConstruction(), and DetectorMessenger::SetNewValue().

◆ SetSensitiveDetector() [1/2]

void G4VUserDetectorConstruction::SetSensitiveDetector ( const G4String logVolName,
G4VSensitiveDetector aSD,
G4bool  multi = false 
)
protectedinherited

Definition at line 229 of file G4VUserDetectorConstruction.cc.

232{
233 G4bool found = false;
235 auto volmap = store->GetMap();
236 auto pos = volmap.find(logVolName);
237 if(pos != volmap.cend())
238 {
239 if ((pos->second.size()>1) && !multi)
240 {
241 G4String eM = "More than one logical volumes of name <";
242 eM += pos->first;
243 eM += "> are found and thus the sensitive detector <";
244 eM += aSD->GetName();
245 eM += "> cannot be uniquely assigned.";
246 G4Exception("G4VUserDetectorConstruction::SetSensitiveDetector()",
247 "Run0052", FatalErrorInArgument, eM);
248 }
249 found = true;
250 for (std::size_t i = 0; i < pos->second.size(); ++i)
251 {
252 SetSensitiveDetector(pos->second[i], aSD);
253 }
254 }
255 if(!found)
256 {
257 G4String eM2 = "No logical volume of name <";
258 eM2 += logVolName;
259 eM2 += "> is found. The specified sensitive detector <";
260 eM2 += aSD->GetName();
261 eM2 += "> couldn't be assigned to any volume.";
262 G4Exception("G4VUserDetectorConstruction::SetSensitiveDetector()",
263 "Run0053", FatalErrorInArgument, eM2);
264 }
265}
static const G4double pos
bool G4bool
Definition: G4Types.hh:86
const std::map< G4String, std::vector< G4LogicalVolume * > > & GetMap() const
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)

References FatalErrorInArgument, G4Exception(), G4LogicalVolumeStore::GetInstance(), G4LogicalVolumeStore::GetMap(), G4VSensitiveDetector::GetName(), pos, and G4VUserDetectorConstruction::SetSensitiveDetector().

Referenced by MyDetectorConstruction::SetSDtoScoreVoxel(), and G4VUserDetectorConstruction::SetSensitiveDetector().

◆ SetSensitiveDetector() [2/2]

void G4VUserDetectorConstruction::SetSensitiveDetector ( G4LogicalVolume logVol,
G4VSensitiveDetector aSD 
)
protectedinherited

Definition at line 268 of file G4VUserDetectorConstruction.cc.

270{
271 assert(logVol != nullptr && aSD != nullptr);
272
273 // The aSD has already been added by user to the manager if needed
274 // G4SDManager::GetSDMpointer()->AddNewDetector(aSD);
275
276 // New Logic: allow for "multiple" SDs being attached to a single LV.
277 // To do that we use a special proxy SD called G4MultiSensitiveDetector
278
279 // Get existing SD if already set and check if it is of the special type
280 G4VSensitiveDetector* originalSD = logVol->GetSensitiveDetector();
281 if(originalSD == aSD)
282 {
284 msg << "Attempting to add multiple times the same sensitive detector (\"";
285 msg << originalSD->GetName() << "\") is not allowed, skipping.";
286 G4Exception("G4VUserDetectorConstruction::SetSensitiveDetector", "Run0054",
287 JustWarning, msg);
288 return;
289 }
290 if(originalSD == nullptr)
291 {
292 logVol->SetSensitiveDetector(aSD);
293 }
294 else
295 {
297 dynamic_cast<G4MultiSensitiveDetector*>(originalSD);
298 if(msd != nullptr)
299 {
300 msd->AddSD(aSD);
301 }
302 else
303 {
304 std::ostringstream mn;
305 mn << "/MultiSD_" << logVol->GetName() << "_" << logVol;
306 const G4String msdname = mn.str();
307 msd = new G4MultiSensitiveDetector(msdname);
308 // We need to register the proxy to have correct handling of IDs
310 msd->AddSD(originalSD);
311 msd->AddSD(aSD);
312 logVol->SetSensitiveDetector(msd);
313 }
314 }
315}
@ JustWarning
G4VSensitiveDetector * GetSensitiveDetector() const
const G4String & GetName() const
void AddSD(G4VSensitiveDetector *sd)
static G4SDManager * GetSDMpointer()
Definition: G4SDManager.cc:38
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition: G4SDManager.cc:70

References G4SDManager::AddNewDetector(), G4MultiSensitiveDetector::AddSD(), G4Exception(), G4VSensitiveDetector::GetName(), G4LogicalVolume::GetName(), G4SDManager::GetSDMpointer(), G4LogicalVolume::GetSensitiveDetector(), JustWarning, and G4LogicalVolume::SetSensitiveDetector().

Field Documentation

◆ aMaterial

G4Material* DetectorConstruction::aMaterial
private

◆ BoxSize

G4double DetectorConstruction::BoxSize
private

◆ detectorMessenger

DetectorMessenger* DetectorConstruction::detectorMessenger
private

Definition at line 75 of file DetectorConstruction.hh.

Referenced by DetectorConstruction(), and ~DetectorConstruction().

◆ parallelWorld

std::vector<G4VUserParallelWorld*> G4VUserDetectorConstruction::parallelWorld
privateinherited

◆ pBox

G4VPhysicalVolume* DetectorConstruction::pBox
private

Definition at line 70 of file DetectorConstruction.hh.

Referenced by ConstructVolumes(), GetWorld(), and SetMaterial().


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