77 fPosWindow0 = 0.000000*
cm;
78 fPosWindow1 = 0.004120*
cm;
81 fPosPrimFoil = 2.650000*
cm;
82 fHalfThicknessPrimFoil = 0.0*
cm;
85 fPosMon0 = 5.000000*
cm;
86 fPosMon1 = 5.011270*
cm;
89 fPosBag0 = 6.497500*
cm;
90 fPosHelium0 = 6.500000*
cm;
91 fPosHelium1 = 116.500000*
cm;
92 fPosBag1 = 116.502500*
cm;
93 fThicknessRing = 1.4*
cm;
96 fPosScorer = 118.200000*
cm;
97 fThicknessScorer= 0.001*
cm;
98 fWidthScorerRing= 0.1*
cm;
101 fRadOverall = 23.3*
cm;
102 fRadRingInner = 20.0*
cm;
119 delete fWindowVisAtt;
120 delete fPrimFoilVisAtt;
123 delete fHeliumVisAtt;
125 delete fScorerVisAtt;
216 G4double halfLengthWorld = fPosScorer/2. + fPosDelta;
217 G4double radWorld = fRadOverall + fRadDelta;
219 halfLengthWorld, 0.*
deg, 360.*
deg);
228 worldLog,
"World", 0,
false, 0);
236 G4double halfLengthWorld = fPosScorer/2.;
237 G4double halfThicknessWindow = fPosWindow1/2.;
239 halfThicknessWindow, 0.*
deg, 360.*
deg);
249 halfThicknessWindow - halfLengthWorld),
250 windowLog,
"ExitWindow",worldLog,
false,0);
256 G4double halfLengthWorld = fPosScorer/2.;
259 if (fHalfThicknessPrimFoil==0.)
return;
261 fSolidPrimFoil =
new G4Tubs(
"PrimFoilSolid", 0.*
cm, fRadOverall,
262 fHalfThicknessPrimFoil, 0.*
deg, 360.*
deg);
264 fMaterialPrimFoil,
"PrimFoilLog");
271 fPosPrimFoil + fHalfThicknessPrimFoil - halfLengthWorld),
272 fLogPrimFoil,
"ScatteringFoil",worldLog,
false,0);
278 G4double halfLengthWorld = fPosScorer/2.;
279 G4double halfThicknessMon = (fPosMon1 - fPosMon0) /2.;
281 halfThicknessMon, 0.*
deg, 360.*
deg);
291 fPosMon0 + halfThicknessMon - halfLengthWorld),
292 monLog,
"MonitorChamber",worldLog,
false,0);
298 G4double halfLengthWorld = fPosScorer/2.;
301 G4double halfThicknessBag = (fPosBag1 - fPosBag0) /2.;
303 halfThicknessBag, 0.*
deg, 360.*
deg);
313 fPosBag0 + halfThicknessBag - halfLengthWorld),
314 bagLog,
"HeliumBag",worldLog,
false,0);
317 G4double halfThicknessHelium = (fPosHelium1 - fPosHelium0) /2.;
319 halfThicknessHelium, 0.*
deg, 360.*
deg);
328 heliumLog,
"Helium",bagLog,
false,0);
331 G4double halfThicknessRing = fThicknessRing /2.;
332 G4VSolid* ringSolid =
new G4Tubs(
"ringSolid", fRadRingInner, fRadOverall,
333 halfThicknessRing, 0.*
deg, 360.*
deg);
347 -halfThicknessHelium + halfThicknessRing),
348 ring0Log,
"Ring0",heliumLog,
false,0);
352 halfThicknessHelium - halfThicknessRing),
353 ring1Log,
"Ring1",heliumLog,
false,0);
359 G4double halfLengthWorld = fPosScorer/2.;
360 G4double halfThicknessScorer = fThicknessScorer /2.;
363 halfThicknessScorer, 0.*
deg, 360.*
deg);
372 halfLengthWorld - halfThicknessScorer),
373 scorerLog,
"Scorer",worldLog,
false,0);
377 halfThicknessScorer, 0.*
deg, 360.*
deg);
381 G4int(fRadOverall/fWidthScorerRing),fWidthScorerRing);
397 fSensitiveDetectorCache.
Get();
399 if (!sensitiveDetector) {
440 fHalfThicknessPrimFoil = thicknessPrimFoil / 2.;
441 if (fSolidPrimFoil) {
void GeometryHasBeenModified(G4bool prop=true)
G4bool RegisterPrimitive(G4VPrimitiveScorer *)
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
virtual G4VPhysicalVolume * Construct()
CLHEP::Hep3Vector G4ThreeVector
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
void SetPrimFoilThickness(G4double thicknessPrimFoil)
void SetVerboseLevel(G4int vl)
void CreateScorer(G4LogicalVolume *logicWorld)
static G4MaterialTable * GetMaterialTable()
void SetFilter(G4VSDFilter *f)
Definition of the ElectronBenchmarkDetectorMessenger class.
void CreatePrimaryFoil(G4LogicalVolume *logicWorld)
static G4NistManager * Instance()
static G4PhysicalVolumeStore * GetInstance()
void CreateHeliumBag(G4LogicalVolume *logicWorld)
G4GLOB_DLL std::ostream G4cout
void CreateMonitor(G4LogicalVolume *logicWorld)
void PhysicsHasBeenModified()
static constexpr double cm
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
void CreateExitWindow(G4LogicalVolume *logicWorld)
static G4GeometryManager * GetInstance()
static constexpr double cm3
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
void SetPrimFoilMaterial(G4String matname)
void AddNewDetector(G4VSensitiveDetector *aSD)
static G4RunManager * GetRunManager()
G4LogicalVolume * GetLogicalVolume() const
static G4SDManager * GetSDMpointer()
Definition of the ElectronBenchmarkDetector class.
void OpenGeometry(G4VPhysicalVolume *vol=0)
void AddElement(G4Element *element, G4int nAtoms)
static constexpr double deg
virtual ~ElectronBenchmarkDetector()
ElectronBenchmarkDetector()
void ConstructSDandField()
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
void SetMaterial(G4Material *pMaterial)
void SetVisAttributes(const G4VisAttributes *pVA)
G4VPhysicalVolume * CreateWorld()
G4VPhysicalVolume * CreateGeometry()
void SetZHalfLength(G4double newDz)