## PDF Selection

This page contains several subsections. The first deals with how to pick the parton distribution set for protons, including from LHAPDF, to be used for all proton and antiproton beams. The second is a special option that allows a separate PDF set to be used for the hard process only, while the first choice would still apply to everything else. The third introduces the possibility of nuclear modifications. Further sections give access to pion, Pomeron and photon PDF's, respectively, the second being used to describe diffractive systems. Towards the end comes the possibility to switch off the lepton "parton density", and photons from lepton beams. More information on PDF classes is found here.

`flag` PDF:extrapolate (`default = off`)
Allow PDF sets to be extrapolated to small x values, instead of being frozen at x_min. This is a global flag that affects all PDF sets used, whenever extrapolation has been implemented. Among internal PDFs, all Pomeron sets are affected by this flag, as are the CTEQ6/CT09 proton ones, the NNPDF 3.1 ones and others accessed by the `LHAGrid1` approach. For the rest some by default extrapolate to small x (GRV 94 L, MRST/MSTW) while others are frozen at the border (CTEQ 5 L, NNPDF 2.3). When in doubt, check whether and how the behaviour depends on the choice made for your region of interest. When LHAPDF (5 or 6) is used, the extrapolation switch is set according to the choice here, and the behaviour is according to the rules of the respective program.
To put the issue in context, parton densities have a guaranteed range of validity in x and Q^2, and what should be done beyond that range usually is not explained by the authors of PDF sets. Nevertheless these boundaries very often are exceeded, e.g. minimum-bias studies at LHC may sample x values down to 10^-8, while many PDF sets stop already at 10^-5. The default behaviour is then that the PDF's are frozen at the boundary, i.e. xf(x,Q^2) is fixed at its value at x_min for all values x < x_min, and so on. This is a conservative approach. Alternatively, if you switch on extrapolation, then parametrizations will be extended beyond the boundaries, by some prescription. In some cases this will provide a more realistic answer, in others complete rubbish. Another problem is that some of the PDF-set codes will write a warning message anytime the limits are exceeded, thus swamping your output file. Therefore you should study a set seriously before you run it with this switch on.
Warning:It has been found out that the LHAPDF program by default uses a damping of PDFs at low Q scales, below Q_min, based on an anomalous dimension ansatz. This overlaps with the damping imposed in the MPI framework by the p_T0 parameter, and to have both would probably imply doublecounting of effects. Therefore, as of version 8.227, PDFs are frozen below Q_min. This change affects the LHAPDF 5 interface. The native LHAPDF 6 interface already contained this restriction, as does the PDFs that come with PYTHIA. Also limits at Q_max and x_max are checked and PDFs frozen outside them, so the extrapolate option now is strictly a choice of low-x behaviour.

### Parton densities for protons

PYTHIA comes with a reasonably complete list of recent LO fits built-in, both ones within the normal LO context and ones with modifications for better matching to event generators. In addition two older sets are included for backwards reference (most studies to date are based on CTEQ 5L). Therefore there is no real need to link any external PDF sets.

If the internal PDF sets are not sufficient, the LHAPDF library [Wha05,Buc15] gives you access to a much wider selection.
Warning 1: owing to previous problems with the behaviour of PDF's beyond the x and Q^2 boundaries of a set, you should only use LHAPDF version 5.3.0 or later.
Warning 2: the behaviour of the LHAPDF sets need not be identical with the implementation found in PYTHIA. Specifically we are aware of the following points that may influence a comparison.
(a) CTEQ 5L in PYTHIA is the parametrization, in LHAPDF the grid interpolation.
(b) MRST LO* and LO** in PYTHIA is based on an updated edition, where one makes use of the expanded MSTW grid format, while LHAPDF is based on the original smaller grid.
(c) The CTEQ 6 and CT09MC sets in PYTHIA are frozen at the boundaries of the grid, by recommendation of the authors, while LHAPDF also offers an option with a smooth extrapolation outside the grid boundaries.

If you do not want to install LHAPDF, it is possible to use LHAPDF6 data grids natively in PYTHIA. This is based on a simplified implementation of interpolation in a `.dat` "lhagrid1" file, and so does not give fully identical results, and also is not foolproof.

