64 G4bool LXeDetectorConstruction::fSphereOn =
true;
69 : fLXe_mt(NULL), fMPTPStyrene(NULL)
71 fExperimentalHall_box = NULL;
72 fExperimentalHall_log = NULL;
73 fExperimentalHall_phys = NULL;
75 fLXe = fAl = fAir = fVacuum = fGlass = NULL;
76 fPstyrene = fPMMA = fPethylene1 = fPethylene2 = NULL;
78 fN = fO = fC = fH = NULL;
91 void LXeDetectorConstruction::DefineMaterials(){
97 G4int nC_PMMA = 3+2*polyPMMA;
98 G4int nH_PMMA = 6+2*polyPMMA;
101 G4int nC_eth = 2*polyeth;
102 G4int nH_eth = 4*polyeth;
128 fPstyrene =
new G4Material(
"Polystyrene", density= 1.03*
g/
cm3, 2);
147 const G4int lxenum = 3;
150 G4double lxe_SCINT[lxenum] = { 0.1, 1.0, 0.1 };
151 G4double lxe_RIND[lxenum] = { 1.59 , 1.57, 1.54 };
154 fLXe_mt->
AddProperty(
"FASTCOMPONENT", lxe_Energy, lxe_SCINT, lxenum);
155 fLXe_mt->
AddProperty(
"SLOWCOMPONENT", lxe_Energy, lxe_SCINT, lxenum);
156 fLXe_mt->
AddProperty(
"RINDEX", lxe_Energy, lxe_RIND, lxenum);
157 fLXe_mt->
AddProperty(
"ABSLENGTH", lxe_Energy, lxe_ABSL, lxenum);
169 G4double glass_RIND[lxenum]={1.49,1.49,1.49};
172 glass_mt->
AddProperty(
"ABSLENGTH",lxe_Energy,glass_AbsLength,lxenum);
173 glass_mt->
AddProperty(
"RINDEX",lxe_Energy,glass_RIND,lxenum);
177 G4double vacuum_RIND[lxenum]={1.,1.,1.};
179 vacuum_mt->
AddProperty(
"RINDEX", vacuum_Energy, vacuum_RIND,lxenum);
183 const G4int wlsnum = 4;
186 G4double rIndexPstyrene[wlsnum]={ 1.5, 1.5, 1.5, 1.5};
188 G4double scintilFast[wlsnum]={0.00, 0.00, 1.00, 1.00};
190 fMPTPStyrene->
AddProperty(
"RINDEX",wls_Energy,rIndexPstyrene,wlsnum);
191 fMPTPStyrene->
AddProperty(
"ABSLENGTH",wls_Energy,absorption1,wlsnum);
192 fMPTPStyrene->
AddProperty(
"FASTCOMPONENT",wls_Energy, scintilFast,wlsnum);
202 G4double RefractiveIndexFiber[wlsnum]={ 1.60, 1.60, 1.60, 1.60};
204 G4double EmissionFib[wlsnum]={1.0, 1.0, 0.0, 0.0};
206 fiberProperty->
AddProperty(
"RINDEX",wls_Energy,RefractiveIndexFiber,wlsnum);
207 fiberProperty->
AddProperty(
"WLSABSLENGTH",wls_Energy,AbsFiber,wlsnum);
208 fiberProperty->
AddProperty(
"WLSCOMPONENT",wls_Energy,EmissionFib,wlsnum);
212 G4double RefractiveIndexClad1[wlsnum]={ 1.49, 1.49, 1.49, 1.49};
214 clad1Property->
AddProperty(
"RINDEX",wls_Energy,RefractiveIndexClad1,wlsnum);
215 clad1Property->
AddProperty(
"ABSLENGTH",wls_Energy,AbsFiber,wlsnum);
218 G4double RefractiveIndexClad2[wlsnum]={ 1.42, 1.42, 1.42, 1.42};
220 clad2Property->
AddProperty(
"RINDEX",wls_Energy,RefractiveIndexClad2,wlsnum);
221 clad2Property->
AddProperty(
"ABSLENGTH",wls_Energy,AbsFiber,wlsnum);
229 if (fExperimentalHall_phys) {
239 return ConstructDetector();
252 fExperimentalHall_box
253 =
new G4Box(
"expHall_box",expHall_x,expHall_y,expHall_z);
255 fVacuum,
"expHall_log",0,0,0);
257 fExperimentalHall_log,
"expHall",0,
false,0);
270 -fScint_z/2.-fSlab_z-1.*
cm),
271 fExperimentalHall_log,
false,0,
278 fExperimentalHall_phys,
288 G4double reflectivity[num] = {1., 1.};
289 G4double efficiency[num] = {0.0, 0.0};
294 scintWrapProperty->
AddProperty(
"REFLECTIVITY",pp,reflectivity,num);
295 scintWrapProperty->
AddProperty(
"EFFICIENCY",pp,efficiency,num);
299 return fExperimentalHall_phys;
306 if (!fMainVolume)
return;
310 if (!fPmt_SD.
Get()) {
316 pmt_SD->
InitPMTs((fNx*fNy+fNx*fNz+fNy*fNz)*2);
332 if (!fScint_SD.
Get()) {
335 fScint_SD.
Put(scint_SD);
343 this->fScint_x=dims[0];
344 this->fScint_y=dims[1];
345 this->fScint_z=dims[2];
380 this->fOuterRadius_pmt=outerRadius_pmt;
399 fOuterRadius_pmt = 2.3*
cm;
void SetFinish(const G4OpticalSurfaceFinish)
void SetMainVolumeOn(G4bool b)
G4IonisParamMat * GetIonisation() const
CLHEP::Hep3Vector G4ThreeVector
virtual void ConstructSDandField()
int universe_mean_density
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
void SetBirksConstant(G4double value)
Definition of the LXeDetectorConstruction class.
Definition of the LXeMainVolume class.
std::vector< G4ThreeVector > GetPmtPositions()
G4LogicalVolume * GetLogPhotoCath()
G4MaterialPropertyVector * AddProperty(const char *key, G4double *PhotonEnergies, G4double *PropertyValues, G4int NumEntries)
static void CleanSurfaceTable()
static G4UImanager * GetUIpointer()
void SetHousingReflectivity(G4double)
static G4PhysicalVolumeStore * GetInstance()
G4LogicalVolume * GetLogScint()
Definition of the LXePMTSD class.
virtual ~LXeDetectorConstruction()
G4GLOB_DLL std::ostream G4cout
virtual G4VPhysicalVolume * Construct()
static void CleanSurfaceTable()
static G4LogicalVolumeStore * GetInstance()
static G4SolidStore * GetInstance()
void SetHousingThickness(G4double)
static G4GeometryManager * GetInstance()
void AddConstProperty(const char *key, G4double PropertyValue)
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
void ReinitializeGeometry(G4bool destroyFirst=false, G4bool prop=true)
void SetMainScintYield(G4double)
void SetDimensions(G4ThreeVector)
static G4RunManager * GetRunManager()
void SetPmtPositions(const std::vector< G4ThreeVector > &positions)
void SetWLSScintYield(G4double)
void SetPMTRadius(G4double)
static const G4VisAttributes Invisible
Definition of the LXeScintSD class.
void InitPMTs(G4int nPMTs)
void SetWLSSlabOn(G4bool b)
void OpenGeometry(G4VPhysicalVolume *vol=0)
void AddElement(G4Element *element, G4int nAtoms)
LXeDetectorConstruction()
Definition of the LXeWLSSlab class.
void SetModel(const G4OpticalSurfaceModel model)
Definition of the LXeDetectorMessenger class.
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
void Put(const value_type &val) const
void SetType(const G4SurfaceType &type)
void SetVisAttributes(const G4VisAttributes *pVA)
G4int ApplyCommand(const char *aCommand)