77 fWorldLogic(0),fXtalLogic(0){
163 for(
unsigned int i1=0;i1<3;i1++){
191 2. * (
fSSDSize.
z()/2.) - 2. * fBeamPipeFromSiSDDistance;
208 2. * fBeamPipeFromSiSDDistance;
221 #ifndef G4MULTITHREADED 226 for(
unsigned int i1=0;i1<3;i1++){
240 #ifdef G4MULTITHREADED 246 for(
unsigned int i1=0;i1<3;i1++){
265 G4Box* fSSDBoxEnvelopeSolid =
266 new G4Box(
"SiSDBoxEnvelope",
304 G4Box* fSSDBoxFoilSolid =
new G4Box(
"SSDBoxFoil",
358 fSSDBoxEnvelopeLogic,
363 fSSDBoxLogic,
"SiSDBox",
364 fSSDBoxEnvelopeLogic,
370 fSSDBoxInternalLogic,
"SiSDBox",
371 fSSDBoxEnvelopeLogic,
379 fSSDBoxFoilLogic,
"SiSDBoxFoil",
380 fSSDBoxEnvelopeLogic,
388 fSSDBoxFoilLogic,
"SiSDBoxFoil",
389 fSSDBoxEnvelopeLogic,
393 return fSSDBoxEnvelopeLogic;
427 G4int ncomponents_SS =6;
431 new G4Material(
"StainlessSteel", density_SS, ncomponents_SS);
432 StainlessSteel->
AddElement(elC, fractionmass=0.001);
433 StainlessSteel->
AddElement(elSi, fractionmass=0.007);
434 StainlessSteel->
AddElement(elCr, fractionmass=0.18);
435 StainlessSteel->
AddElement(elMn, fractionmass=0.01);
436 StainlessSteel->
AddElement(elFe, fractionmass=0.712);
437 StainlessSteel->
AddElement(elNi, fractionmass=0.09);
452 G4Tubs* fBeamPipeEnvelopeSolid =
453 new G4Tubs(
"BeamPipeEnvelope",
456 length * 0.5 + fMylarThickness * 0.5 * 4.,
480 fBeamPipeEnvelopeLogic,
485 G4Tubs* fBeamPipeInsideSolid =
new G4Tubs(
"BeamPipeInside",
498 fBeamPipeInsideLogic,
500 fBeamPipeEnvelopeLogic,
505 G4Tubs* fBeamPipeMylarSolid =
506 new G4Tubs(
"BeamPipeMylar",
509 fMylarThickness * 0.5,
521 +(length + fMylarThickness * 2.) / 2.),
524 fBeamPipeEnvelopeLogic,
531 -(length + fMylarThickness * 2.) / 2.),
534 fBeamPipeEnvelopeLogic,
538 return fBeamPipeEnvelopeLogic;
545 double fXtalAngleOut =
595 double vScatteringConstant =
652 G4cout <<
"DetectorConstructor::SetXtalMaterial() - New Xtal Material: " void GeometryHasBeenModified(G4bool prop=true)
static const double kelvin
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
G4double fSSDBoxThickness
void SetThermalVibrationAmplitude(G4double)
static XLatticeManager3 * GetXLatticeManager()
G4LogicalVolume * fXtalLogic
G4ThreeVector fXtalCurvatureRadius
G4LogicalVolume * ConstructSiSD(G4int)
CLHEP::Hep3Vector G4ThreeVector
void SetXtalMiller(G4ThreeVector)
HepRotation & rotateX(double delta)
CLHEP::HepRotation G4RotationMatrix
void SetXtalCellSize(G4ThreeVector)
void SetSize(G4ThreeVector)
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
static const double millimeter
G4VPhysicalVolume * fXtalPhysical
G4ThreeVector fXtalMiller
static G4double angle[DIM]
G4ThreeVector fXtalCellAngle
void ConstructXtalTarget()
void SetScatteringConstant(G4double)
HepRotation & rotateY(double delta)
~ExExChDetectorConstruction()
void SetForceSolid(G4bool)
G4LogicalVolume * ConstructBeamPipe(G4double)
static G4NistManager * Instance()
G4String GetXtalMaterial()
void SetUnitCell(XUnitCell *)
static const double angstrom
G4GLOB_DLL std::ostream G4cout
void ConstructSDandField()
void PhysicsHasBeenModified()
void SetXtalAngle(G4ThreeVector)
void SetXtalSize(G4ThreeVector)
G4double fBeamPipeThickness
void AddBase(XLogicalBase *)
static const double universe_mean_density
G4double fSSDXtalDistance[3]
G4VPhysicalVolume * fWorldPhysical
static const double second
G4Material * fXtalMaterial
void SetXtalCurvatureRadius(G4ThreeVector)
void AddNewDetector(G4VSensitiveDetector *aSD)
bool RegisterLattice(XPhysicalLattice *)
static G4RunManager * GetRunManager()
static const double meter
void SetMillerOrientation(int, int, int)
G4ThreeVector fSSDBoxSize
void SetXtalCellAngle(G4ThreeVector)
void SetCurvatureRadius(G4ThreeVector)
void SetLatticeOrientation(G4double, G4double)
ExExChDetectorConstructionMessenger * fMessenger
static G4SDManager * GetSDMpointer()
void SetXtalMaterial(const G4String &name)
HepRotation & rotateZ(double delta)
G4ThreeVector fXtalCellSize
G4Material * fWorldMaterial
void SetXtalThermalVibrationAmplitude(G4double)
ExExChDetectorConstruction()
void AddElement(G4Element *element, G4int nAtoms)
static const double micrometer
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
const G4String & GetName() const
void SetMaterial(G4Material *pMaterial)
G4VPhysicalVolume * Construct()
G4LogicalVolume * fSSDLogic[3]
void SetVisAttributes(const G4VisAttributes *pVA)
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
G4LogicalVolume * fWorldLogic
static const double centimeter