The selection of parton densities is made once and then is propagated through the program. It is essential to make an informed choice, for several reasons [Kas10]:
Warning 1: the choice of PDF set affects a number of properties of events. A change of PDF therefore requires a complete retuning e.g. of the multiparton-interactions model for minimum-bias and underlying events. Conversely, the pp physics tunes are all made for a specific PDF tune, and the chosen (or default) tune will therefore overwrite the `PDF:pSet` default value described below. If you want to set `PDF:pSet` differently it should be done after the `Tune:pp` value, if any, has been set.
Warning 2: People often underestimate the differences between different sets on the market. The sets for the same order are constructed to behave more or less similarly at large x and Q^2, while the multiparton interactions are dominated by the behaviour in the region of small x and Q^2. A good PDF parametrization ought to be sensible down to x = 10^-6 (x = 10^-7) and Q^2 = 1 GeV^2 for Tevatron (LHC) applications. Unfortunately there are distributions on the market that completely derail in that region. The `main51.cc` and `main52.cc` programs in the `examples` subdirectory provide some examples of absolutely minimal sanity checks before a new PDF set is put in production.
Warning 3: NLO and LO sets tend to have quite different behaviours, e.g. NLO ones have less gluons at small x, which then is compensated by positive corrections in the NLO matrix elements. Therefore do not blindly assume that an NLO tune has to be better than an LO one when combined with the LO matrix elements in PYTHIA. There are explicit examples where such thinking can lead you down the wrong alley, especially if you study low-pT physics. A longer discussion on this point can be found in this note. In the list below you should therefore be extra cautious when using set 6 or set 9.

`word` PDF:pSet (`default = 13`)
Parton densities to be used for proton beams (and, by implication, antiproton ones). Note that the choice of a string input (rather than e.g. an integer) allows to pick either an internal, LHAPDF5 or LHAPDF6 set in one single setting, by some behind-the-scenes machinations.
`option` 1 : GRV 94L, LO alpha_s(M_Z) = 0.128 (this set is out of date, but retained for historical comparisons).
`option` 2 : CTEQ 5L, LO alpha_s(M_Z) = 0.127 (this set is also out of date, but not badly so, and many tunes are based on it).
`option` 3 : MRST LO* (2007), NLO alpha_s(M_Z) = 0.12032.
`option` 4 : MRST LO** (2008), NLO alpha_s(M_Z) = 0.11517.
`option` 5 : MSTW 2008 LO (central member), LO alpha_s(M_Z) = 0.13939.
`option` 6 : MSTW 2008 NLO (central member), NLO alpha_s(M_Z) = 0.12018 (NLO, see Warning 3 above).
`option` 7 : CTEQ6L, NLO alpha_s(M_Z) = 0.1180.
`option` 8 : CTEQ6L1, LO alpha_s(M_Z) = 0.1298.
`option` 9 : CTEQ66.00 (NLO, central member), NLO alpha_s(M_Z) = 0.1180 (NLO, see Warning 3 above).
`option` 10 : CT09MC1, LO alpha_s(M_Z) = 0.1300.
`option` 11 : CT09MC2, NLO alpha_s(M_Z) = 0.1180.
`option` 12 : CT09MCS, NLO alpha_s(M_Z) = 0.1180.
`option` 13 : NNPDF2.3 QCD+QED LO alpha_s(M_Z) = 0.130.
`option` 14 : NNPDF2.3 QCD+QED LO alpha_s(M_Z) = 0.119.
`option` 15 : NNPDF2.3 QCD+QED NLO alpha_s(M_Z) = 0.119.
`option` 16 : NNPDF2.3 QCD+QED NNLO alpha_s(M_Z) = 0.119.
Warning :the following four NNPDF 3.1 sets are quite different from the NNPDF 2.3 ones, and cannot be used interchangeably, but need retuning of the MPI framework. Some also do not contain QED evolution.
`option` 17 : NNPDF3.1 QCD LO alpha_s(M_Z) = 0.130.
`option` 18 : NNPDF3.1 QCD LO alpha_s(M_Z) = 0.118.
`option` 19 : NNPDF3.1 QCD+LUXQED NLO alpha_s(M_Z) = 0.118.
`option` 20 : NNPDF3.1 QCD+LUXQED NNLO alpha_s(M_Z) = 0.118.
`option` 21 : NNPDF3.1sx+LHCb NLO+NLLx LUXQED alpha_s(M_Z) = 0.118 [Ber18]. While at NLO, the additional small-x resummation, anchored by LHC-b data, offers a more reasonable small-x behaviour than most NLO PDFs, as required for the successful usage e.g. with traditional "improved LL" parton showers. The photon part is unchanged from the earlier NNPDF 3.1 QED analysis [Ber17].
Warning :in version 8.235 the 21 identifier was used to denote and earlier attempt to obtain a more reasonable small-x behaviour. This PDF set is superseded by the new 21 and 22 sets, and has been removed, as was forewarned.
`option` 22 : NNPDF3.1sx+LHCb NNLO+NLLx LUXQED alpha_s(M_Z) = 0.118. Comments as for 21, but this set is at NNLO rather than NLO.
`option` LHAPDF5:set/member : Use an external LHAPDF set where `set` is the name of the set to use and `member` is the member of the set to use. The value for `set` is the name of the PDF set to use while the value for `member` must be an integer and is the member of the set to use. If member is not supplied, then `0` is assumed.
`option` LHAPDF6:set/member : Same as for `LHAPDF5:set/member` but now the LHAPDF6 library is used instead.
`option` LHAGrid1:filename : Use the internal implementation of interpolation in `.dat` files in the default "lhagrid1" LHAPDF6 format. This is a simplified implementation, with cubic interpolation in ln(x) and in ln(Q2). If there are several Q^2 subgrids they have to have the same x grid. (Linear interpolation in ln(Q2) is used, should a subgrid contain fewer than four Q2 values.) Other restrictions may also apply, so use with caution. If the `filename` begins with a / it is supposed to contain the absolute path to the file, and if not the file is supposed to be located in the standard `share/Pythia8/xmldoc` directory. Note that, unlike LHAPDF, there is no explicit hierarchy of a set containing separate members; each `.dat` file can be used without any reference to the set it is a member of.
Warning 1: the alpha_s(M_Z) values and the order of the running in the description above is purely informative, and does not affect any other parts of the program. Instead you have the freedom to set alpha_s(M_Z) value and running separately for hard processes (including resonance decays), multiparton interactions, initial-state radiation, and final-state radiation.
Warning 2: in order for `LHAPDF` PDF sets to work you must have compiled the appropriate LHAPDF plugins for PYTHIA and have set the `LHAPATH` environment variable (or `LHAPDF_DATA_PATH`) to provide the data-files directory of your local LHAPDF installation. See the README file in the `examples` directory for further instructions.
Warning 3: it is technically possible to simultaneously use `LHAPDF5` and `LHAPDF6` PDF sets at the same time for the two beams, but such a configuration is not officially supported and strongly discouraged.

