herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
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
18namespace Herwig {
19
20using namespace ThePEG;
21
29class PomeronPDF : public PDFBase {
30public:
31
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
83public:
84
92
98 void persistentInput(PersistentIStream & is, int version);
100
107 static void Init();
108
109
110protected:
111
119 virtual void doinit();
120
121protected:
122
129 virtual IBPtr clone() const;
130
135 virtual IBPtr fullclone() const;
137
138
139private:
143 enum PDFFlavour {charm, gluon, singlet};
144
149 PomeronPDF & operator=(const PomeronPDF &) = delete;
150
151private:
152
160 double getPDFValue(PDFFlavour flPDF, double x, Energy2 qq) const;
161
165 void loadTables() const;
166
167private:
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
205
210
215
220
221
222};
223
224}
225
226#endif
Implementation of the PomeronPDF PDFs.
Definition: PomeronPDF.h:29
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of parton from the given particle ie.
vector< string > fileName_
Vector of names of PDF data files for each flavour.
Definition: PomeronPDF.h:194
virtual IBPtr clone() const
Make a simple clone of this object.
int nxPoints_
Number of ln x points.
Definition: PomeronPDF.h:204
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.
int boundary_
Switch between different aproaches when the values are out of PDF range: 0 Extrapolate,...
Definition: PomeronPDF.h:219
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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.
PDFFlavour
Enumeration to storage the types of partons.
Definition: PomeronPDF.h:143
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
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.
PomeronPDF & operator=(const PomeronPDF &)=delete
The assignment operator is private and must never be called.
virtual cPDVector partons(tcPDPtr p) const
Return the parton types which are described by these parton densities.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
vector< vector< vector< double > > > pdfTable_
Vector of matrixes of PDF functions for different flavours: pdfTable [Flavours][Q^2][log x].
Definition: PomeronPDF.h:179
int PDFFit_
Switch between different PDF fits.
Definition: PomeronPDF.h:214
PomeronPDF()
Default constructor.
vector< vector< double > > lqqGrid_
Vector of grid with log qq values: lxGrid [Flavours] [log qq].
Definition: PomeronPDF.h:189
string rootName_
Base of the filename.
Definition: PomeronPDF.h:199
static const int nPDFFlavour_
Number of PDF flavours.
Definition: PomeronPDF.h:172
int nqPoints_
Number of qq flavours.
Definition: PomeronPDF.h:209
static void Init()
The standard Init function used to initialize the interfaces.
vector< vector< double > > lxGrid_
Vector of grid with log x values: lxGrid [Flavours] [log x].
Definition: PomeronPDF.h:184
void loadTables() const
Load the PDF tables from file to the vectors.
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr ZeroUnit ZERO
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< cPDPtr > cPDVector