00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __EGS_H
00017 #define __EGS_H
00018
00019 #ifdef _MSC_VER
00020 # pragma warning(disable:4305) //truncation from 'const double' to 'float'
00021 #endif
00022
00023 class PEGSData;
00024 #include <iostream>
00025
00026 class EGS
00027 {
00028 public:
00029 int iq;
00030 float e;
00031 float u,v,w;
00032 float x,y,z;
00033 EGS* prev;
00034 EGS* next;
00035
00036 EGS(EGS* tos=0);
00037 virtual ~EGS();
00038
00039 void interact(const PEGSData&);
00040 void mscat(float,const PEGSData&);
00041
00042 void printOn(std::ostream&);
00043
00044 public:
00045
00046
00047
00048 void rotate(double costhe, double phi);
00049 void rotate(double costhe, double phi, double sinthe);
00050
00051
00052 virtual void brems(const PEGSData&);
00053 virtual void pairProd(const PEGSData&);
00054 virtual void annih();
00055 virtual void moller(const PEGSData&);
00056 virtual void compt();
00057 virtual void bhabha(const PEGSData&);
00058 virtual void photo(const PEGSData&);
00059 virtual void rayleigh(const PEGSData &m );
00060
00061
00062
00063
00064 public:
00065 static double rm;
00066 static double rm2;
00067 static double rmsq;
00068
00069 };
00070 #endif
00071