Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // MultiJetRegion.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_MultiJetRegion_H
0011 #define ThePEG_MultiJetRegion_H
0012 //
0013 // This is the declaration of the MultiJetRegion class.
0014 //
0015 
0016 #include "ThePEG/Cuts/JetRegion.h"
0017 
0018 namespace ThePEG {
0019 
0020 /**
0021  * MultiJetRegion implements pairwise constraints on jets matching several jet regions.
0022  *
0023  * @see JetRegion
0024  * @see JetCuts
0025  *
0026  * @see \ref MultiJetRegionInterfaces "The interfaces"
0027  * defined for MultiJetRegion.
0028  */
0029 class MultiJetRegion: public HandlerBase {
0030 
0031 public:
0032 
0033   /** @name Standard constructors and destructors. */
0034   //@{
0035   /**
0036    * The default constructor.
0037    */
0038   MultiJetRegion();
0039 
0040   /**
0041    * The destructor.
0042    */
0043   virtual ~MultiJetRegion();
0044   //@}
0045 
0046 public:
0047 
0048   /**
0049    * Return the jet regions to act on.
0050    */
0051   const vector<Ptr<JetRegion>::ptr>& regions() const { return theRegions; }
0052 
0053   /**
0054    * Return the minimum jet-jet invariant mass.
0055    */
0056   Energy massMin() const { return theMassMin; }
0057 
0058   /**
0059    * Return the maximum jet-jet invariant mass.
0060    */
0061   Energy massMax() const { return theMassMax; }
0062 
0063   /**
0064    * Return the minimum jet-jet lego-plot separation.
0065    */
0066   double deltaRMin() const { return theDeltaRMin; }
0067 
0068   /**
0069    * Return the maximum jet-jet lego-plot separation.
0070    */
0071   double deltaRMax() const { return theDeltaRMax; }
0072 
0073   /**
0074    * Return the minimum jet-jet rapidity separation.
0075    */
0076   double deltaYMin() const { return theDeltaYMin; }
0077 
0078   /**
0079    * Return the maximum jet-jet rapidity separation.
0080    */
0081   double deltaYMax() const { return theDeltaYMax; }
0082 
0083   /**
0084    * Return the cut weight encountered from the last call to matches()
0085    */
0086   double cutWeight() const { return theCutWeight; }
0087 
0088 public:
0089 
0090   /**
0091    * Describe the currently active cuts in the log file.
0092    */
0093   virtual void describe() const;
0094 
0095   /**
0096    * Return true, if the requirements on the jet regions are fullfilled.
0097    */
0098   virtual bool matches();
0099 
0100   /**
0101    * Return true, if the requirements on two jet regions are fullfilled.
0102    */
0103   virtual bool matches(int i, int j);
0104 
0105 public:
0106 
0107   /** @name Functions used by the persistent I/O system. */
0108   //@{
0109   /**
0110    * Function used to write out object persistently.
0111    * @param os the persistent output stream written to.
0112    */
0113   void persistentOutput(PersistentOStream & os) const;
0114 
0115   /**
0116    * Function used to read in object persistently.
0117    * @param is the persistent input stream read from.
0118    * @param version the version number of the object when written.
0119    */
0120   void persistentInput(PersistentIStream & is, int version);
0121   //@}
0122 
0123   /**
0124    * The standard Init function used to initialize the interfaces.
0125    * Called exactly once for each class by the class description system
0126    * before the main function starts or
0127    * when this class is dynamically loaded.
0128    */
0129   static void Init();
0130 
0131 protected:
0132 
0133   /** @name Clone Methods. */
0134   //@{
0135   /**
0136    * Make a simple clone of this object.
0137    * @return a pointer to the new object.
0138    */
0139   virtual IBPtr clone() const;
0140 
0141   /** Make a clone of this object, possibly modifying the cloned object
0142    * to make it sane.
0143    * @return a pointer to the new object.
0144    */
0145   virtual IBPtr fullclone() const;
0146   //@}
0147 
0148 
0149 // If needed, insert declarations of virtual function defined in the
0150 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
0151 
0152 
0153 private:
0154 
0155   /**
0156    * The jet regions to act on.
0157    */
0158   vector<Ptr<JetRegion>::ptr> theRegions;
0159 
0160   /**
0161    * The minimum jet-jet invariant mass.
0162    */
0163   Energy theMassMin;
0164 
0165   /**
0166    * The maximum jet-jet invariant mass.
0167    */
0168   Energy theMassMax;
0169 
0170   /**
0171    * The minimum jet-jet lego-plot separation.
0172    */
0173   double theDeltaRMin;
0174 
0175   /**
0176    * The maximum jet-jet lego-plot separation.
0177    */
0178   double theDeltaRMax;
0179 
0180   /**
0181    * The minimum jet-jet rapidity separation.
0182    */
0183   double theDeltaYMin;
0184 
0185   /**
0186    * The maximum jet-jet rapidity separation.
0187    */
0188   double theDeltaYMax;
0189 
0190   /**
0191    * The cut weight encountered from the last call to matches()
0192    */
0193   double theCutWeight;
0194 
0195   /**
0196    * The assignment operator is private and must never be called.
0197    * In fact, it should not even be implemented.
0198    */
0199   MultiJetRegion & operator=(const MultiJetRegion &) = delete;
0200 
0201 };
0202 
0203 }
0204 
0205 #endif /* ThePEG_MultiJetRegion_H */