35 #include "SensitiveDetector.hh"
36 #include "Materials.hh"
56 : fRadiatorDescription(0)
83 G4double foilGasRatio = radThickness/(radThickness+gasGap);
110 G4double totDensity = foilDensity*foilGasRatio
111 + gasDensity*(1.0-foilGasRatio);
113 G4double fractionFoil = foilDensity*foilGasRatio/totDensity;
114 G4double fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
116 radiatorMat->AddMaterial(ch2, fractionFoil);
117 radiatorMat->AddMaterial(air, fractionGas);
128 foilGasRatio = 0.99999;
129 foilDensity = 1.2928*
mg/
cm3;
130 gasDensity = 0.178*
mg/
cm3;
131 totDensity = foilDensity*foilGasRatio + gasDensity*(1.0-foilGasRatio);
133 fractionFoil = foilDensity*foilGasRatio/totDensity;
134 fractionGas = gasDensity*(1.0-foilGasRatio)/totDensity;
137 pipeMat->AddMaterial(air, fractionFoil);
138 pipeMat->AddMaterial(he, fractionGas);
148 =
new G4Box(
"World", worldSizeR, worldSizeR, worldSizeZ/2.);
158 G4double radThick = foilNumber*(radThickness + gasGap) - gasGap + detGap;
159 G4double radZ = startZ + 0.5*radThick;
162 =
new G4Box(
"Radiator", 1.1*absorberRadius, 1.1*absorberRadius, 0.5*radThick);
168 "Radiator", logicRadiator, physicsWorld,
false, 0 );
180 G4double zElectrode1 = radZ - radThick/2. - electrodeThick/2.;
181 G4double zElectrode2 = radZ + radThick/2. + electrodeThick/2.;
185 G4cout <<
"electrodeThick = " << electrodeThick/
mm <<
" mm" << G4endl <<
G4endl;
191 G4double zPipe = zElectrode2 + electrodeThick/2. + pipeLength/2. + pipeDist/2.;
194 G4cout <<
"pipeLength = " << pipeLength/
mm <<
" mm" << G4endl <<
G4endl;
199 G4double zMylar1 = zPipe - pipeLength/2. - mylarThick/2 - 0.01*
mm;
200 G4double zMylar2 = zPipe + pipeLength/2. + mylarThick/2 + 0.01*
mm;
204 G4cout <<
"fMylarThick = " << mylarThick/
mm <<
" mm" << G4endl <<
G4endl;
209 G4double zMylar = zElectrode2 + electrodeThick/2. + mylarThick/2. + 1.0*
mm;
210 zMylar += ( pipeLength + pipeDist );
213 G4cout <<
"mylarThick = " << mylarThick/
mm <<
" mm" << G4endl <<
G4endl;
217 G4double absorberZ = zMylar + mylarThick/2. + absorberThickness/2.;
220 =
new G4Box(
"Absorber", 10.*
mm, 10.*
mm, absorberThickness/2.);
226 "Absorber", logicAbsorber, physicsWorld,
false, 0);
241 G4cout <<
"\n The WORLD is made of "
242 << worldSizeZ/
mm <<
"mm of " << worldMaterial->
GetName();
243 G4cout <<
", the transverse size (R) of the world is "
244 << worldSizeR/
mm <<
" mm. " <<
G4endl;
245 G4cout <<
" The ABSORBER is made of "
246 << absorberThickness/
mm <<
"mm of " << absorberMaterial->
GetName();
247 G4cout <<
", the transverse size (R) is "
248 << absorberRadius/
mm <<
" mm. " <<
G4endl;
249 G4cout <<
" Z position of the (middle of the) absorber "
250 << absorberZ/
mm <<
" mm." <<
G4endl;
257 G4cout <<
"fRadiatorMat = " << radiatorMat->GetName() <<
G4endl;
void AddRootLogicalVolume(G4LogicalVolume *lv)
static constexpr double micrometer
CLHEP::Hep3Vector G4ThreeVector
G4Material * GetMaterial(const G4String &)
static constexpr double mm
void AddNewDetector(G4VSensitiveDetector *aSD)
static Materials * GetInstance()
const G4String & GetName() const
static constexpr double mg
G4Material * fFoilMaterial
G4Material * fGasMaterial
static G4SDManager * GetSDMpointer()
RadiatorDescription * fRadiatorDescription
G4LogicalVolume * fLogicalVolume
static constexpr double cm
G4GLOB_DLL std::ostream G4cout
Definition of the DetectorBari05 class.
G4VPhysicalVolume * Construct()
static constexpr double cm3
G4double GetDensity() const
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)