|
|
|||
File indexing completed on 2026-08-06 09:24:26
0001 // -*- C++ -*- 0002 // 0003 // ShowerVertex.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_ShowerVertex_H 0010 #define HERWIG_ShowerVertex_H 0011 // 0012 // This is the declaration of the ShowerVertex class. 0013 // 0014 0015 #include "ThePEG/EventRecord/HelicityVertex.h" 0016 #include "Herwig/Decay/DecayMatrixElement.h" 0017 #include "ShowerVertex.fh" 0018 0019 namespace Herwig { 0020 0021 using namespace ThePEG; 0022 0023 /** \ingroup Helicity 0024 * \author Peter Richardson 0025 * 0026 * The ShowerVertex class is designed to implement the vertex for a branching 0027 * in the shower for use with the spin correlation alogorithm. 0028 * It inherits from HelicityVertex class of ThePEG and implements 0029 * the methods to calculate the \f$\rho\f$ and \f$D\f$ matrices. 0030 * 0031 * It uses the DecayMatrixElement class to store the matrix element and 0032 * it is this class which performs the calculations of the matrices. 0033 * 0034 * @see HelicityVertex 0035 * @see DecayMatrixElement 0036 * 0037 * @see \ref ShowerVertexInterfaces "The interfaces" 0038 * defined for ShowerVertex. 0039 */ 0040 class ShowerVertex: public HelicityVertex { 0041 0042 public: 0043 0044 /** 0045 * Default constructor 0046 */ 0047 ShowerVertex() : convertIn_(false), convertOut_(2,false), outMatrix_(2,RhoDMatrix()) 0048 {} 0049 0050 public: 0051 0052 /** 0053 * Access to the matrix element 0054 */ 0055 //@{ 0056 /** 0057 * Get the matrix element 0058 */ 0059 inline const DecayMEPtr ME() const { 0060 return matrixElement_; 0061 } 0062 0063 /** 0064 * Set the matrix element 0065 */ 0066 inline void ME(DecayMEPtr in) const { 0067 matrixElement_ = in; 0068 } 0069 //@} 0070 0071 /** 0072 * Set the change of basis for the incoming particle 0073 */ 0074 inline void incomingBasisTransform(RhoDMatrix conv) { 0075 convertIn_ = true; 0076 inMatrix_ = conv; 0077 } 0078 0079 public: 0080 0081 /** 0082 * Method to calculate the \f$\rho\f$ matrix for one of the decay products 0083 * @param iprod The product we are calculating the \f$\rho\f$ matrix for. 0084 */ 0085 virtual RhoDMatrix getRhoMatrix(int iprod, bool ) const; 0086 0087 /** 0088 * Method to calculate the \f$D\f$ matrix for the decaying particle. It this 0089 * case the argument is a dummy. 0090 */ 0091 virtual RhoDMatrix getDMatrix(int) const; 0092 0093 /** 0094 * Get the transformed rho matrix 0095 */ 0096 RhoDMatrix mapIncoming(RhoDMatrix rho) const; 0097 0098 public: 0099 0100 /** 0101 * The standard Init function used to initialize the interfaces. 0102 * Called exactly once for each class by the class description system 0103 * before the main function starts or 0104 * when this class is dynamically loaded. 0105 */ 0106 static void Init(); 0107 0108 private: 0109 0110 /** 0111 * The assignment operator is private and must never be called. 0112 * In fact, it should not even be implemented. 0113 */ 0114 ShowerVertex & operator=(const ShowerVertex &) = delete; 0115 0116 private: 0117 0118 /** 0119 * Storage of the decay matrix element. 0120 */ 0121 mutable DecayMEPtr matrixElement_; 0122 0123 /** 0124 * Whether or not the incoming spin density matrices need to be converted 0125 */ 0126 bool convertIn_; 0127 0128 /** 0129 * Whether or not the outgoing spin density matrices need to be converted 0130 */ 0131 vector<bool> convertOut_; 0132 0133 /** 0134 * Storage of conversion for incoming particle 0135 */ 0136 RhoDMatrix inMatrix_; 0137 0138 0139 /** 0140 * Storage of conversion for outgoing particles 0141 */ 0142 vector<RhoDMatrix> outMatrix_; 0143 0144 }; 0145 } 0146 0147 #endif /* HERWIG_ShowerVertex_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|