`word` PDF:pSetB (`default = void`)
Parton densities to be used by proton beam B, with the same options available as for `PDF:pSet`. If this option is set to `void` then the same PDF set as `PDF:pSet` is used.

If you want to use PDF's not found in LHAPDF, or you want to interface LHAPDF another way, you have full freedom to use the more generic interface options.

### Parton densities for protons in the hard process

The above options provides a PDF set that will be used everywhere: for the hard process, the parton showers and the multiparton interactions alike. As already mentioned, therefore a change of PDF should be accompanied by a complete retuning of the whole MPI framework, and maybe more. There are cases where one may want to explore different PDF options for the hard process, but would not want to touch the rest. If several different sets are to be compared, a simple reweighting based on the originally used flavour, x, Q^2 and PDF values may offer the best route. The options in this section allow a choice of the PDF set for the hard process alone, while the choice made in the previous section would still be used for everything else. The hardest interaction of the minimum-bias process is part of the multiparton-interactions framework and so does not count as a hard process here.

Of course it is inconsistent to use different PDF's in different parts of an event, but if the x and Q^2 ranges mainly accessed by the components are rather different then the contradiction would not be too glaring. Furthermore, since standard PDF's are one-particle-inclusive we anyway have to 'invent' our own PDF modifications to handle configurations where more than one parton is kicked out of the proton [Sjo04].

The PDF choices that can be made are the same as above, so we do not repeat the detailed discussion.

`flag` PDF:useHard (`default = off`)
If on then select a separate PDF set for the hard process, using the variables below. If off then use the same PDF set for everything, as already chosen above.

