|
|
|||
File indexing completed on 2026-08-06 09:24:07
0001 // -*- C++ -*- 0002 // 0003 // LightClusterDecayer.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_LightClusterDecayer_H 0010 #define HERWIG_LightClusterDecayer_H 0011 0012 #include <ThePEG/Interface/Interfaced.h> 0013 #include "CluHadConfig.h" 0014 #include "HadronSelector.h" 0015 #include "LightClusterDecayer.fh" 0016 0017 0018 namespace Herwig { 0019 0020 0021 using namespace ThePEG; 0022 0023 /** \ingroup Hadronization 0024 * \class LightClusterDecayer 0025 * \brief This class performs the decay of light clusters into a single hadron. 0026 * \author Philip Stephens 0027 * \author Alberto Ribon 0028 * 0029 * This is the class that performs the decay of light clusters into 0030 * only one hadron. The major difficulty is that a kinematical reshuffling 0031 * is necessary, between the cluster under consideration and its 0032 * "neighbouring" clusters, to conserve energy-momentum in one-body decay. 0033 * Notice that, differently from what happens in Fortran Herwig, 0034 * light (that is below the threshold for the production of the lightest 0035 * pair of hadrons with the proper flavours) fission products, produced 0036 * by the fission of heavy clusters in ClusterFissioner 0037 * have been already "decayed" into single hadron (the lightest one 0038 * with proper flavour) by the same latter class, without require 0039 * any reshuffling. Therefore the light clusters that are treated in 0040 * this LightClusterDecayer class are produced directly 0041 * (originally) by the ClusterFinder. 0042 * 0043 * Notice: 0044 * - The choice of the candidate cluster with whom to reshuffle momentum 0045 * is based on the minimal space-time distance from the light cluster. 0046 * - An alternate choice of what is considered a "neighbour" could be 0047 * implemented but was not considered for Herwig. 0048 * 0049 * @see HadronSelector 0050 * @see \ref LightClusterDecayerInterfaces "The interfaces" 0051 * defined for LightClusterDecayer. 0052 */ 0053 class LightClusterDecayer: public Interfaced { 0054 0055 public: 0056 0057 /** @name Standard constructors and destructors. */ 0058 //@{ 0059 /** 0060 * Default constructor. 0061 */ 0062 LightClusterDecayer() {} 0063 //@} 0064 0065 /** 0066 * This method does the decay of light hadron in one hadron. 0067 * 0068 * This method requires a kinematical reshuffling for energy-momentum 0069 * conservation. This is done explicitly by the (private) method 0070 * reshuffling(). 0071 */ 0072 bool decay(ClusterVector & clusters, tPVector & finalhadrons); 0073 0074 public: 0075 0076 /** @name Functions used by the persistent I/O system. */ 0077 //@{ 0078 /** 0079 * Function used to write out object persistently. 0080 * @param os the persistent output stream written to. 0081 */ 0082 void persistentOutput(PersistentOStream & os) const; 0083 0084 /** 0085 * Function used to read in object persistently. 0086 * @param is the persistent input stream read from. 0087 * @param version the version number of the object when written. 0088 */ 0089 void persistentInput(PersistentIStream & is, int version); 0090 //@} 0091 0092 /** 0093 * Standard Init function used to initialize the interfaces. 0094 */ 0095 static void Init(); 0096 0097 protected: 0098 0099 /** @name Clone Methods. */ 0100 //@{ 0101 /** 0102 * Make a simple clone of this object. 0103 * @return a pointer to the new object. 0104 */ 0105 virtual IBPtr clone() const; 0106 0107 /** Make a clone of this object, possibly modifying the cloned object 0108 * to make it sane. 0109 * @return a pointer to the new object. 0110 */ 0111 virtual IBPtr fullclone() const; 0112 //@} 0113 0114 private: 0115 0116 /** 0117 * Private and non-existent assignment operator. 0118 */ 0119 LightClusterDecayer & operator=(const LightClusterDecayer &) = delete; 0120 0121 /** 0122 * This (private) method, called by decay(), takes care of the kinematical 0123 * reshuffling necessary for energy-momentum conservation. 0124 */ 0125 bool reshuffling( const tcPDPtr, tClusterPtr, tClusterPtr, 0126 tClusterVector &, tPVector & finalhadrons) 0127 ; 0128 0129 /** 0130 * This (private) method, called by decay(), performs reshuffling in the 0131 * special case of a semileptonic partonic b/c decay 0132 * @param hadron The hadron to be produced 0133 * @param cluster The cluster to be reshuffled 0134 * @param finalhadrons The vector of outgoing hadrons 0135 */ 0136 bool partonicReshuffle(const tcPDPtr hadron,const PPtr cluster, 0137 tPVector & finalhadrons); 0138 0139 /** 0140 * A pointer to a Herwig::HadronSelector object used for producing hadrons. 0141 */ 0142 Ptr<HadronSelector>::pointer _hadronSelector; 0143 }; 0144 0145 } 0146 0147 #endif /* HERWIG_LightClusterDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|