Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // PtGenerator.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_PtGenerator_H
0010 #define ThePEG_PtGenerator_H
0011 // This is the declaration of the PtGenerator class.
0012 
0013 #include "ThePEG/Config/ThePEG.h"
0014 #include "ThePEG/Handlers/HandlerBase.h"
0015 
0016 namespace ThePEG {
0017 
0018 /**
0019  * PtGenerator is the base for all classes implementing alternative
0020  * models for transverse momentum generation.  It inherits from the
0021  * HandlerBase which among other things provides forward access to the
0022  * random number object held by the EventGenerator object.
0023  *
0024  * @see \ref PtGeneratorInterfaces "The interfaces"
0025  * defined for PtGenerator.
0026  * @see HandlerBase
0027  * @see EventGenerator
0028  */
0029 class PtGenerator: public HandlerBase {
0030 
0031 public:
0032 
0033   /** @name Virtual functions to be implemented by sub-classes. */
0034   //@{
0035   /**
0036    * Generate (\f$k_x, k_y\f$) components of the transverse
0037    * momentum.
0038    */
0039   virtual TransverseMomentum generate() const =0;
0040   //@}
0041 
0042 public:
0043 
0044   /**
0045    * Standard Init function used to initialize the interface.
0046    */
0047   static void Init();
0048 
0049 private:
0050 
0051   /**
0052    * Describe an abstract class without persistent data.
0053    */
0054   static AbstractClassDescription<PtGenerator> initPtGenerator;
0055 
0056   /**
0057    * Private and non-existent assignment operator.
0058    */
0059    PtGenerator & operator=(const PtGenerator &) = delete;
0060 
0061 };
0062 
0063 
0064 /** @cond TRAITSPECIALIZATIONS */
0065 
0066 /**
0067  * This template specialization informs ThePEG about the
0068  * base class of PtGenerator.
0069  */
0070 template <>
0071 struct BaseClassTrait<PtGenerator,1>: public ClassTraitsType {
0072   /** Typedef of the base class of PtGenerator. */
0073   typedef HandlerBase NthBase;
0074 };
0075 
0076 /**
0077  * This template specialization informs ThePEG about the name of the
0078  * PtGenerator class.
0079  */
0080 template <>
0081 struct ClassTraits<PtGenerator>: public ClassTraitsBase<PtGenerator> {
0082   /** Return the class name. */
0083   static string className() { return "ThePEG::PtGenerator"; }
0084 };
0085 
0086 
0087 /** @endcond */
0088 
0089 }
0090 
0091 #endif /* ThePEG_PtGenerator_H */