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

00001 #ifndef BDSBunchInterface_h
00002 #define BDSBunchInterface_h 
00003 
00004 #include "globals.hh"
00005 #include "parser/options.h"
00006 #include "BDSGlobalConstants.hh"
00007 
00008 namespace CLHEP {
00009   class HepRandomEngine;
00010   class HepSymMatrix;
00011   class HepVector;
00012   class RandMultiGauss;
00013 }
00014 
00015 class BDSBunchInterface { 
00016 protected : 
00017   // Centre of distributions
00018   G4double X0;
00019   G4double Y0;
00020   G4double Z0;
00021   G4double T0; 
00022   G4double Xp0; 
00023   G4double Yp0;
00024   G4double Zp0;
00025   G4double sigmaT; 
00026   G4double sigmaE;
00027 
00029   // for Twiss and Gauss, could be moved elsewhere
00030   // can change sigma matrix to make non-definite
00031   CLHEP::RandMultiGauss* CreateMultiGauss(CLHEP::HepRandomEngine & anEngine, const CLHEP::HepVector & mu, CLHEP::HepSymMatrix & sigma);
00032 
00033   G4double CalculateZp(G4double xp, G4double yp, G4double Zp0)const;
00034 
00035 public : 
00036   BDSBunchInterface();
00037   BDSBunchInterface(G4double sigmaT, G4double sigmaE); 
00038   BDSBunchInterface(G4double X0,     G4double Y0,     G4double Z0, G4double T0,
00039                     G4double Xp0,    G4double Yp0,    G4double Zp0, 
00040                     G4double sigmaT, G4double sigmaE);
00041   virtual ~BDSBunchInterface();
00042   virtual void SetOptions(struct Options& opt); 
00043   virtual void GetNextParticle(G4double& x0, G4double& y0, G4double& z0, 
00044                                G4double& xp, G4double& yp, G4double& zp,
00045                                G4double& t , G4double&  E, G4double& weight);
00046 
00047   G4double GetX0()     {return X0;}
00048   G4double GetY0()     {return Y0;}
00049   G4double GetZ0()     {return Z0;}
00050   G4double GetT0()     {return T0;}
00051   G4double GetXp0()    {return Xp0;}
00052   G4double GetYp0()    {return Yp0;}
00053   G4double GetZp0()    {return Zp0;}
00054   G4double GetSigmaE() {return sigmaE;}
00055   G4double GetSigmaT() {return sigmaT;}
00056 };
00057 
00058 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7