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