6 #ifndef CROSSSECTION_HH 7 #define CROSSSECTION_HH 19 #include "CLHEP/Vector/LorentzVector.h" 20 #include "CLHEP/Vector/ThreeVector.h" 34 class HepRandomEngine;
40 typedef std::pair<double,double>
fEntry;
50 virtual void MaximiseSubParameters()=0;
51 virtual void SetPartons()=0;
52 virtual void SetSubParameters()=0;
53 virtual double SubParameterRange()=0;
54 virtual double SubParameterWeight()=0;
56 double AlphaS(
const double&);
60 inline double GetRg(
const double &x_,
const double &Qt){
68 if(x1>1.0 || x2 > 1.0){
75 return( 2.0 * InvSqrtsHat *
Lumi() * SubProcess() *
exp(
B*(t1 +
t2)));
140 void SetKinematics(
const double&,
const double&,
141 const double&,
const double&,
142 const double&,
const double&);
152 double Fg1Fg2(
const double&,
const double&,
const double&);
153 double Fg1Fg2(
const int&,
const double&,
const double&);
156 const double &x_,
const double &xp_){
158 double grad = 5.0 * (Txg(1.1 * Qt2_, x_) - Txg(0.9 * Qt2_, x_) ) / Qt2_;
169 template <
typename T_>
172 (std::pair<std::string,PConstVoidPair>
176 virtual double SubProcess() = 0;
183 double Splitting(
const double&);
184 double T(
const double&);
185 double TFast(
const double&);
188 std::map<double, std::map<double, double> >
TMap2d;
189 std::map<double, std::map<double, double> >::iterator TMjuHigh,
TMjuLow;
191 double Txg(
const double&,
const double&);
193 double Rg1Rg2(
const double&);
194 double Rg_(
const double&,
double);
196 std::map<double, std::map<double, double> >
RgMap2d;
197 std::map<double, std::map<double, double> >::iterator RgHigh[2], RgLow[2];
198 bool RgInterpolate[2], RgBegin;
212 double MinQt2, MidQt2, InvMidQt2, InvMidQt4, InvMaxQt2,
217 *_AlphaS, *_CfAs_2PIRg, *_NcAs_2PI;
221 std::map<std::string,PConstVoidPair>
PMap;
241 std::complex<double> F0(
const double&);
242 std::complex<double>
f(
const double&);
243 std::complex<double> Fsf(
const double&);
248 double x1, x1p, x2, x2p, t1,
t2, sHat, SqrtsHat,
249 sHat2, InvsHat, InvsHat2, InvSqrtsHat,
y, PPhi, Phi1, Phi2,
276 CLHEP::HepLorentzVector Proton1,
Proton2, P1In, P2In;
296 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
auto const T2 &decltype(t1.eta()) t2
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)