/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/Mcgpj/Mcgpj-00-01-04/src/code3pi/inc/TCrossPart.h

Go to the documentation of this file.
00001 #ifndef RAD_TCrossPart
00002 #define RAD_TCrossPart
00003 
00004 #include "TLorentzVector.h"
00005 #include "TLorentzVectorC.h"
00006 #include "TPhoton_o.h"
00007 #include "TDFun_o.h"
00008 #include "TGenPhaseSpace.h"
00009 
00010 const size_t NPARTMAX = 5;
00011 class TCrossPart {
00012 protected:
00013   TGenPhaseSpace fevent;
00014   rb::TPhoton   *fphot;
00015   rb::TPhotonD  *fsphot;
00016   rb::TDFun *fD;
00017   double fe; // Beam energy
00018   double fs; // (2*e)^2
00019   double flogs; 
00020   double fbeta2;
00021   double fdelta; // soft and virtual photon energy cut
00022   double fK; // K-factor
00023   double fep; // positron energy
00024   double fem; // electron energy
00025   double fsigmap; // positron energy spread
00026   double fsigmam; // electron energy spread
00027   double fppz; // positron momentum
00028   double fpmz; // electron momentum
00029   bool fBeamSpread;
00030   double fsum[NPARTMAX];
00031   double fsum2[NPARTMAX];
00032   double fmin[NPARTMAX]; //minimum cross section
00033   double fmax[NPARTMAX]; //maximum cross section
00034   size_t fN[NPARTMAX];  // number of events to calculate cross section
00035   double fcs[NPARTMAX]; 
00036   double fecs[NPARTMAX];
00037   double facs[NPARTMAX]; // parts of total cross section for generation
00038   double fxm; // Energy of photon emmitted by electron
00039   double fxp; // Energy of photon emmitted by positron
00040   bool inc[NPARTMAX];
00041   size_t fNRad; // Minimal number of generated events for integral calculation
00042   TLorentzVector fpp; // inital momentum of positron
00043   TLorentzVector fpm; // inital momentum of electron
00044   TLorentzVector fW;  // momentum in cm
00045   TLorentzVector fq;  // momentum in cm after photons emission
00046   TLorentzVectorC fJc; // hadronic current (complex)
00047   size_t fNfinal; // number of final particles
00048   TLorentzVector **fres; // pointers to output particles
00049   double fm[7]; // masses of final particle
00050   int fpid[7+2]; // pid of particles according to PDG
00051   double fq2; // square momentum in cm after photon emission
00052   double radB(const TLorentzVector &k);// Bremsstrahlung 
00053   double rad(double zp, double zm);    // Collinear region emmision
00054   void SetFinalParticles(size_t, const double *, const int *);
00055   double Generate();
00056   virtual void SetJ() = 0; // Set hadronic current
00057   virtual bool Accepted() = 0;
00058   void J3PseudoScalars();
00059 public:
00060   TCrossPart(double e, double de, double nth0);
00061   virtual ~TCrossPart();
00062     
00063   double GetValue(const unsigned int npart); // Generate events of part npart
00064   void MakeParts(double err); // Calculate cross sections of parts with precision err
00065   size_t GenUnWeightedEvent();
00066   size_t GenWeightedEvent(double &w);
00067   TLorentzVector **GetParticles() {return fres;}
00068   void SetNRad(size_t x = 25000){ fNRad = x;}
00069   size_t GetNRad(){return fNRad;}
00070   size_t GetNfinal(){return fNfinal;}
00071   int GetPid(size_t i){return fpid[i];}
00072   void BeamSpread();
00073   void SetBeamSpread(double x=1){ // beam spread in MeV
00074     fBeamSpread = true;
00075     fsigmap = x;
00076     fsigmam = x;
00077   }
00078 };
00079 
00080 #endif// RAD_TCrossPart

Generated on Tue Nov 29 23:12:42 2016 for BOSS_7.0.2 by  doxygen 1.4.7