6 #ifndef CROSSSECTION_HH 7 #define CROSSSECTION_HH 19 #include "CLHEP/Vector/LorentzVector.h" 20 #include "CLHEP/Vector/ThreeVector.h" 33 class HepRandomEngine;
39 typedef std::pair<double, double>
fEntry;
47 virtual void MaximiseSubParameters() = 0;
48 virtual void SetPartons() = 0;
49 virtual void SetSubParameters() = 0;
50 virtual double SubParameterRange() = 0;
51 virtual double SubParameterWeight() = 0;
53 double AlphaS(
const double &);
57 inline double GetRg(
const double &x_,
const double &Qt) {
return (Rg_(x_, Qt)); };
61 if (
x1 > 1.0 ||
x2 > 1.0) {
68 return (2.0 * InvSqrtsHat *
Lumi() * SubProcess() *
exp(
B * (
t1 +
t2)));
72 inline double GetB() {
return (
B); };
76 inline std::map<double, double>
Getfg2Map() {
return (fg2Map); };
78 inline CLHEP::HepLorentzVector
GetProton1() {
return (Proton1); };
80 inline CLHEP::HepLorentzVector
GetProton2() {
return (Proton2); };
82 inline std::vector<Particle>
GetPartons() {
return (Partons); };
92 inline double GetsHat() {
return (sHat); };
96 inline double GetEta() {
return (y); };
98 inline double GetPhi1() {
return (Phi1); };
103 void SetKinematics(
const double &,
const double &,
const double &,
const double &,
const double &,
const double &);
110 double Fg1Fg2(
const double &,
const double &,
const double &);
111 double Fg1Fg2(
const int &,
const double &,
const double &);
113 inline double Fg_Qt2(
const double &Qt2_,
const double &x_,
const double &xp_) {
114 double grad = 5.0 * (Txg(1.1 * Qt2_, x_) - Txg(0.9 * Qt2_, x_)) / Qt2_;
124 template <
typename T_>
126 PMap.insert(std::pair<std::string, PConstVoidPair>(_name_,
PConstVoidPair(
typeid(_x_).
name(), _x_)));
129 virtual double SubProcess() = 0;
136 double Splitting(
const double &);
137 double T(
const double &);
138 double TFast(
const double &);
141 std::map<double, std::map<double, double> >
TMap2d;
142 std::map<double, std::map<double, double> >::iterator TMjuHigh,
TMjuLow;
144 double Txg(
const double &,
const double &);
146 double Rg1Rg2(
const double &);
147 double Rg_(
const double &,
double);
149 std::map<double, std::map<double, double> >
RgMap2d;
150 std::map<double, std::map<double, double> >::iterator RgHigh[2], RgLow[2];
151 bool RgInterpolate[2], RgBegin;
161 double MinQt2, MidQt2, InvMidQt2, InvMidQt4, InvMaxQt2, LumSimpsIncr;
164 double *
LumSimpsFunc, *_Qt2, *_Qt, *_KtLow, *_KtHigh, *_AlphaS, *_CfAs_2PIRg, *_NcAs_2PI;
168 std::map<std::string, PConstVoidPair>
PMap;
187 std::complex<double> F0(
const double &);
188 std::complex<double>
f(
const double &);
189 std::complex<double> Fsf(
const double &);
194 double x1, x1p,
x2, x2p,
t1,
t2, sHat, SqrtsHat, sHat2, InvsHat, InvsHat2, InvSqrtsHat,
y, PPhi, Phi1, Phi2, Mju2,
195 Mju, LnMju2, Pt1, Pt2, Pt1DotPt2, x1x2, ey;
206 double root_s,
s, Invs;
209 CLHEP::HepLorentzVector Proton1,
Proton2, P1In, P2In;
229 CLHEP::HepRandomEngine * randomEngine
CLHEP::HepLorentzVector CentralVector
void insert(const std::string _name_, const T_ _x_)
std::string lhapdfSetPath_
std::vector< Particle > Partons
std::pair< const char *, const void * > PConstVoidPair
std::pair< double, double > fEntry
std::pair< const char *, char * > PCharPair
CLHEP::HepLorentzVector Proton2
std::map< double, double > fg2Map
CLHEP::HepLorentzVector GetProton1()
std::vector< Particle > GetPartons()
std::map< double, std::map< double, double > > TMap2d
std::map< const char *, char * > TypeMap
std::map< double, std::map< double, double > >::iterator TMjuLow
static const std::string B
double Fg_Qt2(const double &Qt2_, const double &x_, const double &xp_)
std::map< double, double > Getfg2Map()
CLHEP::HepLorentzVector GetProton2()
CLHEP::HepRandomEngine * randomEngine
void SetRandomEngine(CLHEP::HepRandomEngine *engine)
std::map< double, std::map< double, double > > RgMap2d
std::map< std::string, PConstVoidPair > PMap
double GetRg(const double &x_, const double &Qt)