thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 
16 namespace ThePEG {
17 
29 
30 public:
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 
109 public:
110 
117  void persistentOutput(PersistentOStream & os) const;
118 
124  void persistentInput(PersistentIStream & is, int version);
126 
130  static void Init();
131 
132 protected:
133 
140  virtual IBPtr clone() const;
141 
146  virtual IBPtr fullclone() const;
148 
149 private:
150 
155  RemDecPtr remdec;
156 
160  void setDecayer(RemDecPtr rd);
161 
162 
163 private:
164 
169 
173  SoftRemnantHandler & operator=(const SoftRemnantHandler &) = delete;
174 
175 };
176 
181 template <>
184  typedef RemnantHandler NthBase;
185 };
186 
190 template <>
191 struct ClassTraits<SoftRemnantHandler>:
192  public ClassTraitsBase<SoftRemnantHandler> {
194  static string className() { return "ThePEG::SoftRemnantHandler"; }
195 };
196 
199 }
200 
201 #endif /* ThePEG_SoftRemnantHandler_H */
PersistentIStream is used to read persistent objects from a stream where they were previously written...
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
static ClassDescription< SoftRemnantHandler > initSoftRemnantHandler
Describe a concrete class with persistent data.
virtual Lorentz5Momentum generate(PartonBinInstance &pb, const double *r, Energy2 scale, const LorentzMomentum &p, bool fixedPartonMomentum=false) const
Generate momenta.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
SoftRemnantHandler inherits from the RemnantHandler and implements the generation of a single colline...
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
RemDecPtr remdec
A pointer to a RemnantDecayer object which is able to decay the produced RemnantParticle objects...
RemnantHandler is an abstract base class for implementing classes used to generate remnants when part...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
void setDecayer(RemDecPtr rd)
Utility function for the interface.
virtual IBPtr clone() const
Make a simple clone of this object.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
vector< cPDPtr > cPDVector
A vector of pointers to const ParticleData objects.
Definition: Containers.h:36
PartonBinInstance is used to store information about the generation of a given parton extraction for ...
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 IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
SoftRemnantHandler & operator=(const SoftRemnantHandler &)=delete
Private and non-existent assignment operator.
vector< PPtr > PVector
A vector of pointers to Particle objects.
Definition: Containers.h:76
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.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
static void Init()
Standard Init function used to initialize the interface.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52