`word` PDF:pHardSet (`default = void`)
Parton densities to be used by the proton beams of the hard process, with the same options available as for `PDF:pSet`. If this option is set to `void` then the same PDF set as `PDF:pSet` is used.

`word` PDF:pHardSetB (`default = void`)
Parton densities to be used by proton beam B of the hard process, with the same options available as for `PDF:pSet`. If this option is set to `void` then the same PDF set as `PDF:pHardSet` is used.

### Nuclear modifications of parton densities

Nuclear modifications of the PDFs are implemented for the hard-process generation only. The final PDF value is calculated for an average nucleon within given nucleus, i.e. f_i^A(x,Q^2) = (Z/A)*f_i^(p/A) + ((A-Z)/A)*f_i^(n/A), where A is the nuclear mass number and Z the number of protons, set using the PDG code for nucleus. The neutron PDFs are obtained by applying isospin symmetry, e.g. f_u^(n/A)(x,Q^2) = f_d^(p/A)(x,Q^2). The nuclear PDFs implemented provide only the nuclear modification so the full PDF is calculated by multiplying the selected free proton PDF with the modification.

`flag` PDF:useHardNPDFA (`default = off`)
If on, the hard processes are generated with nuclear modifications for beam A.

`flag` PDF:useHardNPDFB (`default = off`)
If on, the hard processes are generated with nuclear modifications for beam B.

`mode` PDF:nPDFSetA (`default = 1`; `minimum = 0`; `maximum = 3`)
The nuclear modication to be used for beam A if enabled with the switch above.
`option` 0 : Only Isospin effect.
`option` 1 : EPS09, LO [Esk09].
`option` 2 : EPS09, NLO [Esk09]. The grid files can be found from here and are to be stored in the same folder as other PDF grid files (usually share/Pythia8/xmldoc/).
`option` 3 : EPPS16, NLO [Esk16]. The grid files can be found from here.

`mode` PDF:nPDFSetB (`default = 1`; `minimum = 0`; `maximum = 3`)
The nuclear modication to be used for beam B. Same options as above.
`option` 0 : Only Isospin effect.
`option` 1 : EPS09, LO.
`option` 2 : EPS09, NLO.
`option` 3 : EPPS16, NLO.

`mode` PDF:nPDFBeamA (`default = 100822080`)
The PDG code for nuclear beam A, provides the number of protons and neutrons. Default code for Pb.

`mode` PDF:nPDFBeamB (`default = 100822080`)
The PDG code for nucleus B.

### Parton densities for pions

