00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <stdlib.h>
00023 #include "EvtGenBase/EvtParticle.hh"
00024 #include "EvtGenBase/EvtGenKine.hh"
00025 #include "EvtGenBase/EvtPDL.hh"
00026 #include "EvtGenBase/EvtReport.hh"
00027 #include "EvtGenModels/EvtBtoKpiCPiso.hh"
00028 #include <string>
00029
00030 EvtBtoKpiCPiso::~EvtBtoKpiCPiso() {}
00031
00032 void EvtBtoKpiCPiso::getName(std::string& model_name){
00033
00034 model_name="BTOKPI_CP_ISO";
00035
00036 }
00037
00038
00039 EvtDecayBase* EvtBtoKpiCPiso::clone(){
00040
00041 return new EvtBtoKpiCPiso;
00042
00043 }
00044
00045
00046 void EvtBtoKpiCPiso::init(){
00047
00048
00049 checkNArg(15);
00050 checkNDaug(2);
00051
00052 checkSpinParent(EvtSpinType::SCALAR);
00053
00054 checkSpinDaughter(0,EvtSpinType::SCALAR);
00055 checkSpinDaughter(1,EvtSpinType::SCALAR);
00056 }
00057
00058
00059 void EvtBtoKpiCPiso::initProbMax() {
00060
00061
00062
00063
00064 static EvtId PI0=EvtPDL::getId("pi0");
00065 static EvtId PIP=EvtPDL::getId("pi+");
00066 static EvtId PIM=EvtPDL::getId("pi+");
00067 static EvtId K0=EvtPDL::getId("K0");
00068 static EvtId KB=EvtPDL::getId("anti-K0");
00069 static EvtId KP=EvtPDL::getId("K+");
00070 static EvtId KM=EvtPDL::getId("K-");
00071
00072 if (((getDaug(0)==PI0) && (getDaug(1)==KP)) || ((getDaug(0)==KP) && (getDaug(1)==PI0))) {
00073 setProbMax(2.0*(getArg(2)*getArg(2) + getArg(10)*getArg(10)));
00074 }
00075
00076 if (((getDaug(0)==PI0) && (getDaug(1)==KM)) || ((getDaug(0)==KM) && (getDaug(1)==PI0))) {
00077 setProbMax( 2.0*(getArg(4)*getArg(4) + getArg(12)*getArg(12)));
00078 }
00079
00080 if (((getDaug(0)==PIP) && (getDaug(1)==K0)) || ((getDaug(0)==K0) && (getDaug(1)==PIP))) {
00081 setProbMax( 4.0*(getArg(6)*getArg(6) + getArg(10)*getArg(10)));
00082 }
00083
00084 if (((getDaug(0)==PIM) && (getDaug(1)==KB)) || ((getDaug(0)==KB) && (getDaug(1)==PIM))) {
00085 setProbMax( 4.0*(getArg(8)*getArg(8) + getArg(12)*getArg(12)));
00086 }
00087
00088 if (((getDaug(0)==PI0) && (getDaug(1)==K0)) || ((getDaug(0)==K0) && (getDaug(1)==PI0))) {
00089 setProbMax( 2.0*(getArg(2)*getArg(2) + getArg(10)*getArg(10)));
00090 }
00091
00092 if (((getDaug(0)==PI0) && (getDaug(1)==KB)) || ((getDaug(0)==KB) && (getDaug(1)==PI0))) {
00093 setProbMax( 2.0*(getArg(4)*getArg(4) + getArg(12)*getArg(12)));
00094 }
00095
00096 if (((getDaug(0)==PIM) && (getDaug(1)==KP)) || ((getDaug(0)==KP) && (getDaug(1)==PIM))) {
00097 setProbMax( 4.0*(getArg(6)*getArg(6) + getArg(10)*getArg(10)));
00098 }
00099
00100 if (((getDaug(0)==PIP) && (getDaug(1)==KM)) || ((getDaug(0)==KM) && (getDaug(1)==PIP))) {
00101 setProbMax( 4.0*(getArg(8)*getArg(8) + getArg(12)*getArg(12)));
00102 }
00103 }
00104
00105 void EvtBtoKpiCPiso::decay( EvtParticle *p ){
00106
00107
00108 p->initializePhaseSpace(getNDaug(),getDaugs());
00109
00110 static EvtId PI0=EvtPDL::getId("pi0");
00111 static EvtId PIP=EvtPDL::getId("pi+");
00112 static EvtId PIM=EvtPDL::getId("pi+");
00113 static EvtId K0=EvtPDL::getId("K0");
00114 static EvtId KB=EvtPDL::getId("anti-K0");
00115 static EvtId KP=EvtPDL::getId("K+");
00116 static EvtId KM=EvtPDL::getId("K-");
00117
00118
00119 EvtComplex A;
00120 EvtComplex U, Ubar, V, Vbar, W, Wbar;
00121
00122 U = EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
00123 Ubar = EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
00124 V = EvtComplex(getArg(6)*cos(getArg(7)),getArg(6)*sin(getArg(7)));
00125 Vbar = EvtComplex(getArg(8)*cos(getArg(9)),getArg(8)*sin(getArg(9)));
00126 W = EvtComplex(getArg(10)*cos(getArg(11)),getArg(10)*sin(getArg(11)));
00127 Wbar = EvtComplex(getArg(12)*cos(getArg(13)),getArg(12)*sin(getArg(13)));
00128
00129
00130
00131
00132 if (((getDaug(0)==PI0) && (getDaug(1)==KP)) || ((getDaug(0)==KP) && (getDaug(1)==PI0))) {
00133
00134
00135
00136 A = U - W;
00137 }
00138
00139 if (((getDaug(0)==PI0) && (getDaug(1)==KM)) || ((getDaug(0)==KM) && (getDaug(1)==PI0))) {
00140
00141
00142
00143 A = Ubar - Wbar;
00144 }
00145
00146 if (((getDaug(0)==PIP) && (getDaug(1)==K0)) || ((getDaug(0)==K0) && (getDaug(1)==PIP))) {
00147
00148
00149
00150 A = sqrt(2.0)*(V + W);
00151 }
00152
00153 if (((getDaug(0)==PIM) && (getDaug(1)==KB)) || ((getDaug(0)==KB) && (getDaug(1)==PIM))) {
00154
00155
00156 A = sqrt(2.0)*(Vbar + Wbar);
00157 }
00158
00159 if (((getDaug(0)==PI0) && (getDaug(1)==K0)) || ((getDaug(0)==K0) && (getDaug(1)==PI0))) {
00160
00161
00162
00163 A= U + W;
00164 }
00165
00166 if (((getDaug(0)==PI0) && (getDaug(1)==KB)) || ((getDaug(0)==KB) && (getDaug(1)==PI0))) {
00167
00168 A = Ubar + Wbar;
00169 }
00170
00171 if (((getDaug(0)==PIM) && (getDaug(1)==KP)) || ((getDaug(0)==KP) && (getDaug(1)==PIM))) {
00172
00173
00174
00175 A = sqrt(2.0)*(V - W);
00176 }
00177
00178 if (((getDaug(0)==PIP) && (getDaug(1)==KM)) || ((getDaug(0)==KM) && (getDaug(1)==PIP))) {
00179
00180 A = sqrt(2.0)*(Vbar - Wbar);
00181 }
00182
00183 vertex(A);
00184
00185 return ;
00186 }
00187