Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ReweightMinPT.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_ReweightMinPT_H
0010 #define ThePEG_ReweightMinPT_H
0011 // This is the declaration of the ReweightMinPT class.
0012 
0013 #include "ThePEG/MatrixElement/ReweightBase.h"
0014 
0015 namespace ThePEG {
0016 
0017 /**
0018  * The ReweightMinPT class reweights matrix elements with the minimum
0019  * of the transverse momenta of the outgoing partons to some power.
0020  *
0021  * @see ReweightBase
0022  * 
0023  */
0024 class ReweightMinPT: public ReweightBase {
0025 
0026 public:
0027 
0028   /** @name Standard constructors and destructors. */
0029   //@{
0030   /**
0031    * Default constructor.
0032    */
0033   ReweightMinPT()
0034     : power(4.0), scale(50.0*GeV), onlyColoured(false) {}
0035   //@}
0036 
0037 public:
0038 
0039   /**
0040    * Return the wieght for the kinematical configuation provided by
0041    * the assigned XComb object (in the LastXCombInfo base class).
0042    */
0043   virtual double weight() const;
0044 
0045 public:
0046 
0047   /** @name Functions used by the persistent I/O system. */
0048   //@{
0049   /**
0050    * Function used to write out object persistently.
0051    * @param os the persistent output stream written to.
0052    */
0053   void persistentOutput(PersistentOStream & os) const;
0054 
0055   /**
0056    * Function used to read in object persistently.
0057    * @param is the persistent input stream read from.
0058    * @param version the version number of the object when written.
0059    */
0060   void persistentInput(PersistentIStream & is, int version);
0061   //@}
0062 
0063   /**
0064    * Standard Init function used to initialize the interfaces.
0065    */
0066   static void Init();
0067 
0068 protected:
0069 
0070   /** @name Clone Methods. */
0071   //@{
0072   /**
0073    * Make a simple clone of this object.
0074    * @return a pointer to the new object.
0075    */
0076   virtual IBPtr clone() const;
0077 
0078   /** Make a clone of this object, possibly modifying the cloned object
0079    * to make it sane.
0080    * @return a pointer to the new object.
0081    */
0082   virtual IBPtr fullclone() const;
0083   //@}
0084 
0085 private:
0086 
0087   /**
0088    * The weight is the minimum pt/scale to a \a power.
0089    */
0090   double power;
0091 
0092   /**
0093    * The weight is the minimum pt/\a scale to a power.
0094    */
0095   Energy scale;
0096 
0097   /**
0098    * Flag to indicate that only coloured partons should be considered.
0099    */
0100   bool onlyColoured;
0101 
0102 private:
0103 
0104   /**
0105    * Describe a concrete base class with persistent data.
0106    */
0107   static ClassDescription<ReweightMinPT> initReweightMinPT;
0108 
0109   /**
0110    *  Private and non-existent assignment operator.
0111    */
0112   ReweightMinPT & operator=(const ReweightMinPT &) = delete;
0113 
0114 };
0115 
0116 }
0117 
0118 
0119 namespace ThePEG {
0120 
0121 /** @cond TRAITSPECIALIZATIONS */
0122 
0123 /** This template specialization informs ThePEG about the
0124  *  base classes of ReweightMinPT. */
0125 template <>
0126 struct BaseClassTrait<ReweightMinPT,1>: public ClassTraitsType {
0127   /** Typedef of the first base class of ReweightMinPT. */
0128   typedef ReweightBase NthBase;
0129 };
0130 
0131 /** This template specialization informs ThePEG about the name of
0132  *  the ReweightMinPT class and the shared object where it is defined. */
0133 template <>
0134 struct ClassTraits<ReweightMinPT>: public ClassTraitsBase<ReweightMinPT> {
0135   /** Return a platform-independent class name */
0136   static string className() { return "ThePEG::ReweightMinPT"; }
0137   /** Return the name of the shared library be loaded to get
0138    *  access to the ReweightMinPT class and every other class it uses
0139    *  (except the base class). */
0140   static string library() { return "ReweightMinPT.so"; }
0141 };
0142 
0143 /** @endcond */
0144 
0145 }
0146 
0147 #endif /* ThePEG_ReweightMinPT_H */