61 :solidWorld(0), logicWorld(0), physiWorld(0),
62 solidTarget(0), logicTarget(0), physiTarget(0),
63 solidTracker(0),logicTracker(0),physiTracker(0),
64 solidChamber(0),logicChamber(0),physiChamber(0),
65 TargetMater(0), ChamberMater(0),chamberParam(0),
66 stepLimit(0), fpMagField(0),
67 fWorldLength(0.), fTargetLength(0.), fTrackerLength(0.),
68 NbOfChambers(0) , ChamberWidth(0.), ChamberSpacing(0.)
81 delete detectorMessenger;
91 G4double density, temperature, pressure;
119 ChamberWidth = 20*
cm;
120 ChamberSpacing = 80*
cm;
122 fTrackerLength = (NbOfChambers+1)*ChamberSpacing;
123 fTargetLength = 5.0 *
cm;
126 ChamberMater = Xenon;
128 fWorldLength= 1.2 *(fTargetLength+fTrackerLength);
130 G4double targetSize = 0.5*fTargetLength;
131 G4double trackerSize = 0.5*fTrackerLength;
139 G4double HalfWorldLength = 0.5*fWorldLength;
142 G4cout <<
"Computed tolerance = "
146 solidWorld=
new G4Box(
"world",HalfWorldLength,HalfWorldLength,HalfWorldLength);
165 solidTarget =
new G4Box(
"target",targetSize,targetSize,targetSize);
166 logicTarget =
new G4LogicalVolume(solidTarget,TargetMater,
"Target",0,0,0);
175 G4cout <<
"Target is " << fTargetLength/
cm <<
" cm of "
184 solidTracker =
new G4Box(
"tracker",trackerSize,trackerSize,trackerSize);
185 logicTracker =
new G4LogicalVolume(solidTracker , Air,
"Tracker",0,0,0);
201 solidChamber =
new G4Box(
"chamber", 100*
cm, 100*
cm, 10*
cm);
202 logicChamber =
new G4LogicalVolume(solidChamber,ChamberMater,
"Chamber",0,0,0);
204 G4double firstPosition = -trackerSize + 0.5*ChamberWidth;
205 G4double firstLength = fTrackerLength/10;
206 G4double lastLength = fTrackerLength;
226 G4cout <<
"There are " << NbOfChambers <<
" chambers in the tracker region. "
227 <<
"The chambers are " << ChamberWidth/
mm <<
" mm of "
228 << ChamberMater->
GetName() <<
"\n The distance between chamber is "
229 << ChamberSpacing/
cm <<
" cm" <<
G4endl;
237 G4String trackerChamberSDname =
"ExN02/TrackerChamberSD";
260 G4double maxStep = 0.5*ChamberWidth;
280 {TargetMater = pttoMaterial;
282 G4cout <<
"\n----> The target is " << fTargetLength/
cm <<
" cm of "
283 << materialName <<
G4endl;
294 {ChamberMater = pttoMaterial;
296 G4cout <<
"\n----> The chambers are " << ChamberWidth/
cm <<
" cm of "
297 << materialName <<
G4endl;
virtual void SetMaxAllowedStep(G4double ustepMax)
static constexpr double mm
static constexpr double mg
CLHEP::Hep3Vector G4ThreeVector
void setChamberMaterial(G4String)
std::vector< ExP01TrackerHit * > a
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
static constexpr double perCent
const G4String & GetName() const
void SetUserLimits(G4UserLimits *pULimits)
G4double GetSurfaceTolerance() const
static G4MaterialTable * GetMaterialTable()
void setTargetMaterial(G4String)
G4VPhysicalVolume * Construct()
void SetWorldMaximumExtent(G4double worldExtent)
G4GLOB_DLL std::ostream G4cout
void SetMagField(G4double)
static constexpr double cm
static G4GeometryManager * GetInstance()
~ExN02DetectorConstruction()
static constexpr double kelvin
static constexpr double cm3
void AddNewDetector(G4VSensitiveDetector *aSD)
ExN02DetectorConstruction()
void SetMagFieldValue(G4double fieldValue)
static G4SDManager * GetSDMpointer()
void AddElement(G4Element *element, G4int nAtoms)
void SetMaxStep(G4double)
void SetMaterial(G4Material *pMaterial)
static constexpr double atmosphere
static constexpr double mole
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
static G4GeometryTolerance * GetInstance()