herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
MPIPDF.h
1// -*- C++ -*-
2//
3// MPIPDF.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_MPIPDF_H
10#define HERWIG_MPIPDF_H
11//
12// This is the declaration of the MPIPDF class.
13//
14
15#include "ThePEG/PDF/PDFBase.h"
16#include "MPIPDF.fh"
17
18namespace Herwig {
19using namespace ThePEG;
31class MPIPDF: public PDFBase {
32
33public:
34
38 MPIPDF(cPDFPtr orig = cPDFPtr()) : thePDF(orig) {}
39
40public:
41
48 virtual bool canHandleParticle(tcPDPtr particle) const;
49
54 virtual cPDVector partons(tcPDPtr particle) const;
55
63 virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
64 double x, double eps = 0.0,
65 Energy2 particleScale = ZERO) const;
66
67
77 virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale,
78 double x, double eps = 0.0,
79 Energy2 particleScale = ZERO) const;
81
82
83public:
84
92
98 void persistentInput(PersistentIStream & is, int version);
100
107 static void Init();
108
109protected:
110
117 virtual IBPtr clone() const;
118
123 virtual IBPtr fullclone() const;
125
126
127// If needed, insert declarations of virtual function defined in the
128// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
129
130
131private:
132
137 MPIPDF & operator=(const MPIPDF &) = delete;
138
143};
144
145}
146
147#endif /* HERWIG_MPIPDF_H */
The MPIPDF class defines a modified pdf which uses an existing pdf object to add modifications like r...
Definition: MPIPDF.h:31
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual bool canHandleParticle(tcPDPtr particle) const
Return true if this PDF can handle the extraction of partons from the given particle.
virtual IBPtr clone() const
Make a simple clone of this object.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
MPIPDF & operator=(const MPIPDF &)=delete
The assignment operator is private and must never be called.
virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
The density.
virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, double x, double eps=0.0, Energy2 particleScale=ZERO) const
The valence density.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
static void Init()
The standard Init function used to initialize the interfaces.
cPDFPtr thePDF
pointer to the underlying ThePEG::PDFBase object, we are modifying.
Definition: MPIPDF.h:142
virtual cPDVector partons(tcPDPtr particle) const
Return the partons which this PDF may extract from the given particle.
MPIPDF(cPDFPtr orig=cPDFPtr())
The constructor which takes a PDF object as argument, to work with.
Definition: MPIPDF.h:38
-*- C++ -*-
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
ThePEG::Ptr< PDFBase >::const_pointer cPDFPtr
constexpr ZeroUnit ZERO
ThePEG::Ptr< ParticleData >::transient_const_pointer tcPDPtr
vector< cPDPtr > cPDVector