00001 #ifndef BDSBunchEShell_h 00002 #define BDSBunchEShell_h 00003 00004 #include "BDSBunchInterface.hh" 00005 #include "Randomize.hh" 00006 00007 namespace CLHEP { 00008 class RandFlat; 00009 } 00010 00011 class BDSBunchEShell : public BDSBunchInterface { 00012 00013 protected : 00014 G4double shellX; 00015 G4double shellXp; 00016 G4double shellY; 00017 G4double shellYp; 00018 G4double shellXWidth; 00019 G4double shellXpWidth; 00020 G4double shellYWidth; 00021 G4double shellYpWidth; 00022 00023 CLHEP::RandFlat *FlatGen; 00024 00025 public: 00026 BDSBunchEShell(); 00027 BDSBunchEShell(G4double shellX, G4double shellXp, 00028 G4double shellY, G4double shellYp, 00029 G4double shellXWidthIn, G4double shellXpWidthIn, 00030 G4double shellYWidthIn, G4double shellYpWidthIn, 00031 G4double X0, G4double Y0, G4double Z0, G4double T0, 00032 G4double Xp0, G4double Yp0, G4double Zp0, 00033 G4double sigmaT, G4double sigmaE); 00034 ~BDSBunchEShell(); 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 GetShellX() {return shellX; } 00041 G4double GetShellXp() {return shellXp; } 00042 G4double GetShellY() {return shellY; } 00043 G4double GetShellYp() {return shellYp; } 00044 G4double GetShellXWidth() {return shellXWidth; } 00045 G4double GetShellXpWidth() {return shellXpWidth;} 00046 G4double GetShellYWidth() {return shellYWidth; } 00047 G4double GetShellYpWidth() {return shellYpWidth;} 00048 00049 protected: 00050 void SetShellX (G4double shellXIn) {shellX = shellXIn; } 00051 void SetShellXp(G4double shellXpIn) {shellXp = shellXpIn; } 00052 void SetShellY (G4double shellYIn) {shellY = shellYIn; } 00053 void SetShellYp(G4double shellYpIn) {shellYp = shellYpIn; } 00054 void SetShellXWidth (G4double shellXWidthIn) {shellXWidth = shellXWidthIn; } 00055 void SetShellXpWidth(G4double shellXpWidthIn) {shellXpWidth = shellXpWidthIn;} 00056 void SetShellYWidth (G4double shellYWidthIn) {shellYWidth = shellYWidthIn; } 00057 void SetShellYpWidth(G4double shellYpWidthIn) {shellYpWidth = shellYpWidthIn;} 00058 }; 00059 00060 #endif