|
|
|||
File indexing completed on 2026-08-06 09:24:01
0001 // -*- C++ -*- 0002 // 0003 // FRVDecayer.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_FRVDecayer_H 0010 #define HERWIG_FRVDecayer_H 0011 // 0012 // This is the declaration of the FRVDecayer class. 0013 // 0014 0015 #include "GeneralTwoBodyDecayer.h" 0016 #include "ThePEG/Repository/EventGenerator.h" 0017 #include "ThePEG/Helicity/Vertex/Vector/RFVVertex.h" 0018 0019 namespace Herwig { 0020 using namespace ThePEG; 0021 using Helicity::RFVVertexPtr; 0022 0023 /** \ingroup Decay 0024 * The FRVDecayer class implements the decay of a fermion 0025 * to a spin-3/2 fermion and a vector in a general model. It holds an RFVVertex 0026 * pointer that must be typecast from the VertexBase pointer held in 0027 * GeneralTwoBodyDecayer. It implents the virtual functions me2() and 0028 * partialWidth(). 0029 * 0030 * @see GeneralTwoBodyDecayer 0031 */ 0032 class FRVDecayer: public GeneralTwoBodyDecayer { 0033 0034 public: 0035 0036 /** 0037 * The default constructor. 0038 */ 0039 FRVDecayer() {} 0040 0041 public: 0042 0043 /** @name Virtual functions required by the Decayer class. */ 0044 //@{ 0045 /** 0046 * Return the matrix element squared for a given mode and phase-space channel. 0047 * @param ichan The channel we are calculating the matrix element for. 0048 * @param part The decaying Particle. 0049 * @param outgoing The particles produced in the decay 0050 * @param momenta The momenta of the particles produced in the decay 0051 * @param meopt Option for the calculation of the matrix element 0052 * @return The matrix element squared for the phase-space configuration. 0053 */ 0054 double me2(const int ichan,const Particle & part, 0055 const tPDVector & outgoing, 0056 const vector<Lorentz5Momentum> & momenta, 0057 MEOption meopt) const; 0058 0059 /** 0060 * Construct the SpinInfos for the particles produced in the decay 0061 */ 0062 virtual void constructSpinInfo(const Particle & part, 0063 ParticleVector outgoing) const; 0064 0065 0066 /** 0067 * Function to return partial Width 0068 * @param inpart The decaying particle. 0069 * @param outa One of the decay products. 0070 * @param outb The other decay product. 0071 */ 0072 virtual Energy partialWidth(PMPair inpart, PMPair outa, 0073 PMPair outb) const; 0074 0075 /** 0076 * Set the information on the decay 0077 */ 0078 virtual void setDecayInfo(PDPtr incoming, PDPair outgoing, 0079 vector<VertexBasePtr>, 0080 map<ShowerInteraction,VertexBasePtr> &, 0081 const vector<map<ShowerInteraction,VertexBasePtr> > &, 0082 map<ShowerInteraction,VertexBasePtr>); 0083 //@} 0084 0085 public: 0086 0087 /** @name Functions used by the persistent I/O system. */ 0088 //@{ 0089 /** 0090 * Function used to write out object persistently. 0091 * @param os the persistent output stream written to. 0092 */ 0093 void persistentOutput(PersistentOStream & os) const; 0094 0095 /** 0096 * Function used to read in object persistently. 0097 * @param is the persistent input stream read from. 0098 * @param version the version number of the object when written. 0099 */ 0100 void persistentInput(PersistentIStream & is, int version); 0101 //@} 0102 0103 /** 0104 * The standard Init function used to initialize the interfaces. 0105 * Called exactly once for each class by the class description system 0106 * before the main function starts or 0107 * when this class is dynamically loaded. 0108 */ 0109 static void Init(); 0110 0111 protected: 0112 0113 /** @name Clone Methods. */ 0114 //@{ 0115 /** 0116 * Make a simple clone of this object. 0117 * @return a pointer to the new object. 0118 */ 0119 virtual IBPtr clone() const; 0120 0121 /** Make a clone of this object, possibly modifying the cloned object 0122 * to make it sane. 0123 * @return a pointer to the new object. 0124 */ 0125 virtual IBPtr fullclone() const; 0126 //@} 0127 0128 private: 0129 0130 /** 0131 * The assignment operator is private and must never be called. 0132 * In fact, it should not even be implemented. 0133 */ 0134 FRVDecayer & operator=(const FRVDecayer &) = delete; 0135 0136 private: 0137 0138 /** 0139 * Abstract pointer to AbstractFRVVertex 0140 */ 0141 vector<AbstractRFVVertexPtr> vertex_; 0142 0143 /** 0144 * Pointer to the perturbative vertex 0145 */ 0146 vector<RFVVertexPtr> perturbativeVertex_; 0147 0148 /** 0149 * Spin density matrix 0150 */ 0151 mutable RhoDMatrix rho_; 0152 0153 /** 0154 * Spinor wavefunction 0155 */ 0156 mutable vector<SpinorWaveFunction> wave_ ; 0157 0158 /** 0159 * Barred spinor wavefunction 0160 */ 0161 mutable vector<SpinorBarWaveFunction> wavebar_; 0162 0163 /** 0164 * RS Spinor wavefunction 0165 */ 0166 mutable vector<RSSpinorWaveFunction> RSwave_ ; 0167 0168 /** 0169 * Barred RS spinor wavefunction 0170 */ 0171 mutable vector<RSSpinorBarWaveFunction> RSwavebar_; 0172 0173 /** 0174 * Polarization vectors 0175 */ 0176 mutable vector<VectorWaveFunction> vector_; 0177 }; 0178 0179 } 0180 0181 #endif /* HERWIG_FRVDecayer_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|