BOSS 8.0.0
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 "TDFun_o.h"
5#include "TGenPhaseSpace.h"
6#include "TLorentzVector.h"
7#include "TLorentzVectorC.h"
8#include "TPhoton_o.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;
59
60public:
61 TCrossPart( double e, double de, double nth0 );
62 virtual ~TCrossPart();
63
64 double GetValue( const unsigned int npart ); // Generate events of part npart
65 void MakeParts( double err ); // Calculate cross sections of parts with precision err
67 size_t GenWeightedEvent( double& w );
68 TLorentzVector** GetParticles() { return fres; }
69 void SetNRad( size_t x = 25000 ) { fNRad = x; }
70 size_t GetNRad() { return fNRad; }
71 size_t GetNfinal() { return fNfinal; }
72 int GetPid( size_t i ) { return fpid[i]; }
73 void BeamSpread();
74 void SetBeamSpread( double x = 1 ) { // beam spread in MeV
75 fBeamSpread = true;
76 fsigmap = x;
77 fsigmam = x;
78 }
79};
80
81#endif // RAD_TCrossPart
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:70
int GetPid(size_t i)
Definition TCrossPart.h:72
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:71
size_t fN[NPARTMAX]
Definition TCrossPart.h:34
void SetNRad(size_t x=25000)
Definition TCrossPart.h:69
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:68
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:74
virtual ~TCrossPart()