00001 #ifndef BDSBunchSquare_h
00002 #define BDSBunchSquare_h
00003
00004 #include "BDSBunchInterface.hh"
00005 #include "Randomize.hh"
00006
00007 namespace CLHEP {
00008 class RandFlat;
00009 }
00010
00011 class BDSBunchSquare : public BDSBunchInterface {
00012 protected :
00013 G4double envelopeX;
00014 G4double envelopeY;
00015 G4double envelopeXp;
00016 G4double envelopeYp;
00017 G4double envelopeT;
00018 G4double envelopeE;
00019
00020 CLHEP::RandFlat *FlatGen;
00021
00022 public:
00023 BDSBunchSquare();
00024 BDSBunchSquare(G4double envelopeX , G4double envelopeY,
00025 G4double envelopeXp, G4double envelopeYp,
00026 G4double envelopeT , G4double envelopeE,
00027 G4double X0, G4double Y0, G4double Z0, G4double T0,
00028 G4double Xp0, G4double Yp0, G4double Zp0);
00029 ~BDSBunchSquare();
00030 void SetOptions(struct Options& opt);
00031 void GetNextParticle(G4double& x0, G4double& y0, G4double& z0,
00032 G4double& xp, G4double& yp, G4double& zp,
00033 G4double& t , G4double& E, G4double& weight);
00034
00035 G4double GetEnvelopeX() {return envelopeX;}
00036 G4double GetEnvelopeY() {return envelopeY;}
00037 G4double GetEnvelopeXp(){return envelopeXp;}
00038 G4double GetEnvelopeYp(){return envelopeYp;}
00039 G4double GetEnvelopeT() {return envelopeT;}
00040 G4double GetEnvelopeE() {return envelopeE;}
00041 protected:
00042 void SetEnvelopeX(G4double envelopeXIn) {envelopeX = envelopeXIn;}
00043 void SetEnvelopeY(G4double envelopeYIn) {envelopeY = envelopeYIn;}
00044 void SetEnvelopeXp(G4double envelopeXpIn){envelopeXp= envelopeXpIn;}
00045 void SetEnvelopeYp(G4double envelopeYpIn){envelopeYp= envelopeYpIn;}
00046 void SetEnvelopeT(G4double envelopeTIn) {envelopeT = envelopeTIn;}
00047 void SetEnvelopeE(G4double envelopeEIn) {envelopeE = envelopeEIn;}
00048
00049
00050
00051 };
00052
00053 #endif