lhapdf
is hosted by
Hepforge
,
IPPP Durham
LHAPDF
6.5.5
Loading...
Searching...
No Matches
include
LHAPDF
PDF.h
1
// -*- C++ -*-
2
//
3
// This file is part of LHAPDF
4
// Copyright (C) 2012-2024 The LHAPDF collaboration (see AUTHORS for details)
5
//
6
#
pragma
once
7
#
ifndef
LHAPDF_PDF_H
8
#
define
LHAPDF_PDF_H
9
10
#
include
"LHAPDF/PDFInfo.h"
11
#
include
"LHAPDF/PDFIndex.h"
12
#
include
"LHAPDF/Factories.h"
13
#
include
"LHAPDF/AlphaS.h"
14
#
include
"LHAPDF/Utils.h"
15
#
include
"LHAPDF/Paths.h"
16
#
include
"LHAPDF/Exceptions.h"
17
#
include
"LHAPDF/Version.h"
18
#
include
"LHAPDF/Config.h"
19
20
namespace
LHAPDF
{
21
22
23
/// @defgroup partonids Parton ID codes
24
/// @{
25
/// Convenience/clarity enum for specifying parton IDs
26
namespace
PIDs {
//< for scoping to avoid conflicts, e.g. PID::GLUON rather than just GLUON
27
enum
PIDCode {
28
ATOP = -6, ABOTTOM = -5, ACHARM = -4, ASTRANGE = -3, AUP = -2, ADOWN = -1,
29
GLUON = 0,
// equivalent to 21
30
DOWN = 1, UP = 2, STRANGE = 3, CHARM = 4, BOTTOM = 5, TOP = 6
31
};
32
}
33
/// @}
34
35
36
37
/// @brief PDF is the general interface for access to parton density information.
38
///
39
/// The PDF interface declares the general form of all PDF types, such as Grid based or analytic.
40
class
PDF
{
41
protected
:
//< These constructors should only be called by subclasses
42
43
/// Internal convenience typedef for the AlphaS object handle
44
typedef
unique_ptr
<
AlphaS
>
AlphaSPtr
;
45
46
/// Force initialization of the only non-class member.
47
PDF
() :
_forcePos
(0) { }
48
49
50
public
:
51
52
/// Virtual destructor, to allow unfettered inheritance
53
virtual
~
PDF
() { }
54
55
56
protected
:
57
58
59
/// @name Helper methods for info loading / path setting, used by derived types
60
///@{
61
62
void
_loadInfo(
const
std::string& mempath);
63
64
void
_loadInfo(
const
std::string& setname,
int
member) {
65
const
string searchpath = findpdfmempath(setname, member);
66
if
(searchpath.empty())
67
throw
UserError(
"Can't find a valid PDF "
+ setname +
"/"
+ to_str(member));
68
_loadInfo(searchpath);
69
}
70
71
void
_loadInfo(
int
lhaid) {
72
const
pair<string,
int
> setname_memid = lookupPDF(lhaid);
73
if
(setname_memid.second == -1)
74
throw
IndexError(
"Can't find a PDF with LHAPDF ID = "
+ to_str(lhaid));
75
_loadInfo(setname_memid.first, setname_memid.second);
76
}
77
78
///@}
79
80
81
public
:
82
83
/// @name PDF values
84
///@{
85
86
/// @brief Get the PDF xf(x) value at (x,q2) for the given PID.
87
///
88
/// All grids are defined in Q2 rather than Q since the natural value
89
/// in MC programs is squared, so we typically avoid an expensive sqrt() call.
90
///
91
/// @param id PDG parton ID
92
/// @param x Momentum fraction
93
/// @param q2 Squared energy (renormalization) scale
94
/// @return The value of xf(x,q2)
95
double
xfxQ2
(
int
id,
double
x,
double
q2)
const
;
96
97
98
/// @brief Get the PDF xf(x) value at (x,q) for the given PID.
99
///
100
/// xfxQ will square the given q and return the value from xfxQ2.
101
/// All grids are defined in q2 rather than q since the natural value
102
/// in MC programs is squared, so we typically avoid an expensive sqrt() call.
103
///
104
/// @param id PDG parton ID
105
/// @param x Momentum fraction
106
/// @param q Energy (renormalization) scale
107
/// @return The value of xf(x,q2)
108
double
xfxQ
(
int
id,
double
x,
double
q)
const
{
109
return
xfxQ2
(
id
,
x
,
q*q
)
;
110
}
111
112
113
/// @brief Get the PDF xf(x) value at (x,q2) for all supported PIDs.
114
///
115
/// This version fills a user-supplied map to avoid container construction
116
/// costs on every call.
117
///
118
/// @param x Momentum fraction
119
/// @param q2 Squared energy (renormalization) scale
120
/// @param rtn Map of PDF xf(x,q2) values, to be filled
121
void
xfxQ2
(
double
x,
double
q2, std::map<
int
,
double
>& rtn)
const
;
122
123
124
/// @brief Get the PDF xf(x) value at (x,q) for all supported PIDs.
125
///
126
/// This version fills a user-supplied map to avoid container construction
127
/// costs on every call.
128
///
129
/// @param x Momentum fraction
130
/// @param q Energy (renormalization) scale
131
/// @param rtn Map of PDF xf(x,q) values, to be filled
132
void
xfxQ
(
double
x,
double
q, std::map<
int
,
double
>& rtn)
const
{
133
xfxQ2
(
x
,
q*q
,
rtn
)
;
134
}
135
136
137
/// @brief Get the PDF xf(x) value at (x,q2) for "standard" PIDs.
138
///
139
/// This version fills a user-supplied vector to avoid container
140
/// construction costs on every call.
141
///
142
/// The filled vector follows the LHAPDF5 convention, with 13 entries
143
/// running in the PDF ID order [-6, -5, ..., -1, 21, 1, ... 5, 6], i.e.
144
/// quark PDF values will be at vector index pid+6 and the gluon at index 6.
145
///
146
/// @param x Momentum fraction
147
/// @param q2 Squared energy (renormalization) scale
148
/// @param rtn Vector of PDF xf(x,q2) values, to be filled
149
void
xfxQ2
(
double
x,
double
q2, std::vector<
double
>& rtn)
const
;
150
151
152
/// @brief Get the PDF xf(x) value at (x,q) for "standard" PIDs.
153
///
154
/// This version fills a user-supplied vector to avoid container
155
/// construction costs on every call.
156
///
157
/// The filled vector follows the LHAPDF5 convention, with 13 entries
158
/// running in the PDF ID order [-6, -5, ..., -1, 21, 1, ... 5, 6], i.e.
159
/// quark PDF values will be at vector index pid+6 and the gluon at index 6.
160
///
161
/// @param x Momentum fraction
162
/// @param q Energy (renormalization) scale
163
/// @param rtn Vector of PDF xf(x,q) values, to be filled
164
void
xfxQ
(
double
x,
double
q, std::vector<
double
>& rtn)
const
{
165
xfxQ2
(
x
,
q*q
,
rtn
)
;
166
}
167
168
169
/// @brief Get the PDF xf(x) value at (x,q2) for all supported PIDs.
170
///
171
/// This version creates a new map on every call: prefer to use the
172
/// fill-in-place version with a user-supplied map for many calls.
173
///
174
/// @param x Momentum fraction
175
/// @param q2 Squared energy (renormalization) scale
176
/// @return A map of PDF xf(x,q2) values
177
std
::
map
<
int
,
double
>
xfxQ2
(
double
x,
double
q2)
const
;
178
179
/// @brief Get the PDF xf(x) value at (x,q) for all supported PIDs.
180
///
181
/// This version creates a new map on every call: prefer to use the
182
/// fill-in-place version with a user-supplied map for many calls.
183
///
184
/// xfxQ will square the given q and return the value from xfxQ2.
185
/// All grids are defined in q2 rather than q since the natural value
186
/// in MC programs is squared, so we typically avoid an expensive sqrt() call.
187
///
188
/// @param x Momentum fraction
189
/// @param q Energy (renormalization) scale
190
/// @return A map of PDF xf(x,q) values
191
std
::
map
<
int
,
double
>
xfxQ
(
double
x,
double
q)
const
{
192
return
xfxQ2
(x, q*q);
193
}
194
195
196
protected
:
197
198
/// @brief Calculate the PDF xf(x) value at (x,q2) for the given PID.
199
///
200
/// This is the key function to be overridden in concrete PDF types, since
201
/// it actually does the calculation of xf(x,Q2) by analytic, interpolation,
202
/// or other means. The user-called xfxQ2 method exists so that the physical
203
/// range and PID checks need only be done in one place, rather than need to
204
/// be re-implemented in each concrete implementation.
205
///
206
/// @param id Parton ID in the PDG scheme
207
/// @param x Momentum fraction
208
/// @param q2 Squared energy (renormalization) scale
209
/// @return the value of xf(x,q2)
210
virtual
double
_xfxQ2
(
int
id,
double
x,
double
q2)
const
= 0;
211
212
virtual
void
_xfxQ2(
double
x,
double
q2, std::vector<
double
>& ret)
const
= 0;
213
214
///@}
215
216
217
public
:
218
219
/// @name Ranges of validity
220
///@{
221
222
/// Minimum valid x value for this PDF.
223
virtual
double
xMin
() {
224
if
(info().has_key(
"XMin"
))
225
return
info().get_entry_as<
double
>(
"XMin"
);
226
return
numeric_limits<
double
>::epsilon();
227
}
228
229
/// Maximum valid x value for this PDF.
230
virtual
double
xMax
() {
231
if
(info().has_key(
"XMax"
))
232
return
info().get_entry_as<
double
>(
"XMax"
);
233
return
1.0;
234
}
235
236
/// Minimum valid Q value for this PDF (in GeV).
237
/// @note This function calls sqrt(q2Min()). For better CPU efficiency and accuracy use q2Min() directly.
238
virtual
double
qMin
() {
239
return
info().get_entry_as<
double
>(
"QMin"
, 0);
240
}
241
242
/// @brief Maximum valid Q value for this PDF (in GeV).
243
/// @note This function calls sqrt(q2Max()). For better CPU efficiency and accuracy use q2Max() directly.
244
virtual
double
qMax
() {
245
return
info().get_entry_as<
double
>(
"QMax"
, numeric_limits<
double
>::max());
246
}
247
248
/// Minimum valid Q2 value for this PDF (in GeV2).
249
virtual
double
q2Min
() {
250
return
sqr(
this
->
qMin
(
)
);
251
}
252
253
/// Maximum valid Q2 value for this PDF (in GeV2).
254
virtual
double
q2Max
() {
255
// Explicitly re-access this from the info, to avoid an overflow from squaring double_max
256
return
(info().has_key(
"QMax"
)) ? sqr(info().get_entry_as<
double
>(
"QMax"
)) : numeric_limits<
double
>::max();
257
}
258
259
260
/// @brief Check whether the PDF is set to only return positive (definite) values or not.
261
///
262
/// This is to avoid overshooting in to negative values when
263
/// interpolating/extrapolating PDFs that sharply decrease towards zero.
264
/// 0 = unforced, 1 = forced positive, 2 = forced positive definite (>= 1e-10)
265
int
forcePositive
()
const
{
266
if
(_forcePos < 0)
//< Caching
267
_forcePos = info().get_entry_as<
unsigned
int
>(
"ForcePositive"
, 0);
268
return
_forcePos
;
269
}
270
/// @brief Set whether the PDF will only return positive (definite) values or not.
271
void
setForcePositive
(
int
mode) {
272
_forcePos
= mode;
273
}
274
275
276
/// @brief Check whether the given x is physically valid
277
///
278
/// Returns false for x less than 0 or greater than 1, since it
279
/// is a momentum fraction and not valid outside those values.
280
bool
inPhysicalRangeX
(
double
x)
const
{
281
return
x >= 0.0 && x <= 1.0;
282
}
283
284
/// @brief Check whether the given Q2 is physically valid
285
///
286
/// Returns false for Q2 less than 0 (Q must be real-valued).
287
bool
inPhysicalRangeQ2
(
double
q2)
const
{
288
return
q2 >= 0.0;
289
}
290
291
/// @brief Check whether the given Q is physically valid
292
///
293
/// Returns false for Q less than 0 (Q must be positive).
294
bool
inPhysicalRangeQ
(
double
q)
const
{
295
return
inPhysicalRangeQ2
(
q*q
)
;
296
}
297
298
/// Check whether the given (x,Q2) is physically valid
299
bool
inPhysicalRangeXQ2
(
double
x,
double
q2)
const
{
300
return
inPhysicalRangeX
(
x
)
&&
inPhysicalRangeQ2
(
q2
)
;
301
}
302
303
/// Check whether the given (x,Q) is physically valid
304
bool
inPhysicalRangeXQ
(
double
x,
double
q)
const
{
305
return
inPhysicalRangeX
(
x
)
&&
inPhysicalRangeQ
(
q
)
;
306
}
307
308
/// @brief Grid range check for Q
309
///
310
/// Return true when given Q is in the coverage range of this PDF.
311
/// It actually squares the given Q and returns value from inRangeQ2.
312
///
313
/// @param q Energy scale
314
/// @return Whether q is in range
315
virtual
bool
inRangeQ
(
double
q)
const
{
316
return
inRangeQ2
(
q*q
)
;
317
}
318
319
/// @brief Grid range check for Q2
320
///
321
/// Return true when given Q2 is in the coverage range of this PDF.
322
///
323
/// @param q2 Squared energy scale
324
/// @return Whether q2 is in range
325
virtual
bool
inRangeQ2
(
double
q2)
const
= 0;
326
327
/// @brief Grid range check for x
328
///
329
/// Return true when given x is in the coverage range of this PDF.
330
///
331
/// @param x Momentum fraction
332
/// @return Whether x is in range
333
virtual
bool
inRangeX
(
double
x)
const
= 0;
334
335
/// Combined range check for x and Q
336
virtual
bool
inRangeXQ
(
double
x,
double
q)
const
{
337
return
inRangeX
(
x
)
&&
inRangeQ
(
q
)
;
338
}
339
340
/// Combined range check for x and Q2
341
bool
inRangeXQ2
(
double
x,
double
q2)
const
{
342
return
inRangeX
(
x
)
&&
inRangeQ2
(
q2
)
;
343
}
344
345
///@}
346
347
348
/// @name Generic member-level metadata (including cascaded metadata from set & config level)
349
///@{
350
351
/// Get the info class that actually stores and handles the metadata
352
PDFInfo
&
info
() {
return
_info; }
353
354
/// Get the info class that actually stores and handles the metadata (const version)
355
const
PDFInfo
&
info
()
const
{
return
_info; }
356
357
/// @brief Get the PDF set of which this is a member
358
///
359
/// Obtained from the member file path, not Info-based metadata.
360
PDFSet
&
set
()
const
{
361
return
getPDFSet(_setname());
362
}
363
364
///@}
365
366
367
/// @name Member-level metadata
368
///@{
369
370
/// @brief PDF member local ID number
371
///
372
/// Obtained from the member file path, not Info-based metadata.
373
int
memberID
()
const
{
374
const
string memname = file_stem(_mempath);
375
assert(memname.length() > 5);
// There must be more to the filename stem than just the _nnnn suffix
376
const
int
memid = lexical_cast<
int
>(memname.substr(memname.length()-4));
//< Last 4 chars should be the member number
377
return
memid;
378
}
379
380
/// @brief PDF member global LHAPDF ID number
381
///
382
/// Obtained from the member ID and the set's LHAPDF ID index
383
int
lhapdfID
()
const
;
384
385
/// Description of this PDF member
386
std
::
string
description
()
const
{
387
return
info().get_entry(
"MemDesc"
, info().get_entry(
"PdfDesc"
,
""
));
388
}
389
390
/// Version of this PDF's data file
391
int
dataversion
()
const
{
392
return
info().get_entry_as<
int
>(
"DataVersion"
, -1);
393
}
394
395
/// Get the type of PDF member that this object represents (central, error)
396
std
::
string
type
()
const
{
397
return
to_lower(info().get_entry(
"MemType"
, info().get_entry(
"PdfType"
)));
398
}
399
400
///@}
401
402
403
/// Summary printout
404
void
print
(std::ostream& os=
std
::
cout
,
int
verbosity=1)
const
;
405
406
407
/// @name Parton content and QCD parameters
408
///@{
409
410
/// @brief List of flavours defined by this PDF set.
411
///
412
/// This list is stored locally after its initial read from the Info object
413
/// to avoid unnecessary lookups and string decoding, since e.g. it is
414
/// looked at by every call to the GridPDF's Interpolator and Extrapolator
415
/// classes.
416
///
417
/// @todo Make virtual for AnalyticPDF? Or allow manual setting of the Info?
418
virtual
const
std
::
vector
<
int
>&
flavors
()
const
{
419
if
(_flavors.empty()) {
420
_flavors = info().get_entry_as< vector<
int
> >(
"Flavors"
);
421
sort(_flavors.begin(), _flavors.end());
422
}
423
return
_flavors;
424
}
425
426
/// @brief Manually set/override the list of flavours defined by this PDF set.
427
///
428
/// @note The provided vector will be internally sorted into ascending numeric order.
429
void
setFlavors
(std::vector<
int
>
const
& flavors) {
430
_flavors = flavors;
431
sort(_flavors.begin(), _flavors.end());
432
}
433
434
/// Checks whether @a id is a valid parton for this PDF.
435
bool
hasFlavor
(
int
id)
const
;
436
437
/// @brief Order of QCD at which this PDF has been constructed
438
///
439
/// "Order" is defined here and throughout LHAPDF as the maximum number of
440
/// loops included in the matrix elements, in order to have an integer value
441
/// for easy use in comparisons, as opposed to "LO", "NLO", etc. strings.
442
///
443
/// @todo Provide a setter function?
444
int
orderQCD
()
const
{
445
return
info().get_entry_as<
int
>(
"OrderQCD"
);
446
}
447
/// @deprecated Use orderQCD instead
448
int
qcdOrder
()
const
{
return
orderQCD
(
)
; }
449
450
/// @brief Get a quark mass in GeV by PDG code (|PID| = 1-6 only)
451
///
452
/// Convenience interface to the Mass* info keywords.
453
/// Returns -1 for an undefined PID.
454
///
455
/// @todo Provide a setter function?
456
double
quarkMass
(
int
id)
const
;
457
458
/// @brief Get a flavor scale threshold in GeV by PDG code (|PID| = 1-6 only)
459
/// Convenience interface to the Mass* and Threshold* info keywords.
460
/// Returns -1 for an undefined PID.
461
///
462
/// @todo Provide a setter function?
463
double
quarkThreshold
(
int
id)
const
;
464
465
///@}
466
467
468
/// @name QCD running coupling calculation
469
///@{
470
471
/// @brief Set the AlphaS calculator by pointer
472
///
473
/// The provided AlphaS must have been new'd, as it will not be copied and
474
/// ownership passes to this GridPDF: it will be deleted when this PDF goes
475
/// out of scope or another setAlphaS call is made.
476
void
setAlphaS
(AlphaS* alphas) {
477
_alphas
.reset(alphas);
478
}
479
480
/// @brief Set the AlphaS calculator by smart pointer
481
void
setAlphaS
(
AlphaSPtr
alphas) {
482
_alphas = std::move(alphas);
483
}
484
485
/// @brief Check if an AlphaS calculator is set
486
bool
hasAlphaS
()
const
{
487
return
bool
(
_alphas
);
488
}
489
490
/// @brief Retrieve the AlphaS object for this PDF
491
AlphaS
&
alphaS
() {
492
return
*
_alphas
;
493
}
494
495
/// @brief Retrieve the AlphaS object for this PDF (const)
496
const
AlphaS
&
alphaS
()
const
{
497
return
*
_alphas
;
498
}
499
500
/// @brief Value of alpha_s(Q2) used by this PDF
501
///
502
/// Calculated numerically, analytically, or interpolated according to
503
/// metadata, using the AlphaS classes.
504
double
alphasQ
(
double
q)
const
{
505
return
alphasQ2
(
q*q
)
;
506
}
507
508
/// @brief Value of alpha_s(Q2) used by this PDF
509
///
510
/// Calculated numerically, analytically, or interpolated according to
511
/// metadata, using the AlphaS classes.
512
double
alphasQ2
(
double
q2)
const
{
513
if
(!
hasAlphaS
(
)
)
throw
Exception(
"No AlphaS pointer has been set"
);
514
return
_alphas
->alphasQ2(q2);
515
}
516
517
///@}
518
519
520
protected
:
521
522
void
_loadAlphaS() {
523
_alphas.reset( mkAlphaS(info()) );
524
}
525
526
/// Get the set name from the member data file path (for internal use only)
527
std
::
string
_setname
()
const
{
528
return
basename(dirname(_mempath));
529
}
530
531
/// Member data file path
532
std
::
string
_mempath
;
533
534
/// Metadata container
535
PDFInfo
_info
;
536
537
/// Locally cached list of supported PIDs (mutable for laziness/caching)
538
mutable
vector
<
int
>
_flavors
;
539
540
/// Optionally loaded AlphaS object (mutable for laziness/caching)
541
mutable
AlphaSPtr
_alphas
;
542
543
/// @brief Cached flag for whether to return only positive (or positive definite) PDF values
544
///
545
/// A negative value indicates that the flag has not been set. 0 = no
546
/// forcing, 1 = force positive (i.e. 0 is permitted, negative values are
547
/// not), 2 = force positive definite (i.e. no values less than 1e-10).
548
mutable
int
_forcePos
;
549
550
};
551
552
553
}
554
#
endif
LHAPDF::PDF
PDF is the general interface for access to parton density information.
Definition
PDF.h:40
LHAPDF::PDF::inPhysicalRangeQ2
bool inPhysicalRangeQ2(double q2) const
Check whether the given Q2 is physically valid.
Definition
PDF.h:287
LHAPDF::PDF::AlphaSPtr
unique_ptr< AlphaS > AlphaSPtr
Internal convenience typedef for the AlphaS object handle.
Definition
PDF.h:44
LHAPDF::PDF::inRangeXQ2
bool inRangeXQ2(double x, double q2) const
Combined range check for x and Q2.
Definition
PDF.h:341
LHAPDF::PDF::xfxQ
double xfxQ(int id, double x, double q) const
Get the PDF xf(x) value at (x,q) for the given PID.
Definition
PDF.h:108
LHAPDF::PDF::xfxQ2
double xfxQ2(int id, double x, double q2) const
Get the PDF xf(x) value at (x,q2) for the given PID.
LHAPDF::PDF::forcePositive
int forcePositive() const
Check whether the PDF is set to only return positive (definite) values or not.
Definition
PDF.h:265
LHAPDF::PDF::_setname
std::string _setname() const
Get the set name from the member data file path (for internal use only)
Definition
PDF.h:527
LHAPDF::PDF::type
std::string type() const
Get the type of PDF member that this object represents (central, error)
Definition
PDF.h:396
LHAPDF::PDF::_alphas
AlphaSPtr _alphas
Optionally loaded AlphaS object (mutable for laziness/caching)
Definition
PDF.h:541
LHAPDF::PDF::xMin
virtual double xMin()
Minimum valid x value for this PDF.
Definition
PDF.h:223
LHAPDF::PDF::orderQCD
int orderQCD() const
Order of QCD at which this PDF has been constructed.
Definition
PDF.h:444
LHAPDF::PDF::setAlphaS
void setAlphaS(AlphaSPtr alphas)
Set the AlphaS calculator by smart pointer.
Definition
PDF.h:481
LHAPDF::PDF::xfxQ2
std::map< int, double > xfxQ2(double x, double q2) const
Get the PDF xf(x) value at (x,q2) for all supported PIDs.
LHAPDF::PDF::setFlavors
void setFlavors(std::vector< int > const &flavors)
Manually set/override the list of flavours defined by this PDF set.
Definition
PDF.h:429
LHAPDF::PDF::_mempath
std::string _mempath
Member data file path.
Definition
PDF.h:532
LHAPDF::PDF::inPhysicalRangeXQ
bool inPhysicalRangeXQ(double x, double q) const
Check whether the given (x,Q) is physically valid.
Definition
PDF.h:304
LHAPDF::PDF::dataversion
int dataversion() const
Version of this PDF's data file.
Definition
PDF.h:391
LHAPDF::PDF::lhapdfID
int lhapdfID() const
PDF member global LHAPDF ID number.
LHAPDF::PDF::quarkThreshold
double quarkThreshold(int id) const
Get a flavor scale threshold in GeV by PDG code (|PID| = 1-6 only) Convenience interface to the Mass*...
LHAPDF::PDF::alphaS
AlphaS & alphaS()
Retrieve the AlphaS object for this PDF.
Definition
PDF.h:491
LHAPDF::PDF::_xfxQ2
virtual double _xfxQ2(int id, double x, double q2) const =0
Calculate the PDF xf(x) value at (x,q2) for the given PID.
LHAPDF::PDF::alphasQ2
double alphasQ2(double q2) const
Value of alpha_s(Q2) used by this PDF.
Definition
PDF.h:512
LHAPDF::PDF::print
void print(std::ostream &os=std::cout, int verbosity=1) const
Summary printout.
LHAPDF::PDF::xfxQ2
void xfxQ2(double x, double q2, std::map< int, double > &rtn) const
Get the PDF xf(x) value at (x,q2) for all supported PIDs.
LHAPDF::PDF::xfxQ
void xfxQ(double x, double q, std::map< int, double > &rtn) const
Get the PDF xf(x) value at (x,q) for all supported PIDs.
Definition
PDF.h:132
LHAPDF::PDF::inRangeQ2
virtual bool inRangeQ2(double q2) const =0
Grid range check for Q2.
LHAPDF::PDF::set
PDFSet & set() const
Get the PDF set of which this is a member.
Definition
PDF.h:360
LHAPDF::PDF::~PDF
virtual ~PDF()
Virtual destructor, to allow unfettered inheritance.
Definition
PDF.h:53
LHAPDF::PDF::setForcePositive
void setForcePositive(int mode)
Set whether the PDF will only return positive (definite) values or not.
Definition
PDF.h:271
LHAPDF::PDF::inRangeQ
virtual bool inRangeQ(double q) const
Grid range check for Q.
Definition
PDF.h:315
LHAPDF::PDF::flavors
virtual const std::vector< int > & flavors() const
List of flavours defined by this PDF set.
Definition
PDF.h:418
LHAPDF::PDF::setAlphaS
void setAlphaS(AlphaS *alphas)
Set the AlphaS calculator by pointer.
Definition
PDF.h:476
LHAPDF::PDF::_flavors
vector< int > _flavors
Locally cached list of supported PIDs (mutable for laziness/caching)
Definition
PDF.h:538
LHAPDF::PDF::q2Min
virtual double q2Min()
Minimum valid Q2 value for this PDF (in GeV2).
Definition
PDF.h:249
LHAPDF::PDF::alphasQ
double alphasQ(double q) const
Value of alpha_s(Q2) used by this PDF.
Definition
PDF.h:504
LHAPDF::PDF::alphaS
const AlphaS & alphaS() const
Retrieve the AlphaS object for this PDF (const)
Definition
PDF.h:496
LHAPDF::PDF::qMax
virtual double qMax()
Maximum valid Q value for this PDF (in GeV).
Definition
PDF.h:244
LHAPDF::PDF::q2Max
virtual double q2Max()
Maximum valid Q2 value for this PDF (in GeV2).
Definition
PDF.h:254
LHAPDF::PDF::info
const PDFInfo & info() const
Get the info class that actually stores and handles the metadata (const version)
Definition
PDF.h:355
LHAPDF::PDF::inPhysicalRangeX
bool inPhysicalRangeX(double x) const
Check whether the given x is physically valid.
Definition
PDF.h:280
LHAPDF::PDF::description
std::string description() const
Description of this PDF member.
Definition
PDF.h:386
LHAPDF::PDF::inPhysicalRangeXQ2
bool inPhysicalRangeXQ2(double x, double q2) const
Check whether the given (x,Q2) is physically valid.
Definition
PDF.h:299
LHAPDF::PDF::xMax
virtual double xMax()
Maximum valid x value for this PDF.
Definition
PDF.h:230
LHAPDF::PDF::hasFlavor
bool hasFlavor(int id) const
Checks whether id is a valid parton for this PDF.
LHAPDF::PDF::_forcePos
int _forcePos
Cached flag for whether to return only positive (or positive definite) PDF values.
Definition
PDF.h:548
LHAPDF::PDF::qcdOrder
int qcdOrder() const
Definition
PDF.h:448
LHAPDF::PDF::qMin
virtual double qMin()
Definition
PDF.h:238
LHAPDF::PDF::inRangeXQ
virtual bool inRangeXQ(double x, double q) const
Combined range check for x and Q.
Definition
PDF.h:336
LHAPDF::PDF::inPhysicalRangeQ
bool inPhysicalRangeQ(double q) const
Check whether the given Q is physically valid.
Definition
PDF.h:294
LHAPDF::PDF::PDF
PDF()
Force initialization of the only non-class member.
Definition
PDF.h:47
LHAPDF::PDF::info
PDFInfo & info()
Get the info class that actually stores and handles the metadata.
Definition
PDF.h:352
LHAPDF::PDF::memberID
int memberID() const
PDF member local ID number.
Definition
PDF.h:373
LHAPDF::PDF::xfxQ
std::map< int, double > xfxQ(double x, double q) const
Get the PDF xf(x) value at (x,q) for all supported PIDs.
Definition
PDF.h:191
LHAPDF::PDF::_info
PDFInfo _info
Metadata container.
Definition
PDF.h:535
LHAPDF::PDF::inRangeX
virtual bool inRangeX(double x) const =0
Grid range check for x.
LHAPDF::PDF::quarkMass
double quarkMass(int id) const
Get a quark mass in GeV by PDG code (|PID| = 1-6 only)
LHAPDF::PDF::hasAlphaS
bool hasAlphaS() const
Check if an AlphaS calculator is set.
Definition
PDF.h:486
LHAPDF
Namespace for all LHAPDF functions and classes.
Definition
AlphaS.h:14
Generated on Mon Dec 16 2024 19:04:48 for LHAPDF by
1.12.0