Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // FastJetFinder.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_FastJetFinder_H
0011 #define THEPEG_FastJetFinder_H
0012 //
0013 // This is the declaration of the FastJetFinder class.
0014 //
0015 
0016 #include "ThePEG/Cuts/JetFinder.h"
0017 
0018 namespace ThePEG {
0019 
0020 /**
0021  * FastJetFinder implements the class of longitudinally invariant kt
0022  * jet clustering algorithms.
0023  *
0024  * @see \ref FastJetFinderInterfaces "The interfaces"
0025  * defined for FastJetFinder.
0026  */
0027 class FastJetFinder: public JetFinder {
0028 
0029 public:
0030 
0031   /**
0032    * The default constructor.
0033    */
0034   FastJetFinder();
0035 
0036 public:
0037 
0038   /**
0039    * Perform jet clustering on the given outgoing particles.
0040    * Optionally, information on the incoming particles is provided.
0041    * Return true, if a clustering has been performed.
0042    */
0043   virtual bool cluster(tcPDVector & ptype, vector<LorentzMomentum> & p,
0044                tcCutsPtr parent, tcPDPtr t1 = tcPDPtr(),
0045                tcPDPtr t2 = tcPDPtr()) const;
0046 
0047   /**
0048    * Describe this jet fined.
0049    */
0050   virtual void describe() const;
0051 
0052 public:
0053   /** @name Standard Interfaced functions. */
0054   //@{
0055   /**
0056    * Initialize this object. Called in the read phase.
0057    */
0058   virtual void doinit();
0059 
0060   /**
0061    * Initialize this object. Called in the run phase just before
0062    * a run begins.
0063    */
0064   virtual void doinitrun();
0065   //@}
0066 
0067   /** @name Functions used by the persistent I/O system. */
0068   //@{
0069   /**
0070    * Function used to write out object persistently.
0071    * @param os the persistent output stream written to.
0072    */
0073   void persistentOutput(PersistentOStream & os) const;
0074 
0075   /**
0076    * Function used to read in object persistently.
0077    * @param is the persistent input stream read from.
0078    * @param version the version number of the object when written.
0079    */
0080   void persistentInput(PersistentIStream & is, int version);
0081   //@}
0082 
0083   /**
0084    * The standard Init function used to initialize the interfaces.
0085    * Called exactly once for each class by the class description system
0086    * before the main function starts or
0087    * when this class is dynamically loaded.
0088    */
0089   static void Init();
0090 
0091 protected:
0092 
0093   /** @name Clone Methods. */
0094   //@{
0095   /**
0096    * Make a simple clone of this object.
0097    * @return a pointer to the new object.
0098    */
0099   virtual IBPtr clone() const;
0100 
0101   /** Make a clone of this object, possibly modifying the cloned object
0102    * to make it sane.
0103    * @return a pointer to the new object.
0104    */
0105   virtual IBPtr fullclone() const;
0106   //@}
0107 
0108 
0109 // If needed, insert declarations of virtual function defined in the
0110 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
0111 
0112 private:
0113 
0114   /**
0115    * The resolution cut.
0116    */
0117   Energy2 theDCut;
0118 
0119   /**
0120    * The `cone radius' R.
0121    */
0122   double theConeRadius;
0123 
0124   /**
0125    * The possible variants.
0126    */
0127   enum variants {
0128     kt = 1,
0129     CA = 2,
0130     antiKt = 3,
0131     sphericalKt = 4,
0132     sphericalCA = 5,
0133     sphericalAntiKt = 6
0134   };
0135 
0136   /**
0137    * The variant.
0138    */
0139   int theVariant;
0140 
0141   /**
0142    * The possible modes.
0143    */
0144   enum modes {
0145     inclusive = 1,
0146     exclusive = 2
0147   };
0148 
0149   /**
0150    * The mode.
0151    */
0152   int theMode;
0153 
0154   /**
0155    * The possible recombination schemes.
0156    */
0157   enum recombinations {
0158     recoPt = 1,
0159     recoE = 2
0160   };
0161 
0162   /**
0163    * The recombination scheme
0164    */
0165   int theRecombination;
0166 
0167 private:
0168 
0169   /**
0170    * The assignment operator is private and must never be called.
0171    * In fact, it should not even be implemented.
0172    */
0173   FastJetFinder & operator=(const FastJetFinder &) = delete;
0174 
0175 };
0176 
0177 }
0178 
0179 #endif /* THEPEG_FastJetFinder_H */