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;
49 virtual void MaximiseSubParameters()=0;
50 virtual void SetPartons()=0;
51 virtual void SetSubParameters()=0;
52 virtual double SubParameterRange()=0;
53 virtual double SubParameterWeight()=0;
55 double AlphaS(
const double&);
59 inline double GetRg(
const double &x_,
const double &Qt){
67 if(
x1>1.0 ||
x2 > 1.0){
74 return( 2.0 * InvSqrtsHat *
Lumi() * SubProcess() *
exp(
B*(t1 + t2)));
139 void SetKinematics(
const double&,
const double&,
140 const double&,
const double&,
141 const double&,
const double&);
151 double Fg1Fg2(
const double&,
const double&,
const double&);
152 double Fg1Fg2(
const int&,
const double&,
const double&);
155 const double &x_,
const double &xp_){
157 double grad = 5.0 * (Txg(1.1 * Qt2_, x_) - Txg(0.9 * Qt2_, x_) ) / Qt2_;
168 template <
typename T_>
171 (std::pair<std::string,PConstVoidPair>
175 virtual double SubProcess() = 0;
182 double Splitting(
const double&);
183 double T(
const double&);
184 double TFast(
const double&);
187 std::map<double, std::map<double, double> >
TMap2d;
188 std::map<double, std::map<double, double> >::iterator TMjuHigh,
TMjuLow;
190 double Txg(
const double&,
const double&);
192 double Rg1Rg2(
const double&);
193 double Rg_(
const double&,
double);
195 std::map<double, std::map<double, double> >
RgMap2d;
196 std::map<double, std::map<double, double> >::iterator RgHigh[2], RgLow[2];
197 bool RgInterpolate[2], RgBegin;
211 double MinQt2, MidQt2, InvMidQt2, InvMidQt4, InvMaxQt2,
216 *_AlphaS, *_CfAs_2PIRg, *_NcAs_2PI;
220 std::map<std::string,PConstVoidPair>
PMap;
240 std::complex<double> F0(
const double&);
241 std::complex<double>
f(
const double&);
242 std::complex<double> Fsf(
const double&);
247 double x1, x1p,
x2, x2p, t1, t2, sHat, SqrtsHat,
248 sHat2, InvsHat, InvsHat2, InvSqrtsHat,
y, PPhi, Phi1, Phi2,
275 CLHEP::HepLorentzVector Proton1,
Proton2, P1In, P2In;
295 CLHEP::HepRandomEngine * randomEngine
CLHEP::HepLorentzVector CentralVector
void insert(const std::string _name_, const T_ _x_)
std::map< std::string, PConstVoidPair > PMap
std::string lhapdfSetPath_
std::vector< Particle > Partons
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
std::pair< const char *, const void * > PConstVoidPair
std::pair< const char *, char * > PCharPair
static const std::string B
double Fg_Qt2(const double &Qt2_, const double &x_, const double &xp_)
CLHEP::HepLorentzVector GetProton2()
std::pair< double, double > fEntry
CLHEP::HepRandomEngine * randomEngine
void SetRandomEngine(CLHEP::HepRandomEngine *engine)
std::map< double, std::map< double, double > > RgMap2d
std::map< double, double > Getfg2Map()
double GetRg(const double &x_, const double &Qt)