BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
TCrossPart.h
Go to the documentation of this file.
1#ifndef RAD_TCrossPart
2#define RAD_TCrossPart
3
4#include "TLorentzVector.h"
5#include "TLorentzVectorC.h"
6#include "TPhoton_o.h"
7#include "TDFun_o.h"
8#include "TGenPhaseSpace.h"
9
10const size_t NPARTMAX = 5;
12protected:
13 TGenPhaseSpace fevent;
17 double fe; // Beam energy
18 double fs; // (2*e)^2
19 double flogs;
20 double fbeta2;
21 double fdelta; // soft and virtual photon energy cut
22 double fK; // K-factor
23 double fep; // positron energy
24 double fem; // electron energy
25 double fsigmap; // positron energy spread
26 double fsigmam; // electron energy spread
27 double fppz; // positron momentum
28 double fpmz; // electron momentum
30 double fsum[NPARTMAX];
31 double fsum2[NPARTMAX];
32 double fmin[NPARTMAX]; //minimum cross section
33 double fmax[NPARTMAX]; //maximum cross section
34 size_t fN[NPARTMAX]; // number of events to calculate cross section
35 double fcs[NPARTMAX];
36 double fecs[NPARTMAX];
37 double facs[NPARTMAX]; // parts of total cross section for generation
38 double fxm; // Energy of photon emmitted by electron
39 double fxp; // Energy of photon emmitted by positron
41 size_t fNRad; // Minimal number of generated events for integral calculation
42 TLorentzVector fpp; // inital momentum of positron
43 TLorentzVector fpm; // inital momentum of electron
44 TLorentzVector fW; // momentum in cm
45 TLorentzVector fq; // momentum in cm after photons emission
46 TLorentzVectorC fJc; // hadronic current (complex)
47 size_t fNfinal; // number of final particles
48 TLorentzVector **fres; // pointers to output particles
49 double fm[7]; // masses of final particle
50 int fpid[7+2]; // pid of particles according to PDG
51 double fq2; // square momentum in cm after photon emission
52 double radB(const TLorentzVector &k);// Bremsstrahlung
53 double rad(double zp, double zm); // Collinear region emmision
54 void SetFinalParticles(size_t, const double *, const int *);
55 double Generate();
56 virtual void SetJ() = 0; // Set hadronic current
57 virtual bool Accepted() = 0;
59public:
60 TCrossPart(double e, double de, double nth0);
61 virtual ~TCrossPart();
62
63 double GetValue(const unsigned int npart); // Generate events of part npart
64 void MakeParts(double err); // Calculate cross sections of parts with precision err
66 size_t GenWeightedEvent(double &w);
67 TLorentzVector **GetParticles() {return fres;}
68 void SetNRad(size_t x = 25000){ fNRad = x;}
69 size_t GetNRad(){return fNRad;}
70 size_t GetNfinal(){return fNfinal;}
71 int GetPid(size_t i){return fpid[i];}
72 void BeamSpread();
73 void SetBeamSpread(double x=1){ // beam spread in MeV
74 fBeamSpread = true;
75 fsigmap = x;
76 fsigmam = x;
77 }
78};
79
80#endif// RAD_TCrossPart
Double_t x[10]
double w
const size_t NPARTMAX
Definition: TCrossPart.h:10
double fsum2[NPARTMAX]
Definition: TCrossPart.h:31
double GetValue(const unsigned int npart)
double fem
Definition: TCrossPart.h:24
size_t fNfinal
Definition: TCrossPart.h:47
virtual void SetJ()=0
void MakeParts(double err)
bool fBeamSpread
Definition: TCrossPart.h:29
size_t fNRad
Definition: TCrossPart.h:41
TLorentzVector ** fres
Definition: TCrossPart.h:48
TLorentzVector fq
Definition: TCrossPart.h:45
void J3PseudoScalars()
double facs[NPARTMAX]
Definition: TCrossPart.h:37
double fxp
Definition: TCrossPart.h:39
double fsigmam
Definition: TCrossPart.h:26
size_t GetNRad()
Definition: TCrossPart.h:69
int GetPid(size_t i)
Definition: TCrossPart.h:71
TCrossPart(double e, double de, double nth0)
rb::TPhotonD * fsphot
Definition: TCrossPart.h:15
double radB(const TLorentzVector &k)
double fm[7]
Definition: TCrossPart.h:49
rb::TPhoton * fphot
Definition: TCrossPart.h:14
double fmax[NPARTMAX]
Definition: TCrossPart.h:33
void SetFinalParticles(size_t, const double *, const int *)
size_t GetNfinal()
Definition: TCrossPart.h:70
size_t fN[NPARTMAX]
Definition: TCrossPart.h:34
void SetNRad(size_t x=25000)
Definition: TCrossPart.h:68
bool inc[NPARTMAX]
Definition: TCrossPart.h:40
double fppz
Definition: TCrossPart.h:27
size_t GenUnWeightedEvent()
double fK
Definition: TCrossPart.h:22
double fxm
Definition: TCrossPart.h:38
double rad(double zp, double zm)
double fdelta
Definition: TCrossPart.h:21
virtual bool Accepted()=0
TLorentzVector fpm
Definition: TCrossPart.h:43
double Generate()
double fsum[NPARTMAX]
Definition: TCrossPart.h:30
size_t GenWeightedEvent(double &w)
TGenPhaseSpace fevent
Definition: TCrossPart.h:13
TLorentzVectorC fJc
Definition: TCrossPart.h:46
double fpmz
Definition: TCrossPart.h:28
TLorentzVector fW
Definition: TCrossPart.h:44
double fe
Definition: TCrossPart.h:17
double fq2
Definition: TCrossPart.h:51
double fs
Definition: TCrossPart.h:18
double fecs[NPARTMAX]
Definition: TCrossPart.h:36
TLorentzVector ** GetParticles()
Definition: TCrossPart.h:67
rb::TDFun * fD
Definition: TCrossPart.h:16
void BeamSpread()
double fcs[NPARTMAX]
Definition: TCrossPart.h:35
double fep
Definition: TCrossPart.h:23
double fbeta2
Definition: TCrossPart.h:20
double flogs
Definition: TCrossPart.h:19
double fsigmap
Definition: TCrossPart.h:25
TLorentzVector fpp
Definition: TCrossPart.h:42
double fmin[NPARTMAX]
Definition: TCrossPart.h:32
int fpid[7+2]
Definition: TCrossPart.h:50
void SetBeamSpread(double x=1)
Definition: TCrossPart.h:73
virtual ~TCrossPart()