|
|
|||
File indexing completed on 2026-08-06 09:24:23
0001 // -*- C++ -*- 0002 // 0003 // DipoleChainOrdering.h is a part of Herwig - A multi-purpose Monte Carlo event generator 0004 // Copyright (C) 2002-2019 The Herwig Collaboration 0005 // 0006 // Herwig 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 HERWIG_DipoleChainOrdering_H 0010 #define HERWIG_DipoleChainOrdering_H 0011 // 0012 // This is the declaration of the DipoleChainOrdering class. 0013 // 0014 0015 #include "DipoleEvolutionOrdering.h" 0016 0017 namespace Herwig { 0018 0019 using namespace ThePEG; 0020 0021 /** 0022 * \ingroup DipoleShower 0023 * \author Simon Platzer 0024 * 0025 * \brief DipoleChainOrdering performs ordering on 0026 * complete colour singlet dipole chains. 0027 * 0028 */ 0029 class DipoleChainOrdering: public DipoleEvolutionOrdering { 0030 0031 public: 0032 0033 /** 0034 * The default constructor. 0035 */ 0036 DipoleChainOrdering(); 0037 0038 public: 0039 0040 /** 0041 * For the given dipole and splitting kernel return 0042 * the hard scale. 0043 */ 0044 virtual Energy hardScale(tPPtr emitter, tPPtr spectator, 0045 double emitterX, double spectatorX, 0046 const DipoleSplittingKernel&, 0047 const DipoleIndex&) const; 0048 0049 /** 0050 * For the given performed splitting, dipole chain 0051 * and dipoles originating from the splitting, set the next 0052 * scale. 0053 */ 0054 virtual void setEvolutionScale(Energy scale, 0055 const DipoleSplittingInfo&, 0056 DipoleChain&, 0057 pair<list<Dipole>::iterator,list<Dipole>::iterator>) const; 0058 0059 /** 0060 * For the given performed splitting, dipole chain 0061 * and dipole taking a recoil, set the next 0062 * scale. 0063 */ 0064 virtual void setEvolutionScale(Energy scale, 0065 const DipoleSplittingInfo&, 0066 DipoleChain&, 0067 list<Dipole>::iterator) const; 0068 0069 /** 0070 * For the given selected splitting return 0071 * the evolution scale. 0072 */ 0073 virtual Energy evolutionScale(const DipoleSplittingInfo& split, 0074 const DipoleSplittingKernel&) const; 0075 0076 /** 0077 * Return the maximum pt corresponding to the given 0078 * evolution scale. 0079 */ 0080 virtual Energy maxPt(Energy scale, 0081 const DipoleSplittingInfo&, 0082 const DipoleSplittingKernel&) const; 0083 0084 public: 0085 0086 /** @name Functions used by the persistent I/O system. */ 0087 //@{ 0088 /** 0089 * Function used to write out object persistently. 0090 * @param os the persistent output stream written to. 0091 */ 0092 void persistentOutput(PersistentOStream & os) const; 0093 0094 /** 0095 * Function used to read in object persistently. 0096 * @param is the persistent input stream read from. 0097 * @param version the version number of the object when written. 0098 */ 0099 void persistentInput(PersistentIStream & is, int version); 0100 //@} 0101 0102 /** 0103 * The standard Init function used to initialize the interfaces. 0104 * Called exactly once for each class by the class description system 0105 * before the main function starts or 0106 * when this class is dynamically loaded. 0107 */ 0108 static void Init(); 0109 0110 protected: 0111 0112 /** @name Clone Methods. */ 0113 //@{ 0114 /** 0115 * Make a simple clone of this object. 0116 * @return a pointer to the new object. 0117 */ 0118 virtual IBPtr clone() const; 0119 0120 /** Make a clone of this object, possibly modifying the cloned object 0121 * to make it sane. 0122 * @return a pointer to the new object. 0123 */ 0124 virtual IBPtr fullclone() const; 0125 //@} 0126 0127 0128 // If needed, insert declarations of virtual function defined in the 0129 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 0130 0131 private: 0132 0133 /** 0134 * True, if virtuality instead of pt ordering 0135 * should be performed. 0136 */ 0137 bool virtualityOrdering; 0138 0139 private: 0140 0141 /** 0142 * The static object used to initialize the description of this class. 0143 * Indicates that this is a concrete class with persistent data. 0144 */ 0145 static ClassDescription<DipoleChainOrdering> initDipoleChainOrdering; 0146 0147 /** 0148 * The assignment operator is private and must never be called. 0149 * In fact, it should not even be implemented. 0150 */ 0151 DipoleChainOrdering & operator=(const DipoleChainOrdering &) = delete; 0152 0153 }; 0154 0155 } 0156 0157 #include "ThePEG/Utilities/ClassTraits.h" 0158 0159 namespace ThePEG { 0160 0161 /** @cond TRAITSPECIALIZATIONS */ 0162 0163 /** This template specialization informs ThePEG about the 0164 * base classes of DipoleChainOrdering. */ 0165 template <> 0166 struct BaseClassTrait<Herwig::DipoleChainOrdering,1> { 0167 /** Typedef of the first base class of DipoleChainOrdering. */ 0168 typedef Herwig::DipoleEvolutionOrdering NthBase; 0169 }; 0170 0171 /** This template specialization informs ThePEG about the name of 0172 * the DipoleChainOrdering class and the shared object where it is defined. */ 0173 template <> 0174 struct ClassTraits<Herwig::DipoleChainOrdering> 0175 : public ClassTraitsBase<Herwig::DipoleChainOrdering> { 0176 /** Return a platform-independent class name */ 0177 static string className() { return "Herwig::DipoleChainOrdering"; } 0178 /** 0179 * The name of a file containing the dynamic library where the class 0180 * DipoleChainOrdering is implemented. It may also include several, space-separated, 0181 * libraries if the class DipoleChainOrdering depends on other classes (base classes 0182 * excepted). In this case the listed libraries will be dynamically 0183 * linked in the order they are specified. 0184 */ 0185 static string library() { return "HwDipoleShower.so"; } 0186 }; 0187 0188 /** @endcond */ 0189 0190 } 0191 0192 #endif /* HERWIG_DipoleChainOrdering_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|