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