80 fWorldLogic(0),fXtalLogic(0){
 
  146     fWorldSolid = 
new G4Box(
"World",
 
  166         for(
unsigned int i1=0;i1<3;i1++){
 
  172                 fSSDXtalDistance[i1]);
 
  189                               fSSDXtalDistance[0] + std::fabs(fSSDXtalDistance[1] - 
 
  190                               fSSDXtalDistance[0])/2.);
 
  193                 std::fabs(fSSDXtalDistance[1] - fSSDXtalDistance[0]) -
 
  194                 2. * (fSSDSize.
z()/2.) - 2. * fBeamPipeFromSiSDDistance;
 
  197                     ConstructBeamPipe(fBeamPipeA0Length);
 
  210                 std::fabs(fSSDXtalDistance[2]) - 2. * (fSSDSize.
z()/2.) -
 
  211                 2. * fBeamPipeFromSiSDDistance;
 
  214                     ConstructBeamPipe(fBeamPipeA1Length);
 
  224 #ifndef G4MULTITHREADED 
  229     for(
unsigned int i1=0;i1<3;i1++){
 
  235             ConstructXtalTarget();
 
  238     return fWorldPhysical;
 
  243 #ifdef G4MULTITHREADED 
  244 void ExExChDetectorConstruction::ConstructSDandField(){
 
  249     for(
unsigned int i1=0;i1<3;i1++){
 
  254 void ExExChDetectorConstruction::ConstructSDandField(){
 
  268     G4Box* fSSDBoxEnvelopeSolid =
 
  269             new G4Box(
"SiSDBoxEnvelope",
 
  272                   fSSDBoxSize.
z()/2. + fFoilThickness);
 
  293                     fSSDBoxSize.
x()/2. - fSSDBoxThickness/2.,
 
  294                     fSSDBoxSize.
y()/2. - fSSDBoxThickness/2.,
 
  295                     fSSDBoxSize.
z()/2. - fSSDBoxThickness/2.);
 
  298                                          fSSDSize.
x()/2. + fSSDBoxThickness/2.,
 
  299                                      fSSDSize.
y()/2. + fSSDBoxThickness/2.,
 
  307     G4Box* fSSDBoxFoilSolid = 
new G4Box(
"SSDBoxFoil",
 
  360                       fSSDLogic[copyNo],
"SiSD",
 
  361                       fSSDBoxEnvelopeLogic,
 
  366                        fSSDBoxLogic,
"SiSDBox",
 
  367                        fSSDBoxEnvelopeLogic,
 
  373                        fSSDBoxInternalLogic,
"SiSDBox",
 
  374                        fSSDBoxEnvelopeLogic,
 
  381                                      (fSSDBoxSize.
z()/2. - fFoilThickness/2.)),
 
  382                        fSSDBoxFoilLogic,
"SiSDBoxFoil",
 
  383                        fSSDBoxEnvelopeLogic,
 
  390                                      -(fSSDBoxSize.
z()/2. - fFoilThickness/2.)),
 
  391                        fSSDBoxFoilLogic,
"SiSDBoxFoil",
 
  392                        fSSDBoxEnvelopeLogic,
 
  396      return fSSDBoxEnvelopeLogic;
 
  430     G4int ncomponents_SS =6;
 
  434             new G4Material(
"StainlessSteel", density_SS, ncomponents_SS);
 
  435     StainlessSteel->
AddElement(elC, fractionmass=0.001);
 
  436     StainlessSteel->
AddElement(elSi, fractionmass=0.007);
 
  437     StainlessSteel->
AddElement(elCr, fractionmass=0.18);
 
  438     StainlessSteel->
AddElement(elMn, fractionmass=0.01);
 
  439     StainlessSteel->
AddElement(elFe, fractionmass=0.712);
 
  440     StainlessSteel->
AddElement(elNi, fractionmass=0.09);
 
  455     G4Tubs* fBeamPipeEnvelopeSolid =
 
  456             new G4Tubs(
"BeamPipeEnvelope",
 
  458                        fBeamPipeRadius + fBeamPipeThickness,
 
  459                        length * 0.5 + fMylarThickness * 0.5 * 4.,
 
  471                                         fBeamPipeRadius + fBeamPipeThickness,
 
  483                       fBeamPipeEnvelopeLogic,
 
  488     G4Tubs* fBeamPipeInsideSolid = 
new G4Tubs(
"BeamPipeInside",
 
  501                       fBeamPipeInsideLogic,
 
  503                       fBeamPipeEnvelopeLogic,
 
  508     G4Tubs* fBeamPipeMylarSolid =
 
  509             new G4Tubs(
"BeamPipeMylar",
 
  511                        fBeamPipeRadius + fBeamPipeThickness,
 
  512                    fMylarThickness * 0.5,
 
  524                                         +(length + fMylarThickness * 2.) / 2.),
 
  527                       fBeamPipeEnvelopeLogic,
 
  534                                         -(length + fMylarThickness * 2.) / 2.),
 
  537                       fBeamPipeEnvelopeLogic,
 
  541     return fBeamPipeEnvelopeLogic;
 
  546 void ExExChDetectorConstruction::ConstructXtalTarget(){
 
  547     if(fXtalCurvatureRadius.
x() != 0.){
 
  548         double fXtalAngleOut =
 
  549             fXtalAngle.
y() + fXtalSize.
z()/fXtalCurvatureRadius.
x();
 
  550         fXtalSolid = 
new G4Tubs(
"Target",
 
  551                                 fXtalCurvatureRadius.
x() - fXtalSize.
x()/2,
 
  552                                 fXtalCurvatureRadius.
x() + fXtalSize.
x()/2,
 
  558         fXtalSolid = 
new G4Box(
"Target",
 
  569     if(fXtalCurvatureRadius.
x() != 0.){
 
  571         vRotationMatrix->
rotateY(fXtalAngle.
y());
 
  572         vRotationMatrix->
rotateZ(fXtalAngle.
z());
 
  582         vRotationMatrix->
rotateX(fXtalAngle.
x());
 
  583         vRotationMatrix->
rotateY(fXtalAngle.
y());
 
  584         vRotationMatrix->
rotateZ(fXtalAngle.
z());
 
  598     double vScatteringConstant =
 
  615     myCell->
SetSize(fXtalCellSize);
 
  637         GetXLatticeManager()->GetXPhysicalLattice(fXtalPhysical)
 
  654     if (vMaterial && vMaterial != fXtalMaterial) {
 
  655         G4cout << 
"DetectorConstructor::SetXtalMaterial() - New Xtal Material: " 
  657         fXtalMaterial = vMaterial;
 
  669         return fXtalMaterial->
GetName();
 
  677     if(fXtalCurvatureRadius != cr) {
 
  679         fXtalCurvatureRadius = cr;
 
  686     if(fXtalSize != size) {
 
  695     if(fXtalAngle != angle) {
 
  704     if(fXtalCellSize != cellsize) {
 
  706         fXtalCellSize = cellsize;
 
  713     if(fXtalMiller != miller) {
 
  715         fXtalMiller = miller;
 
  723     if(fXtalCellAngle != cellangle) {
 
  725         fXtalCellAngle = cellangle;
 
  733     if(fXtalTVA != thermvibr) {
 
  735         fXtalTVA = thermvibr;
 
void GeometryHasBeenModified(G4bool prop=true)
 
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
 
Definition of the XCrystalCharacteristicArray class. 
 
void SetThermalVibrationAmplitude(G4double)
 
static XLatticeManager3 * GetXLatticeManager()
 
CLHEP::Hep3Vector G4ThreeVector
 
void SetXtalMiller(G4ThreeVector)
 
HepRotation & rotateX(double delta)
 
CLHEP::HepRotation G4RotationMatrix
 
void SetXtalCellSize(G4ThreeVector)
 
Definition of the XLogicalBase class. 
 
void SetSize(G4ThreeVector)
 
std::vector< ExP01TrackerHit * > a
 
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
 
Definition of the XLatticeManager3 class. 
 
const G4String & GetName() const 
 
static G4double angle[DIM]
 
void SetScatteringConstant(G4double)
 
HepRotation & rotateY(double delta)
 
~ExExChDetectorConstruction()
 
Definition of the XLogicalAtomicLatticeDiamond class. 
 
const XML_Char int const XML_Char int const XML_Char * base
 
static G4NistManager * Instance()
 
void SetForceSolid(G4bool=true)
 
static constexpr double g
 
G4String GetXtalMaterial()
 
void SetUnitCell(XUnitCell *)
 
static constexpr double centimeter
 
G4GLOB_DLL std::ostream G4cout
 
static constexpr double meter
 
void PhysicsHasBeenModified()
 
Definition of the XCrystalPlanarMoliereElectronDensity class. 
 
Definition of the XCrystalIntegratedDensityPlanar class. 
 
void SetXtalAngle(G4ThreeVector)
 
static constexpr double millimeter
 
static constexpr double micrometer
 
void SetXtalSize(G4ThreeVector)
 
Definition of the XCrystalPlanarMoliereTempPotential class. 
 
Definition of the XCrystalPlanarMoliereElectricField class. 
 
void AddBase(XLogicalBase *)
 
void SetXtalCurvatureRadius(G4ThreeVector)
 
Definition of the ExExChSensitiveDetector class. 
 
void AddNewDetector(G4VSensitiveDetector *aSD)
 
bool RegisterLattice(XPhysicalLattice *)
 
static G4RunManager * GetRunManager()
 
static constexpr double deg
 
void SetMillerOrientation(int, int, int)
 
void SetXtalCellAngle(G4ThreeVector)
 
void SetCurvatureRadius(G4ThreeVector)
 
void SetLatticeOrientation(G4double, G4double)
 
static constexpr double bar
 
Definition of the XCrystalPlanarNucleiDensity class. 
 
static G4SDManager * GetSDMpointer()
 
void SetXtalMaterial(const G4String &name)
 
Definition of the XLogicalAtomicLattice class. 
 
static constexpr double universe_mean_density
 
HepRotation & rotateZ(double delta)
 
void SetXtalThermalVibrationAmplitude(G4double)
 
static constexpr double second
 
ExExChDetectorConstruction()
 
void AddElement(G4Element *element, G4int nAtoms)
 
Definition of the XCrystalPlanarMolierePotential class. 
 
static constexpr double mole
 
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
 
void SetMaterial(G4Material *pMaterial)
 
Definition of the XUnitCell class. 
 
G4VPhysicalVolume * Construct()
 
void SetVisAttributes(const G4VisAttributes *pVA)
 
void SetSensitiveDetector(G4VSensitiveDetector *pSDetector)
 
Definition of the XCrystalIntegratedDensityHub class. 
 
static constexpr double kelvin
 
static constexpr double pi
 
static constexpr double angstrom
 
static constexpr double cm3
 
Definition of the ExExChDetectorConstruction class.