thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
SoftRemnantHandler.h
1// -*- C++ -*-
2//
3// SoftRemnantHandler.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 1999-2019 Leif Lonnblad
5//
6// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef ThePEG_SoftRemnantHandler_H
10#define ThePEG_SoftRemnantHandler_H
11// This is the declaration of the SoftRemnantHandler class.
12
13#include "ThePEG/PDF/RemnantHandler.h"
14#include "ThePEG/PDT/RemnantDecayer.fh"
15
16namespace ThePEG {
17
29
30public:
31
38 virtual bool canHandle(tcPDPtr particle, const cPDVector & partons) const;
39
55 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
56 Energy2 scale,
57 const LorentzMomentum & p,
58 bool fixedPartonMomentum = false) const;
59
74 virtual Lorentz5Momentum generate(PartonBinInstance & pb, const double * r,
75 Energy2 scale, Energy2 shat,
76 const LorentzMomentum & parent,
77 bool fixedPartonMomentum = false) const;
78
87 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
88 double newl, Energy2 scale,
89 const LorentzMomentum & p,
90 const PVector & prev = PVector()) const;
103 virtual bool recreateRemnants(PartonBinInstance & pb, tPPtr oldp, tPPtr newp,
104 double newl, Energy2 scale,
105 Energy2 shat, const LorentzMomentum & p,
106 const PVector & prev = PVector()) const;
108
109public:
110
118
124 void persistentInput(PersistentIStream & is, int version);
126
130 static void Init();
131
132protected:
133
140 virtual IBPtr clone() const;
141
146 virtual IBPtr fullclone() const;
148
149private:
150
155 RemDecPtr remdec;
156
160 void setDecayer(RemDecPtr rd);
161
162
163private:
164
169
174
175};
176
181template <>
184 typedef RemnantHandler NthBase;
185};
186
190template <>
191struct ClassTraits<SoftRemnantHandler>:
192 public ClassTraitsBase<SoftRemnantHandler> {
194 static string className() { return "ThePEG::SoftRemnantHandler"; }
195};
196
199}
200
201#endif /* ThePEG_SoftRemnantHandler_H */
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
PartonBinInstance is used to store information about the generation of a given parton extraction for ...
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
RemnantHandler is an abstract base class for implementing classes used to generate remnants when part...
SoftRemnantHandler inherits from the RemnantHandler and implements the generation of a single colline...
virtual IBPtr clone() const
Make a simple clone of this object.
virtual Lorentz5Momentum generate(PartonBinInstance &pb, const double *r, Energy2 scale, const LorentzMomentum &p, bool fixedPartonMomentum=false) const
Generate momenta.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
static void Init()
Standard Init function used to initialize the interface.
static ClassDescription< SoftRemnantHandler > initSoftRemnantHandler
Describe a concrete class with persistent data.
SoftRemnantHandler & operator=(const SoftRemnantHandler &)=delete
Private and non-existent assignment operator.
RemDecPtr remdec
A pointer to a RemnantDecayer object which is able to decay the produced RemnantParticle objects.
virtual bool recreateRemnants(PartonBinInstance &pb, tPPtr oldp, tPPtr newp, double newl, Energy2 scale, const LorentzMomentum &p, const PVector &prev=PVector()) const
Redo the remnant generation for the given particle bin, pb.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual bool canHandle(tcPDPtr particle, const cPDVector &partons) const
Return true if this remnant handler can handle extracting all specified partons form the given partic...
virtual Lorentz5Momentum generate(PartonBinInstance &pb, const double *r, Energy2 scale, Energy2 shat, const LorentzMomentum &parent, bool fixedPartonMomentum=false) const
Generate the momentum of the extracted parton with the parent momentum given by the last argument.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual bool recreateRemnants(PartonBinInstance &pb, tPPtr oldp, tPPtr newp, double newl, Energy2 scale, Energy2 shat, const LorentzMomentum &p, const PVector &prev=PVector()) const
Redo the remnant generation for the given particle bin, pb.
void setDecayer(RemDecPtr rd)
Utility function for the interface.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
vector< PPtr > PVector
A vector of pointers to Particle objects.
Definition: Containers.h:76
vector< cPDPtr > cPDVector
A vector of pointers to const ParticleData objects.
Definition: Containers.h:36
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30