G4SPSPosDistribution Class Reference

#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


Detailed Description

Definition at line 138 of file G4SPSPosDistribution.hh.


Constructor & Destructor Documentation

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 (  ) 

Definition at line 90 of file G4SPSPosDistribution.cc.

00091 {
00092 }


Member Function Documentation

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]

Definition at line 154 of file G4SPSPosDistribution.hh.

00154 { return CentreCoords; } ;

G4double G4SPSPosDistribution::GetHalfX (  )  [inline]

Definition at line 158 of file G4SPSPosDistribution.hh.

00158 { return halfx; } ;

G4double G4SPSPosDistribution::GetHalfY (  )  [inline]

Definition at line 160 of file G4SPSPosDistribution.hh.

00160 { return halfy; } ;

G4double G4SPSPosDistribution::GetHalfZ (  )  [inline]

Definition at line 162 of file G4SPSPosDistribution.hh.

00162 { return halfz; } ;

G4String G4SPSPosDistribution::GetPosDisShape (  )  [inline]

Definition at line 150 of file G4SPSPosDistribution.hh.

00150 { return Shape; };

G4String G4SPSPosDistribution::GetPosDisType (  )  [inline]

Definition at line 148 of file G4SPSPosDistribution.hh.

00148 { return SourcePosType; };

G4double G4SPSPosDistribution::GetRadius (  )  [inline]

Definition at line 164 of file G4SPSPosDistribution.hh.

00164 { return Radius; };

void G4SPSPosDistribution::SetBeamSigmaInR ( G4double   ) 

Definition at line 157 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00158 {
00159   SX = SY = r;
00160   SR = r;
00161 }

void G4SPSPosDistribution::SetBeamSigmaInX ( G4double   ) 

Definition at line 163 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00164 {
00165   SX = r;
00166 }

void G4SPSPosDistribution::SetBeamSigmaInY ( G4double   ) 

Definition at line 168 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00169 {
00170   SY = r;
00171 }

void G4SPSPosDistribution::SetBiasRndm ( G4SPSRandomGenerator a  )  [inline]

Definition at line 174 of file G4SPSPosDistribution.hh.

Referenced by G4SingleParticleSource::G4SingleParticleSource().

00174 { posRndm = a ; };

void G4SPSPosDistribution::SetCentreCoords ( G4ThreeVector   ) 

Definition at line 104 of file G4SPSPosDistribution.cc.

Referenced by G4AdjointPrimaryGenerator::GenerateAdjointPrimaryVertex(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().

00105 {
00106   CentreCoords = coordsOfCentre;
00107 }

void G4SPSPosDistribution::SetHalfX ( G4double   ) 

Definition at line 132 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00133 {
00134   halfx = xhalf;
00135 }

void G4SPSPosDistribution::SetHalfY ( G4double   ) 

Definition at line 137 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00138 {
00139   halfy = yhalf;
00140 }

void G4SPSPosDistribution::SetHalfZ ( G4double   ) 

Definition at line 142 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00143 {
00144   halfz = zhalf;
00145 }

void G4SPSPosDistribution::SetParAlpha ( G4double   ) 

Definition at line 173 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00174 {
00175   ParAlpha = paralp;
00176 }

void G4SPSPosDistribution::SetParPhi ( G4double   ) 

Definition at line 183 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00184 {
00185   ParPhi = parphi;
00186 }

void G4SPSPosDistribution::SetParTheta ( G4double   ) 

Definition at line 178 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00179 {
00180   ParTheta = parthe;
00181 }

void G4SPSPosDistribution::SetPosDisShape ( G4String   ) 

Definition at line 99 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().

00100 {
00101   Shape = shapeType;
00102 }

void G4SPSPosDistribution::SetPosDisType ( G4String   ) 

Definition at line 94 of file G4SPSPosDistribution.cc.

Referenced by G4AdjointPrimaryGenerator::G4AdjointPrimaryGenerator(), G4AdjointPrimaryGenerator::SetAdjointPrimarySourceOnAnExtSurfaceOfAVolume(), G4GeneralParticleSourceMessenger::SetNewValue(), and G4AdjointPrimaryGenerator::SetSphericalAdjointPrimarySource().

00095 {
00096   SourcePosType = PosType;
00097 }

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().

00148 {
00149   Radius = rds;
00150 }

void G4SPSPosDistribution::SetRadius0 ( G4double   ) 

Definition at line 152 of file G4SPSPosDistribution.cc.

Referenced by G4GeneralParticleSourceMessenger::SetNewValue().

00153 {
00154   Radius0 = rds;
00155 }

void G4SPSPosDistribution::SetVerbosity ( G4int  a  )  [inline]

Definition at line 176 of file G4SPSPosDistribution.hh.

Referenced by G4SingleParticleSource::SetVerbosity().

00176 {verbosityLevel = a; } ;


Friends And Related Function Documentation

friend class G4SPSAngDistribution [friend]

Definition at line 141 of file G4SPSPosDistribution.hh.


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:53:25 2013 for Geant4 by  doxygen 1.4.7