00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #ifndef G4VANNIHILATIONCOLLISION_HH
00044 #define G4VANNIHILATIONCOLLISION_HH
00045
00046 #include "globals.hh"
00047 #include "G4VCollision.hh"
00048 #include "G4VCrossSectionSource.hh"
00049 #include "G4VAngularDistribution.hh"
00050 #include "G4KineticTrackVector.hh"
00051
00052 class G4KineticTrack;
00053
00054
00055 class G4VAnnihilationCollision : public G4VCollision
00056 {
00057
00058 public:
00059
00060 G4VAnnihilationCollision();
00061
00062 virtual ~G4VAnnihilationCollision();
00063
00064 G4bool operator==(const G4VAnnihilationCollision &right) const;
00065 G4bool operator!=(const G4VAnnihilationCollision &right) const;
00066
00067 virtual G4KineticTrackVector* FinalState(const G4KineticTrack& trk1,
00068 const G4KineticTrack& trk2) const;
00069 virtual const G4VAngularDistribution* GetAngularDistribution() const
00070 {
00071 return theAngularDistribution;
00072 }
00073
00074 protected:
00075
00076 virtual const G4ParticleDefinition* GetOutgoingParticle(const G4KineticTrack& trk1,
00077 const G4KineticTrack& trk2) const = 0;
00078
00079 private:
00080
00081 double BrWigInt0(const double x, const double gamma, const double m0) const
00082 { return 2.0*gamma*std::atan( 2.0 * (x-m0)/ gamma ); }
00083
00084 G4double BrWigInt1(const G4double x, const G4double gamma, const G4double m0) const
00085 { return 0.5*gamma*gamma*std::log( (x-m0)*(x-m0)+gamma*gamma/4.0 ) + m0*BrWigInt0(x,gamma,m0); }
00086
00087 double BrWigInv(const double x, const double gamma, const double m0) const
00088 { return 0.5*gamma*std::tan( 0.5*x/gamma )+m0; }
00089
00090 double SampleResonanceMass(const double poleMass,
00091 const double width,
00092 const double minMass,
00093 const double maxMass) const;
00094 private:
00095
00096 G4VAngularDistribution * theAngularDistribution;
00097
00098 };
00099
00100
00101
00102
00103 #endif