ThePEG  1.8.0
SimpleFlavour.h
1 // -*- C++ -*-
2 //
3 // SimpleFlavour.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 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 
396 
397 
398 private:
399 
404 
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 */