|
|
|||
File indexing completed on 2026-08-06 09:24:21
0001 // -*- C++ -*- 0002 // 0003 // ReggeonPDF.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig is licenced under version 3 of the GPL, see COPYING for details. 0007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0008 // 0009 #ifndef HERWIG_ReggeonPDF_H 0010 #define HERWIG_ReggeonPDF_H 0011 0012 #include <ThePEG/PDF/PDFBase.h> 0013 #include <iostream> 0014 #include <fstream> 0015 #include <string> 0016 #include <cmath> 0017 0018 namespace Herwig { 0019 0020 using namespace ThePEG; 0021 0022 /** \ingroup PDF 0023 * 0024 * Implementation of the ReggeonPDF PDFs 0025 * 0026 * @see \ref ReggeonPDFInterfaces "The interfaces" 0027 * defined for ReggeonPDF 0028 * This class is wrapper of Reggeon structure function. Which is most likely 0029 * simulated by pion structure function. 0030 */ 0031 class ReggeonPDF : public PDFBase { 0032 0033 public: 0034 0035 /** 0036 * Default constructor 0037 */ 0038 ReggeonPDF() : particleID_(111) {} 0039 0040 /** @name Virtual functions from PDFBase */ 0041 //@{ 0042 /** 0043 * Return true if this PDF can handle the extraction of parton from the 0044 * given particle ie. if the particle is a proton or neutron. 0045 * @param particle The particle 0046 */ 0047 virtual bool canHandleParticle(tcPDPtr particle) const; 0048 0049 /** 0050 * Return the parton types which are described by these parton 0051 * densities. 0052 * @param p The particle 0053 */ 0054 virtual cPDVector partons(tcPDPtr p) const; 0055 0056 /** 0057 * Return x times the pdf for the given parameters 0058 * @param particle The beam particle 0059 * @param parton The parton for which to return the PDF. 0060 * @param partonScale The scale at which to evaluate the PDF. 0061 * @param x The momentum fraction 0062 * @param eps ??? an unknown parameter from ThePEG. 0063 * @param particleScale The scale for the particle 0064 */ 0065 virtual double xfx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, 0066 double x, double eps = 0.0, 0067 Energy2 particleScale = ZERO) const; 0068 0069 /** 0070 * Return x times the valence pdf for the given parameters 0071 * @param particle The beam particle 0072 * @param parton The parton for which to return the PDF. 0073 * @param partonScale The scale at which to evaluate the PDF. 0074 * @param x The momentum fraction 0075 * @param eps ??? an unknown parameter from ThePEG. 0076 * @param particleScale The scale for the particle 0077 */ 0078 virtual double xfvx(tcPDPtr particle, tcPDPtr parton, Energy2 partonScale, 0079 double x, double eps = 0.0, 0080 Energy2 particleScale = ZERO) const; 0081 //@} 0082 0083 public: 0084 0085 /** @name Functions used by the persistent I/O system. */ 0086 //@{ 0087 /** 0088 * Function used to write out object persistently. 0089 * @param os the persistent output stream written to. 0090 */ 0091 void persistentOutput(PersistentOStream & os) const; 0092 0093 /** 0094 * Function used to read in object persistently. 0095 * @param is the persistent input stream read from. 0096 * @param version the version number of the object when written. 0097 */ 0098 void persistentInput(PersistentIStream & is, int version); 0099 //@} 0100 0101 /** 0102 * The standard Init function used to initialize the interfaces. 0103 * Called exactly once for each class by the class description system 0104 * before the main function starts or 0105 * when this class is dynamically loaded. 0106 */ 0107 static void Init(); 0108 0109 0110 protected: 0111 0112 /** @name Standard Interfaced functions. */ 0113 //@{ 0114 /** 0115 * Initialize this object after the setup phase before saving an 0116 * EventGenerator to disk. 0117 * @throws InitException if object could not be initialized properly. 0118 */ 0119 virtual void doinit(); 0120 //@} 0121 0122 protected: 0123 0124 /** @name Clone Methods. */ 0125 //@{ 0126 /** 0127 * Make a simple clone of this object. 0128 * @return a pointer to the new object. 0129 */ 0130 virtual IBPtr clone() const; 0131 0132 /** Make a clone of this object, possibly modifying the cloned object 0133 * to make it sane. 0134 * @return a pointer to the new object. 0135 */ 0136 virtual IBPtr fullclone() const; 0137 //@} 0138 0139 0140 private: 0141 0142 /** 0143 * The assignment operator is private and must never be called. 0144 * In fact, it should not even be implemented. 0145 */ 0146 ReggeonPDF & operator=(const ReggeonPDF &) = delete; 0147 0148 /** 0149 * Pointer to the concrete PDF reggeon structure function. 0150 */ 0151 PDFPtr ptrPDF_; 0152 0153 /** 0154 * PDG code for the particle 0155 */ 0156 long particleID_; 0157 0158 /** 0159 * Pointer to the particle 0160 */ 0161 PDPtr particle_; 0162 0163 }; 0164 0165 } 0166 0167 #endif
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|