/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSBunchGaussian.hh

00001 #ifndef BDSBunchGaussian_h
00002 #define BDSBunchGaussian_h 
00003 
00004 #include "BDSBunchInterface.hh"
00005 #include "Randomize.hh"
00006 #include "CLHEP/Matrix/Vector.h" 
00007 #include "CLHEP/Matrix/SymMatrix.h"
00008 #include "CLHEP/RandomObjects/RandMultiGauss.h"
00009 
00010 class BDSBunchGaussian : public BDSBunchInterface {
00011  
00012 protected : 
00013   G4double sigmaX;
00014   G4double sigmaY;
00015   G4double sigmaXp;
00016   G4double sigmaYp;
00017 
00018   CLHEP::HepVector    meansGM;
00019   CLHEP::HepSymMatrix sigmaGM;
00020 
00021   // Multidimensional Gaussian random number generator
00022   CLHEP::RandMultiGauss* GaussMultiGen;
00023 
00024 public :
00025   BDSBunchGaussian();
00026   BDSBunchGaussian(G4double sigmaX, G4double sigmaY, G4double sigmaXp, G4double sigmaYp, 
00027                    G4double X0,     G4double Y0,     G4double Z0,  G4double T0,
00028                    G4double Xp0,    G4double Yp0,    G4double Zp0, 
00029                    G4double sigmaT, G4double sigmaE);
00030   BDSBunchGaussian(G4double *sigma, 
00031                    G4double X0,     G4double Y0,  G4double Z0,  G4double T0,
00032                    G4double Xp0,    G4double Yp0, G4double Zp0, 
00033                    G4double sigmaT, G4double sigmaE);
00034   ~BDSBunchGaussian();
00035   void SetOptions(struct Options& opt); 
00036   void GetNextParticle(G4double& x0, G4double& y0, G4double& z0, 
00037                        G4double& xp, G4double& yp, G4double& zp,
00038                        G4double& t , G4double&  E, G4double& weight);  
00039 
00040   G4double GetSigmaX()  {return sigmaX;}
00041   G4double GetSigmaY()  {return sigmaY;}
00042   G4double GetSigmaXp() {return sigmaXp;}
00043   G4double GetSigmaYp() {return sigmaYp;}
00044   G4double GetSigma(G4int i, G4int j) {return sigmaGM[i][j];}
00045   
00046 protected:
00047   void SetSigmaX(G4double sigmaXIn) {sigmaX = sigmaXIn;}
00048   void SetSigmaY(G4double sigmaYIn) {sigmaY = sigmaYIn;}
00049   void SetSigmaXp(G4double sigmaXpIn) {sigmaXp = sigmaXpIn;}
00050   void SetSigmaYp(G4double sigmaYpIn) {sigmaYp = sigmaYpIn;}
00051   void SetSigma(G4int i, G4int j, G4double sigmaIn) {sigmaGM[i][j] = sigmaIn;}   
00052 };
00053 
00054 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7