Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // -*- C++ -*-
0002 //
0003 // Hw64Selector.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_Hw64Selector_H
0010 #define HERWIG_Hw64Selector_H
0011 //
0012 // This is the declaration of the Hw64Selector class.
0013 //
0014 
0015 #include "HadronSelector.h"
0016 
0017 namespace Herwig {
0018 
0019 using namespace ThePEG;
0020 
0021 /** \ingroup hadronization
0022  * The Hw64Selector class selects the hadrons produced in cluster decay using
0023  * the FORTRAN HERWIG variant of the cluster model.
0024  *
0025  * @see \ref Hw64SelectorInterfaces "The interfaces"
0026  * defined for Hw64Selector.
0027  */
0028 class Hw64Selector: public HadronSelector {
0029 
0030 public:
0031 
0032   /**
0033    * The default constructor.
0034    */
0035   Hw64Selector() : HadronSelector(0),
0036            _pwtDquark( 1.0 ),_pwtUquark( 1.0 ),_pwtSquark( 1.0 ),_pwtCquark( 0.0 ),
0037            _pwtBquark( 0.0 ),_pwtDIquarkS0( 1.0 ),_pwtDIquarkS1( 1.0 ),
0038            _sngWt( 1.0 ), _decWt( 1.0 )
0039   {}
0040 
0041   /**
0042    * Method to return a pair of hadrons given the PDG codes of
0043    * two or three constituents
0044    * @param cluMass The mass of the cluster
0045    * @param par1 The particle pointer of the first constituent
0046    * @param par2 The particle pointer of the second constituent
0047    * @param par3 The particle pointer of the third constituent
0048    */
0049   virtual pair<tcPDPtr,tcPDPtr> chooseHadronPair(const Energy cluMass,
0050                          tcPDPtr par1, tcPDPtr par2) const;
0051 
0052 public:
0053 
0054   /** @name Functions used by the persistent I/O system. */
0055   //@{
0056   /**
0057    * Function used to write out object persistently.
0058    * @param os the persistent output stream written to.
0059    */
0060   void persistentOutput(PersistentOStream & os) const;
0061 
0062   /**
0063    * Function used to read in object persistently.
0064    * @param is the persistent input stream read from.
0065    * @param version the version number of the object when written.
0066    */
0067   void persistentInput(PersistentIStream & is, int version);
0068   //@}
0069 
0070   /**
0071    * The standard Init function used to initialize the interfaces.
0072    * Called exactly once for each class by the class description system
0073    * before the main function starts or
0074    * when this class is dynamically loaded.
0075    */
0076   static void Init();
0077 
0078 protected :
0079   
0080   /**
0081    *  Weights for baryons
0082    */
0083   virtual double baryonWeight(long id) const;
0084 
0085 protected:
0086 
0087   /** @name Clone Methods. */
0088   //@{
0089   /**
0090    * Make a simple clone of this object.
0091    * @return a pointer to the new object.
0092    */
0093    virtual IBPtr clone() const;
0094 
0095   /** Make a clone of this object, possibly modifying the cloned object
0096    * to make it sane.
0097    * @return a pointer to the new object.
0098    */
0099    virtual IBPtr fullclone() const;
0100   //@}
0101 
0102 protected:
0103 
0104   /** @name Standard Interfaced functions. */
0105   //@{
0106   /**
0107    * Initialize this object after the setup phase before saving an
0108    * EventGenerator to disk.
0109    * @throws InitException if object could not be initialized properly.
0110    */
0111   virtual void doinit();
0112   //@}
0113 
0114 private:
0115 
0116   /**
0117    * The assignment operator is private and must never be called.
0118    * In fact, it should not even be implemented.
0119    */
0120   Hw64Selector & operator=(const Hw64Selector &) = delete;
0121 
0122 private:
0123 
0124   /**
0125    *  The weights for the different quarks and diquarks
0126    */
0127   //@{
0128   /**
0129    * The probability of producting a down quark.
0130    */
0131   double _pwtDquark;
0132 
0133   /**
0134    * The probability of producting an up quark.
0135    */
0136   double _pwtUquark;
0137 
0138   /**
0139    * The probability of producting a strange quark.
0140    */
0141   double _pwtSquark;
0142 
0143   /**
0144    * The probability of producting a charm quark.
0145    */
0146   double _pwtCquark;
0147 
0148   /**
0149    * The probability of producting a bottom quark.
0150    */
0151   double _pwtBquark;
0152 
0153   /**
0154    * The probability of producting a spin-0 diquark.
0155    */
0156   double _pwtDIquarkS0;
0157 
0158   /**
0159    * The probability of producting a spin-1 diquark.
0160    */
0161   double _pwtDIquarkS1;
0162   //@}
0163 
0164   /**
0165    * Singlet and Decuplet weights
0166    */
0167   //@{
0168   /**
0169    *  The singlet weight
0170    */
0171   double _sngWt;
0172 
0173   /**
0174    *  The decuplet weight
0175    */
0176   double _decWt;
0177   //@}
0178 
0179 };
0180 
0181 }
0182 
0183 #endif /* HERWIG_Hw64Selector_H */