60 fSolidWorld(0), fLogicWorld(0), fPhysiWorld(0),
61 fSolidTarget(0), fLogicTarget(0), fPhysiTarget(0),
62 fSolidTracker(0), fLogicTracker(0), fPhysiTracker(0),
63 fSolidChamber(0), fLogicChamber(0), fPhysiChamber(0),
64 fTargetMater(0), fChamberMater(0), fPMagField(0), fDetectorMessenger(0),
65 fWorldLength(0.), fTargetLength(0.), fTrackerLength(0.),
66 fNbOfChambers(0), fChamberWidth(0.), fChamberSpacing(0.)
77 delete fDetectorMessenger;
87 G4double density, temperature, pressure;
115 fChamberWidth = 20*
cm;
116 fChamberSpacing = 80*
cm;
118 fTrackerLength = (fNbOfChambers+1)*fChamberSpacing;
119 fTargetLength = 5.0 *
cm;
122 fChamberMater = Xenon;
124 fWorldLength= 1.2 *(fTargetLength+fTrackerLength);
126 G4double targetSize = 0.5*fTargetLength;
127 G4double trackerSize = 0.5*fTrackerLength;
135 G4double HalfWorldLength = 0.5*fWorldLength;
137 fSolidWorld=
new G4Box(
"world",HalfWorldLength,HalfWorldLength,HalfWorldLength);
156 fSolidTarget =
new G4Box(
"target",targetSize,targetSize,targetSize);
157 fLogicTarget =
new G4LogicalVolume(fSolidTarget,fTargetMater,
"Target",0,0,0);
166 G4cout <<
"Target is " << fTargetLength/
cm <<
" cm of "
175 fSolidTracker =
new G4Box(
"tracker",trackerSize,trackerSize,trackerSize);
176 fLogicTracker =
new G4LogicalVolume(fSolidTracker , Air,
"Tracker",0,0,0);
192 fSolidChamber =
new G4Box(
"chamber", 100*
cm, 100*
cm, 10*
cm);
193 fLogicChamber =
new G4LogicalVolume(fSolidChamber, fChamberMater,
"Chamber",0,0,0);
195 G4double firstPosition = -trackerSize + 0.5*fChamberWidth;
196 G4double firstLength = fTrackerLength/10;
197 G4double lastLength = fTrackerLength;
217 G4cout <<
"There are " << fNbOfChambers <<
" chambers in the tracker region. "
218 <<
"The chambers are " << fChamberWidth/
mm <<
" mm of "
219 << fChamberMater->
GetName() <<
"\n The distance between chamber is "
220 << fChamberSpacing/
cm <<
" cm" <<
G4endl;
228 G4String trackerChamberSDname =
"ExP01/TrackerChamberSD";
251 G4double maxStep = 0.5*fChamberWidth;
270 {fTargetMater = pttoMaterial;
272 G4cout <<
"\n----> The target is " << fTargetLength/
cm <<
" cm of "
273 << materialName <<
G4endl;
284 {fChamberMater = pttoMaterial;
286 G4cout <<
"\n----> The chambers are " << fChamberWidth/
cm <<
" cm of "
287 << materialName <<
G4endl;
Definition of the ExP01DetectorMessenger class.
void SetFieldValue(G4double fieldValue)
static constexpr double mm
static constexpr double mg
CLHEP::Hep3Vector G4ThreeVector
std::vector< ExP01TrackerHit * > a
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
~ExP01DetectorConstruction()
static constexpr double perCent
const G4String & GetName() const
Detector messenger for the persistency example.
void SetUserLimits(G4UserLimits *pULimits)
void SetChamberMaterial(G4String)
static G4MaterialTable * GetMaterialTable()
Definition of the ExP01DetectorConstruction class.
Chamber parameterisation for the persistency example.
Definition of the ExP01TrackerSD class.
G4GLOB_DLL std::ostream G4cout
ExP01DetectorConstruction()
static constexpr double cm
Magnetic field for the persistency example.
static constexpr double kelvin
static constexpr double cm3
void AddNewDetector(G4VSensitiveDetector *aSD)
Definition of the ExP01ChamberParameterisation class.
static G4SDManager * GetSDMpointer()
void SetMagField(G4double)
Sensitive detector implementation for the ROOT hits persistency example.
void AddElement(G4Element *element, G4int nAtoms)
Definition of the ExP01MagneticField class.
void SetMaterial(G4Material *pMaterial)
static constexpr double atmosphere
static constexpr double mole
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
virtual G4VPhysicalVolume * Construct()
void SetTargetMaterial(G4String)