Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -32,25 +32,26 @@
#include "DetectorMessenger.hh"
#include "DetectorConstruction.hh"
#include "G4OpticalSurface.hh"
#include "G4UIcmdWithADouble.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcommand.hh"
#include "G4UIdirectory.hh"
#include "G4UIparameter.hh"
#include <sstream>
#include <iostream>
#include "G4OpticalSurface.hh"
#include "DetectorConstruction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcommand.hh"
#include "G4UIparameter.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADouble.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithoutParameter.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
:G4UImessenger(),fDetector(Det)
DetectorMessenger::DetectorMessenger(DetectorConstruction* Det)
: G4UImessenger()
, fDetector(Det)
{
fOpticalDir = new G4UIdirectory("/opnovice2/");
fOpticalDir->SetGuidance("Parameters for optical simulation.");
@@ -65,8 +66,7 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fSurfaceFinishCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceFinishCmd->SetToBeBroadcasted(false);
fSurfaceModelCmd =
new G4UIcmdWithAString("/opnovice2/surfaceModel", this);
fSurfaceModelCmd = new G4UIcmdWithAString("/opnovice2/surfaceModel", this);
fSurfaceModelCmd->SetGuidance("surface model.");
fSurfaceModelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceModelCmd->SetToBeBroadcasted(false);
@@ -78,8 +78,7 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fSurfaceSigmaAlphaCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceSigmaAlphaCmd->SetToBeBroadcasted(false);
fSurfacePolishCmd =
new G4UIcmdWithADouble("/opnovice2/surfacePolish", this);
fSurfacePolishCmd = new G4UIcmdWithADouble("/opnovice2/surfacePolish", this);
fSurfacePolishCmd->SetGuidance("surface polish");
fSurfacePolishCmd->SetGuidance(" parameter (for Glisur model).");
fSurfacePolishCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
@@ -129,21 +128,20 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
new G4UIcmdWithAString("/opnovice2/worldConstProperty", this);
fWorldMatPropConstCmd->SetGuidance("Set material constant property");
fWorldMatPropConstCmd->SetGuidance(" for the world.");
fWorldMatPropConstCmd->
AvailableForStates(G4State_PreInit, G4State_Idle);
fWorldMatPropConstCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fWorldMatPropConstCmd->SetToBeBroadcasted(false);
fWorldMaterialCmd = new G4UIcmdWithAString("/opnovice2/worldMaterial", this);
fWorldMaterialCmd->SetGuidance("Set material of world.");
fWorldMaterialCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fWorldMaterialCmd->SetToBeBroadcasted(false);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorMessenger::~DetectorMessenger()
{
delete fOpticalDir;
delete fSurfaceFinishCmd;
delete fSurfaceTypeCmd;
delete fSurfaceModelCmd;
@@ -161,189 +159,245 @@ DetectorMessenger::~DetectorMessenger()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
// FINISH
if (command == fSurfaceFinishCmd) {
if (newValue == "polished") {
void DetectorMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
// FINISH
if(command == fSurfaceFinishCmd)
{
if(newValue == "polished")
{
fDetector->SetSurfaceFinish(polished);
}
else if (newValue == "polishedfrontpainted") {
else if(newValue == "polishedfrontpainted")
{
fDetector->SetSurfaceFinish(polishedfrontpainted);
}
else if (newValue == "polishedbackpainted") {
else if(newValue == "polishedbackpainted")
{
fDetector->SetSurfaceFinish(polishedbackpainted);
}
else if (newValue == "ground") {
else if(newValue == "ground")
{
fDetector->SetSurfaceFinish(ground);
}
else if (newValue == "groundfrontpainted") {
else if(newValue == "groundfrontpainted")
{
fDetector->SetSurfaceFinish(groundfrontpainted);
}
else if (newValue == "groundbackpainted") {
else if(newValue == "groundbackpainted")
{
fDetector->SetSurfaceFinish(groundbackpainted);
}
else if (newValue == "polishedlumirrorair") {
else if(newValue == "polishedlumirrorair")
{
fDetector->SetSurfaceFinish(polishedlumirrorair);
}
else if (newValue == "polishedlumirrorglue") {
else if(newValue == "polishedlumirrorglue")
{
fDetector->SetSurfaceFinish(polishedlumirrorglue);
}
else if (newValue == "polishedair") {
else if(newValue == "polishedair")
{
fDetector->SetSurfaceFinish(polishedair);
}
else if (newValue == "polishedteflonair") {
else if(newValue == "polishedteflonair")
{
fDetector->SetSurfaceFinish(polishedteflonair);
}
else if (newValue == "polishedtioair") {
else if(newValue == "polishedtioair")
{
fDetector->SetSurfaceFinish(polishedtioair);
}
else if (newValue == "polishedtyvekair") {
else if(newValue == "polishedtyvekair")
{
fDetector->SetSurfaceFinish(polishedtyvekair);
}
else if (newValue == "polishedvm2000air") {
else if(newValue == "polishedvm2000air")
{
fDetector->SetSurfaceFinish(polishedvm2000air);
}
else if (newValue == "polishedvm2000glue") {
else if(newValue == "polishedvm2000glue")
{
fDetector->SetSurfaceFinish(polishedvm2000glue);
}
else if (newValue == "etchedlumirrorair") {
else if(newValue == "etchedlumirrorair")
{
fDetector->SetSurfaceFinish(etchedlumirrorair);
}
else if (newValue == "etchedlumirrorglue") {
else if(newValue == "etchedlumirrorglue")
{
fDetector->SetSurfaceFinish(etchedlumirrorglue);
}
else if (newValue == "etchedair") {
else if(newValue == "etchedair")
{
fDetector->SetSurfaceFinish(etchedair);
}
else if (newValue == "etchedteflonair") {
else if(newValue == "etchedteflonair")
{
fDetector->SetSurfaceFinish(etchedteflonair);
}
else if (newValue == "etchedtioair") {
else if(newValue == "etchedtioair")
{
fDetector->SetSurfaceFinish(etchedtioair);
}
else if (newValue == "etchedtyvekair") {
else if(newValue == "etchedtyvekair")
{
fDetector->SetSurfaceFinish(etchedtyvekair);
}
else if (newValue == "etchedvm2000air") {
else if(newValue == "etchedvm2000air")
{
fDetector->SetSurfaceFinish(etchedvm2000air);
}
else if (newValue == "etchedvm2000glue") {
else if(newValue == "etchedvm2000glue")
{
fDetector->SetSurfaceFinish(etchedvm2000glue);
}
else if (newValue == "groundlumirrorair") {
else if(newValue == "groundlumirrorair")
{
fDetector->SetSurfaceFinish(groundlumirrorair);
}
else if (newValue == "groundlumirrorglue") {
else if(newValue == "groundlumirrorglue")
{
fDetector->SetSurfaceFinish(groundlumirrorglue);
}
else if (newValue == "groundair") {
else if(newValue == "groundair")
{
fDetector->SetSurfaceFinish(groundair);
}
else if (newValue == "groundteflonair") {
else if(newValue == "groundteflonair")
{
fDetector->SetSurfaceFinish(groundteflonair);
}
else if (newValue == "groundtioair") {
else if(newValue == "groundtioair")
{
fDetector->SetSurfaceFinish(groundtioair);
}
else if (newValue == "groundtyvekair") {
else if(newValue == "groundtyvekair")
{
fDetector->SetSurfaceFinish(groundtyvekair);
}
else if (newValue == "groundvm2000air") {
else if(newValue == "groundvm2000air")
{
fDetector->SetSurfaceFinish(groundvm2000air);
}
else if (newValue == "groundvm2000glue") {
else if(newValue == "groundvm2000glue")
{
fDetector->SetSurfaceFinish(groundvm2000glue);
}
// for Davis model
else if (newValue == "Rough_LUT") {
else if(newValue == "Rough_LUT")
{
fDetector->SetSurfaceFinish(Rough_LUT);
}
else if (newValue == "RoughTeflon_LUT") {
else if(newValue == "RoughTeflon_LUT")
{
fDetector->SetSurfaceFinish(RoughTeflon_LUT);
}
else if (newValue == "RoughESR_LUT") {
else if(newValue == "RoughESR_LUT")
{
fDetector->SetSurfaceFinish(RoughESR_LUT);
}
else if (newValue == "RoughESRGrease_LUT") {
else if(newValue == "RoughESRGrease_LUT")
{
fDetector->SetSurfaceFinish(RoughESRGrease_LUT);
}
else if (newValue == "Polished_LUT") {
else if(newValue == "Polished_LUT")
{
fDetector->SetSurfaceFinish(Polished_LUT);
}
else if (newValue == "PolishedTeflon_LUT") {
else if(newValue == "PolishedTeflon_LUT")
{
fDetector->SetSurfaceFinish(PolishedTeflon_LUT);
}
else if (newValue == "PolishedESR_LUT") {
else if(newValue == "PolishedESR_LUT")
{
fDetector->SetSurfaceFinish(PolishedESR_LUT);
}
else if (newValue == "PolishedESRGrease_LUT") {
else if(newValue == "PolishedESRGrease_LUT")
{
fDetector->SetSurfaceFinish(PolishedESRGrease_LUT);
}
else if (newValue == "Detector_LUT") {
else if(newValue == "Detector_LUT")
{
fDetector->SetSurfaceFinish(Detector_LUT);
}
else {
else
{
G4ExceptionDescription ed;
ed << "Invalid surface finish: " << newValue;
G4Exception("DetectorMessenger", "OpNovice2_003", FatalException,ed);
G4Exception("DetectorMessenger", "OpNovice2_003", FatalException, ed);
}
}
// MODEL
else if (command == fSurfaceModelCmd) {
if (newValue == "glisur") {
else if(command == fSurfaceModelCmd)
{
if(newValue == "glisur")
{
fDetector->SetSurfaceModel(glisur);
}
else if (newValue == "unified") {
else if(newValue == "unified")
{
fDetector->SetSurfaceModel(unified);
}
else if (newValue == "LUT") {
else if(newValue == "LUT")
{
fDetector->SetSurfaceModel(LUT);
}
else if (newValue == "DAVIS") {
else if(newValue == "DAVIS")
{
fDetector->SetSurfaceModel(DAVIS);
}
else if (newValue == "dichroic") {
else if(newValue == "dichroic")
{
fDetector->SetSurfaceModel(dichroic);
}
else {
else
{
G4ExceptionDescription ed;
ed << "Invalid surface model: " << newValue;
G4Exception("DetectorMessenger", "ONovice2_001",
FatalException,ed);
G4Exception("DetectorMessenger", "ONovice2_001", FatalException, ed);
}
}
// TYPE
else if (command == fSurfaceTypeCmd) {
if (newValue == "dielectric_metal") {
else if(command == fSurfaceTypeCmd)
{
if(newValue == "dielectric_metal")
{
fDetector->SetSurfaceType(dielectric_metal);
}
else if (newValue == "dielectric_dielectric") {
else if(newValue == "dielectric_dielectric")
{
fDetector->SetSurfaceType(dielectric_dielectric);
}
else if (newValue == "dielectric_LUT") {
else if(newValue == "dielectric_LUT")
{
fDetector->SetSurfaceType(dielectric_LUT);
}
else if (newValue == "dielectric_LUTDAVIS") {
else if(newValue == "dielectric_LUTDAVIS")
{
fDetector->SetSurfaceType(dielectric_LUTDAVIS);
}
else {
else
{
G4ExceptionDescription ed;
ed << "Invalid surface type: " << newValue;
G4Exception("DetectorMessenger", "OpNovice2_002", FatalException,ed);
G4Exception("DetectorMessenger", "OpNovice2_002", FatalException, ed);
}
}
else if (command == fSurfaceSigmaAlphaCmd) {
else if(command == fSurfaceSigmaAlphaCmd)
{
fDetector->SetSurfaceSigmaAlpha(
G4UIcmdWithADouble::GetNewDoubleValue(newValue));
}
else if (command == fSurfacePolishCmd) {
else if(command == fSurfacePolishCmd)
{
fDetector->SetSurfacePolish(
G4UIcmdWithADouble::GetNewDoubleValue(newValue));
}
else if (command == fTankMatPropVectorCmd) {
else if(command == fTankMatPropVectorCmd)
{
// got a string. need to convert it to physics vector.
// string format is property name, then pairs of energy, value
// specify units for each value, eg 3.0*eV
@@ -352,64 +406,73 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
std::istringstream instring(newValue);
G4String prop;
instring >> prop;
while (instring) {
while(instring)
{
G4String tmp;
instring >> tmp;
if (tmp == "") { break; }
if(tmp == "")
{
break;
}
G4double en = G4UIcommand::ConvertToDouble(tmp);
instring >> tmp;
G4double val;
val = G4UIcommand::ConvertToDouble(tmp);
G4double val = G4UIcommand::ConvertToDouble(tmp);
mpv->InsertValues(en, val);
}
const char* c = prop.c_str();
fDetector->AddTankMPV(c, mpv);
fDetector->AddTankMPV(prop, mpv);
}
else if (command == fWorldMatPropVectorCmd) {
else if(command == fWorldMatPropVectorCmd)
{
// Convert string to physics vector
// string format is property name, then pairs of energy, value
G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
std::istringstream instring(newValue);
G4String prop;
instring >> prop;
while (instring) {
while(instring)
{
G4String tmp;
instring >> tmp;
if (tmp == "") { break; }
if(tmp == "")
{
break;
}
G4double en = G4UIcommand::ConvertToDouble(tmp);
instring >> tmp;
G4double val;
val = G4UIcommand::ConvertToDouble(tmp);
G4double val = G4UIcommand::ConvertToDouble(tmp);
mpv->InsertValues(en, val);
}
const char* c = prop.c_str();
fDetector->AddWorldMPV(c, mpv);
}
fDetector->AddWorldMPV(prop, mpv);
}
else if (command == fSurfaceMatPropVectorCmd) {
else if(command == fSurfaceMatPropVectorCmd)
{
// Convert string to physics vector
// string format is property name, then pairs of energy, value
// string format is property name, then pairs of energy, value
// space delimited
G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
G4cout << newValue << G4endl;
std::istringstream instring(newValue);
G4String prop;
instring >> prop;
while (instring) {
while(instring)
{
G4String tmp;
instring >> tmp;
if (tmp == "") { break; }
if(tmp == "")
{
break;
}
G4double en = G4UIcommand::ConvertToDouble(tmp);
instring >> tmp;
G4double val;
val = G4UIcommand::ConvertToDouble(tmp);
G4double val = G4UIcommand::ConvertToDouble(tmp);
mpv->InsertValues(en, val);
}
const char* c = prop.c_str();
fDetector->AddSurfaceMPV(c, mpv);
}
fDetector->AddSurfaceMPV(prop, mpv);
}
else if (command == fTankMatPropConstCmd) {
else if(command == fTankMatPropConstCmd)
{
// Convert string to physics vector
// string format is property name, then value
// space delimited
@@ -419,10 +482,10 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
instring >> prop;
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddTankMPC(c, val);
fDetector->AddTankMPC(prop, val);
}
else if (command == fWorldMatPropConstCmd) {
else if(command == fWorldMatPropConstCmd)
{
// Convert string to physics vector
// string format is property name, then value
// space delimited
@@ -432,10 +495,10 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
instring >> prop;
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddTankMPC(c, val);
fDetector->AddWorldMPC(prop, val);
}
else if (command == fSurfaceMatPropConstCmd) {
else if(command == fSurfaceMatPropConstCmd)
{
// Convert string to physics vector
// string format is property name, then value
// space delimited
@@ -445,13 +508,14 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
instring >> prop;
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddSurfaceMPC(c, val);
fDetector->AddSurfaceMPC(prop, val);
}
else if (command == fWorldMaterialCmd) {
else if(command == fWorldMaterialCmd)
{
fDetector->SetWorldMaterial(newValue);
}
else if (command == fTankMaterialCmd) {
else if(command == fTankMaterialCmd)
{
fDetector->SetTankMaterial(newValue);
}
}