00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef EVTPDL_HH
00022 #define EVTPDL_HH
00023
00024 #include "EvtGenBase/EvtPartProp.hh"
00025 #include "EvtGenBase/EvtId.hh"
00026 #include "EvtGenBase/EvtSpinType.hh"
00027 #include "EvtGenBase/EvtStringHash.hh"
00028 #include <vector>
00029 #include <map>
00030
00031 const int SPIN_NAME_LENGTH = 100;
00032
00033 class EvtPDL {
00034
00035 public:
00036
00037 EvtPDL();
00038
00039 ~EvtPDL();
00040
00041 void read(const char* fname);
00042 void readPDT(const std::string fname);
00043
00044
00045 static double getMeanMass(EvtId i ){ return partlist()[i.getId()].getMass(); }
00046 static double getMass(EvtId i ){return partlist()[i.getId()].rollMass();}
00047 static double getRandMass(EvtId i, EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId,double maxMass, double *dauMasses ){return partlist()[i.getId()].getRandMass(parId,nDaug,dauId,othDaugId,maxMass,dauMasses);}
00048 static double getMassProb(EvtId i, double mass, double massPar, int nDaug, double *massDau) { return partlist()[i.getId()].getMassProb(mass,massPar,nDaug,massDau);}
00049
00050 static double getMaxMass(EvtId i ){return partlist()[i.getId()].getMassMax();}
00051 static double getMinMass(EvtId i ){return partlist()[i.getId()].getMassMin();}
00052
00053 static double getMaxRange(EvtId i ){return partlist()[i.getId()].getMaxRange();}
00054 static double getWidth(EvtId i ){return partlist()[i.getId()].getWidth();}
00055 static double getctau(EvtId i ){return partlist()[i.getId()].getctau();}
00056 static int getStdHep(EvtId id ){return partlist()[id.getId()].getStdHep();}
00057 static int getLundKC(EvtId id ){return partlist()[id.getId()].getLundKC();}
00058 static EvtId evtIdFromStdHep(int stdhep );
00059 static EvtId chargeConj(EvtId id );
00060 static int chg3(EvtId i ){return partlist()[i.getId()].getChg3();}
00061 static EvtSpinType::spintype getSpinType(EvtId i )
00062 {return partlist()[i.getId()].getSpinType();}
00063 static EvtId getId(const std::string& name );
00064 static std::string name(EvtId i){return partlist()[i.getAlias()].getName();}
00065 static void alias(EvtId num,const std::string& newname);
00066 static void aliasChgConj(EvtId a,EvtId abar);
00067 static int entries() { return partlist().size();}
00068 static void reSetMass(EvtId i, double mass) { partlist()[i.getId()].reSetMass( mass);}
00069 static void reSetWidth(EvtId i, double width) { partlist()[i.getId()].reSetWidth(width);}
00070 static void reSetMassMin(EvtId i, double mass) { partlist()[i.getId()].reSetMassMin(mass);}
00071 static void reSetMassMax(EvtId i,double mass) { partlist()[i.getId()].reSetMassMax(mass);}
00072 static void reSetBlatt(EvtId i,double blatt) {partlist()[i.getId()].reSetBlatt(blatt);}
00073 static void includeBirthFactor(EvtId i,bool yesno) {partlist()[i.getId()].includeBirthFactor(yesno);}
00074 static void includeDecayFactor(EvtId i,bool yesno) {partlist()[i.getId()].includeDecayFactor(yesno);}
00075 static void addFactorPn(EvtId i,double factor) {partlist()[i.getId()].addFactorPn(factor);}
00076 static void changeLS(EvtId i, std::string &newLS ) { partlist()[i.getId()].newLineShape(newLS);}
00077 static void setPWForDecay(EvtId i, int spin, EvtId d1, EvtId d2) { partlist()[i.getId()].setPWForDecay(spin,d1,d2);}
00078 static void setPWForBirthL(EvtId i, int spin, EvtId par, EvtId othD);
00079 static void fixLSForSP8(EvtId i) { partlist()[i.getId()].fixLSForSP8();}
00080 private:
00081
00082 void setUpConstsPdt();
00083
00084 static int _firstAlias;
00085 static int _nentries;
00086
00087 static std::vector<EvtPartProp>& partlist() {
00088 static std::vector<EvtPartProp> s_partlist;
00089 return s_partlist;
00090 }
00091
00092 static std::map<std::string, int> _particleNameLookup;
00093
00094 };
00095
00096 #endif
00097
00098