herwig
is hosted by
Hepforge
,
IPPP Durham
Herwig
7.3.0
PDF
PomeronPDF.h
1
// -*- C++ -*-
2
//
3
// PomeronPDF.h is a part of Herwig - A multi-purpose Monte Carlo event generator
4
// Copyright (C) 2002-2019 The Herwig Collaboration
5
//
6
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
7
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8
//
9
#ifndef HERWIG_PomeronPDF_H
10
#define HERWIG_PomeronPDF_H
11
12
#include <ThePEG/PDF/PDFBase.h>
13
#include <iostream>
14
#include <fstream>
15
#include <string>
16
#include <cmath>
17
18
namespace
Herwig
{
19
20
using namespace
ThePEG
;
21
29
class
PomeronPDF
:
public
PDFBase
{
30
public
:
31
37
PomeronPDF
();
38
39
47
virtual
bool
canHandleParticle
(
tcPDPtr
particle)
const
;
48
54
virtual
cPDVector
partons
(
tcPDPtr
p)
const
;
55
65
virtual
double
xfx
(
tcPDPtr
particle,
tcPDPtr
parton, Energy2 partonScale,
66
double
x,
double
eps = 0.0,
67
Energy2 particleScale =
ZERO
)
const
;
68
78
virtual
double
xfvx
(
tcPDPtr
particle,
tcPDPtr
parton, Energy2 partonScale,
79
double
x,
double
eps = 0.0,
80
Energy2 particleScale =
ZERO
)
const
;
82
83
public
:
84
91
void
persistentOutput
(
PersistentOStream
& os)
const
;
92
98
void
persistentInput
(
PersistentIStream
& is,
int
version);
100
107
static
void
Init
();
108
109
110
protected
:
111
119
virtual
void
doinit
();
120
121
protected
:
122
129
virtual
IBPtr
clone
()
const
;
130
135
virtual
IBPtr
fullclone
()
const
;
137
138
139
private
:
143
enum
PDFFlavour
{charm, gluon, singlet};
144
149
PomeronPDF
&
operator=
(
const
PomeronPDF
&) =
delete
;
150
151
private
:
152
160
double
getPDFValue
(
PDFFlavour
flPDF,
double
x, Energy2 qq)
const
;
161
165
void
loadTables
()
const
;
166
167
private
:
168
172
static
const
int
nPDFFlavour_
;
173
174
179
mutable
vector<vector<vector<double> > >
pdfTable_
;
180
184
mutable
vector<vector<double> >
lxGrid_
;
185
189
mutable
vector<vector<double> >
lqqGrid_
;
190
194
vector<string>
fileName_
;
195
199
string
rootName_
;
200
204
int
nxPoints_
;
205
209
int
nqPoints_
;
210
214
int
PDFFit_
;
215
219
int
boundary_
;
220
221
222
};
223
224
}
225
226
#endif
Herwig::PomeronPDF
Implementation of the PomeronPDF PDFs.
Definition:
PomeronPDF.h:29
Herwig::PomeronPDF::canHandleParticle
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of parton from the given particle ie.
Herwig::PomeronPDF::fileName_
vector< string > fileName_
Vector of names of PDF data files for each flavour.
Definition:
PomeronPDF.h:194
Herwig::PomeronPDF::clone
virtual IBPtr clone() const
Make a simple clone of this object.
Herwig::PomeronPDF::nxPoints_
int nxPoints_
Number of ln x points.
Definition:
PomeronPDF.h:204
Herwig::PomeronPDF::xfvx
virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
Return x times the valence pdf for the given parameters.
Herwig::PomeronPDF::boundary_
int boundary_
Switch between different aproaches when the values are out of PDF range: 0 Extrapolate,...
Definition:
PomeronPDF.h:219
Herwig::PomeronPDF::persistentOutput
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Herwig::PomeronPDF::getPDFValue
double getPDFValue(PDFFlavour flPDF, double x, Energy2 qq) const
This function calculates the PDF value for the given particles and a given x and q.
Herwig::PomeronPDF::PDFFlavour
PDFFlavour
Enumeration to storage the types of partons.
Definition:
PomeronPDF.h:143
Herwig::PomeronPDF::doinit
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Herwig::PomeronPDF::xfx
virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
Return x times the pdf for the given parameters.
Herwig::PomeronPDF::operator=
PomeronPDF & operator=(const PomeronPDF &)=delete
The assignment operator is private and must never be called.
Herwig::PomeronPDF::partons
virtual cPDVector partons(tcPDPtr p) const
Return the parton types which are described by these parton densities.
Herwig::PomeronPDF::fullclone
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Herwig::PomeronPDF::persistentInput
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
Herwig::PomeronPDF::pdfTable_
vector< vector< vector< double > > > pdfTable_
Vector of matrixes of PDF functions for different flavours: pdfTable [Flavours][Q^2][log x].
Definition:
PomeronPDF.h:179
Herwig::PomeronPDF::PDFFit_
int PDFFit_
Switch between different PDF fits.
Definition:
PomeronPDF.h:214
Herwig::PomeronPDF::PomeronPDF
PomeronPDF()
Default constructor.
Herwig::PomeronPDF::lqqGrid_
vector< vector< double > > lqqGrid_
Vector of grid with log qq values: lxGrid [Flavours] [log qq].
Definition:
PomeronPDF.h:189
Herwig::PomeronPDF::rootName_
string rootName_
Base of the filename.
Definition:
PomeronPDF.h:199
Herwig::PomeronPDF::nPDFFlavour_
static const int nPDFFlavour_
Number of PDF flavours.
Definition:
PomeronPDF.h:172
Herwig::PomeronPDF::nqPoints_
int nqPoints_
Number of qq flavours.
Definition:
PomeronPDF.h:209
Herwig::PomeronPDF::Init
static void Init()
The standard Init function used to initialize the interfaces.
Herwig::PomeronPDF::lxGrid_
vector< vector< double > > lxGrid_
Vector of grid with log x values: lxGrid [Flavours] [log x].
Definition:
PomeronPDF.h:184
Herwig::PomeronPDF::loadTables
void loadTables() const
Load the PDF tables from file to the vectors.
ThePEG::PDFBase
ThePEG::PersistentIStream
ThePEG::PersistentOStream
Herwig
-*- C++ -*-
Definition:
BasicConsistency.h:17
ThePEG
ThePEG::IBPtr
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::ZERO
constexpr ZeroUnit ZERO
ThePEG::tcPDPtr
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
ThePEG::cPDVector
vector< cPDPtr > cPDVector
Generated on Thu Jun 20 2024 17:50:53 for Herwig by
1.9.6