Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:38:28

0001 // -*- C++ -*-
0002 //
0003 // PDFCuts.h is a part of ThePEG - Toolkit for HEP Event Generation
0004 // Copyright (C) 1999-2019 Leif Lonnblad
0005 //
0006 // ThePEG 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 ThePEG_PDFCuts_H
0010 #define ThePEG_PDFCuts_H
0011 // This is the declaration of the PDFCuts class.
0012 
0013 #include "ThePEG/Config/ThePEG.h"
0014 #include "ThePEG/Utilities/Interval.h"
0015 #include "ThePEG/Cuts/Cuts.fh"
0016 
0017 namespace ThePEG {
0018 
0019 /**
0020  * The PDFCuts class is used to specify cuts on scale and momentum
0021  * fractions for which a PDFBase object is expected to give parton
0022  * densities. It is used to estimate upper limits on the parton
0023  * densities to be generated by a PDFBase object.
0024  *
0025  * @see PDFBase
0026  */
0027 class PDFCuts {
0028 
0029 public:
0030 
0031   /** @name Standard constructors, assignment and destructors. */
0032   //@{
0033   /**
0034    * Default constructor.
0035    */
0036   PDFCuts() : theSMax() {}
0037 
0038   /**
0039    * Construction from members.
0040    */
0041   PDFCuts(const Interval<double> & newL,
0042       const SInterval & newScale, const Energy2 & newSMax) 
0043     : theL(newL), theScale(newScale), theSMax(newSMax) {}
0044 
0045   /**
0046    * Construction from a Cuts object, using the values for
0047    * the first incoming parton (or not).
0048    */
0049   PDFCuts(const Cuts &, bool first, const SInterval & S,
0050       const SInterval & sHat);
0051 
0052   /**
0053    * Construction from a Cuts object, using the values for
0054    * the first incoming parton (or not).
0055    */
0056   PDFCuts(const Cuts &, bool first, Energy maxEnergy);
0057   //@}
0058 
0059 public:
0060 
0061   /** @name Access the individual limits. */
0062   //@{
0063   /**
0064    * The minimum value of \f$\log(1/x)\f$.
0065    */
0066   double lMin() const { return theL.lower(); }
0067 
0068 
0069   /**
0070    * The maximum value of \f$\log(1/x)\f$.
0071    */
0072   double lMax() const { return theL.upper(); }
0073 
0074   /**
0075    * The minimum value of x.
0076    */
0077   double xMin() const { return exp(-lMax()); }
0078 
0079 
0080   /**
0081    * The maximum value of x.
0082    */
0083   double xMax() const { return exp(-lMin()); }
0084 
0085 
0086   /**
0087    * The lower limit on the scale to be used.
0088    */
0089   Energy2 scaleMin() const { return theScale.lower(); }
0090 
0091 
0092   /**
0093    * The upper limit on the scale to be used.
0094    */
0095   Energy2 scaleMax() const { return theScale.upper(); }
0096 
0097 
0098   /**
0099    * The maximum scale for a given momentum fraction.
0100    */
0101   Energy2 scaleMax(double x) const { return min(scaleMax(), sMax()*x); }
0102 
0103 
0104   /**
0105    * The maximum scale for a given logarithmic momentum fraction.
0106    */
0107   Energy2 scaleMaxL(double l) const { return scaleMax(exp(-l)); }
0108 
0109 
0110   /**
0111    * The maximum invariant mass squared of the colliding particles.
0112    */
0113   Energy2 sMax() const { return theSMax; }
0114 
0115 
0116   //@}
0117 
0118 private:
0119 
0120   /**
0121    * The minimum and maximum values of \f$\log(1/x)\f$.
0122    */
0123   Interval<double> theL;
0124 
0125   /**
0126    * The limits on the scale to be used.
0127    */
0128   SInterval theScale;
0129 
0130   /**
0131    * The maximum invariant mass squared of the colliding particles.
0132    */
0133   Energy2 theSMax;
0134 
0135 };
0136 
0137 }
0138 
0139 #endif /* ThePEG_PDFCuts_H */