00001 #ifndef BDSBunchCircle_h
00002 #define BDSBunchCircle_h
00003
00004 #include "BDSBunchInterface.hh"
00005 #include "Randomize.hh"
00006
00007 namespace CLHEP {
00008 class RandFlat;
00009 }
00010
00011 class BDSBunchCircle : public BDSBunchInterface {
00012 protected :
00013 G4double envelopeR;
00014 G4double envelopeRp;
00015 G4double envelopeT;
00016 G4double envelopeE;
00017
00018 CLHEP::RandFlat *FlatGen;
00019
00020 public:
00021 BDSBunchCircle();
00022 BDSBunchCircle(G4double envelopeR , G4double envelopeRp,
00023 G4double envelopeT , G4double envelopeE,
00024 G4double X0 , G4double Y0, G4double Z0, G4double T0,
00025 G4double Xp0 , G4double Yp0, G4double Zp0);
00026 ~BDSBunchCircle();
00027 void SetOptions(struct Options& opt);
00028 void GetNextParticle(G4double& x0, G4double& y0, G4double& z0,
00029 G4double& xp, G4double& yp, G4double& zp,
00030 G4double& t , G4double& E, G4double& weight);
00031
00032 G4double GetEnvelopeR() {return envelopeR;}
00033 G4double GetEnvelopeRp(){return envelopeRp;}
00034 G4double GetEnvelopeT() {return envelopeT;}
00035 G4double GetEnvelopeE() {return envelopeE;}
00036
00037 protected:
00038 void SetEnvelopeR(G4double envelopeRIn) {envelopeR = envelopeRIn;}
00039 void SetEnvelopeRp(G4double envelopeRpIn) {envelopeRp= envelopeRpIn;}
00040 void SetEnvelopeT(G4double envelopeTIn) {envelopeT = envelopeTIn;}
00041 void SetEnvelopeE(G4double envelopeEIn) {envelopeE = envelopeEIn;}
00042
00043
00044
00045 };
00046
00047 #endif