/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/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 "G4VEnergyLossProcess.hh"
00012 #include "G4Track.hh"
00013 #include "G4Step.hh"
00014 #include "G4Electron.hh"
00015 #include "G4Positron.hh"
00016 #include "BDSComptonEngine.hh"
00017 #include "BDSPlanckEngine.hh"
00018  
00019 class BDSPlanckScatter : public G4VEnergyLossProcess
00020 { 
00021   public:
00022  
00023      BDSPlanckScatter();
00024  
00025      ~BDSPlanckScatter();
00026      virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*, const G4ParticleDefinition*);
00027      virtual void PrintInfo();
00028 
00029      G4bool IsApplicable(const G4ParticleDefinition&);
00030      
00031      G4double GetMeanFreePath(const G4Track& track,
00032                               G4double previousStepSize,
00033                               G4ForceCondition* condition );
00034  
00035      G4VParticleChange *PostStepDoIt(const G4Track& track,         
00036                                      const G4Step&  step);                 
00037 
00038      inline void SetTemperature(G4double aTemperature);
00039      inline G4double GetTemperature();
00040 
00041   protected:
00042 
00043   //     virtual G4double SecondaryEnergyThreshold(size_t index);
00044 
00045   private:
00046 
00047   // assignment and copy constructor not implemented nor used
00048   BDSPlanckScatter & operator=(const BDSPlanckScatter &right);
00049   BDSPlanckScatter(const BDSPlanckScatter&);
00050 
00051   //     const std::vector<G4double>* secondaryEnergyCuts;
00052 
00053 private:
00054     G4double itsTemperature;
00055     BDSComptonEngine* itsComptonEngine;
00056     BDSPlanckEngine* itsPlanckEngine;
00057     G4double itsPlanckMeanFreePath;     
00058 };
00059 inline G4bool BDSPlanckScatter::IsApplicable(
00060                             const G4ParticleDefinition& part)
00061 {
00062    return(  (&part == G4Electron::Electron())
00063           ||(&part == G4Positron::Positron()) );
00064 }
00065 inline G4double BDSPlanckScatter::GetMeanFreePath(const G4Track&,
00066                                            G4double,
00067                                            G4ForceCondition* ForceCondition)
00068 {  
00069 *ForceCondition= NotForced ;
00070 return itsPlanckMeanFreePath;
00071 }
00072   
00073 
00074 inline void BDSPlanckScatter::SetTemperature(G4double aTemperature)
00075 {itsTemperature=aTemperature;}
00076 inline G4double BDSPlanckScatter::GetTemperature()
00077 {return itsTemperature;}
00078 
00079 // inline G4double BDSPlanckScatter::SecondaryEnergyThreshold(size_t index)
00080 // {
00081 //   return (*secondaryEnergyCuts)[index];
00082 // }
00083 
00084 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7