00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef ThePEG_FlavourGenerator_H
00010 #define ThePEG_FlavourGenerator_H
00011
00012
00013 #include "ThePEG/Config/ThePEG.h"
00014 #include "ThePEG/Handlers/HandlerBase.h"
00015
00016 namespace ThePEG {
00017
00039 class FlavourGenerator: public HandlerBase {
00040
00041 public:
00042
00056 virtual tcPDPair generateHadron(tcPDPtr quark) const = 0;
00057
00062 tcPDPair alwaysGenerateHadron(tcPDPtr quark) const;
00063
00074 virtual tcPDPtr getHadron(tcPDPtr q1, tcPDPtr q2) const;
00075
00086 virtual tcPDPtr getHadron(long iq1, long iq2) const;
00087
00092 tcPDPtr alwaysGetHadron(tcPDPtr q1, tcPDPtr q2) const;
00093
00098 tcPDPtr alwaysGetHadron(long iq1, long iq2) const;
00099
00112 virtual tcPDPtr getBaryon(tcPDPtr q1, tcPDPtr q2, tcPDPtr q3) const;
00113
00126 virtual tcPDPtr getBaryon(long q1, long q2, long q3) const;
00127
00132 tcPDPtr alwaysGetBaryon(tcPDPtr q1, tcPDPtr q2, tcPDPtr q3) const;
00137 tcPDPtr alwaysGetBaryon(long q1, long q2, long q3) const;
00138
00142 virtual long selectQuark() const = 0;
00143
00147 virtual long selectFlavour() const = 0;
00149
00150 public:
00151
00158 void persistentOutput(PersistentOStream & os) const;
00159
00165 void persistentInput(PersistentIStream & is, int version);
00167
00171 static void Init();
00172
00173
00174 private:
00175
00179 static AbstractNoPIOClassDescription<FlavourGenerator> initFlavourGenerator;
00180
00184 FlavourGenerator & operator=(const FlavourGenerator &);
00185
00186 };
00187
00191 class FlavourGeneratorException: public Exception {};
00200 template <>
00201 struct BaseClassTrait<FlavourGenerator,1>: public ClassTraitsType {
00203 typedef HandlerBase NthBase;
00204 };
00205
00210 template <>
00211 struct ClassTraits<FlavourGenerator>:
00212 public ClassTraitsBase<FlavourGenerator> {
00214 static string className() {
00215 return "ThePEG::FlavourGenerator";
00216 }
00217 };
00218
00221 }
00222
00223 #endif