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

00001 #ifndef BDSBunchTwiss_h
00002 #define BDSBunchTwiss_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 BDSBunchTwiss : public BDSBunchInterface {
00011 
00012 private : 
00013   /* Twiss parameters */
00014   G4double betaX;
00015   G4double betaY;
00016   G4double alphaX;
00017   G4double alphaY;
00018   G4double emitX;
00019   G4double emitY; 
00020   G4double gammaX;
00021   G4double gammaY;
00022   
00023   /* Random number generators */
00024   //  CLHEP::RandGauss *GaussGen;
00025   //  CLHEP::RandFlat  *FlatGen;  
00026   CLHEP::RandMultiGauss* GaussMultiGen;  
00027 
00028   /* Gaussian generator */
00029   CLHEP::HepVector    meansGM;
00030   CLHEP::HepSymMatrix sigmaGM;
00031 
00032 public : 
00033   BDSBunchTwiss();
00034   BDSBunchTwiss(G4double betaX,  G4double betaY, 
00035                 G4double alphaX, G4double alphaY,
00036                 G4double emitX,  G4double emitY,
00037                 G4double X0,     G4double Y0,    G4double Z0,   G4double T0, 
00038                 G4double Xp0,    G4double Yp0,   G4double Zp0,
00039                 G4double sigmaT, G4double sigmaE); 
00040 
00041   ~BDSBunchTwiss();
00042   void SetOptions(struct Options &opt); 
00043   void CommonConstruction();
00044   void GetNextParticle(G4double& x0, G4double& y0, G4double& z0, 
00045                        G4double& xp, G4double& yp, G4double& zp,
00046                        G4double& t , G4double&  E, G4double& weight);  
00047   G4double GetBetaX()  {return betaX;}
00048   G4double GetBetaY()  {return betaY;}
00049   G4double GetAlphaX() {return alphaX;}
00050   G4double GetAlphaY() {return alphaY;} 
00051   G4double GetEmitX()  {return emitX;}
00052   G4double GetEmitY()  {return emitY;}
00053 
00054 private:
00055   void     SetBetaX(double newBetaX) {betaX    = newBetaX;}
00056   void     SetBetaY(double newBetaY) {betaY    = newBetaY;}
00057   void     SetAlphaX(double newAlphaX) {alphaX = newAlphaX;}
00058   void     SetAlphaY(double newAlphaY) {alphaY = newAlphaY;}
00059   void     SetEmitX(double newEmitX)   {emitX  = newEmitX;}
00060   void     SetEmitY(double newEmitY)   {emitY  = newEmitY;}   
00061 };
00062 
00063 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7