PDF.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::PDF
5 
6 \brief A class to store PDFs.
7 
8  This class is using the \b Strategy Pattern. \n
9  It can accept requests to calculate itself, for a given (x,q^2) pair,
10  that it then delegates to the algorithmic object, implementing the
11  PDFModelI interface, that it finds attached to itself.
12 
13 \author Costas Andreopoulos <constantinos.andreopoulos \at cern.ch>
14  University of Liverpool & STFC Rutherford Appleton Laboratory
15 
16 \created May 04, 2004
17 
18 \cpright Copyright (c) 2003-2020, The GENIE Collaboration
19  For the full text of the license visit http://copyright.genie-mc.org
20 */
21 //____________________________________________________________________________
22 
23 #ifndef _PDF_H_
24 #define _PDF_H_
25 
26 #include <iostream>
27 
29 
30 using std::ostream;
31 
32 namespace genie {
33 
34 class PDF;
35 ostream & operator << (ostream & stream, const PDF & pdf_set);
36 
37 class PDF {
38 
39 public:
40 
41  PDF();
42  PDF(const PDF & pdf_set);
43  virtual ~PDF();
44 
45  //-- methods to set a PDFModelI and compute PDFs
46  void SetModel (const PDFModelI * model);
47  void Calculate (double x, double q2);
48 
49  //-- methods to access the computed PDFs
50  double UpValence (void) const { return fUpValence; }
51  double DownValence (void) const { return fDownValence; }
52  double UpSea (void) const { return fUpSea; }
53  double DownSea (void) const { return fDownSea; }
54  double Strange (void) const { return fStrange; }
55  double Charm (void) const { return fCharm; }
56  double Bottom (void) const { return fBottom; }
57  double Top (void) const { return fTop; }
58  double Gluon (void) const { return fGluon; }
59 
60  //-- methods to scale sea and valence PDFs (eg used to apply
61  // corrections from non-QCD based fits / etc see Bodek Yang model)
62  void ScaleValence (double kscale);
63  void ScaleSea (double kscale);
64  void ScaleUpValence (double kscale);
65  void ScaleDownValence (double kscale);
66  void ScaleUpSea (double kscale);
67  void ScaleDownSea (double kscale);
68  void ScaleStrange (double kscale);
69  void ScaleCharm (double kscale);
70 
71  //-- reseting/copying methods
72  void Reset (void);
73  void Copy (const PDF & pdf_set);
74 
75  //-- printing methods & operators
76  void Print(ostream & stream) const;
77  friend ostream & operator << (ostream & stream, const PDF & pdf_set);
78 
79 protected:
80 
81  void Init(void);
82 
83  double fUpValence;
84  double fDownValence;
85  double fUpSea;
86  double fDownSea;
87  double fStrange;
88  double fCharm;
89  double fBottom;
90  double fTop;
91  double fGluon;
92 
93  const PDFModelI * fModel;
94 };
95 
96 } // genie namespace
97 
98 #endif // _PDF_H_
double fDownValence
Definition: PDF.h:84
THE MAIN GENIE PROJECT NAMESPACE
Definition: AlgCmp.h:25
double fDownSea
Definition: PDF.h:86
double Charm(void) const
Definition: PDF.h:55
double Gluon(void) const
Definition: PDF.h:58
void Init(void)
Definition: PDF.cxx:139
double DownValence(void) const
Definition: PDF.h:51
A class to store PDFs.
Definition: PDF.h:37
Definition: model.py:1
double UpSea(void) const
Definition: PDF.h:52
void Copy(const PDF &pdf_set)
Definition: PDF.cxx:124
Pure abstract base class. Defines the PDFModelI interface to be implemented by wrapper classes to exi...
Definition: PDFModelI.h:28
void Reset(void)
Definition: PDF.cxx:111
double fStrange
Definition: PDF.h:87
void ScaleDownValence(double kscale)
Definition: PDF.cxx:86
double Top(void) const
Definition: PDF.h:57
double fTop
Definition: PDF.h:90
double DownSea(void) const
Definition: PDF.h:53
friend ostream & operator<<(ostream &stream, const PDF &pdf_set)
Definition: PDF.cxx:20
double fUpValence
Definition: PDF.h:83
double Strange(void) const
Definition: PDF.h:54
static QChar PDF((ushort) 0x202c)
void SetModel(const PDFModelI *model)
Definition: PDF.cxx:42
void ScaleSea(double kscale)
Definition: PDF.cxx:70
void ScaleValence(double kscale)
Definition: PDF.cxx:64
void Calculate(double x, double q2)
Definition: PDF.cxx:49
virtual ~PDF()
Definition: PDF.cxx:37
double fBottom
Definition: PDF.h:89
void ScaleUpValence(double kscale)
Definition: PDF.cxx:81
double UpValence(void) const
Definition: PDF.h:50
double fUpSea
Definition: PDF.h:85
PDF()
Definition: PDF.cxx:27
ostream & operator<<(ostream &stream, const AlgConfigPool &config_pool)
double fGluon
Definition: PDF.h:91
double Bottom(void) const
Definition: PDF.h:56
const PDFModelI * fModel
Definition: PDF.h:93
list x
Definition: train.py:276
double fCharm
Definition: PDF.h:88
void ScaleUpSea(double kscale)
Definition: PDF.cxx:91
void ScaleCharm(double kscale)
Definition: PDF.cxx:106
void ScaleDownSea(double kscale)
Definition: PDF.cxx:96
void Print(ostream &stream) const
Definition: PDF.cxx:154
void ScaleStrange(double kscale)
Definition: PDF.cxx:101