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 G4ExcitedDeltaConstructor_h
00037 #define G4ExcitedDeltaConstructor_h 1
00038
00039 #include "globals.hh"
00040 #include "G4ios.hh"
00041 #include "G4ExcitedBaryonConstructor.hh"
00042
00043 class G4ExcitedDeltaConstructor: public G4ExcitedBaryonConstructor
00044 {
00045
00046
00047
00048 public:
00049 G4ExcitedDeltaConstructor();
00050 virtual ~G4ExcitedDeltaConstructor();
00051
00052 protected:
00053 virtual G4int GetEncoding(G4int iIsoSpin3, G4int idxState);
00054
00055 protected:
00056 virtual G4bool Exist( G4int ){return true;}
00057
00058 virtual G4int GetQuarkContents(G4int, G4int);
00059 virtual G4String GetName(G4int iIso3, G4int iState);
00060 virtual G4String GetMultipletName(G4int iState);
00061
00062 virtual G4double GetMass( G4int state, G4int iso);
00063 virtual G4double GetWidth( G4int state, G4int iso);
00064 virtual G4int GetiSpin(G4int iState);
00065 virtual G4int GetiParity(G4int iState);
00066 virtual G4int GetEncodingOffset(G4int iState);
00067
00068 virtual G4DecayTable* CreateDecayTable(const G4String& name,
00069 G4int iIso3, G4int iState,
00070 G4bool fAnti = false);
00071 private:
00072 G4DecayTable* AddNGammaMode( G4DecayTable* table, const G4String& name,
00073 G4double br, G4int iIso3, G4bool fAnti);
00074 G4DecayTable* AddNPiMode( G4DecayTable* table, const G4String& name,
00075 G4double br, G4int iIso3, G4bool fAnti);
00076 G4DecayTable* AddNRhoMode( G4DecayTable* table, const G4String& name,
00077 G4double br, G4int iIso3, G4bool fAnti);
00078 G4DecayTable* AddDeltaPiMode( G4DecayTable* table, const G4String& name,
00079 G4double br, G4int iIso3, G4bool fAnti);
00080 G4DecayTable* AddNStarPiMode( G4DecayTable* table, const G4String& name,
00081 G4double br, G4int iIso3, G4bool fAnti);
00082
00083 public:
00084 enum { NStates = 9 };
00085 private:
00086 enum { DeltaIsoSpin = 3 };
00087
00088 private:
00089 static const char* name[ NStates ];
00090 static const G4double mass[ NStates ];
00091 static const G4double width[ NStates ];
00092 static const G4int iSpin[ NStates ];
00093 static const G4int iParity[ NStates ];
00094 static const G4int encodingOffset[ NStates ];
00095
00096 public:
00097 enum { NumberOfDecayModes = 5};
00098 private:
00099 enum { NGamma=0, NPi=1, NRho=2, DeltaPi=3, NStarPi=4 };
00100 private:
00101 static const G4double bRatio[ NStates ][ NumberOfDecayModes];
00102 };
00103
00104 inline
00105 G4double G4ExcitedDeltaConstructor::GetMass(G4int iState, G4int)
00106 {
00107 return mass[iState];
00108 }
00109
00110 inline
00111 G4double G4ExcitedDeltaConstructor::GetWidth(G4int iState, G4int)
00112 {
00113 return width[iState];
00114 }
00115
00116 inline
00117 G4int G4ExcitedDeltaConstructor::GetiSpin(G4int iState)
00118 {
00119 return iSpin[iState];
00120 }
00121
00122 inline
00123 G4int G4ExcitedDeltaConstructor::GetiParity(G4int iState)
00124 {
00125 return iParity[iState];
00126 }
00127
00128 inline
00129 G4int G4ExcitedDeltaConstructor::GetEncodingOffset(G4int iState)
00130 {
00131 return encodingOffset[iState];
00132 }
00133
00134 inline
00135 G4int G4ExcitedDeltaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
00136 {
00137
00138
00139
00140
00141
00142 G4int quark=0;
00143 if ( iQ == 0 ){
00144 if ( iIso3 == -3 ){
00145
00146 quark = 1;
00147 } else {
00148
00149 quark = 2;
00150 }
00151 } else if ( iQ == 2 ){
00152 if ( iIso3 == +3 ){
00153
00154 quark = 2;
00155 } else {
00156
00157 quark = 1;
00158 }
00159 } else {
00160 if (( iIso3 == -1 )||( iIso3 == -3 )) {
00161
00162 quark = 1;
00163 } else {
00164
00165 quark = 2;
00166 }
00167 }
00168 return quark;
00169 }
00170
00171 inline
00172 G4String G4ExcitedDeltaConstructor::GetMultipletName(G4int iState)
00173 {
00174 return name[iState];
00175 }
00176
00177 inline
00178 G4String G4ExcitedDeltaConstructor::GetName(G4int iIso3, G4int iState)
00179 {
00180 G4String particle = name[iState];
00181 if ( iIso3 == -3 ){
00182 particle += "-";
00183 } else if ( iIso3 == -1 ){
00184 particle += "0";
00185 } else if ( iIso3 == +1 ){
00186 particle += "+";
00187 } else {
00188 particle += "++";
00189 }
00190 return particle;
00191 }
00192 #endif
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202