Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // ThePEGStrategy.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_ThePEGStrategy_H
0010 #define ThePEG_ThePEGStrategy_H
0011 // This is the declaration of the ThePEGStrategy class.
0012 
0013 #include "ThePEG/Repository/Strategy.h"
0014 #include <string>
0015 
0016 namespace ThePEG {
0017 
0018 /**
0019  * The ThePEGStrategy class is a sub-class of the Strategy class,
0020  * simply implementing the correct citation for ThePEG in the
0021  * ClassDocumentation interface.
0022  *
0023  * @see Strategy
0024  * 
0025  */
0026 class ThePEGStrategy: public Strategy {
0027 
0028 public:
0029 
0030   /**
0031    * Standard Init function used to initialize the interface.
0032    */
0033   static void Init();
0034 
0035   /**
0036    * Version string
0037    */
0038   virtual const std::string versionstring() const;
0039 
0040 protected:
0041 
0042   /** @name Clone Methods. */
0043   //@{
0044   /**
0045    * Make a simple clone of this object.
0046    * @return a pointer to the new object.
0047    */
0048   virtual IBPtr clone() const;
0049 
0050   /** Make a clone of this object, possibly modifying the cloned object
0051    * to make it sane.
0052    * @return a pointer to the new object.
0053    */
0054   virtual IBPtr fullclone() const;
0055   //@}
0056 
0057 private:
0058 
0059   /**
0060    * Describe concrete class without persistent data.
0061    */
0062   static NoPIOClassDescription<ThePEGStrategy> initThePEGStrategy;
0063 
0064   /**
0065    *  Private and non-existent assignment operator.
0066    */
0067   ThePEGStrategy & operator=(const ThePEGStrategy &) = delete;
0068 
0069 };
0070 
0071 
0072 /** @cond TRAITSPECIALIZATIONS */
0073 
0074 /** This template specialization informs ThePEG about the base classes
0075  *  of ThePEGStrategy. */
0076 template <>
0077 struct BaseClassTrait<ThePEGStrategy,1>: public ClassTraitsType {
0078   /** Typedef of the first base class of ThePEGStrategy. */
0079   typedef Strategy NthBase;
0080 };
0081 
0082 /** This template specialization informs ThePEG about the name of the
0083  *  ThePEGStrategy class and the shared object where it is
0084  *  defined. */
0085 template <>
0086 struct ClassTraits<ThePEGStrategy>: public ClassTraitsBase<ThePEGStrategy> {
0087   /** Return a platform-independent class name */
0088   static string className() { return "ThePEG::ThePEGStrategy"; }
0089   /** Return the name of the shared library be loaded to get access to
0090    *  the ThePEGStrategy class and every other class it uses
0091    *  (except the base class). */
0092   static string library() { return "ThePEGStrategy.so"; }
0093 };
0094 
0095 /** @endcond */
0096 
0097 }
0098 
0099 #endif /* ThePEG_ThePEGStrategy_H */