thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
SimpleBaryonRemnantDecayer.h
1// -*- C++ -*-
2//
3// SimpleBaryonRemnantDecayer.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_SimpleBaryonRemnantDecayer_H
10#define THEPEG_SimpleBaryonRemnantDecayer_H
11//
12// This is the declaration of the SimpleBaryonRemnantDecayer class.
13//
14
15#include "ThePEG/PDT/RemnantDecayer.h"
16#include "ThePEG/Handlers/ZGenerator.h"
17#include "ThePEG/Handlers/FlavourGenerator.h"
18#include "ThePEG/Utilities/VSelector.h"
19
20namespace ThePEG {
21
32
33public:
34
39
40public:
41
48 : theMargin(1.0*GeV), useSpecialValence(false) {}
49
58
59public:
60
69 virtual bool accept(const DecayMode & dm) const;
70
84 virtual ParticleVector decay(const DecayMode & dm, const Particle & p,
85 Step & step) const;
86
92
100 const LorentzMomentum & pnew) const;
102
103protected:
104
112 virtual void doinit();
113
118 virtual bool preInitialize() const;
120
121public:
122
130
136 void persistentInput(PersistentIStream & is, int version);
138
145 static void Init();
146
147public:
148
152 struct NoDISRespect: public Exception {};
153
157 struct DecayFailed: public Exception {};
158
159public:
160
165 ZGenerator & zGenerator() const { return *theZGenerator; }
166
172
179 Energy margin() const { return theMargin; }
180
184 bool specialValence() const { return useSpecialValence; }
185
186protected:
187
194 virtual IBPtr clone() const;
195
200 virtual IBPtr fullclone() const;
202
203public:
204
211 vector<int> flav;
216 int sign;
217 };
218
222 const BaryonContent & getBaryonInfo(tcPDPtr baryon) const;
223
224private:
225
231
237
245
250
254 mutable map<tcPDPtr,BaryonContent> baryonmap;
255
256private:
257
264
270
271};
272
273}
274
275#include "ThePEG/Utilities/ClassTraits.h"
276
277namespace ThePEG {
278
283template <>
284struct BaseClassTrait<SimpleBaryonRemnantDecayer,1> {
286 typedef RemnantDecayer NthBase;
287};
288
292template <>
293struct ClassTraits<SimpleBaryonRemnantDecayer>
294 : public ClassTraitsBase<SimpleBaryonRemnantDecayer> {
296 static string className() { return "ThePEG::SimpleBaryonRemnantDecayer"; }
297};
298
301}
302
303#endif /* THEPEG_SimpleBaryonRemnantDecayer_H */
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
The DecayMode class describes a decay channel of a particle.
Definition: DecayMode.h:87
Exception is the base class for all exceptions to be used in ThePEG.
Definition: Exception.h:44
FlavourGenerator is an abstract base class to be used to implement models describing the quark conten...
The Particle class is used to describe an instance of a particle.
Definition: Particle.h:83
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
The RemnantDecayer class is the base class to be used for all decayers capable of decaying a RemnantP...
const PVector & extracted(tcRemPPtr remnant) const
Access the vector of extracted particles of a remnant.
tcPPtr parent(tcRemPPtr remnant) const
Access the parent of a remnant.
The SimpleBaryonRemnantDecayer class inherits from the RemnantDecayer class and is able to decay Remn...
Ptr< ZGenerator >::pointer ZGPtr
A pointer to a ZGenerator object.
SimpleBaryonRemnantDecayer()
The default constructor.
FlGPtr theFlavourGenerator
The object responsible for handling the flavour contents of a baryon.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
ZGPtr theZGenerator
The object responsible for generating momentum fractions in case of more than one remnant.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual bool canHandle(tcPDPtr parent, tcPDPtr extracted) const
Return true if this decayer can handle the extraction of the extracted parton from the given particle...
static void Init()
The standard Init function used to initialize the interfaces.
map< tcPDPtr, BaryonContent > baryonmap
A map of info about baryon quark and di-quark constituents.
SimpleBaryonRemnantDecayer & operator=(const SimpleBaryonRemnantDecayer &)=delete
The assignment operator is private and must never be called.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
Energy theMargin
The energy margin to be added to the sum of the parent and parton masses to determine if it is possib...
FlavourGenerator & flavourGenerator() const
Return a reference to the object responsible for handling the flavour contents of a baryon.
virtual ParticleVector decay(const DecayMode &dm, const Particle &p, Step &step) const
Perform a decay for a given DecayMode and a given Particle instance.
virtual bool preInitialize() const
Return true if this object needs to be initialized before all other objects because it needs to extra...
bool useSpecialValence
If true an extracted valens quark will always give a di-quark remnant.
Ptr< FlavourGenerator >::pointer FlGPtr
A pointer to a FlavourGenerator object.
ZGenerator & zGenerator() const
Return a reference to the object responsible for generating momentum fractions in case of more than o...
bool specialValence() const
If true an extracted valens quark will always give a di-quark remnant.
Energy margin() const
Return the energy margin to be added to the sum of the parent and parton masses to determine if it is...
const BaryonContent & getBaryonInfo(tcPDPtr baryon) const
Return info about baryon quark and di-quark constituents.
SimpleBaryonRemnantDecayer(const SimpleBaryonRemnantDecayer &x)
The copy constructor.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual bool checkExtract(tcPPtr parent, tcPPtr extracted, const LorentzMomentum &pnew) const
Return true if this decayer can handle the extraction of the extracted parton instance from the given...
virtual bool accept(const DecayMode &dm) const
Check if this decayer can perfom the decay specified by the given decay mode.
static ClassDescription< SimpleBaryonRemnantDecayer > initSimpleBaryonRemnantDecayer
The static object used to initialize the description of this class.
The Step class contains information of all particles present after certain step in the event generati...
Definition: Step.h:34
VSelector is a templated class for storing objects associated with probabilities in a way such that,...
Definition: VSelector.h:46
ZGenerator is the base class for all classes implementing models to generate the momentum fraction,...
Definition: ZGenerator.h:32
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
vector< PPtr > ParticleVector
A vector of pointers to Particle objects.
Definition: Containers.h:73
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
Simple struct to store info about baryon quark and di-quark constituents.
vector< int > flav
The valence flavours of the corresponding baryon.
int sign
-1 if the particle is an anti-particle.
VSelector< pair< int, int > > flavsel
Different divisions into quark-diquark weighted by their respective probabilities.
Exception thrown if the decay of a remnant was impossible.
Warning Exception used when DIS kinematics was not respected.