00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef G4ExcitedXiConstructor_h
00037 #define G4ExcitedXiConstructor_h 1
00038
00039 #include "globals.hh"
00040 #include "G4ios.hh"
00041 #include "G4ExcitedBaryonConstructor.hh"
00042
00043 class G4ExcitedXiConstructor: public G4ExcitedBaryonConstructor
00044 {
00045
00046
00047
00048 public:
00049 G4ExcitedXiConstructor();
00050 virtual ~G4ExcitedXiConstructor();
00051
00052 protected:
00053 virtual G4bool Exist( G4int ){return true;}
00054
00055 virtual G4int GetQuarkContents(G4int, G4int);
00056 virtual G4String GetName(G4int iIso3, G4int iState);
00057 virtual G4String GetMultipletName(G4int iState);
00058 virtual G4double GetMass( G4int state, G4int iso);
00059 virtual G4double GetWidth( G4int state, G4int iso);
00060 virtual G4int GetiSpin(G4int iState);
00061 virtual G4int GetiParity(G4int iState);
00062 virtual G4int GetEncodingOffset(G4int iState);
00063
00064 virtual G4DecayTable* CreateDecayTable(const G4String& name,
00065 G4int iIso3, G4int iState,
00066 G4bool fAnti = false);
00067 private:
00068 G4DecayTable* AddXiPiMode( G4DecayTable* table, const G4String& name,
00069 G4double br, G4int iIso3, G4bool fAnti);
00070 G4DecayTable* AddXiGammaMode( G4DecayTable* table, const G4String& name,
00071 G4double br, G4int iIso3, G4bool fAnti);
00072 G4DecayTable* AddLambdaKMode( G4DecayTable* table, const G4String& name,
00073 G4double br, G4int iIso3, G4bool fAnti);
00074 G4DecayTable* AddSigmaKMode( G4DecayTable* table, const G4String& name,
00075 G4double br, G4int iIso3, G4bool fAnti);
00076
00077 public:
00078 enum { NStates = 5 };
00079 private:
00080 enum { XiIsoSpin = 1 };
00081
00082 private:
00083 static const char* name[ NStates ];
00084 static const G4double mass[ NStates ];
00085 static const G4double width[ NStates ];
00086 static const G4int iSpin[ NStates ];
00087 static const G4int iParity[ NStates ];
00088 static const G4int encodingOffset[ NStates ];
00089
00090 public:
00091 enum { NumberOfDecayModes = 4 };
00092 private:
00093 enum { XiPi=0, XiGamma=1, LambdaK=2, SigmaK=3 };
00094 private:
00095 static const G4double bRatio[ NStates ][ NumberOfDecayModes];
00096 };
00097
00098
00099 inline
00100 G4int G4ExcitedXiConstructor::GetiSpin(G4int iState)
00101 {
00102 return iSpin[iState];
00103 }
00104
00105 inline
00106 G4int G4ExcitedXiConstructor::GetiParity(G4int iState)
00107 {
00108 return iParity[iState];
00109 }
00110
00111 inline
00112 G4int G4ExcitedXiConstructor::GetEncodingOffset(G4int iState)
00113 {
00114 return encodingOffset[iState];
00115 }
00116
00117 inline
00118 G4int G4ExcitedXiConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
00119 {
00120 G4int quark=0;
00121 if ( iQ == 0 ){
00122
00123 quark = 3;
00124 } else if ( iQ == 1 ){
00125
00126 quark = 3;
00127 } else if ( iQ == 2 ){
00128 if (iIso3 == +1) {
00129
00130 quark = 2;
00131 } else {
00132
00133 quark = 1;
00134 }
00135 }
00136 return quark;
00137 }
00138
00139 inline
00140 G4String G4ExcitedXiConstructor::GetMultipletName(G4int iState)
00141 {
00142 return name[iState];
00143 }
00144
00145 inline
00146 G4String G4ExcitedXiConstructor::GetName(G4int iIso3, G4int iState)
00147 {
00148 G4String particle = name[iState];
00149 if (iIso3 == +1) {
00150 particle += "0";
00151 } else if (iIso3 ==-1) {
00152 particle += "-";
00153 }
00154 return particle;
00155 }
00156 #endif
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166