thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
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 
18 namespace ThePEG {
19 
29 
30 public:
31 
33  typedef map<long, VSelector< pair<long,long> > > ProbabilityMap;
34 
35 public:
36 
42  SimpleFlavour();
43 
47  virtual ~SimpleFlavour();
49 
50 public:
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 
103 public:
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 
161 protected:
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 
275 public:
276 
283  void persistentOutput(PersistentOStream & os) const;
284 
290  void persistentInput(PersistentIStream & is, int version);
292 
296  static void Init();
297 
298 protected:
299 
306  virtual IBPtr clone() const;
307 
312  virtual IBPtr fullclone() const;
314 
315 protected:
316 
324  virtual void doinit();
325 
330  virtual void doinitrun();
332 
333 private:
334 
338  double theSSup;
339 
343  double theDiSup;
344 
348  double theDi1Sup;
349 
354  double theDiSSup;
355 
359  double theEtaSup;
360 
364  double theEtaPSup;
365 
370 
374  double thePSpin1;
375 
379  double thePSpinS1;
380 
384  double thePSpinC1;
385 
391 
395  mutable ProbabilityMap theProbabilities;
396 
397 
398 private:
399 
404 
408  SimpleFlavour & operator=(const SimpleFlavour &) = delete;
409 
410 };
411 
412 }
413 
414 
415 namespace ThePEG {
416 
423 template <>
424 struct BaseClassTrait<SimpleFlavour,1>: public ClassTraitsType {
426  typedef FlavourGenerator NthBase;
427 };
428 
429 template <>
434 struct 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 */
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...
pair< tcPDPtr, tcPDPtr > tcPDPair
A pair of transient pointers to const ParticleData objects.
Definition: Containers.h:124
double etaPSup() const
Return the extra suppression of ets-prime&#39;s.
static ClassDescription< SimpleFlavour > initSimpleFlavour
Describe a concrete class with persistent data.
double etaSup() const
Return the extra suppression of eta&#39;s.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
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 >= ...
double di1Sup() const
Return the suppression of spin-1 di-quarks w.r.t.
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...
double theDi1Sup
Suppression of spin-1 di-quarks w.r.t.
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...
virtual long selectFlavour() const
Generate a random (di)quark flavour.
virtual tcPDPtr getHadron(long iq1, long iq2) const
Get hadron from flavours.
double pSpinC1() const
Return the probability that charmed and heavier mesons has spin 1;.
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
double theSSup
Suppression factor of strange quarks w.r.t.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
double baryon10Sup() const
Return the 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.
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...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
TransientConstRCPtr is a simple wrapper around a bare const pointer which can be assigned to and from...
Definition: RCPtr.h:696
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 thePSpin1
Probability that light (u/d) mesons has spin 1.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
SimpleFlavour()
Default constructor.
double theEtaPSup
Extra suppression of ets-prime&#39;s.
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...
void clear()
Clear all cashed weights.
double theDiSSup
Suppression of strange di-quarks w.r.t.
ProbabilityMap theProbabilities
A map of selectors to cash probabilities for generateHadron.
FlavourGenerator is an abstract base class to be used to implement models describing the quark conten...
virtual void setProbabilities(long iq) const
Calculate the probabilities for generateHadron for the given flavour.
double pSpin1() const
Return the probability that light (u/d) mesons has spin 1;.
virtual tcPDPair generateHadron(tcPDPtr quark) const
Generate a hadron from a quark.
double theBaryon10Sup
Extra suppression for baryons of the spin 3/2 decuplet.
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)...
virtual long selectQuark() const
Generate a random quark flavour.
map< long, VSelector< pair< long, long > > > ProbabilityMap
A map of Selectors.
Definition: SimpleFlavour.h:33
virtual ~SimpleFlavour()
Destructor.
double thePSpinS1
Probability that strange mesons has spin 1.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
double sSup() const
Return the suppression factor of strange quarks w.r.t.
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...
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
virtual IBPtr clone() const
Make a simple clone of this object.
virtual tcPDPtr vectorMeson(long iq, long iqbar) const
Return a vector meson formed by the two quark flavours.
VSelector< long > theFlavourSelector
A selector used to weight the creation of (di)quark-anti(di)quark pairs.
double pSpinS1() const
Return the probability that strange mesons has spin 1;.
SimpleFlavour & operator=(const SimpleFlavour &)=delete
Private and non-existent assignment operator.
static void Init()
Standard Init function used to initialize the interfaces.
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 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.
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.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
virtual tcPDPtr baryonDecuplet(long iq, long idq) const
Return a spin 3/2 decuplet baryon formed by the given quark and diquark flavours. ...
double diSSup() const
Return the suppression of strange di-quarks w.r.t.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
virtual tcPDPtr getHadron(tcPDPtr q1, tcPDPtr q2) const
Get hadron from flavours.
virtual void doinitrun()
Initialize this object.
virtual tcPDPtr pseudoScalarMeson(long iq, long iqbar) const
Return a pseudo scalar meson formed by the two quark flavours.
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 thePSpinC1
Probability that charmed and heavier mesons has spin 1.
double theDiSup
Suppression factor for di-quarks w.r.t.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
SimpleFlavour is a simple class to generate hadrons given the quark flavours.
Definition: SimpleFlavour.h:28
double theEtaSup
Extra suppression of eta&#39;s.