|
|
|||
File indexing completed on 2026-08-06 09:38:20
0001 // -*- C++ -*- 0002 // 0003 // JetCuts.h is a part of ThePEG - Toolkit for HEP Event Generation 0004 // Copyright (C) 1999-2019 Leif Lonnblad 0005 // Copyright (C) 2009-2019 Simon Platzer 0006 // 0007 // ThePEG is licenced under version 3 of the GPL, see COPYING for details. 0008 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 0009 // 0010 #ifndef THEPEG_JetCuts_H 0011 #define THEPEG_JetCuts_H 0012 // 0013 // This is the declaration of the JetCuts class. 0014 // 0015 0016 #include "ThePEG/Cuts/MultiCutBase.h" 0017 #include "ThePEG/PDT/MatcherBase.h" 0018 #include "ThePEG/Cuts/JetRegion.h" 0019 #include "ThePEG/Cuts/JetPairRegion.h" 0020 #include "ThePEG/Cuts/MultiJetRegion.h" 0021 0022 namespace ThePEG { 0023 0024 /** 0025 * JetCuts combines various JetRegion and JetPairRegion objects into a 0026 * cut object. 0027 * 0028 * @see JetRegion 0029 * @see JetPairRegion 0030 * 0031 * @see \ref JetCutsInterfaces "The interfaces" 0032 * defined for JetCuts. 0033 */ 0034 class JetCuts: public MultiCutBase { 0035 0036 public: 0037 0038 /** 0039 * The default constructor. 0040 */ 0041 JetCuts(); 0042 0043 public: 0044 0045 /** @name Overridden virtual functions defined in the base class. */ 0046 //@{ 0047 /** 0048 * Return true if a set of outgoing particles with typea \a ptype 0049 * and corresponding momenta \a p passes the cuts. 0050 */ 0051 virtual bool passCuts(tcCutsPtr parent, const tcPDVector & ptype, 0052 const vector<LorentzMomentum> & p) const; 0053 //@} 0054 0055 /** 0056 * Describe the currently active cuts in the log file. 0057 */ 0058 virtual void describe() const; 0059 0060 public: 0061 0062 /** 0063 * Return the matcher for unresolved partons. 0064 */ 0065 Ptr<MatcherBase>::tptr unresolvedMatcher() const { return theUnresolvedMatcher; } 0066 0067 /** 0068 * Return the jet regions to match. 0069 */ 0070 const vector<Ptr<JetRegion>::ptr>& jetRegions() const { return theJetRegions; } 0071 0072 /** 0073 * Return the jet veto regions to check. 0074 */ 0075 const vector<Ptr<JetRegion>::ptr>& jetVetoRegions() const { return theJetVetoRegions; } 0076 0077 /** 0078 * Return the jet pair regions to match. 0079 */ 0080 const vector<Ptr<JetPairRegion>::ptr>& jetPairRegions() const { return theJetPairRegions; } 0081 0082 /** 0083 * Return the multi jet regions to match. 0084 */ 0085 const vector<Ptr<MultiJetRegion>::ptr>& multiJetRegions() const { return theMultiJetRegions; } 0086 0087 /** 0088 * Enumerate the ordering to apply on jets 0089 */ 0090 enum Orderings { 0091 orderPt = 1, 0092 orderY = 2 0093 }; 0094 0095 /** 0096 * Return the ordering 0097 */ 0098 int ordering() const { return theOrdering; } 0099 0100 public: 0101 0102 /** @name Functions used by the persistent I/O system. */ 0103 //@{ 0104 /** 0105 * Function used to write out object persistently. 0106 * @param os the persistent output stream written to. 0107 */ 0108 void persistentOutput(PersistentOStream & os) const; 0109 0110 /** 0111 * Function used to read in object persistently. 0112 * @param is the persistent input stream read from. 0113 * @param version the version number of the object when written. 0114 */ 0115 void persistentInput(PersistentIStream & is, int version); 0116 //@} 0117 0118 /** 0119 * The standard Init function used to initialize the interfaces. 0120 * Called exactly once for each class by the class description system 0121 * before the main function starts or 0122 * when this class is dynamically loaded. 0123 */ 0124 static void Init(); 0125 0126 protected: 0127 0128 /** @name Clone Methods. */ 0129 //@{ 0130 /** 0131 * Make a simple clone of this object. 0132 * @return a pointer to the new object. 0133 */ 0134 virtual IBPtr clone() const; 0135 0136 /** Make a clone of this object, possibly modifying the cloned object 0137 * to make it sane. 0138 * @return a pointer to the new object. 0139 */ 0140 virtual IBPtr fullclone() const; 0141 //@} 0142 0143 private: 0144 0145 /** 0146 * A matcher for unresolved partons. 0147 */ 0148 Ptr<MatcherBase>::ptr theUnresolvedMatcher; 0149 0150 /** 0151 * The jet regions to match. 0152 */ 0153 vector<Ptr<JetRegion>::ptr> theJetRegions; 0154 0155 /** 0156 * The jet veto regions to check 0157 */ 0158 vector<Ptr<JetRegion>::ptr> theJetVetoRegions; 0159 0160 /** 0161 * The jet pair regions to match. 0162 */ 0163 vector<Ptr<JetPairRegion>::ptr> theJetPairRegions; 0164 0165 /** 0166 * The multi jet regions to match. 0167 */ 0168 vector<Ptr<MultiJetRegion>::ptr> theMultiJetRegions; 0169 0170 /** 0171 * Types of the ordering to apply on jets 0172 */ 0173 int theOrdering; 0174 0175 private: 0176 0177 /** 0178 * The static object used to initialize the description of this class. 0179 * Indicates that this is a concrete class with persistent data. 0180 */ 0181 static ClassDescription<JetCuts> initJetCuts; 0182 0183 /** 0184 * The assignment operator is private and must never be called. 0185 * In fact, it should not even be implemented. 0186 */ 0187 JetCuts & operator=(const JetCuts &) = delete; 0188 0189 }; 0190 0191 } 0192 0193 #include "ThePEG/Utilities/ClassTraits.h" 0194 0195 namespace ThePEG { 0196 0197 /** @cond TRAITSPECIALIZATIONS */ 0198 0199 /** This template specialization informs ThePEG about the 0200 * base classes of JetCuts. */ 0201 template <> 0202 struct BaseClassTrait<JetCuts,1> { 0203 /** Typedef of the first base class of JetCuts. */ 0204 typedef MultiCutBase NthBase; 0205 }; 0206 0207 /** This template specialization informs ThePEG about the name of 0208 * the JetCuts class and the shared object where it is defined. */ 0209 template <> 0210 struct ClassTraits<JetCuts> 0211 : public ClassTraitsBase<JetCuts> { 0212 /** Return a platform-independent class name */ 0213 static string className() { return "ThePEG::JetCuts"; } 0214 /** Return the name of the shared library be loaded to get 0215 * access to the JetCuts class and every other class it uses 0216 * (except the base class). */ 0217 static string library() { return "JetCuts.so"; } 0218 }; 0219 0220 /** @endcond */ 0221 0222 } 0223 0224 #endif /* THEPEG_JetCuts_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|