Files
geant4/examples/extended/exoticphysics/channeling/include/ExExChDetectorConstruction.hh
T
2016-12-09 12:35:28 +01:00

137 lines
4.8 KiB
C++

//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file channeling/include/ExExChDetectorConstruction.hh
/// \brief Definition of the ExExChDetectorConstruction class
// --------------------------------------------------------------
//
#ifndef ExExChDetectorConstruction_h
#define ExExChDetectorConstruction_h 1
#endif
#include "G4VUserDetectorConstruction.hh"
#include "ExExChDetectorConstructionMessenger.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4LogicalVolume.hh"
#include "G4VPhysicalVolume.hh"
#include "G4RunManager.hh"
#include "globals.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class ExExChDetectorConstruction : public G4VUserDetectorConstruction
{
public:
ExExChDetectorConstruction();
~ExExChDetectorConstruction();
void DefineMaterials();
G4VPhysicalVolume* Construct();
private:
ExExChDetectorConstructionMessenger* fMessenger;
void ConstructSDandField();
private:
G4ThreeVector fWorldSize;
G4Box* fWorldSolid;
G4LogicalVolume* fWorldLogic;
G4VPhysicalVolume* fWorldPhysical;
G4Material* fWorldMaterial;
//** SSD **//
private:
void ConstructSiliconStripDetectors();
G4LogicalVolume* ConstructSiSD(G4int);
G4bool fSiSD;
G4ThreeVector fSSDSize;
G4double fSSDXtalDistance[3];
G4LogicalVolume* fSSDLogic[3];
G4double fSSDBoxThickness;
G4ThreeVector fSSDBoxSize;
//** Beam pipe **//
void SetBeamPipeRadius(G4double aDouble) {fBeamPipeRadius = aDouble;};
G4double GetBeamPipeRadius() {return fBeamPipeRadius;};
void SetBeamPipeThickness(G4double aDouble) {fBeamPipeThickness = aDouble;};
G4double GetBeamPipeThickness() {return fBeamPipeThickness;};
private:
G4LogicalVolume* ConstructBeamPipe(G4double);
G4bool fBeamPipe;
G4double fBeamPipeRadius;
G4double fBeamPipeThickness;
//** Xtal **//
public:
void AddXtalTarget() {
fXtal = true;
G4RunManager::GetRunManager()->GeometryHasBeenModified();
};
void SetXtalMaterial(const G4String& name);
G4String GetXtalMaterial();
void SetXtalCurvatureRadius(G4ThreeVector);
G4ThreeVector GetXtalCurvatureRadius() {return fXtalCurvatureRadius;};
void SetXtalSize(G4ThreeVector);
G4ThreeVector GetXtalSize() {return fXtalSize;};
void SetXtalAngle(G4ThreeVector);
G4ThreeVector GetXtalAngle() {return fXtalAngle;};
void SetXtalCellSize(G4ThreeVector);
G4ThreeVector GetXtalCellSize() {return fXtalCellSize;};
void SetXtalCellAngle(G4ThreeVector);
G4ThreeVector GetXtalCellAngle() {return fXtalCellAngle;};
void SetXtalThermalVibrationAmplitude(G4double);
G4double GetXtalThermalVibrationAmplitude() {return fXtalTVA;};
void SetXtalMiller(G4ThreeVector);
G4ThreeVector GetXtalMiller() {return fXtalMiller;};
private:
void ConstructXtalTarget();
G4bool fXtal;
G4ThreeVector fXtalCurvatureRadius;
G4Material* fXtalMaterial;
G4ThreeVector fXtalAngle;
G4ThreeVector fXtalSize;
G4ThreeVector fXtalCellSize;
G4ThreeVector fXtalCellAngle;
G4ThreeVector fXtalMiller;
G4double fXtalTVA;
G4VSolid* fXtalSolid;
G4LogicalVolume* fXtalLogic;
G4VPhysicalVolume* fXtalPhysical;
};