00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef THEPEG_SimpleFlavour_H
00010 #define THEPEG_SimpleFlavour_H
00011
00012
00013 #include "ThePEG/Handlers/FlavourGenerator.h"
00014 #include "ThePEG/Utilities/VSelector.h"
00015
00016
00017
00018 namespace ThePEG {
00019
00028 class SimpleFlavour: public FlavourGenerator {
00029
00030 public:
00031
00033 typedef map<long, VSelector< pair<long,long> > > ProbabilityMap;
00034
00035 public:
00036
00042 SimpleFlavour();
00043
00047 virtual ~SimpleFlavour();
00049
00050 public:
00051
00065 virtual tcPDPair generateHadron(tcPDPtr quark) const;
00066
00076 virtual tcPDPtr getHadron(long iq1, long iq2) const;
00077 using FlavourGenerator::getHadron;
00078
00089 virtual tcPDPtr getBaryon(long q1, long q2, long q3) const;
00090 using FlavourGenerator::getBaryon;
00091
00095 virtual long selectQuark() const;
00096
00100 virtual long selectFlavour() const;
00102
00103 public:
00104
00110 double sSup() const { return theSSup; }
00111
00115 double diSup() const { return theDiSup; }
00116
00120 double di1Sup() const { return theDi1Sup; }
00121
00126 double diSSup() const { return theDiSSup; }
00127
00131 double etaSup() const { return theEtaSup; }
00132
00136 double etaPSup() const { return theEtaPSup; }
00137
00142 double baryon10Sup() const { return theBaryon10Sup; }
00143
00147 double pSpin1() const { return thePSpin1; }
00148
00152 double pSpinS1() const { return thePSpinS1; }
00153
00158 double pSpinC1() const { return thePSpinC1; }
00160
00161 protected:
00162
00167 virtual void setProbabilities(long iq) const;
00168
00173 virtual double vectorMesonProbability(long iq1, long iq2) const;
00174
00180 virtual double baryonDecupletProbability(long iq1, long iq2) const;
00181
00185 virtual tcPDPtr pseudoScalarMeson(long iq, long iqbar) const;
00186
00190 virtual tcPDPtr vectorMeson(long iq, long iqbar) const;
00191
00196 virtual tcPDPtr baryonOctet(long iq, long idq) const;
00197
00202 virtual tcPDPtr baryonDecuplet(long iq, long idq) const;
00203
00208 virtual long pseudoScalarId(long iqh, long iql) const;
00209
00214 virtual long vectorId(long iqh, long iql) const;
00215
00222 virtual long baryonOctetId(long iqa, long iqb, long iqc,
00223 long iq, bool dqs1) const;
00224
00229 virtual long baryonDecupletId(long iqa, long iqb, long iqc) const;
00230
00236 virtual vector< pair<long,double> >
00237 pseudoScalarIds(long iqh, long iql) const;
00238
00244 virtual vector< pair<long,double> > vectorIds(long iqh, long iql) const;
00245
00252 virtual vector< pair<long,double> >
00253 baryonOctetIds(long iqa, long iqb, long iqc,
00254 long iq, bool dqs1) const;
00255
00261 virtual vector< pair<long,double> >
00262 baryonDecupletIds(long iqa, long iqb, long iqc) const;
00263
00267 void clear();
00268
00273 static double weightSU6QDiQSpin(long iq, long idq, int spin);
00274
00275 public:
00276
00283 void persistentOutput(PersistentOStream & os) const;
00284
00290 void persistentInput(PersistentIStream & is, int version);
00292
00296 static void Init();
00297
00298 protected:
00299
00306 virtual IBPtr clone() const;
00307
00312 virtual IBPtr fullclone() const;
00314
00315 protected:
00316
00324 virtual void doinit();
00325
00330 virtual void doinitrun();
00332
00333 private:
00334
00338 double theSSup;
00339
00343 double theDiSup;
00344
00348 double theDi1Sup;
00349
00354 double theDiSSup;
00355
00359 double theEtaSup;
00360
00364 double theEtaPSup;
00365
00369 double theBaryon10Sup;
00370
00374 double thePSpin1;
00375
00379 double thePSpinS1;
00380
00384 double thePSpinC1;
00385
00390 mutable VSelector<long> theFlavourSelector;
00391
00395 mutable ProbabilityMap theProbabilities;
00396
00397
00398 private:
00399
00403 static ClassDescription<SimpleFlavour> initSimpleFlavour;
00404
00408 SimpleFlavour & operator=(const SimpleFlavour &);
00409
00410 };
00411
00412 }
00413
00414
00415 namespace ThePEG {
00416
00423 template <>
00424 struct BaseClassTrait<SimpleFlavour,1>: public ClassTraitsType {
00426 typedef FlavourGenerator NthBase;
00427 };
00428
00429 template <>
00434 struct ClassTraits<SimpleFlavour>
00435 : public ClassTraitsBase<SimpleFlavour> {
00437 static string className() { return "ThePEG::SimpleFlavour"; }
00443 static string library() { return "SimpleFlavour.so"; }
00444
00445 };
00446
00449 }
00450
00451 #endif