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 G4ExcitedSigmaConstructor_h
00037 #define G4ExcitedSigmaConstructor_h 1
00038
00039 #include "globals.hh"
00040 #include "G4ios.hh"
00041 #include "G4ExcitedBaryonConstructor.hh"
00042
00043 class G4ExcitedSigmaConstructor: public G4ExcitedBaryonConstructor
00044 {
00045
00046
00047
00048 public:
00049 G4ExcitedSigmaConstructor();
00050 virtual ~G4ExcitedSigmaConstructor();
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* AddNKMode( G4DecayTable* table, const G4String& name,
00069 G4double br, G4int iIso3, G4bool fAnti);
00070 G4DecayTable* AddNKStarMode( G4DecayTable* table, const G4String& name,
00071 G4double br, G4int iIso3, G4bool fAnti);
00072 G4DecayTable* AddSigmaPiMode( G4DecayTable* table, const G4String& name,
00073 G4double br, G4int iIso3, G4bool fAnti);
00074 G4DecayTable* AddSigmaStarPiMode( G4DecayTable* table, const G4String& name,
00075 G4double br, G4int iIso3, G4bool fAnti);
00076 G4DecayTable* AddLambdaPiMode( G4DecayTable* table, const G4String& name,
00077 G4double br, G4int iIso3, G4bool fAnti);
00078 G4DecayTable* AddSigmaEtaMode( G4DecayTable* table, const G4String& name,
00079 G4double br, G4int iIso3, G4bool fAnti);
00080 G4DecayTable* AddLambdaStarPiMode( G4DecayTable* table, const G4String& name,
00081 G4double br, G4int iIso3, G4bool fAnti);
00082 G4DecayTable* AddDeltaKMode( G4DecayTable* table, const G4String& name,
00083 G4double br, G4int iIso3, G4bool fAnti);
00084
00085 public:
00086 enum { NStates = 8 };
00087 private:
00088 enum { SigmaIsoSpin = 2 };
00089
00090 private:
00091 static const char* name[ NStates ];
00092 static const G4double mass[ NStates ];
00093 static const G4double width[ NStates ];
00094 static const G4int iSpin[ NStates ];
00095 static const G4int iParity[ NStates ];
00096 static const G4int encodingOffset[ NStates ];
00097
00098 public:
00099 enum { NumberOfDecayModes = 8 };
00100 private:
00101 enum { NK=0, NKStar=1, SigmaPi=2, SigmaStarPi=3, LambdaPi=4,
00102 SigmaEta=5, LambdaStarPi=6, DeltaK=7};
00103 private:
00104 static const G4double bRatio[ NStates ][ NumberOfDecayModes];
00105 };
00106
00107
00108
00109 inline
00110 G4int G4ExcitedSigmaConstructor::GetiSpin(G4int iState)
00111 {
00112 return iSpin[iState];
00113 }
00114
00115 inline
00116 G4int G4ExcitedSigmaConstructor::GetiParity(G4int iState)
00117 {
00118 return iParity[iState];
00119 }
00120
00121 inline
00122 G4int G4ExcitedSigmaConstructor::GetEncodingOffset(G4int iState)
00123 {
00124 return encodingOffset[iState];
00125 }
00126
00127 inline
00128 G4int G4ExcitedSigmaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
00129 {
00130 G4int quark=0;
00131 if ( iQ == 0 ){
00132
00133 quark = 3;
00134 } else if ( iQ == 1 ){
00135 if (iIso3 == -2) {
00136
00137 quark = 1;
00138 } else {
00139
00140 quark = 2;
00141 }
00142 } else if ( iQ == 2 ){
00143 if (iIso3 == +2) {
00144
00145 quark = 2;
00146 } else {
00147
00148 quark = 1;
00149 }
00150 }
00151 return quark;
00152 }
00153
00154 inline
00155 G4String G4ExcitedSigmaConstructor::GetMultipletName(G4int iState)
00156 {
00157 return name[iState];
00158 }
00159
00160 inline
00161 G4String G4ExcitedSigmaConstructor::GetName(G4int iIso3, G4int iState)
00162 {
00163 G4String particle = name[iState];
00164 if (iIso3 == +2) {
00165 particle += "+";
00166 } else if (iIso3 == 0) {
00167 particle += "0";
00168 } else if (iIso3 == -2) {
00169 particle += "-";
00170 }
00171 return particle;
00172 }
00173 #endif
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183