31 #include "B2bDetectorConstruction.hh"
32 #include "B2bDetectorMessenger.hh"
33 #include "B2bChamberParameterisation.hh"
34 #include "B2TrackerSD.hh"
65 fLogicTarget(NULL), fLogicChamber(NULL),
66 fTargetMaterial(NULL), fChamberMaterial(NULL),
89 return DefineVolumes();
94 void B2bDetectorConstruction::DefineMaterials()
121 G4int NbOfChambers = 5;
127 G4double trackerLength = (NbOfChambers+1)*chamberSpacing;
129 G4double worldLength = 1.2 * (2*targetLength + trackerLength);
131 G4double targetRadius = 0.5*targetLength;
132 targetLength = 0.5*targetLength;
133 G4double trackerSize = 0.5*trackerLength;
141 G4cout <<
"Computed tolerance = "
147 worldLength/2,worldLength/2,worldLength/2);
172 =
new G4Tubs(
"target",0.,targetRadius,targetLength,0.*
deg,360.*
deg);
184 G4cout <<
"Target is " << 2*targetLength/
cm <<
" cm of "
192 =
new G4Tubs(
"tracker",0,trackerSize,trackerSize, 0.*
deg, 360.*
deg);
214 G4double firstPosition = -trackerSize + chamberSpacing;
215 G4double firstLength = trackerLength/10;
216 G4double lastLength = trackerLength;
237 G4cout <<
"There are " << NbOfChambers <<
" chambers in the tracker region. "
239 <<
"The chambers are " << chamberWidth/
cm <<
" cm of "
240 << fChamberMaterial->
GetName() << G4endl
241 <<
"The distance between chamber is " << chamberSpacing/
cm <<
" cm"
261 G4double maxStep = 0.5*chamberWidth;
284 G4String trackerChamberSDname =
"B2/TrackerChamberSD";
286 "TrackerHitsCollection");
310 if (fTargetMaterial != pttoMaterial) {
311 if ( pttoMaterial ) {
312 fTargetMaterial = pttoMaterial;
313 if (fLogicTarget) fLogicTarget->
SetMaterial(fTargetMaterial);
316 <<
"----> The target is made of " << materialName <<
G4endl;
320 <<
"--> WARNING from SetTargetMaterial : "
321 << materialName <<
" not found" <<
G4endl;
335 if (fChamberMaterial != pttoMaterial) {
336 if ( pttoMaterial ) {
337 fChamberMaterial = pttoMaterial;
338 if (fLogicChamber) fLogicChamber->
SetMaterial(fChamberMaterial);
341 <<
"----> The chambers are made of " << materialName <<
G4endl;
345 <<
"--> WARNING from SetChamberMaterial : "
346 << materialName <<
" not found" <<
G4endl;
void SetVerboseLevel(G4int verboseLevel)
void SetTargetMaterial(G4String)
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
virtual void SetMaxAllowedStep(G4double ustepMax)
static constexpr double mm
virtual G4VPhysicalVolume * Construct()
CLHEP::Hep3Vector G4ThreeVector
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
const G4String & GetName() const
void SetUserLimits(G4UserLimits *pULimits)
G4double GetSurfaceTolerance() const
B2bDetectorConstruction()
static G4MaterialTable * GetMaterialTable()
void SetWorldMaximumExtent(G4double worldExtent)
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
virtual void ConstructSDandField()
static constexpr double cm
virtual ~B2bDetectorConstruction()
static G4GeometryManager * GetInstance()
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
void SetMaxStep(G4double)
void AddNewDetector(G4VSensitiveDetector *aSD)
static G4SDManager * GetSDMpointer()
void SetChamberMaterial(G4String)
static constexpr double deg
void SetMaterial(G4Material *pMaterial)
void SetVisAttributes(const G4VisAttributes *pVA)
static G4GeometryTolerance * GetInstance()