thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
SimpleFlavour.h
1// -*- C++ -*-
2//
3// SimpleFlavour.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_SimpleFlavour_H
10#define THEPEG_SimpleFlavour_H
11// This is the declaration of the SimpleFlavour class.
12
13#include "ThePEG/Handlers/FlavourGenerator.h"
14#include "ThePEG/Utilities/VSelector.h"
15// #include "SimpleFlavour.fh"
16// #include "SimpleFlavour.xh"
17
18namespace ThePEG {
19
29
30public:
31
33 typedef map<long, VSelector< pair<long,long> > > ProbabilityMap;
34
35public:
36
43
47 virtual ~SimpleFlavour();
49
50public:
51
65 virtual tcPDPair generateHadron(tcPDPtr quark) const;
66
76 virtual tcPDPtr getHadron(long iq1, long iq2) const;
78
89 virtual tcPDPtr getBaryon(long q1, long q2, long q3) const;
91
95 virtual long selectQuark() const;
96
100 virtual long selectFlavour() const;
102
103public:
104
110 double sSup() const { return theSSup; }
111
115 double diSup() const { return theDiSup; }
116
120 double di1Sup() const { return theDi1Sup; }
121
126 double diSSup() const { return theDiSSup; }
127
131 double etaSup() const { return theEtaSup; }
132
136 double etaPSup() const { return theEtaPSup; }
137
142 double baryon10Sup() const { return theBaryon10Sup; }
143
147 double pSpin1() const { return thePSpin1; }
148
152 double pSpinS1() const { return thePSpinS1; }
153
158 double pSpinC1() const { return thePSpinC1; }
160
161protected:
162
167 virtual void setProbabilities(long iq) const;
168
173 virtual double vectorMesonProbability(long iq1, long iq2) const;
174
180 virtual double baryonDecupletProbability(long iq1, long iq2) const;
181
185 virtual tcPDPtr pseudoScalarMeson(long iq, long iqbar) const;
186
190 virtual tcPDPtr vectorMeson(long iq, long iqbar) const;
191
196 virtual tcPDPtr baryonOctet(long iq, long idq) const;
197
202 virtual tcPDPtr baryonDecuplet(long iq, long idq) const;
203
208 virtual long pseudoScalarId(long iqh, long iql) const;
209
214 virtual long vectorId(long iqh, long iql) const;
215
222 virtual long baryonOctetId(long iqa, long iqb, long iqc,
223 long iq, bool dqs1) const;
224
229 virtual long baryonDecupletId(long iqa, long iqb, long iqc) const;
230
236 virtual vector< pair<long,double> >
237 pseudoScalarIds(long iqh, long iql) const;
238
244 virtual vector< pair<long,double> > vectorIds(long iqh, long iql) const;
245
252 virtual vector< pair<long,double> >
253 baryonOctetIds(long iqa, long iqb, long iqc,
254 long iq, bool dqs1) const;
255
261 virtual vector< pair<long,double> >
262 baryonDecupletIds(long iqa, long iqb, long iqc) const;
263
267 void clear();
268
273 static double weightSU6QDiQSpin(long iq, long idq, int spin);
274
275public:
276
284
290 void persistentInput(PersistentIStream & is, int version);
292
296 static void Init();
297
298protected:
299
306 virtual IBPtr clone() const;
307
312 virtual IBPtr fullclone() const;
314
315protected:
316
324 virtual void doinit();
325
330 virtual void doinitrun();
332
333private:
334
338 double theSSup;
339
343 double theDiSup;
344
348 double theDi1Sup;
349
354 double theDiSSup;
355
359 double theEtaSup;
360
365
370
374 double thePSpin1;
375
380
385
391
396
397
398private:
399
404
409
410};
411
412}
413
414
415namespace ThePEG {
416
423template <>
424struct BaseClassTrait<SimpleFlavour,1>: public ClassTraitsType {
426 typedef FlavourGenerator NthBase;
427};
428
429template <>
434struct ClassTraits<SimpleFlavour>
435 : public ClassTraitsBase<SimpleFlavour> {
437 static string className() { return "ThePEG::SimpleFlavour"; }
443 static string library() { return "SimpleFlavour.so"; }
444
445};
446
449}
450
451#endif /* THEPEG_SimpleFlavour_H */
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
FlavourGenerator is an abstract base class to be used to implement models describing the quark conten...
virtual tcPDPtr getBaryon(tcPDPtr q1, tcPDPtr q2, tcPDPtr q3) const
Return a baryon with the flavour content given by the (anti)quarks in the argument.
virtual tcPDPtr getHadron(tcPDPtr q1, tcPDPtr q2) const
Get hadron from flavours.
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
SimpleFlavour is a simple class to generate hadrons given the quark flavours.
Definition: SimpleFlavour.h:28
SimpleFlavour & operator=(const SimpleFlavour &)=delete
Private and non-existent assignment operator.
virtual vector< pair< long, double > > baryonDecupletIds(long iqa, long iqb, long iqc) const
Return the PDG codes for spin 3/2 decuplet baryons formed by the given quark flavours (iqa >= iqb >= ...
static ClassDescription< SimpleFlavour > initSimpleFlavour
Describe a concrete class with persistent data.
static void Init()
Standard Init function used to initialize the interfaces.
double sSup() const
Return the suppression factor of strange quarks w.r.t.
virtual ~SimpleFlavour()
Destructor.
double pSpin1() const
Return the probability that light (u/d) mesons has spin 1;.
virtual vector< pair< long, double > > vectorIds(long iqh, long iql) const
Return the PDG codes of vector mesons formed by the two quark flavours (for iqh >= iql > 0),...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual long pseudoScalarId(long iqh, long iql) const
Return the PDG code of a pseudo scalar meson formed by the two quark flavours for iqh >= iql > 0.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
double thePSpin1
Probability that light (u/d) mesons has spin 1.
virtual tcPDPtr vectorMeson(long iq, long iqbar) const
Return a vector meson formed by the two quark flavours.
virtual long selectQuark() const
Generate a random quark flavour.
double pSpinS1() const
Return the probability that strange mesons has spin 1;.
virtual long selectFlavour() const
Generate a random (di)quark flavour.
virtual long baryonDecupletId(long iqa, long iqb, long iqc) const
Return the PDG code for a spin 3/2 decuplet baryon formed by the given quark flavours (iqa >= iqb >= ...
double diSup() const
Return the suppression factor for di-quarks w.r.t.
double theSSup
Suppression factor of strange quarks w.r.t.
virtual tcPDPtr getHadron(long iq1, long iq2) const
Get hadron from flavours.
double theBaryon10Sup
Extra suppression for baryons of the spin 3/2 decuplet.
virtual tcPDPtr baryonOctet(long iq, long idq) const
Return a spin 1/2 octet baryon formed by the given quark and diquark flavours.
static double weightSU6QDiQSpin(long iq, long idq, int spin)
Return the SU(6) weight for the given quark and di-quark flavours to end up with in a baryon with the...
double theEtaPSup
Extra suppression of ets-prime's.
double theDiSup
Suppression factor for di-quarks w.r.t.
double thePSpinC1
Probability that charmed and heavier mesons has spin 1.
double baryon10Sup() const
Return the extra suppression for baryons of the spin 3/2 decuplet.
VSelector< long > theFlavourSelector
A selector used to weight the creation of (di)quark-anti(di)quark pairs.
virtual void setProbabilities(long iq) const
Calculate the probabilities for generateHadron for the given flavour.
double theDiSSup
Suppression of strange di-quarks w.r.t.
double theDi1Sup
Suppression of spin-1 di-quarks w.r.t.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual double baryonDecupletProbability(long iq1, long iq2) const
Return the probability that the given quark and diquark flavours end up in a spin 3/2 decuplet baryon...
virtual long vectorId(long iqh, long iql) const
Return the PDG code of a vector meson formed by the two quark flavours for iqh >= iql > 0.
double theEtaSup
Extra suppression of eta's.
void clear()
Clear all cashed weights.
virtual tcPDPtr baryonDecuplet(long iq, long idq) const
Return a spin 3/2 decuplet baryon formed by the given quark and diquark flavours.
virtual vector< pair< long, double > > baryonOctetIds(long iqa, long iqb, long iqc, long iq, bool dqs1) const
Return the PDG codes for spin 1/2 octet baryons formed by the given quark flavours (iqa >= iqb >= iqc...
map< long, VSelector< pair< long, long > > > ProbabilityMap
A map of Selectors.
Definition: SimpleFlavour.h:33
ProbabilityMap theProbabilities
A map of selectors to cash probabilities for generateHadron.
double thePSpinS1
Probability that strange mesons has spin 1.
double etaSup() const
Return the extra suppression of eta's.
double pSpinC1() const
Return the probability that charmed and heavier mesons has spin 1;.
double etaPSup() const
Return the extra suppression of ets-prime's.
virtual long baryonOctetId(long iqa, long iqb, long iqc, long iq, bool dqs1) const
Return the PDG code for a spin 1/2 octet baryon formed by the given quark flavours (iqa >= iqb >= iqc...
virtual double vectorMesonProbability(long iq1, long iq2) const
Return the probability that the given quark flavours end up in a vector meson rather than in a pseudo...
SimpleFlavour()
Default constructor.
virtual vector< pair< long, double > > pseudoScalarIds(long iqh, long iql) const
Return the PDG code of pseudo scalar mesons formed by the two quark flavours (for iqh >= iql > 0),...
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
virtual tcPDPtr pseudoScalarMeson(long iq, long iqbar) const
Return a pseudo scalar meson formed by the two quark flavours.
virtual tcPDPair generateHadron(tcPDPtr quark) const
Generate a hadron from a quark.
virtual void doinitrun()
Initialize this object.
virtual tcPDPtr getBaryon(long q1, long q2, long q3) const
Return a baryon with the flavour content given by the (anti)quarks in the argument.
double di1Sup() const
Return the suppression of spin-1 di-quarks w.r.t.
double diSSup() const
Return the suppression of strange di-quarks w.r.t.
VSelector is a templated class for storing objects associated with probabilities in a way such that,...
Definition: VSelector.h:46
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
pair< tcPDPtr, tcPDPtr > tcPDPair
A pair of transient pointers to const ParticleData objects.
Definition: Containers.h:124
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
static string library()
The name of a file containing the dynamic library where the class T is implemented.
Definition: ClassTraits.h:85