11 #include "G4RunManager.hh"
12 #include "G4VisAttributes.hh"
106 G4double ReductionInPhotoPMTOnlyCathodeDiameter = 5*mm;
183 "PMTOnlyContainer_Logical",
195 "PMTOnlyContainer_Physical",
238 "PMTOnlyQuartzOpticalFilm_Logical");
246 PMTOnlyQuartzOpticalFilm_Position,
247 "PMTOnlyQuartzOpticalFilm_Physical",
264 "PMTOnlyEntranceWindow_Logical");
272 PMTOnlyEntranceWindow_Position,
273 "PMTOnlyEntranceWindow_Physical",
290 "PMTOnlyCathode_Logical");
298 PMTOnlyCathode_Position,
299 "PMTOnlyCathode_Physical",
310 const G4int nEntries = 11;
311 G4double PhotonEnergy[nEntries] = {
325 G4double PhotoPMTOnlyCathode_Efficiency[nEntries] = {
339 G4double PhotoPMTOnlyCathode_Reflectivity[nEntries] = {
353 G4double Reflectivity[nEntries];
354 for (G4int kk= 0; kk < nEntries; kk++) {
355 G4double mylambda = (h_Planck*c_light/PhotonEnergy[kk])/nanometer;
358 Reflectivity[kk] = 1.0 - 0.027*exp(-0.004608*mylambda);
361 G4OpticalSurface* LightGuide_OpticalSurface =
new G4OpticalSurface(
"LightGuideOpticalSurface");
362 LightGuide_OpticalSurface->SetType(dielectric_dielectric);
363 LightGuide_OpticalSurface->SetFinish(polished);
364 LightGuide_OpticalSurface->SetPolish(0.997);
365 LightGuide_OpticalSurface->SetModel(glisur);
367 G4MaterialPropertiesTable *quartzST =
new G4MaterialPropertiesTable();
368 quartzST->AddProperty(
"REFLECTIVITY", PhotonEnergy , Reflectivity, nEntries);
369 LightGuide_OpticalSurface->SetMaterialPropertiesTable(quartzST);
371 G4OpticalSurface* PhotoPMTOnlyCathode_OpticalSurface =
new G4OpticalSurface(
"PhotoPMTOnlyCathode_OS");
372 PhotoPMTOnlyCathode_OpticalSurface ->SetType(dielectric_metal);
373 PhotoPMTOnlyCathode_OpticalSurface ->SetFinish(polished);
374 PhotoPMTOnlyCathode_OpticalSurface ->SetModel(glisur);
376 G4MaterialPropertiesTable* PhotoPMTOnlyCathode_MPT =
new G4MaterialPropertiesTable();
377 PhotoPMTOnlyCathode_MPT->AddProperty(
"REFLECTIVITY", PhotonEnergy, PhotoPMTOnlyCathode_Reflectivity,nEntries);
378 PhotoPMTOnlyCathode_MPT->AddProperty(
"EFFICIENCY", PhotonEnergy, PhotoPMTOnlyCathode_Efficiency,nEntries);
379 PhotoPMTOnlyCathode_OpticalSurface->SetMaterialPropertiesTable(PhotoPMTOnlyCathode_MPT);
381 new G4LogicalBorderSurface(
"PMT_BorderSurface",
384 PhotoPMTOnlyCathode_OpticalSurface);
400 G4VisAttributes* QuartzGlueFilm_VisAtt =
new G4VisAttributes(G4Colour::White());
401 QuartzGlueFilm_VisAtt->SetVisibility(
true);
404 G4VisAttributes* PMTOnlyEntranceWindow_VisAtt =
new G4VisAttributes(G4Colour::Grey());
405 PMTOnlyEntranceWindow_VisAtt->SetVisibility(
true);
408 G4VisAttributes* PMTOnlyCathode_VisAtt =
new G4VisAttributes(G4Colour::Magenta());
409 PMTOnlyCathode_VisAtt->SetVisibility(
true);
416 G4SDManager* SDman = G4SDManager::GetSDMpointer();
443 G4Material* pttoMaterial = G4Material::GetMaterial(materialName);
447 G4cout <<
"=== Changing PMTOnly material: Look up material " << G4endl;
449 G4cout <<
"=== Changing PMTOnly material: Now the material is " << materialName << G4endl;
452 G4cerr <<
"=== Error: Changing PMTOnly material FAILED! " << G4endl << G4endl;
464 G4cout <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_CenterPositionInX() " << G4endl;
469 G4cout <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_CenterPositionInX() " << G4endl << G4endl;
480 G4cout <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_CenterPositionInY() " << G4endl;
485 G4cout <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_CenterPositionInY() " << G4endl << G4endl;
496 G4cout <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_CenterPositionInZ() " << G4endl;
501 G4cout <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_CenterPositionInZ() " << G4endl << G4endl;
514 G4cout <<
"PMTOnly_X: " << x << G4endl;
515 G4cout <<
"PMTOnly_Y: " << y << G4endl;
516 G4cout <<
"PMTOnly_Z: " << z << G4endl;
525 G4cout << G4endl <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_TiltAngleInX() " << G4endl;
538 G4cout << G4endl <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_TiltAngleInX() " << G4endl << G4endl;
549 G4cout << G4endl <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_TiltAngleInY() " << G4endl;
562 G4cout << G4endl <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_TiltAngleInY() " << G4endl << G4endl;
573 G4cout << G4endl <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_TiltAngleInZ() " << G4endl;
586 G4cout << G4endl <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_TiltAngleInZ() " << G4endl << G4endl;
597 G4cout <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_Enabled() " << G4endl;
602 G4cout <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_Enabled() " << G4endl << G4endl;
613 G4cout <<
"=== Calling QweakSimPMTOnly::SetPMTOnly_Disabled() " << G4endl;
618 G4cout <<
"=== Leaving QweakSimPMTOnly::SetPMTOnly_Disabled() " << G4endl << G4endl;
G4double PMTOnlyContainer_TiltAngle_Z
G4VisAttributes * PMTOnly_VisAtt
G4LogicalVolume * PMTOnlyQuartzOpticalFilm_Logical
G4double PMTOnlyContainer_FullLength_X
G4double PMTOnlyEntranceWindow_Diameter
G4double PMTOnlyQuartzOpticalFilm_X
G4LogicalVolume * PMTOnly_Logical
G4double PMTOnlyCathode_Diameter
G4double PMTOnlyContainer_CenterPosition_X
G4VSensitiveDetector * PMTOnlySD
G4double PMTOnlyEntranceWindow_Y
G4double GetPMTOnly_CenterPositionInX()
void SetPMTOnly_Enabled()
G4double MD5_CenterPosition_Y
G4double MD5_CenterPosition_X
static QweakSimMaterial * GetInstance()
QweakSimUserInformation * myUserInfo
G4VPhysicalVolume * PMTOnlyContainer_Physical
void FindPMTOnly_MotherCenter()
void SetPMTOnly_CenterPositionInZ(G4double zPos)
G4double PMTOnly_FullLength_X
G4VPhysicalVolume * PMTOnlyQuartzOpticalFilm_Physical
G4double PMTOnlyCathode_Z
G4double PMTOnlyEntranceWindow_Thickness
G4double PMTOnlyContainer_FullLength_Z
QweakSimMaterial * pMaterial
G4double MD5_CenterPosition_Z
void SetPMTOnly_Disabled()
G4Material * PMTOnlyEntranceWindow_Material
G4VPhysicalVolume * PMTOnlyEntranceWindow_Physical
G4double PMTOnlyContainer_CenterPosition_Z
G4double PMTOnly_CenterPosition_Y
G4Material * PMTOnlyQuartzOpticalFilm_Material
G4LogicalVolume * PMTOnlyEntranceWindow_Logical
G4Tubs * PMTOnlyCathode_Solid
G4double PMTOnlyContainer_CenterPosition_Y
G4double PMTOnlyContainer_TiltAngle_X
void SetPMTOnly_CenterPositionInY(G4double yPos)
G4double PMTOnly_CenterPosition_Z
void SetPMTOnly_TiltAngleInX(G4double xTiltAngle)
G4Box * PMTOnlyContainer_Solid
QweakSimPMTOnly(QweakSimUserInformation *)
G4Tubs * PMTOnlyEntranceWindow_Solid
G4VSensitiveDetector * PMTOnly_PMTSD
G4double PMTOnlyCathode_X
G4double PMTOnlyQuartzOpticalFilm_Thickness
G4Material * PMTOnlyContainer_Material
G4double GetPMTOnly_CenterPositionInY()
G4ThreeVector PMTOnly_CenterPosition
G4LogicalVolume * PMTOnlyCathode_Logical
void SetPMTOnly_TiltAngleInY(G4double yTiltAngle)
G4Material * PMTOnly_Material
G4Material * GetMaterial(G4String material)
void SetPMTOnly_TiltAngleInZ(G4double zTiltAngle)
void ConstructComponent(G4VPhysicalVolume *MotherVolume)
QweakSimPMTOnlyMessenger * PMTOnlyMessenger
G4VPhysicalVolume * PMTOnlyCathode_Physical
G4double PMTOnly_FullLength_Z
G4double PMTOnlyContainer_TiltAngle_Y
G4Material * PMTOnlyCathode_Material
G4VisAttributes * PMTOnlyContainer_VisAtt
void SetPMTOnly_CenterPositionInX(G4double xPos)
G4double PMTOnlyEntranceWindow_X
G4double PMTOnlyQuartzOpticalFilm_Y
G4Tubs * PMTOnlyQuartzOpticalFilm_Solid
G4LogicalVolume * PMTOnlyContainer_Logical
G4RotationMatrix * PMTOnlyContainer_RotationMatrix
G4double PMTOnlyQuartzOpticalFilm_Diameter
G4VPhysicalVolume * PMTOnly_Physical
G4double PMTOnlyContainer_FullLength_Y
G4double PMTOnly_CenterPosition_X
G4double PMTOnlyCathode_Y
G4double PMTOnly_FullLength_Y
G4double PMTOnlyQuartzOpticalFilm_Z
G4ThreeVector PMTOnlyContainer_CenterPosition
G4double GetPMTOnly_CenterPositionInZ()
void SetPMTOnly_Material(G4String)
G4double PMTOnlyEntranceWindow_Z
G4double PMTOnlyCathode_Thickness