00001
00002
00003
00004
00005
00006 #ifndef BDSComptonEngine_h
00007 #define BDSComptonEngine_h 1
00008
00009 #include "G4ios.hh"
00010 #include "globals.hh"
00011 #include "Randomize.hh"
00012
00013 #if G4VERSION > 8
00014 #include "G4VEnergyLossProcess.hh"
00015 #else
00016 #include "G4VeEnergyLoss.hh"
00017 #endif
00018
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
00028 class BDSComptonEngine
00029 {
00030 public:
00031
00032 BDSComptonEngine();
00033
00034 BDSComptonEngine( G4LorentzVector InGam_FourVec,
00035 G4LorentzVector InEl_FourVec=0 );
00036
00037 ~BDSComptonEngine();
00038
00039 void PerformCompton();
00040 void SetIncomingPhoton4Vec(G4LorentzVector inGam);
00041 void SetIncomingElectron4Vec(G4LorentzVector inEl);
00042
00043 G4LorentzVector GetScatteredElectron();
00044 G4LorentzVector GetScatteredGamma();
00045
00046 protected:
00047
00048 private:
00049
00050 private:
00051 G4LorentzVector itsScatteredEl;
00052 G4LorentzVector itsScatteredGam;
00053 G4LorentzVector itsIncomingEl;
00054 G4LorentzVector itsIncomingGam;
00055
00056 static const G4int ntryMax = 10000000;
00057
00058 };
00059
00060 inline G4LorentzVector BDSComptonEngine::GetScatteredElectron()
00061 {return itsScatteredEl;}
00062
00063 inline G4LorentzVector BDSComptonEngine::GetScatteredGamma()
00064 {return itsScatteredGam;}
00065
00066
00067 inline void BDSComptonEngine::SetIncomingPhoton4Vec(G4LorentzVector inGam)
00068 {itsIncomingGam=inGam;
00069 if(itsIncomingEl.e()<electron_mass_c2)
00070 {G4Exception("BDSComptonEngine: Invalid Electron Energy");}
00071
00072 }
00073 inline void BDSComptonEngine::SetIncomingElectron4Vec(G4LorentzVector inEl)
00074 {itsIncomingEl=inEl;}
00075 #endif