00001
00014 #ifndef STAR_StDecayMode
00015 #define STAR_StDecayMode
00016 #include "StMcVertex.hh"
00017 #include "StMcTrack.hh"
00018
00019 class StMcVertex;
00020 class StMcTrack;
00021
00023 enum decayModeType {
00024 kWrongDecay = 0,
00025
00026 kKPlus2MuNu = 10,
00027 kKPlus2PiPlusPiZero = 11,
00028 kKPlus2PiPlusPiPlusPiMinus = 12,
00029 kKPlus2ENuPiZero = 13,
00030 kKPlus2MuNuPiZero = 14,
00031 kKPlus2PiPlusPiZeroPiZero = 15,
00032
00033 kKMinus2MuNu = 20,
00034 kKMinus2PiMinusPiZero = 21,
00035 kKMinus2PiPlusPiMinusPiMinus = 22,
00036 kKMinus2ENuPiZero = 23,
00037 kKMinus2MuNuPiZero = 24,
00038 kKMinus2PiMinusPiZeroPiZero = 25,
00039
00040 kKShort2PiPlusPiMinus = 30,
00041 kKShort2PiZeroPiZero = 31,
00042 kKShort2PiPlusPiMinusGamma = 32,
00043
00044 kLambda2ProtonPiMinus = 40,
00045 kLambda2NeutronPiZero = 41,
00046 kLambda2NeutronGamma = 42,
00047 kLambda2ProtonPiMinusGamma = 43,
00048 kLambda2ProtonENu = 44,
00049 kLambda2ProtonMuNu = 45,
00050
00051 kAntiLambda2AntiProtonPiPlus = 50,
00052 kAntiLambda2AntiNeutronPiZero = 51,
00053 kAntiLambda2AntiNeutronGamma = 52,
00054 kAntiLambda2AntiProtonPiPlusGamma = 53,
00055 kAntiLambda2AntiProtonENu = 54,
00056 kAntiLambda2AntiProtonMuNu = 55,
00057
00058 kCascade2LambdaPiMinus = 60,
00059
00060 kAntiCascade2AntiLambdaPiPlus = 70,
00061
00062 kOmega2LambdaKMinus = 80,
00063 kOmega2CascadePiMinus = 81,
00064 kOmega2CascadePiZero = 82,
00065
00066 kAntiOmega2AntiLambdaKPlus = 90,
00067 kAntiOmega2AntiCascadePiPlus = 91,
00068 kAntiOmega2AntiCascadePiZero = 92,
00069
00070 kKLong2PiPlusPiZeroPiMinus =100,
00071 kKLong2PiPlusMuNu =101,
00072 kKLong2PiMinusMuNu =102,
00073 kKLong2PiMinusENu =103,
00074 kKLong2PiPlusENu =104,
00075 kKLong2PiPlusPiMinus =105,
00076
00077 kPiPlus2MuNu =110,
00078 kPiPlus2MuNuGamma =111,
00079 kPiPlus2ENu =112,
00080
00081 kPiMinus2MuNu =120,
00082 kPiMinus2MuNuGamma =121,
00083 kPiMinus2ENu =122,
00084
00085 kMuPlus2ENuNu =130,
00086 kMuPlus2ENuNuGamma =131,
00087
00088 kMuMinus2ENuNu =140,
00089 kMuMinus2ENuNuGamma =141,
00090
00091 kNoDecay =10000
00092 };
00093
00094
00095 class StDecayMode {
00096 public:
00097
00098
00099 StDecayMode();
00100 virtual ~StDecayMode();
00101 static StDecayMode* Instance();
00102
00105 Int_t ParentCharge(Int_t mode);
00106
00109 Int_t Process(StMcVertex* mcVertex);
00110
00112
00113 Int_t KPlusProcess(Int_t ID);
00114 Int_t KMinusProcess(Int_t ID);
00115 Int_t KLongProcess(Int_t ID, Int_t ID2);
00116 Int_t KShortProcess(Int_t ID);
00117 Int_t PiPlusProcess(Int_t ID);
00118 Int_t PiMinusProcess(Int_t ID);
00119 Int_t MuPlusProcess(Int_t ID);
00120 Int_t MuMinusProcess(Int_t ID);
00121 Int_t LambdaProcess(Int_t ID);
00122 Int_t AntiLambdaProcess(Int_t ID, Int_t ID2);
00123 Int_t XiProcess(Int_t ID);
00124 Int_t AntiXiProcess(Int_t ID);
00125 Int_t OmegaProcess(Int_t ID);
00126 Int_t AntiOmegaProcess(Int_t ID);
00128
00129 private:
00130 static StDecayMode* mInstance;
00131 ClassDef(StDecayMode,0)
00132
00133 };
00134
00135 inline StDecayMode* StDecayMode::Instance()
00136 { if (!mInstance) mInstance = new StDecayMode();
00137 return mInstance; }
00138
00139 #endif
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166