include/BDSPlanckScatter.hh

00001 /* BDSIM code.    Version 1.0
00002    Author: Grahame A. Blair, Royal Holloway, Univ. of London.
00003    Last modified 24.7.2002
00004    Copyright (c) 2002 by G.A.Blair.  ALL RIGHTS RESERVED. 
00005 */
00006 #ifndef BDSPlanckScatter_h
00007 #define BDSPlanckScatter_h 1
00008 
00009 #include "G4ios.hh" 
00010 #include "globals.hh"
00011 #include "Randomize.hh" 
00012 #include "G4Version.hh"
00013 #if G4VERSION_NUMBER > 899
00014 #include "G4VEnergyLossProcess.hh"
00015 #include "G4LossTableManager.hh"
00016 #else
00017 #include "G4VeEnergyLoss.hh"
00018 #endif
00019 #include "G4Track.hh"
00020 #include "G4Step.hh"
00021 #include "G4Gamma.hh"
00022 #include "G4Electron.hh"
00023 #include "G4Positron.hh"
00024 #include "G4OrderedTable.hh" 
00025 #include "G4PhysicsTable.hh"
00026 #include "G4PhysicsLogVector.hh"
00027 #include "BDSComptonEngine.hh"
00028 #include "BDSPlanckEngine.hh"
00029  
00030 #if G4VERSION_NUMBER > 899
00031 class BDSPlanckScatter : public G4VEnergyLossProcess
00032 #else
00033 class BDSPlanckScatter : public G4VeEnergyLoss
00034 #endif
00035 { 
00036   public:
00037  
00038      BDSPlanckScatter();
00039  
00040      ~BDSPlanckScatter();
00041 #if G4VERSION_NUMBER > 899
00042      virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*, const G4ParticleDefinition*);
00043      virtual void PrintInfo();
00044 #endif
00045 
00046      G4bool IsApplicable(const G4ParticleDefinition&);
00047      
00048      G4double GetMeanFreePath(const G4Track& track,
00049                               G4double previousStepSize,
00050                               G4ForceCondition* condition );
00051  
00052      G4VParticleChange *PostStepDoIt(const G4Track& track,         
00053                                      const G4Step&  step);                 
00054 
00055      inline void SetTemperature(G4double aTemperature);
00056      inline G4double GetTemperature();
00057 
00058   protected:
00059 
00060   //     virtual G4double SecondaryEnergyThreshold(size_t index);
00061 
00062   private:
00063 
00064   // assignment and copy constructor not implemented nor used
00065   BDSPlanckScatter & operator=(const BDSPlanckScatter &right);
00066   BDSPlanckScatter(const BDSPlanckScatter&);
00067 
00068   //     const std::vector<G4double>* secondaryEnergyCuts;
00069 
00070 private:
00071     G4double itsTemperature;
00072     BDSComptonEngine* itsComptonEngine;
00073     BDSPlanckEngine* itsPlanckEngine;
00074     G4double itsPlanckMeanFreePath;     
00075 };
00076 inline G4bool BDSPlanckScatter::IsApplicable(
00077                             const G4ParticleDefinition& part)
00078 {
00079    return(  (&part == G4Electron::Electron())
00080           ||(&part == G4Positron::Positron()) );
00081 }
00082 inline G4double BDSPlanckScatter::GetMeanFreePath(const G4Track&,
00083                                            G4double,
00084                                            G4ForceCondition* ForceCondition)
00085 {  
00086 *ForceCondition= NotForced ;
00087 return itsPlanckMeanFreePath;
00088 }
00089   
00090 
00091 inline void BDSPlanckScatter::SetTemperature(G4double aTemperature)
00092 {itsTemperature=aTemperature;}
00093 inline G4double BDSPlanckScatter::GetTemperature()
00094 {return itsTemperature;}
00095 
00096 // inline G4double BDSPlanckScatter::SecondaryEnergyThreshold(size_t index)
00097 // {
00098 //   return (*secondaryEnergyCuts)[index];
00099 // }
00100 
00101 #endif

Generated on 27 Aug 2013 for BDSIM by  doxygen 1.4.7