Import Geant4 2.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-08 15:42:07 +02:00
parent 103bda00c8
commit e7d7193284
3106 changed files with 171117 additions and 90550 deletions
@@ -0,0 +1,177 @@
// This code implementation is the intellectual property of
// the GEANT4 collaboration.
//
// By copying, distributing or modifying the Program (or any work
// based on the Program) you indicate your acceptance of this statement,
// and all its terms.
//
// $Id: G4RTMessenger.cc,v 1.4 2000/06/07 02:52:45 asaim Exp $
// GEANT4 tag $Name: geant4-02-00 $
//
//
//
#include "G4RTMessenger.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWith3Vector.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithAString.hh"
#include "G4RayTracer.hh"
#include "G4RTSteppingAction.hh"
#include "G4ThreeVector.hh"
G4RTMessenger::G4RTMessenger(G4RayTracer* p1,G4RTSteppingAction* p2)
{
theTracer = p1;
theSteppingAction = p2;
rayDirectory = new G4UIdirectory("/vis/rayTracer/");
rayDirectory->SetGuidance("RayTracer commands.");
fileCmd = new G4UIcmdWithAString("/vis/rayTracer/trace",this);
fileCmd->SetGuidance("Start the ray tracing.");
fileCmd->SetGuidance("Define the name of output JPEG file.");
fileCmd->SetParameterName("fileName",true);
fileCmd->SetDefaultValue("g4RayTracer.jpeg");
fileCmd->AvailableForStates(Idle);
columnCmd = new G4UIcmdWithAnInteger("/vis/rayTracer/column",this);
columnCmd->SetGuidance("Define the number of horizontal pixels.");
columnCmd->SetParameterName("nPixel",false);
columnCmd->SetRange("nPixel > 0");
rowCmd = new G4UIcmdWithAnInteger("/vis/rayTracer/row",this);
rowCmd->SetGuidance("Define the number of virtical pixels.");
rowCmd->SetParameterName("nPixel",false);
rowCmd->SetRange("nPixel > 0");
targetCmd = new G4UIcmdWith3VectorAndUnit("/vis/rayTracer/target",this);
targetCmd->SetGuidance("Define the center position of the target.");
targetCmd->SetParameterName("X","Y","Z",true);
targetCmd->SetDefaultValue(G4ThreeVector(0.,0.,0.));
targetCmd->SetDefaultUnit("m");
eyePosCmd = new G4UIcmdWith3VectorAndUnit("/vis/rayTracer/eyePosition",this);
eyePosCmd->SetGuidance("Define the eye position.");
eyePosCmd->SetGuidance("Eye direction is calsurated from (target - eyePosition).");
eyePosCmd->SetParameterName("X","Y","Z",true);
eyePosCmd->SetDefaultValue(G4ThreeVector(0.,0.,0.));
eyePosCmd->SetDefaultUnit("m");
lightCmd = new G4UIcmdWith3Vector("/vis/rayTracer/lightDirection",this);
lightCmd->SetGuidance("Define the direction of illumination light.");
lightCmd->SetGuidance("The vector needs not to be a unit vector, but it must not be a zero vector.");
lightCmd->SetParameterName("Px","Py","Pz",true);
lightCmd->SetDefaultValue(G4ThreeVector(0.1,0.2,0.3));
lightCmd->SetRange("Px != 0 || Py != 0 || Pz != 0");
spanXCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/span",this);
spanXCmd->SetGuidance("Define the angle per 100 pixels.");
spanXCmd->SetParameterName("span",true);
spanXCmd->SetDefaultValue(50.);
spanXCmd->SetDefaultUnit("deg");
spanXCmd->SetRange("span>0.");
headCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/headAngle",this);
headCmd->SetGuidance("Define the head direction.");
headCmd->SetParameterName("headAngle",true);
headCmd->SetDefaultValue(270.);
headCmd->SetDefaultUnit("deg");
headCmd->SetRange("headAngle>=0. && headAngle<360.");
attCmd = new G4UIcmdWithADoubleAndUnit("/vis/rayTracer/attenuation",this);
attCmd->SetGuidance("Define the attenuation length for transparent material.");
attCmd->SetGuidance("Note that this value is independent to the attenuation length for the optical photon processes.");
attCmd->SetParameterName("Length",true);
attCmd->SetDefaultValue(1.0);
attCmd->SetDefaultUnit("m");
attCmd->SetRange("Length > 0.");
distCmd = new G4UIcmdWithABool("/vis/rayTracer/distortion",this);
distCmd->SetGuidance("Distortion effect of the fish eye lens.");
distCmd->SetParameterName("flag",true);
distCmd->SetDefaultValue(false);
transCmd = new G4UIcmdWithABool("/vis/rayTracer/ignoreTransparency",this);
transCmd->SetGuidance("Ignore transparency even if the alpha of G4Colour < 1.");
transCmd->SetParameterName("flag",true);
transCmd->SetDefaultValue(false);
}
G4RTMessenger::~G4RTMessenger()
{
delete columnCmd;
delete rowCmd;
delete targetCmd;
delete eyePosCmd;
delete lightCmd;
delete spanXCmd;
delete headCmd;
delete attCmd;
delete distCmd;
delete transCmd;
delete fileCmd;
delete rayDirectory;
}
G4String G4RTMessenger::GetCurrentValue(G4UIcommand * command)
{
G4String currentValue;
if(command==columnCmd)
{ currentValue = columnCmd->ConvertToString(theTracer->GetNColumn()); }
else if(command==rowCmd)
{ currentValue = rowCmd->ConvertToString(theTracer->GetNRow()); }
else if(command==targetCmd)
{ currentValue = targetCmd->ConvertToString(theTracer->GetTargetPosition(),"m"); }
else if(command==eyePosCmd)
{ currentValue = eyePosCmd->ConvertToString(theTracer->GetEyePosition(),"m"); }
else if(command==lightCmd)
{ currentValue = lightCmd->ConvertToString(theTracer->GetLightDirection()); }
else if(command==spanXCmd)
{ currentValue = spanXCmd->ConvertToString(theTracer->GetViewSpan(),"deg"); }
else if(command==headCmd)
{ currentValue = headCmd->ConvertToString(theTracer->GetHeadAngle(),"deg"); }
else if(command==attCmd)
{ currentValue = attCmd->ConvertToString(theTracer->GetAttenuationLength(),"m");}
else if(command==distCmd)
{ currentValue = distCmd->ConvertToString(theTracer->GetDistortion()); }
else if(command==transCmd)
{ currentValue = transCmd->ConvertToString(theSteppingAction->GetIgnoreTransparency()); }
return currentValue;
}
void G4RTMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
{
if(command==columnCmd)
{ theTracer->SetNColumn(columnCmd->GetNewIntValue(newValue)); }
else if(command==rowCmd)
{ theTracer->SetNRow(rowCmd->GetNewIntValue(newValue)); }
else if(command==targetCmd)
{ theTracer->SetTargetPosition(targetCmd->GetNew3VectorValue(newValue)); }
else if(command==eyePosCmd)
{ theTracer->SetEyePosition(eyePosCmd->GetNew3VectorValue(newValue)); }
else if(command==lightCmd)
{ theTracer->SetLightDirection(lightCmd->GetNew3VectorValue(newValue)); }
else if(command==spanXCmd)
{ theTracer->SetViewSpan(spanXCmd->GetNewDoubleValue(newValue)); }
else if(command==headCmd)
{ theTracer->SetHeadAngle(headCmd->GetNewDoubleValue(newValue)); }
else if(command==attCmd)
{ theTracer->SetAttenuationLength(attCmd->GetNewDoubleValue(newValue)); }
else if(command==distCmd)
{ theTracer->SetDistortion(distCmd->GetNewBoolValue(newValue)); }
else if(command==transCmd)
{ theSteppingAction->SetIgnoreTransparency(transCmd->GetNewBoolValue(newValue)); }
else if(command==fileCmd)
{ theTracer->Trace(newValue); }
}