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

00001 
00002 #ifndef BDSSynchrotronRadiation_h
00003 #define BDSSynchrotronRadiation_h 1
00004 
00005 #include "BDSGlobalConstants.hh"
00006 #include "BDSMaterials.hh"
00007 
00008 #include "globals.hh"
00009 #include "G4VDiscreteProcess.hh"
00010 #include "G4Track.hh"
00011 #include "G4Step.hh"
00012 #include "G4Electron.hh"
00013 #include "G4Positron.hh"
00014 
00015 class BDSSynchrotronRadiation : public G4VDiscreteProcess 
00016 { 
00017 public:
00018  
00019   BDSSynchrotronRadiation(const G4String& processName = "BDSSynchRad");
00020  
00021   ~BDSSynchrotronRadiation();
00022 
00023   G4bool IsApplicable(const G4ParticleDefinition&);
00024   
00025   virtual G4double GetMeanFreePath(const G4Track& track,
00026                                    G4double previousStepSize,
00027                                    G4ForceCondition* condition );
00028   
00029   virtual G4VParticleChange *PostStepDoIt(const G4Track& track,         
00030                                           const G4Step&  step);                 
00031 
00032   G4double SynGenC(G4double xmin);
00033   G4double SynRadC(G4double x);
00034 
00035 protected:
00036 
00037 private:
00038 
00039   // assignment and copy constructor not implemented nor used
00040   BDSSynchrotronRadiation & operator=(const BDSSynchrotronRadiation &right);
00041   BDSSynchrotronRadiation(const BDSSynchrotronRadiation&);
00042 
00043   G4double nExpConst;
00044   G4double CritEngFac;
00045   G4int MeanFreePathCounter;
00046 };
00047 
00048 inline G4bool 
00049 BDSSynchrotronRadiation::IsApplicable(const G4ParticleDefinition& particle)
00050 {
00051   return(  (&particle == G4Electron::Electron())
00052            ||(&particle == G4Positron::Positron()) );
00053 }
00054 
00055 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7