The parton densities of the pion are considerably less well known than those of the proton. There are only rather few sets on the market, and none particularly recent. Only one comes built-in, but others can be accessed from LHAPDF. Input parametrizations are for the pi+. >From this the pi- is obtained by charge conjugation and the pi0 from averaging (half the pions have d dbar valence quark content, half u ubar.

Much of the switches are taken over from the proton case, with obvious modifications; therefore the description is briefer. Currently we have not seen the need to allow separate parton densities for hard processes. When using LHAPDF the `PDF:extrapolateLHAPDF` switch of the proton also applies to pions.

`word` PDF:piSet (`default = 1`)
Parton densities that can be used for pion beams, currently with only one internal choice.
`option` 1 : GRV 92 L.
`option` LHAPDF5:set/member : Use an external LHAPDF set where `set` is the name of the set to use and `member` is the member of the set to use. The value for `set` can either be a relative path to the LHAPDF path, or an absolute path. The value for `member` must be an integer.
`option` LHAPDF6:set/member : Same as for `LHAPDF5:set/member` but now the LHAPDF6 library is used instead.
`option` LHAGrid1:filename : Use the internal implementation of interpolation in `.dat` files in the default "lhagrid1" LHAPDF6 format, cf. the corresponding proton option.

`word` PDF:piSetB (`default = void`)
Parton density for pion beam B. If this option is set to `void` then the same PDF set as `PDF:piSet` is used.

### Parton densities for Pomerons

The Pomeron is introduced in the description of diffractive events, i.e. a diffractive system is viewed as a Pomeron-proton collision at a reduced CM energy. Here the PDF's are even less well known. Most experimental parametrizations are NLO, which makes them less well suited for Monte Carlo applications. Furthermore note that the momentum sum is arbitrarily normalized to a non-unity value.

`word` PDF:PomSet (`default = 6`)
Parton densities that can be used for Pomeron beams.
`option` 1 : Q^2-independent parametrizations xf(x) = N_ab x^a (1 - x)^b, where N_ab ensures unit momentum sum. The a and b parameters can be set separately for the gluon and the quark distributions. The momentum fraction of gluons and quarks can be freely mixed, and production of s quarks can be suppressed relative to that of d and u ones, with antiquarks as likely as quarks. See further below how to set the six parameters of this approach.
`option` 2 : pi0 distributions, as specified in the section above.
`option` 3 : the H1 2006 Fit A NLO Q^2-dependent parametrization, based on a tune to their data [H1P06], rescaled by the factor `PomRescale` below.
`option` 4 : the H1 2006 Fit B NLO Q^2-dependent parametrization, based on a tune to their data [H1P06], rescaled by the factor `PomRescale` below.
`option` 5 : the H1 2007 Jets NLO Q^2-dependent parametrization, based on a tune to their data [H1P07], rescaled by the factor `PomRescale` below.
`option` 6 : the H1 2006 Fit B LO Q^2-dependent parametrization, based on a tune to their data [H1P06], rescaled by the factor `PomRescale` below.
`option` 7 : the ACTW B NLO Q^2-dependent parametrization with epsilon=0.14, based on a tune to H1 and ZEUS data [Alv99], rescaled by the factor `PomRescale` below.
`option` 8 : the ACTW D NLO Q^2-dependent parametrization with epsilon=0.14, based on a tune to H1 and ZEUS data [Alv99], rescaled by the factor `PomRescale` below.
`option` 9 : the ACTW SG NLO Q^2-dependent parametrization with epsilon=0.14, based on a tune to H1 and ZEUS data [Alv99], rescaled by the factor `PomRescale` below.
`option` 10 : the ACTW D NLO Q^2-dependent parametrization with epsilon=0.19, based on a tune to H1 and ZEUS data [Alv99], rescaled by the factor `PomRescale` below.
`option` 11 : a rescaling of the proton PDF, xf^pom(x)=xf^p(x x_pom), used in the `Angantyr` model for Heavy Ion collisions. For high x there is an additional suppression by (1-x)^p, where the power is given by `PDF:PomHixSupp` below.
`option` 12 : The GKG18-DPDF LO Fit A central member Q^2-dependent parametrization based on a tune to H1 and ZEUS data [Goh18].
`option` 13 : The GKG18-DPDF LO Fit B central member Q^2-dependent parametrization based on a tune to H1 and ZEUS data [Goh18].
`option` 14 : The GKG18-DPDF NLO Fit A central member Q^2-dependent parametrization based on a tune to H1 and ZEUS data [Goh18].
`option` 15 : The GKG18-DPDF NLO Fit B central member Q^2-dependent parametrization based on a tune to H1 and ZEUS data [Goh18].
`option` LHAPDF5:set/member : Use an external LHAPDF5 set, cf. the corresponding proton option.
`option` LHAPDF6:set/member : Use an external LHAPDF6 set, cf. the corresponding proton option.
`option` LHAGrid1:filename : Use the internal implementation for a LHAPDF6 set, cf. the corresponding proton option.

`parm` PDF:PomGluonA (`default = 0.`; `minimum = -0.5`; `maximum = 2.`)
the parameter a in the ansatz xg(x) = N_ab x^a (1 - x)^b for option 1 above.

`parm` PDF:PomGluonB (`default = 3.`; `minimum = 0.`; `maximum = 10.`)
the parameter b in the ansatz xg(x) = N_ab x^a (1 - x)^b for option 1 above.

`parm` PDF:PomQuarkA (`default = 0.`; `minimum = -0.5`; `maximum = 2.`)
the parameter a in the ansatz xq(x) = N_ab x^a (1 - x)^b for option 1 above.

`parm` PDF:PomQuarkB (`default = 3.`; `minimum = 0.`; `maximum = 10.`)
the parameter b in the ansatz xq(x) = N_ab x^a (1 - x)^b for option 1 above.

`parm` PDF:PomQuarkFrac (`default = 0.2`; `minimum = 0.`; `maximum = 1.`)
the fraction of the Pomeron momentum carried by quarks for option 1 above, with the rest carried by gluons.

`parm` PDF:PomStrangeSupp (`default = 0.5`; `minimum = 0.`; `maximum = 1.`)
the suppression of the s quark density relative to that of the d and u ones for option 1 above.

`parm` PDF:PomRescale (`default = 1.0`; `minimum = 0.5`; `maximum = 5.0`)
Rescale several of the fits above by this uniform factor, e.g. to bring up their momentum sum to around unity. By default many of the sets have a momentum sum of order 0.5, suggesting that a factor around 2.0 should be used. You can use `examples/main51.cc` to get a more precise value. Note that also other parameters in the diffraction framework may need to be retuned when this parameter is changed. Specifically `Diffraction:PomFluxRescale` should be set to the inverse of `PDF:PomRescale` to preserve the cross section for hard diffractive processes.

`parm` PDF:PomHixSupp (`default = 0.`; `minimum = 0.`; `maximum = 10.`)
the power in the suppression of the high-x PDF for option 11 above.

### Parton densities for photons

Photon PDFs describe the partonic content of the resolved photons and can be used to generate any process initiated by quarks and gluons.

There are several PDF sets available for photons, although there have not been much activity recently. Currently one internal set is included, but more sets are available from LHAPDF5. The sets from LHAPDF5 can only be used as PDFs in the hard process (see `PDF:GammaHardSet` below). In case of photons the parton shower and beam remnant generation require additional methods that are provided only for internal sets. Currently no photon PDFs have been included in LHAPDF6.

`mode` PDF:GammaSet (`default = 1`; `minimum = 1`; `maximum = 1`)
Parton densities that can be used for resolved photon beams.
`option` 1 : CJKL, based on [Cor03] but the rescaling for heavy quarks due to kinematic constraints in DIS is undone to obtain correct behaviour for photon-photon/hadron collisions.

`word` PDF:GammaHardSet (`default = void`)
Parton densities to be used by the beams of the hard process. For photons the other options are the ones provided by LHAPDF5. If this option is set to `void` then the same PDF set as `PDF:GammaSet` is used.

### Parton densities for leptons

For electrons/muons/taus there is no need to choose between different parametrizations, since only one implementation is available, and should be rather uncontroversial (apart from some technical details). However, insofar as e.g. e^+ e^- data often are corrected back to a world without any initial-state photon radiation, it is useful to have a corresponding option available here.

`flag` PDF:lepton (`default = on`)
Use parton densities for lepton beams or not. If off the colliding leptons carry the full beam energy, if on part of the energy is radiated away by initial-state photons. In the latter case the initial-state showers will generate the angles and energies of the set of photons that go with the collision. In addition one collinear photon per beam carries any leftover amount of energy not described by shower emissions. If the initial-state showers are switched off these collinear photons will carry the full radiated energy.

Neutrinos are always taken pointlike. Do note that the phase space selection machinery currently does not allow one resolved and one unresolved lepton beam. For lepton-neutrino collisions to work you must therefore set `PDF:lepton = off`.

### Photon fluxes

Charged beam particles may emit photons that can act as initiators for different processes. In addition to being in an unresolved state, the low virtuality (real) photons may also be resolved and have some partonic structure. Both, unresolved (direct) and resolved contributions are included, see Photoproduction for details.

The PDFs describing the resolved state can be obtained by convoluting the photon flux with the selected photon PDFs. The photon flux is modelled according to equivalent photon approximation (EPA). The photon fluxes can be enabled with the following options. Currently fluxes are internally defined for charged leptons and protons, but other fluxes (e.g. photons from heavy ions) can be externally defined and passed to Pythia for event generation. The photon sub-beams are enabled with the following flags

`flag` PDF:beamA2gamma (`default = off`)
Enables photon sub-beam from beam particle `A`,

`flag` PDF:beamB2gamma (`default = off`)
Enables photon sub-beam from beam particle `B`. Further options specific for different beam types are described below.

#### Lepton beams

In case of leptons the photon fluxes can also be enabled with the following flag.

`flag` PDF:lepton2gamma (`default = off`)
Enables photon sub-beam from all lepton beams. This option, however, has been superseded by the new options `PDF:BeamA2gamma` and `PDF:BeamB2gamma` above, but is kept for backwards compability. The resulting behaviour is the same in both cases. The applied photon PDF set is selected with the `PDF:GammaSet` and `PDF:GammaHardSet` options above. Events with two unresolved photon initiators can be generated also with `PDF:lepton = on`, but then additional phase-space cuts (e.g. cut on the invariant mass of the photon-photon pair) are not applied.

`mode` PDF:lepton2gammaSet (`default = 1`; `minimum = 0`; `maximum = 1`)
The type of photon flux.
`option` 0 : Uses an approximation of the photon flux to sample processes and corrects this later with an externally provided flux. For leptons a bit less efficient than option 1, but allows straightforward implementation of photon fluxes from different particles. To use this option the user has to provide the external photon flux using method `Pythia::setPhotonFluxPtr(pdfAPtr, pdfBPtr)` as demonstrated in the sample program `main70.cc`.
`option` 1 : Convolute the photon flux from EPA with the selected photon PDF set. Convolution integral is performed "on the fly", meaning that the actual integral is not computed but the x_gamma is sampled event-by-event. Since the final PDF value depends on the sampled value for x_gamma, the phase-space sampling is set up using an overestimate for the PDFs. This makes the process selection somewhat less efficient compared to the case where the PDFs are fixed (e.g. for protons).

#### Proton beams

There are currently two internally defined photon fluxes from a proton, and the user can also provide an externally defined flux. The applied flux is set with the following option.

`mode` PDF:Proton2gammaSet (`default = 2`; `minimum = 0`; `maximum = 2`)
`option` 0 : Use an externally provided photon flux. This flux has to be passed with method `Pythia::setPhotonFluxPtr(pdfAPtr, pdfBPtr)`.
`option` 1 : Use virtuality integrated photon flux from Budnev et al. As the flux is integrated over Q^2, the virtuality is always set to zero and the scattered beam proton does not have any transverse momentum. When this option is applied the Q^2 sampling will be turned off.
`option` 2 : Use a virtuality-dependent flux similar to the approximation by Drees and Zeppenfeld. Uses a dipole form factor to appropriately suppress high virtualities.

#### Nuclear beams

Currently no flux from heavy ions are internally defined. However, using the above options it is possible to define a suitable flux and pass this to Pythia for event generation, see `main70.cc` for example. To increase the sampling efficiency fo nuclear beams, the following options have been introduced.

`mode` PDF:beam2gammaApprox (`default = 1`; `minimum = 1`; `maximum = 2`)
Controls which type of overestimate is used for photon flux sampling.
`option` 1 : Estimate optimized for photons from leptons. Works reasonable well also for photoproduction in p+p.
`option` 2 : Estimate optimized for ultraperipheral heavy-ion collisions as presented in `main70.cc`. Here the estimate is divided into two regions, a power-law in x_gamma below x_cut and an exponential fall-off above, see the related parameters below. Default values are optimized for p+Pb collisions where Pb-nucleus provide the photons, but they should work reasonably well also for other similar configurations.
Note 1: Parameters do not affect the flux itself, only the sampling efficiency.
Note 2: This option was formerly named as `PDF:lepton2gammaApprox` but is renamed for version 8.3.

`parm` PDF:gammaFluxApprox2bMin (`default = 7.336`; `minimum = 0.0`)
Minimal allowed impact parameter for which the flux is considered. Units in `fm`. Should match the flux provided by user.

`parm` PDF:gammaFluxApprox2mBeam (`default = 0.9314`; `minimum = 0.0`)
Per-nucleon mass used for the overestimate. Units in `GeV` and should again match to the user-provided flux.

`parm` PDF:gammaFluxApprox2xPow (`default = 1.15`; `minimum = 0.0`)
Value of the exponent of the power law. The default value should work well for the foreseen cases, so vary with caution.

`parm` PDF:gammaFluxApprox2xCut (`default = 0.01`; `minimum = 0.0`)
Value that defines at which x_gamma different approximations are used. As above, vary with caution.

### Incoming parton selection

There is one useful degree of freedom to restrict the set of incoming quark flavours for hard processes. It does not change the PDF's as such, only which quarks are allowed to contribute to the hard-process cross sections. Note that separate but similarly named modes are available for multiparton interactions and spacelike showers.

`mode` PDFinProcess:nQuarkIn (`default = 5`; `minimum = 0`; `maximum = 5`)
Number of allowed incoming quark flavours in the beams; a change to 4 would thus exclude b and bbar as incoming partons, etc.