00001
00002
00003
00004
00005
00006
00007
00008 #ifndef TEMPPARTICLEDATA_HH
00009 #define TEMPPARTICLEDATA_HH
00010
00011 #include <string>
00012 #include <vector>
00013
00014 #include "HepPDT/SpinState.hh"
00015 #include "HepPDT/ParticleID.hh"
00016 #include "HepPDT/Measurement.hh"
00017
00018 namespace HepPDT {
00019
00022 double calculateWidthFromLifetime( double );
00023
00025 struct TempConstituent {
00026 TempConstituent( ParticleID p = ParticleID(0), int m = -1 )
00027 : tempConstituentPID(p), tempMultiplicity(m) {}
00028 ParticleID tempConstituentPID;
00029 int tempMultiplicity;
00030 };
00031
00033 struct TempDecayData {
00036 std::string tempDecayName;
00037 double tempBranchingFraction;
00039 std::vector<std::string> tempDaughterList;
00041 std::vector<double> tempDecayParameters;
00042 };
00043
00045 typedef std::vector<TempDecayData> TDDlist;
00046
00048 struct TempAliasData {
00049
00050
00051
00052 TempAliasData();
00053
00054 std::string tempAlias;
00055 std::string tempAliasedParticle;
00056 std::string tempChargeConj;
00057 TDDlist tempAliasDecayList;
00058 };
00059
00061 struct TempParticleData {
00062
00063
00064
00065 TempParticleData();
00066
00067 explicit TempParticleData( int id );
00069 explicit TempParticleData( ParticleID pid );
00071 TempParticleData( int id, std::string const & name,
00072 std::string const & source, int oid, double charge,
00073 SpinState const & Spin,
00074 Measurement const & mass, Measurement const & wid );
00075
00076
00077
00078 TempParticleData( TempParticleData const & orig );
00079 TempParticleData & operator = ( TempParticleData const & rhs );
00080 void swap( TempParticleData & other );
00082 TempParticleData antiparticle( std::string const & name );
00083
00085 bool processPID();
00086
00087
00088
00089 ParticleID tempID;
00090 std::string tempParticleName;
00091 std::string tempSource;
00092 int tempOriginalID;
00093 double tempCharge;
00094 double tempColorCharge;
00095 SpinState tempSpin;
00096 Measurement tempMass;
00097 Measurement tempWidth;
00098 double tempLowCutoff;
00099 double tempHighCutoff;
00100 std::vector<TempConstituent> tempQuarks;
00101 TDDlist tempDecayList;
00102
00103 };
00104
00105 inline
00106 void swap( TempParticleData & first, TempParticleData & second ) { first.swap( second ); }
00107
00108 }
00109
00110 #endif // TEMPPARTICLEDATA_HH