Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:24:25

0001 // -*- C++ -*-
0002 #ifndef Herwig_FullShowerVeto_H
0003 #define Herwig_FullShowerVeto_H
0004 //
0005 // This is the declaration of the FullShowerVeto class.
0006 //
0007 
0008 #include "ThePEG/Interface/Interfaced.h"
0009 #include "FullShowerVeto.fh"
0010 #include "Herwig/Shower/QTilde/Base/ShowerTree.h"
0011 
0012 namespace Herwig {
0013 
0014 using namespace ThePEG;
0015 
0016 /**
0017  * Here is the documentation of the FullShowerVeto class.
0018  *
0019  * @see \ref FullShowerVetoInterfaces "The interfaces"
0020  * defined for FullShowerVeto.
0021  */
0022 class FullShowerVeto: public Interfaced {
0023 
0024 public:
0025 
0026   /**
0027    * The default constructor.
0028    */
0029   FullShowerVeto() : type_(1), behaviour_(0) {}
0030 
0031   /**
0032    *   Apply the veto
0033    */
0034   int applyVeto(ShowerTreePtr); 
0035 
0036   /**
0037    *  Which type of processes to consider
0038    */
0039   unsigned int type() const {return type_;}
0040 
0041   /**
0042    *  What to do if the event is vetoed
0043    */
0044   unsigned int behaviour() const {return behaviour_;}
0045 
0046 protected:
0047 
0048   /**
0049    *  Determine whether to not to veto the shower, to be implemented in inheriting classes
0050    */
0051   virtual bool vetoShower() = 0;
0052 
0053   /**
0054    *  Incoming particles to the hard process
0055    */
0056   const vector<tPPtr> & incoming() {return incoming_;}
0057 
0058   /**
0059    *  Outgoing particles from the hard process
0060    */
0061   const vector<tPPtr> & outgoing() {return outgoing_;}
0062 
0063   /**
0064    *  The final-state particles at the end of the shower
0065    */
0066   const vector<tPPtr> & finalState();
0067 
0068 
0069 public:
0070 
0071   /** @name Functions used by the persistent I/O system. */
0072   //@{
0073   /**
0074    * Function used to write out object persistently.
0075    * @param os the persistent output stream written to.
0076    */
0077   void persistentOutput(PersistentOStream & os) const;
0078 
0079   /**
0080    * Function used to read in object persistently.
0081    * @param is the persistent input stream read from.
0082    * @param version the version number of the object when written.
0083    */
0084   void persistentInput(PersistentIStream & is, int version);
0085   //@}
0086 
0087   /**
0088    * The standard Init function used to initialize the interfaces.
0089    * Called exactly once for each class by the class description system
0090    * before the main function starts or
0091    * when this class is dynamically loaded.
0092    */
0093   static void Init();
0094 
0095 protected:
0096 
0097   /** @name Standard Interfaced functions. */
0098   //@{
0099   /**
0100    * Initialize this object after the setup phase before saving an
0101    * EventGenerator to disk.
0102    * @throws InitException if object could not be initialized properly.
0103    */
0104   virtual void doinit();
0105   //@}
0106 
0107 private:
0108 
0109   /**
0110    * The assignment operator is private and must never be called.
0111    * In fact, it should not even be implemented.
0112    */
0113   FullShowerVeto & operator=(const FullShowerVeto &) = delete;
0114 
0115 private:
0116 
0117   /**
0118    *  Switches
0119    */
0120   //@{
0121   /**
0122    *  Which type of processes to consider
0123    */
0124   unsigned int type_;
0125 
0126   /**
0127    *  What to do if the event is vetoed
0128    */
0129   unsigned int behaviour_;
0130   //}
0131 
0132   /**
0133    *  Temporary storage
0134    */
0135   //@{
0136   /**
0137    *  Incoming to hard process
0138    */
0139   vector<tPPtr> incoming_;
0140 
0141   /**
0142    *  Outgoing from the hard process
0143    */
0144   vector<tPPtr> outgoing_;
0145 
0146   /**
0147    *  Final State particles
0148    */
0149   vector<tPPtr> finalState_;
0150   //@}
0151 };
0152 
0153 }
0154 
0155 #endif /* Herwig_FullShowerVeto_H */