#include <G4SPSPosDistribution.hh>
Public Member Functions | |
G4SPSPosDistribution () | |
~G4SPSPosDistribution () | |
void | SetPosDisType (G4String) |
G4String | GetPosDisType () |
void | SetPosDisShape (G4String) |
G4String | GetPosDisShape () |
void | SetCentreCoords (G4ThreeVector) |
G4ThreeVector | GetCentreCoords () |
void | SetPosRot1 (G4ThreeVector) |
void | SetPosRot2 (G4ThreeVector) |
void | SetHalfX (G4double) |
G4double | GetHalfX () |
void | SetHalfY (G4double) |
G4double | GetHalfY () |
void | SetHalfZ (G4double) |
G4double | GetHalfZ () |
void | SetRadius (G4double) |
G4double | GetRadius () |
void | SetRadius0 (G4double) |
void | SetBeamSigmaInR (G4double) |
void | SetBeamSigmaInX (G4double) |
void | SetBeamSigmaInY (G4double) |
void | SetParAlpha (G4double) |
void | SetParTheta (G4double) |
void | SetParPhi (G4double) |
void | ConfineSourceToVolume (G4String) |
void | SetBiasRndm (G4SPSRandomGenerator *a) |
void | SetVerbosity (G4int a) |
G4ThreeVector | GenerateOne () |
Friends | |
class | G4SPSAngDistribution |
Definition at line 138 of file G4SPSPosDistribution.hh.
G4SPSPosDistribution::G4SPSPosDistribution | ( | ) |
Definition at line 56 of file G4SPSPosDistribution.cc.
References G4TransportationManager::GetNavigatorForTracking(), G4TransportationManager::GetTransportationManager(), CLHEP::HepXHat(), CLHEP::HepYHat(), and CLHEP::HepZHat().
00057 : posRndm(0) 00058 { 00059 00060 // Initialise all variables 00061 // Position distribution Variables 00062 00063 SourcePosType = "Point"; 00064 Shape = "NULL"; 00065 halfx = 0.; 00066 halfy = 0.; 00067 halfz = 0.; 00068 Radius = 0.; 00069 Radius0 = 0.; 00070 SR = 0.; 00071 SX = 0.; 00072 SY = 0.; 00073 ParAlpha = 0.; 00074 ParTheta = 0.; 00075 ParPhi = 0.; 00076 CentreCoords = G4ThreeVector(0., 0., 0.); 00077 Rotx = CLHEP::HepXHat; 00078 Roty = CLHEP::HepYHat; 00079 Rotz = CLHEP::HepZHat; 00080 Confine = false; //If true confines source distribution to VolName 00081 VolName = "NULL"; 00082 SideRefVec1 = CLHEP::HepXHat; // x-axis 00083 SideRefVec2 = CLHEP::HepYHat; // y-axis 00084 SideRefVec3 = CLHEP::HepZHat; // z-axis 00085 verbosityLevel = 0 ; 00086 gNavigator = G4TransportationManager::GetTransportationManager() 00087 ->GetNavigatorForTracking(); 00088 }
G4SPSPosDistribution::~G4SPSPosDistribution | ( | ) |
void G4SPSPosDistribution::ConfineSourceToVolume | ( | G4String | ) |
Definition at line 206 of file G4SPSPosDistribution.cc.
References G4cout, G4endl, G4PhysicalVolumeStore::GetInstance(), and G4VPhysicalVolume::GetName().
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
00207 { 00208 VolName = Vname; 00209 if(verbosityLevel == 2) 00210 G4cout << VolName << G4endl; 00211 G4VPhysicalVolume *tempPV = NULL; 00212 G4PhysicalVolumeStore *PVStore = 0; 00213 G4String theRequiredVolumeName = VolName; 00214 PVStore = G4PhysicalVolumeStore::GetInstance(); 00215 G4int i = 0; 00216 G4bool found = false; 00217 if(verbosityLevel == 2) 00218 G4cout << PVStore->size() << G4endl; 00219 while (!found && i<G4int(PVStore->size())) { 00220 tempPV = (*PVStore)[i]; 00221 found = tempPV->GetName() == theRequiredVolumeName; 00222 if(verbosityLevel == 2) 00223 G4cout << i << " " << " " << tempPV->GetName() << " " << theRequiredVolumeName << " " << found << G4endl; 00224 if (!found) 00225 {i++;} 00226 } 00227 // found = true then the volume exists else it doesnt. 00228 if(found == true) 00229 { 00230 if(verbosityLevel >= 1) 00231 G4cout << "Volume " << VolName << " exists" << G4endl; 00232 Confine = true; 00233 } 00234 else 00235 { 00236 G4cout << " **** Error: Volume does not exist **** " << G4endl; 00237 G4cout << " Ignoring confine condition" << G4endl; 00238 Confine = false; 00239 VolName = "NULL"; 00240 } 00241 00242 }
G4ThreeVector G4SPSPosDistribution::GenerateOne | ( | ) |
Definition at line 974 of file G4SPSPosDistribution.cc.
References G4cout.
Referenced by G4SingleParticleSource::GeneratePrimaryVertex().
00975 { 00976 // 00977 G4bool srcconf = false; 00978 G4int LoopCount = 0; 00979 while(srcconf == false) 00980 { 00981 if(SourcePosType == "Point") 00982 GeneratePointSource(); 00983 else if(SourcePosType == "Beam") 00984 GeneratePointsInBeam(); 00985 else if(SourcePosType == "Plane") 00986 GeneratePointsInPlane(); 00987 else if(SourcePosType == "Surface") 00988 GeneratePointsOnSurface(); 00989 else if(SourcePosType == "Volume") 00990 GeneratePointsInVolume(); 00991 else 00992 { 00993 G4cout << "Error: SourcePosType undefined" << G4endl; 00994 G4cout << "Generating point source" << G4endl; 00995 GeneratePointSource(); 00996 } 00997 if(Confine == true) 00998 { 00999 srcconf = IsSourceConfined(); 01000 // if source in confined srcconf = true terminating the loop 01001 // if source isnt confined srcconf = false and loop continues 01002 } 01003 else if(Confine == false) 01004 srcconf = true; // terminate loop 01005 LoopCount++; 01006 if(LoopCount == 100000) 01007 { 01008 G4cout << "*************************************" << G4endl; 01009 G4cout << "LoopCount = 100000" << G4endl; 01010 G4cout << "Either the source distribution >> confinement" << G4endl; 01011 G4cout << "or any confining volume may not overlap with" << G4endl; 01012 G4cout << "the source distribution or any confining volumes" << G4endl; 01013 G4cout << "may not exist"<< G4endl; 01014 G4cout << "If you have set confine then this will be ignored" <<G4endl; 01015 G4cout << "for this event." << G4endl; 01016 G4cout << "*************************************" << G4endl; 01017 srcconf = true; //Avoids an infinite loop 01018 } 01019 } 01020 return particle_position; 01021 }
G4ThreeVector G4SPSPosDistribution::GetCentreCoords | ( | ) | [inline] |
G4double G4SPSPosDistribution::GetHalfX | ( | ) | [inline] |
G4double G4SPSPosDistribution::GetHalfY | ( | ) | [inline] |
G4double G4SPSPosDistribution::GetHalfZ | ( | ) | [inline] |
G4String G4SPSPosDistribution::GetPosDisShape | ( | ) | [inline] |
G4String G4SPSPosDistribution::GetPosDisType | ( | ) | [inline] |
G4double G4SPSPosDistribution::GetRadius | ( | ) | [inline] |
void G4SPSPosDistribution::SetBeamSigmaInR | ( | G4double | ) |
Definition at line 157 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetBeamSigmaInX | ( | G4double | ) |
Definition at line 163 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetBeamSigmaInY | ( | G4double | ) |
Definition at line 168 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetBiasRndm | ( | G4SPSRandomGenerator * | a | ) | [inline] |
Definition at line 174 of file G4SPSPosDistribution.hh.
Referenced by G4SingleParticleSource::G4SingleParticleSource().
void G4SPSPosDistribution::SetCentreCoords | ( | G4ThreeVector | ) |
Definition at line 104 of file G4SPSPosDistribution.cc.
Referenced by G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().
void G4SPSPosDistribution::SetHalfX | ( | G4double | ) |
Definition at line 132 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetHalfY | ( | G4double | ) |
Definition at line 137 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetHalfZ | ( | G4double | ) |
Definition at line 142 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetParAlpha | ( | G4double | ) |
Definition at line 173 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetParPhi | ( | G4double | ) |
Definition at line 183 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetParTheta | ( | G4double | ) |
Definition at line 178 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetPosDisShape | ( | G4String | ) |
Definition at line 99 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().
void G4SPSPosDistribution::SetPosDisType | ( | G4String | ) |
Definition at line 94 of file G4SPSPosDistribution.cc.
Referenced by G4AdjointPrimaryGenerator::G4AdjointPrimaryGenerator(), G4AdjointPrimaryGenerator::SetAdjointPrimarySourceOnAnExtSurfaceOfAVolume(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().
void G4SPSPosDistribution::SetPosRot1 | ( | G4ThreeVector | ) |
Definition at line 109 of file G4SPSPosDistribution.cc.
References G4cout, and G4endl.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
00110 { 00111 // This should be x' 00112 Rotx = posrot1; 00113 if(verbosityLevel == 2) 00114 { 00115 G4cout << "Vector x' " << Rotx << G4endl; 00116 } 00117 GenerateRotationMatrices(); 00118 }
void G4SPSPosDistribution::SetPosRot2 | ( | G4ThreeVector | ) |
Definition at line 120 of file G4SPSPosDistribution.cc.
References G4cout, and G4endl.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
00121 { 00122 // This is a vector in the plane x'y' but need not 00123 // be y' 00124 Roty = posrot2; 00125 if(verbosityLevel == 2) 00126 { 00127 G4cout << "The vector in the x'-y' plane " << Roty << G4endl; 00128 } 00129 GenerateRotationMatrices(); 00130 }
void G4SPSPosDistribution::SetRadius | ( | G4double | ) |
Definition at line 147 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().
void G4SPSPosDistribution::SetRadius0 | ( | G4double | ) |
Definition at line 152 of file G4SPSPosDistribution.cc.
Referenced by G4GeneralParticleSourceMessenger::SetNewValue().
void G4SPSPosDistribution::SetVerbosity | ( | G4int | a | ) | [inline] |
Definition at line 176 of file G4SPSPosDistribution.hh.
Referenced by G4SingleParticleSource::SetVerbosity().
friend class G4SPSAngDistribution [friend] |
Definition at line 141 of file G4SPSPosDistribution.hh.