43 #include "DetectorConstruction.hh"
44 #include "DetectorMessenger.hh"
45 #include "TargetSD.hh"
46 #include "PrimaryGeneratorAction.hh"
77 fGasMat(0), fWindowMat(0), fWorldMaterial(0),
78 fPhysWorld(0), fLogicWorld(0), fLogicWind(0), fLogicDet(0),
79 fDetectorMessenger(0), fTargetSD(0), fGasDetectorCuts(0),
80 fRegGasDet(0), fPrimaryGenerator(p)
82 fGasThickness = 23.0*
mm;
103 delete fDetectorMessenger;
104 delete fGasDetectorCuts;
109 void DetectorConstruction::DefineMaterials()
144 density = 3.491*
mg/
cm3 ;
148 Kr7CH4->
AddMaterial( Methane, fractionmass = 0.014 ) ;
177 density = 3.758*
mg/
cm3 ;
183 density = 4.9196*
mg/
cm3 ;
185 density, ncomponents=3);
186 XeCH4C3H8->
AddMaterial( Xe, fractionmass = 0.971 ) ;
187 XeCH4C3H8->
AddMaterial( Methane, fractionmass = 0.010 ) ;
188 XeCH4C3H8->
AddMaterial( Propane, fractionmass = 0.019 ) ;
191 density = 1.709*
mg/
cm3 ;
193 Ar7CH4->
AddMaterial( Argon, fractionmass = 0.971 ) ;
194 Ar7CH4->
AddMaterial( Methane, fractionmass = 0.029 ) ;
197 density = 1.8223*
mg/
cm3 ;
200 Ar_80CO2_20->
AddMaterial( Argon, fractionmass = 0.783 ) ;
201 Ar_80CO2_20->
AddMaterial( CarbonDioxide, fractionmass = 0.217 ) ;
204 density = 5.0818*
mg/
cm3 ;
208 Xe20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.078 ) ;
211 density = 3.601*
mg/
cm3 ;
215 Kr20CO2->
AddMaterial( CarbonDioxide, fractionmass = 0.11 ) ;
218 density = 0.939*
mg/
cm3 ;
221 NeCO2->
AddElement( elNe, fractionmass = 0.8039 ) ;
222 NeCO2->
AddElement( elO, fractionmass = 0.1426 ) ;
223 NeCO2->
AddElement( elC, fractionmass = 0.0535 ) ;
227 fWorldMaterial = empty;
239 if(fRegGasDet) {
delete fRegGasDet; }
240 fRegGasDet =
new G4Region(
"GasDetector");
248 G4double contThick = fWindowThick*2 + fGasThickness;
249 G4double contR = fWindowThick*2 + fGasRadius;
251 G4double worldSizeZ = contThick*1.2;
257 G4cout <<
"\n The WORLD is made of "
258 << worldSizeZ/
mm <<
"mm of " << fWorldMaterial->
GetName() ;
259 G4cout <<
", the transverse size (R) of the world is " << worldSizeR/
mm
261 G4cout <<
" The CONTAINER is made of "
263 G4cout <<
" The TARGET is made of "
264 << fGasThickness/
mm <<
"mm of " << fGasMat->
GetName() ;
265 G4cout <<
", the transverse size (R) is " << fGasRadius/
mm <<
" mm. "
271 0.,worldSizeR,worldSizeZ/2.,0.,CLHEP::twopi);
273 fLogicWorld =
new G4LogicalVolume(SolidWorld, fWorldMaterial,
"World");
285 0.,contR,contThick/2.,0.,CLHEP::twopi);
290 "Window", fLogicWind,
291 fPhysWorld,
false, 0);
294 G4Tubs* det =
new G4Tubs(
"Gas", 0., fGasRadius, fGasThickness/2.,
336 if (mat && mat != fGasMat) {
356 if (mat && mat != fWindowMat) {
376 if (mat && mat != fWorldMaterial) {
378 fWorldMaterial = mat;
390 if(fGasThickness != val) {
400 if(fGasRadius != val) {
410 if(fWindowThick != val) {
void GeometryHasBeenModified(G4bool prop=true)
G4IonisParamMat * GetIonisation() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
CLHEP::Hep3Vector G4ThreeVector
void AddRootLogicalVolume(G4LogicalVolume *lv)
void SetGasThickness(G4double)
void AddMaterial(G4Material *material, G4double fraction)
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
G4double GetMeanEnergyPerIonPair() const
const G4String & GetName() const
G4VPhysicalVolume * Construct()
static G4MaterialTable * GetMaterialTable()
void SetWorldMaterial(const G4String &)
void SetProductionCut(G4double cut, G4int index=-1)
void SetPairEnergy(G4double)
void SetContainerMaterial(const G4String &)
static G4NistManager * Instance()
static G4PhysicalVolumeStore * GetInstance()
void SetContainerThickness(G4double)
G4GLOB_DLL std::ostream G4cout
void PhysicsHasBeenModified()
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
static G4GeometryManager * GetInstance()
void AddNewDetector(G4VSensitiveDetector *aSD)
static G4RunManager * GetRunManager()
void SetGasMaterial(const G4String &)
static G4SDManager * GetSDMpointer()
G4double XeCO2CF4_density
static const G4VisAttributes Invisible
void SetGasRadius(G4double)
void SetProductionCuts(G4ProductionCuts *cut)
void OpenGeometry(G4VPhysicalVolume *vol=0)
void AddElement(G4Element *element, G4int nAtoms)
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
void SetMaterial(G4Material *pMaterial)
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
void SetPositionZ(G4double value)
void SetMeanEnergyPerIonPair(G4double value)