/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSBunchHalo.hh

00001 #ifndef BDSBunchHalo_h
00002 #define BDSBunchHalo_h
00003 
00004 #include "BDSBunchInterface.hh"
00005 #include "Randomize.hh"
00006 #include "CLHEP/Matrix/Vector.h" 
00007 
00008 namespace CLHEP {
00009   class RandFlat;
00010 }
00011 
00012 class BDSBunchHalo : public BDSBunchInterface { 
00013 
00014 private : 
00015   /* Twiss parameters */
00016   G4double betaX;
00017   G4double betaY;
00018   G4double alphaX;
00019   G4double alphaY;
00020   G4double emitX;
00021   G4double emitY; 
00022   G4double gammaX;
00023   G4double gammaY;  
00024 
00025   G4double envelopeX; 
00026   G4double envelopeY;
00027   G4double envelopeXp; 
00028   G4double envelopeYp; 
00029 
00030   CLHEP::RandFlat  *FlatGen;
00031 
00032   G4double weightParameter;
00033   std::string weightFunction;
00034 
00035 public : 
00036   BDSBunchHalo();
00037   BDSBunchHalo(G4double betaX,      G4double betaY, 
00038                G4double alphaX,     G4double alphaY,
00039                G4double emitX,      G4double emitY,
00040                G4double envelopeX , G4double envelopeY,
00041                G4double envelopeXp, G4double envelopeYp,               
00042                G4double X0,         G4double Y0,    G4double Z0,   G4double T0, 
00043                G4double Xp0,        G4double Yp0,   G4double Zp0,
00044                G4double sigmaT,     G4double sigmaE);
00045   ~BDSBunchHalo();
00046   void SetOptions(struct Options &opt);
00047   void GetNextParticle(G4double& x0, G4double& y0, G4double& z0, 
00048                        G4double& xp, G4double& yp, G4double& zp,
00049                        G4double& t , G4double&  E, G4double& weight);  
00050 
00051   G4double GetBetaX()     {return betaX;}
00052   G4double GetBetaY()     {return betaY;}
00053   G4double GetAlphaX()    {return alphaX;}
00054   G4double GetAlphaY()    {return alphaY;} 
00055   G4double GetEmitX()     {return emitX;}
00056   G4double GetEmitY()     {return emitY;} 
00057   G4double GetEnvelopeX() {return envelopeX;}
00058   G4double GetEnvelopeY() {return envelopeY;}
00059   G4double GetEnvelopeXp(){return envelopeXp;}
00060   G4double GetEnvelopeYp(){return envelopeYp;}
00061   G4double GetWeightParamer(){return weightParameter;}
00062   std::string GetWeightFunction() {return weightFunction;}
00063 
00064 
00065 protected:
00066   void     SetBetaX(double newBetaX) {betaX    = newBetaX;}
00067   void     SetBetaY(double newBetaY) {betaY    = newBetaY;}
00068   void     SetAlphaX(double newAlphaX) {alphaX = newAlphaX;}
00069   void     SetAlphaY(double newAlphaY) {alphaY = newAlphaY;}
00070   void     SetEmitX(double newEmitX)   {emitX  = newEmitX;}
00071   void     SetEmitY(double newEmitY)   {emitY  = newEmitY;}   
00072   void     SetEnvelopeX(G4double envelopeXIn)  {envelopeX = envelopeXIn;}
00073   void     SetEnvelopeY(G4double envelopeYIn)  {envelopeY = envelopeYIn;}
00074   void     SetEnvelopeXp(G4double envelopeXpIn){envelopeXp= envelopeXpIn;}
00075   void     SetEnvelopeYp(G4double envelopeYpIn){envelopeYp= envelopeYpIn;}
00076   void     SetWeightParameter(G4double haloPSWeightParameter) {weightParameter = haloPSWeightParameter;}
00077   void     SetWeightFunction(std::string haloPSWeightFunction) {
00078     if(haloPSWeightFunction == "flat" || haloPSWeightFunction == "oneoverr" || haloPSWeightFunction == "exp") {
00079       weightFunction = haloPSWeightFunction;
00080     }
00081     else {
00082       weightFunction = ""; 
00083     }
00084   }
00085 };
00086 
00087 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7