Page MenuHomeHEPForge

TVVDecayer.h
No OneTemporary

Size
4 KB
Referenced Files
None
Subscribers
None

TVVDecayer.h

// -*- C++ -*-
#ifndef HERWIG_TVVDecayer_H
#define HERWIG_TVVDecayer_H
//
// This is the declaration of the TVVDecayer class.
//
#include "GeneralTwoBodyDecayer.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Helicity/Vertex/Tensor/VVTVertex.h"
#include "TVVDecayer.fh"
namespace Herwig {
using namespace ThePEG;
using Helicity::VVTVertexPtr;
/** \ingroup Decay
* The TVVDecayer class implements the decay of a tensor
* to 2 vector bosons in a general model. It holds a VVTVertex pointer
* that must be typecast from the VertexBase pointer held in
* GeneralTwoBodyDecayer. It implents the virtual functions me2() and
* partialWidth().
*
* @see GeneralTwoBodyDecayer
*/
class TVVDecayer: public GeneralTwoBodyDecayer {
public:
/** @name Standard constructors and destructors. */
//@{
/**
* The default constructor.
*/
inline TVVDecayer();
/**
* The destructor.
*/
virtual ~TVVDecayer();
//@}
public:
/** @name Virtual functions required by the Decayer class. */
//@{
/**
* Return the matrix element squared for a given mode and phase-space channel. * @param vertex Output the information on the vertex for spin correlations
* @param ichan The channel we are calculating the matrix element for.
* @param part The decaying Particle.
* @param decay The particles produced in the decay.
* @return The matrix element squared for the phase-space configuration.
*/
virtual double me2(bool vertex, const int ichan, const Particle & part,
const ParticleVector & decay) const;
/**
* Function to return partial Width
* @param inpart Pointer to incoming particle data object
* @param outa Pointer to incoming particle data object
* @param outb Pointer to incoming particle data object
*/
virtual Energy partialWidth(const PDPtr inpart,
const PDPtr outa,
const PDPtr outb) const;
//@}
public:
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* The standard Init function used to initialize the interfaces.
* Called exactly once for each class by the class description system
* before the main function starts or
* when this class is dynamically loaded.
*/
static void Init();
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
inline virtual IBPtr clone() const;
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
inline virtual IBPtr fullclone() const;
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving and
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
inline virtual void doinit() throw(InitException);
//@}
private:
/**
* The static object used to initialize the description of this class.
* Indicates that this is a concrete class with persistent data.
*/
static ClassDescription<TVVDecayer> initTVVDecayer;
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
TVVDecayer & operator=(const TVVDecayer &);
private:
/**
* Pointer to the vertex
*/
VVTVertexPtr _theVVTPtr;
};
}
#include "ThePEG/Utilities/ClassTraits.h"
namespace ThePEG {
/** @cond TRAITSPECIALIZATIONS */
/** This template specialization informs ThePEG about the
* base classes of TVVDecayer. */
template <>
struct BaseClassTrait<Herwig::TVVDecayer,1> {
/** Typedef of the first base class of TVVDecayer. */
typedef Herwig::GeneralTwoBodyDecayer NthBase;
};
/** This template specialization informs ThePEG about the name of
* the TVVDecayer class and the shared object where it is defined. */
template <>
struct ClassTraits<Herwig::TVVDecayer>
: public ClassTraitsBase<Herwig::TVVDecayer> {
/** Return a platform-independent class name */
static string className() { return "Herwig::TVVDecayer"; }
/** Return the name of the shared library be loaded to get
* access to the TVVDecayer class and every other class it uses
* (except the base class). */
static string library() { return "libHwGeneralDecay.so"; }
};
/** @endcond */
}
#include "TVVDecayer.icc"
#endif /* HERWIG_TVVDecayer_H */

File Metadata

Mime Type
text/x-c++
Expires
Tue, Sep 30, 4:45 AM (14 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6564808
Default Alt Text
TVVDecayer.h (4 KB)

Event Timeline