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 "EvtGenBase/EvtResonance.hh"
00028 #include "EvtGenBase/EvtResonance2.hh"
00029 #include "EvtGenModels/EvtDDalitz.hh"
00030 #include <string>
00031 #include "EvtGenBase/EvtConst.hh"
00032 #include "EvtGenBase/EvtFlatte.hh"
00033 #include "EvtGenBase/EvtDecayTable.hh"
00034 using std::endl;
00035
00036 EvtDDalitz::~EvtDDalitz() {}
00037
00038 void EvtDDalitz::getName(std::string& model_name){
00039
00040 model_name="D_DALITZ";
00041
00042 }
00043
00044
00045 EvtDecayBase* EvtDDalitz::clone(){
00046
00047 return new EvtDDalitz;
00048
00049 }
00050
00051 void EvtDDalitz::init(){
00052
00053
00054
00055 static EvtId DM=EvtPDL::getId("D-");
00056 static EvtId DP=EvtPDL::getId("D+");
00057 static EvtId D0=EvtPDL::getId("D0");
00058 static EvtId D0B=EvtPDL::getId("anti-D0");
00059 static EvtId DSP=EvtPDL::getId("D_s+");
00060 static EvtId DSM=EvtPDL::getId("D_s-");
00061 static EvtId KM=EvtPDL::getId("K-");
00062 static EvtId KP=EvtPDL::getId("K+");
00063 static EvtId K0=EvtPDL::getId("K0");
00064 static EvtId KB=EvtPDL::getId("anti-K0");
00065 static EvtId KL=EvtPDL::getId("K_L0");
00066 static EvtId KS=EvtPDL::getId("K_S0");
00067 static EvtId PIM=EvtPDL::getId("pi-");
00068 static EvtId PIP=EvtPDL::getId("pi+");
00069 static EvtId PI0=EvtPDL::getId("pi0");
00070
00071 static double MPI = EvtPDL::getMeanMass(PI0);
00072 static double MKP = EvtPDL::getMeanMass(KP);
00073
00074
00075 checkNArg(0);
00076 checkNDaug(3);
00077
00078 checkSpinParent(EvtSpinType::SCALAR);
00079
00080 checkSpinDaughter(0,EvtSpinType::SCALAR);
00081 checkSpinDaughter(1,EvtSpinType::SCALAR);
00082 checkSpinDaughter(2,EvtSpinType::SCALAR);
00083
00084 EvtId parnum=getParentId();
00085 EvtId d1=getDaug(0);
00086 EvtId d2=getDaug(1);
00087 EvtId d3=getDaug(2);
00088 _flag=0;
00089 if ( parnum == D0 ) {
00090
00091 if ( d1==KM && d2==PIP && d3==PI0 ) { _flag=4; _d1=0; _d2=1; _d3=2;}
00092 if ( d1==KM && d3==PIP && d2==PI0 ) { _flag=4; _d1=0; _d2=2; _d3=1;}
00093 if ( d2==KM && d1==PIP && d3==PI0 ) { _flag=4; _d1=1; _d2=0; _d3=2;}
00094 if ( d2==KM && d3==PIP && d1==PI0 ) { _flag=4; _d1=1; _d2=2; _d3=0;}
00095 if ( d3==KM && d1==PIP && d2==PI0 ) { _flag=4; _d1=2; _d2=0; _d3=1;}
00096 if ( d3==KM && d2==PIP && d1==PI0 ) { _flag=4; _d1=2; _d2=1; _d3=0;}
00097
00098 if ( d1==KB && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00099 if ( d1==KB && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00100 if ( d2==KB && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00101 if ( d2==KB && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00102 if ( d3==KB && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00103 if ( d3==KB && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00104
00105 if ( d1==KL && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00106 if ( d1==KL && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00107 if ( d2==KL && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00108 if ( d2==KL && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00109 if ( d3==KL && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00110 if ( d3==KL && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00111
00112 if ( d1==KS && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00113 if ( d1==KS && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00114 if ( d2==KS && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00115 if ( d2==KS && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00116 if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00117 if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00118
00119
00120 if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00121 if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00122 if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00123 if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00124 if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00125 if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00126
00127 if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00128 if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00129 if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00130 if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00131 if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00132 if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00133
00134 if ( d1==K0 && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00135 if ( d1==K0 && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00136 if ( d2==K0 && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00137 if ( d2==K0 && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00138 if ( d3==K0 && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00139 if ( d3==K0 && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00140 }
00141 if ( parnum == D0B ) {
00142
00143 if ( d1==KP && d2==PIM && d3==PI0 ) { _flag=4; _d1=0; _d2=1; _d3=2;}
00144 if ( d1==KP && d3==PIM && d2==PI0 ) { _flag=4; _d1=0; _d2=2; _d3=1;}
00145 if ( d2==KP && d1==PIM && d3==PI0 ) { _flag=4; _d1=1; _d2=0; _d3=2;}
00146 if ( d2==KP && d3==PIM && d1==PI0 ) { _flag=4; _d1=1; _d2=2; _d3=0;}
00147 if ( d3==KP && d1==PIM && d2==PI0 ) { _flag=4; _d1=2; _d2=0; _d3=1;}
00148 if ( d3==KP && d2==PIM && d1==PI0 ) { _flag=4; _d1=2; _d2=1; _d3=0;}
00149
00150 if ( d1==K0 && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00151 if ( d1==K0 && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00152 if ( d2==K0 && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00153 if ( d2==K0 && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00154 if ( d3==K0 && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00155 if ( d3==K0 && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00156
00157 if ( d1==KL && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00158 if ( d1==KL && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00159 if ( d2==KL && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00160 if ( d2==KL && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00161 if ( d3==KL && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00162 if ( d3==KL && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00163
00164 if ( d1==KS && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
00165 if ( d1==KS && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
00166 if ( d2==KS && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
00167 if ( d2==KS && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
00168 if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
00169 if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
00170
00171 if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00172 if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00173 if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00174 if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00175 if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00176 if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00177
00178 if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00179 if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00180 if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00181 if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00182 if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00183 if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00184
00185 if ( d1==K0 && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
00186 if ( d1==K0 && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
00187 if ( d2==K0 && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
00188 if ( d2==K0 && d3==KP && d1==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
00189 if ( d3==K0 && d1==KP && d2==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
00190 if ( d3==K0 && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
00191
00192 }
00193
00194 if ( parnum == DP ) {
00195
00196 if ( d1==KB && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00197 if ( d1==KB && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00198 if ( d2==KB && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00199 if ( d2==KB && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00200 if ( d3==KB && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00201 if ( d3==KB && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00202
00203 if ( d1==KL && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00204 if ( d1==KL && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00205 if ( d2==KL && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00206 if ( d2==KL && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00207 if ( d3==KL && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00208 if ( d3==KL && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00209
00210 if ( d1==KS && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00211 if ( d1==KS && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00212 if ( d2==KS && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00213 if ( d2==KS && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00214 if ( d3==KS && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00215 if ( d3==KS && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00216
00217 if ( d1==KM && d2==PIP && d3==PIP ) { _flag=1; _d1=0; _d2=1; _d3=2;}
00218 if ( d2==KM && d1==PIP && d3==PIP ) { _flag=1; _d1=1; _d2=0; _d3=2;}
00219 if ( d3==KM && d1==PIP && d2==PIP ) { _flag=1; _d1=2; _d2=0; _d3=1;}
00220 }
00221
00222 if ( parnum == DM ) {
00223
00224 if ( d1==K0 && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00225 if ( d1==K0 && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00226 if ( d2==K0 && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00227 if ( d2==K0 && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00228 if ( d3==K0 && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00229 if ( d3==K0 && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00230
00231 if ( d1==KL && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00232 if ( d1==KL && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00233 if ( d2==KL && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00234 if ( d2==KL && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00235 if ( d3==KL && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00236 if ( d3==KL && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00237
00238 if ( d1==KS && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
00239 if ( d1==KS && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
00240 if ( d2==KS && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
00241 if ( d2==KS && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
00242 if ( d3==KS && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
00243 if ( d3==KS && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
00244
00245 if ( d1==KP && d2==PIM && d3==PIM ) { _flag=1; _d1=0; _d2=1; _d3=2;}
00246 if ( d2==KP && d1==PIM && d3==PIM ) { _flag=1; _d1=1; _d2=0; _d3=2;}
00247 if ( d3==KP && d1==PIM && d2==PIM ) { _flag=1; _d1=2; _d2=0; _d3=1;}
00248 }
00249
00250 if ( parnum == DSP ) {
00251 if ( d1==KM && d2==KP && d3==PIP ) { _flag=6; _d1=0; _d2=1; _d3=2; }
00252 if ( d1==KM && d3==KP && d2==PIP ) { _flag=6; _d1=0; _d2=2; _d3=1; }
00253 if ( d2==KM && d1==KP && d3==PIP ) { _flag=6; _d1=1; _d2=0; _d3=2; }
00254 if ( d2==KM && d3==KP && d1==PIP ) { _flag=6; _d1=1; _d2=2; _d3=0; }
00255 if ( d3==KM && d1==KP && d2==PIP ) { _flag=6; _d1=2; _d2=0; _d3=1; }
00256 if ( d3==KM && d2==KP && d1==PIP ) { _flag=6; _d1=2; _d2=1; _d3=0; }
00257 }
00258
00259 if ( parnum == DSM ) {
00260 if ( d1==KP && d2==KM && d3==PIM ) { _flag=6; _d1=0; _d2=1; _d3=2; }
00261 if ( d1==KP && d3==KM && d2==PIM ) { _flag=6; _d1=0; _d2=2; _d3=1; }
00262 if ( d2==KP && d1==KM && d3==PIM ) { _flag=6; _d1=1; _d2=0; _d3=2; }
00263 if ( d2==KP && d3==KM && d1==PIM ) { _flag=6; _d1=1; _d2=2; _d3=0; }
00264 if ( d3==KP && d1==KM && d2==PIM ) { _flag=6; _d1=2; _d2=0; _d3=1; }
00265 if ( d3==KP && d2==KM && d1==PIM ) { _flag=6; _d1=2; _d2=1; _d3=0; }
00266 }
00267
00268 if ( _flag==6) {
00269 _kkpi_params.push_back(EvtFlatteParam(MPI, MPI, 0.406));
00270 _kkpi_params.push_back(EvtFlatteParam(MKP, MKP, 0.800));
00271 }
00272
00273 if ( _flag==0) {
00274 report(ERROR,"EvtGen") << "EvtDDaltiz: Invalid mode."<<endl;
00275 assert(0);
00276 }
00277 }
00278
00279 void EvtDDalitz::initProbMax() {
00280
00281
00282
00283 if ( _flag==1 ) {setProbMax(9.6);}
00284 if ( _flag==2 ) {setProbMax(147.9);}
00285 if ( _flag==3 ) {setProbMax(5000.0);}
00286 if ( _flag==4 ) {setProbMax(3000.0);}
00287 if ( _flag==5 ) {setProbMax(10000000.0);}
00288 if ( _flag==6 ) {setProbMax(50000.0);}
00289
00290 }
00291
00292 void EvtDDalitz::decay( EvtParticle *p){
00293
00294
00295 static EvtId BP = EvtPDL::getId("B+");
00296 static EvtId BM = EvtPDL::getId("B-");
00297 static EvtId B0 = EvtPDL::getId("B0");
00298 static EvtId B0B = EvtPDL::getId("anti-B0");
00299 static EvtId DM=EvtPDL::getId("D-");
00300 static EvtId DP=EvtPDL::getId("D+");
00301 static EvtId D0=EvtPDL::getId("D0");
00302 static EvtId D0B=EvtPDL::getId("anti-D0");
00303 static EvtId KM=EvtPDL::getId("K-");
00304 static EvtId KP=EvtPDL::getId("K+");
00305 static EvtId K0=EvtPDL::getId("K0");
00306 static EvtId KB=EvtPDL::getId("anti-K0");
00307 static EvtId PIM=EvtPDL::getId("pi-");
00308 static EvtId PIP=EvtPDL::getId("pi+");
00309 static EvtId PI0=EvtPDL::getId("pi0");
00310
00311 double oneby2 = 0.707106782;
00312
00313 bool isBToDK=false;
00314 if ( p -> getParent () ) {
00315 std::string name1;
00316 EvtDecayTable::getDecayFunc(p->getParent())->getName(name1);
00317
00318 EvtId parId = p -> getParent()->getId ();
00319 if ( ( BP == parId ) || ( BM == parId ) || ( B0 == parId ) ||
00320 ( B0B == parId ) )
00321 if (name1 == "BTODDALITZCPK") isBToDK=true;
00322 }
00323
00324
00325
00326
00327 p->initializePhaseSpace(getNDaug(),getDaugs());
00328 EvtVector4R moms1 = p->getDaug(_d1)->getP4();
00329 EvtVector4R moms2 = p->getDaug(_d2)->getP4();
00330 EvtVector4R moms3 = p->getDaug(_d3)->getP4();
00331
00332 EvtVector4R p4_p;
00333 p4_p.set(p->mass(),0.0,0.0,0.0);
00334
00335 EvtComplex amp(1.0,0.0);
00336
00337
00338
00339
00340
00341
00342
00343
00344 if ( _flag==1) {
00345
00346
00347
00348 EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
00349 EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);
00350
00351 EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
00352 EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);
00353
00354 EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
00355 EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);
00356
00357 amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
00358
00359 }
00360
00361 if ( _flag==2) {
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372 EvtResonance DplusKpipi0Res1(p4_p,moms2,moms3,1.00,0.00,0.1512,0.7699,1);
00373 EvtResonance DplusKpipi0Res2(p4_p,moms3,moms1,0.8695,0.7191,0.0498,0.89159,1);
00374
00375 amp = 0.9522*EvtComplex(cos(-1.8565),sin(-1.8565)) + 1.00*DplusKpipi0Res1.relBrWig(0) + 0.8695*EvtComplex(cos(0.7191),sin(0.7191))*DplusKpipi0Res2.relBrWig(1);
00376
00377 }
00378
00379 if(_flag==3) {
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394 if ( isBToDK ) {
00395
00396 double gamma = EvtDecayTable::getDecayFunc( p->getParent() )
00397 -> getArg( 0 ) ;
00398
00399 double delta = EvtDecayTable::getDecayFunc( p->getParent() )
00400 -> getArg( 1 ) ;
00401
00402 double A = EvtDecayTable::getDecayFunc( p->getParent() )
00403 -> getArg( 2 ) ;
00404
00405 EvtComplex Factor( fabs( A ) * cos ( delta ) ,
00406 fabs( A ) * sin ( delta ) ) ;
00407
00408 if ( ( p->getParent()->getId() == BP ) ||
00409 ( p->getParent()->getId() == B0 ) ) {
00410
00411 Factor = Factor * EvtComplex( cos ( gamma ) , sin ( gamma ) ) ;
00412 if ( p->getId() == D0 ) {
00413
00414
00415
00416
00417
00418
00419 amp = amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) +
00420 Factor * amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
00421 }
00422 else {
00423 amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) +
00424 Factor * amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) ;
00425 }
00426 }
00427 else if ( ( p->getParent() -> getId() == BM ) ||
00428 ( p->getParent() -> getId() == B0B ) ) {
00429 Factor = Factor * EvtComplex( cos ( gamma ) , - sin ( gamma ) ) ;
00430
00431 if ( p->getId() == D0 ) {
00432 amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) +
00433 Factor * amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) ;
00434 }
00435 else {
00436 amp = amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) +
00437 Factor * amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
00438 }
00439 }
00440 }
00441 else {
00442 amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
00443 }
00444 }
00445
00446
00447 if(_flag==4) {
00448
00449 EvtResonance2 DKpipi0Res1(p4_p,moms2,moms3,1.0 ,0.0 ,0.1507,0.770 ,1);
00450 EvtResonance2 DKpipi0Res2(p4_p,moms1,moms2,0.39, -0.2 ,0.0505,0.8961,1);
00451 EvtResonance2 DKpipi0Res3(p4_p,moms1,moms3,0.44, 163.0 ,0.050 ,0.8915,1);
00452
00453 EvtResonance2 DKpipi0Res4(p4_p,moms1,moms3,0.77 ,55.5 ,0.294 ,1.412 ,0);
00454 EvtResonance2 DKpipi0Res5(p4_p,moms1,moms2,0.85 ,166.0 ,0.294 ,1.412 ,0);
00455 EvtResonance2 DKpipi0Res6(p4_p,moms2,moms3,2.5 ,171.0 ,0.240 ,1.700 ,1);
00456 EvtResonance2 DKpipi0Res7(p4_p,moms1,moms3,2.5 ,103.0 ,0.322 ,1.717 ,1);
00457
00458
00459
00460 double pi180inv = 1.0/EvtConst::radToDegrees;
00461
00462 amp = EvtComplex(1.75*cos(31.2*pi180inv),1.75*sin(31.2*pi180inv))
00463 + DKpipi0Res1.resAmpl() + DKpipi0Res2.resAmpl() + DKpipi0Res3.resAmpl()
00464 + DKpipi0Res4.resAmpl() + DKpipi0Res5.resAmpl()
00465 + DKpipi0Res6.resAmpl()
00466 + DKpipi0Res7.resAmpl();
00467
00468 }
00469
00470
00471 if(_flag==5) {
00472
00473
00474
00475
00476
00477
00478 if ( isBToDK ){
00479
00480 double gamma = EvtDecayTable::getDecayFunc( p->getParent() )
00481 -> getArg( 0 ) ;
00482
00483 double delta = EvtDecayTable::getDecayFunc( p->getParent() )
00484 -> getArg( 1 ) ;
00485
00486 double A = EvtDecayTable::getDecayFunc( p->getParent() )
00487 -> getArg( 2 ) ;
00488
00489 EvtComplex Factor( fabs( A ) * cos ( delta ) ,
00490 fabs( A ) * sin ( delta ) ) ;
00491
00492 if ( ( p->getParent()->getId() == BP ) ||
00493 ( p->getParent()->getId() == B0 ) ) {
00494
00495 Factor = Factor * EvtComplex( cos ( gamma ) , sin ( gamma ) ) ;
00496 if ( p->getId() == D0 ) {
00497
00498
00499
00500
00501
00502
00503 amp = amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) +
00504 Factor * amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
00505 }
00506 else {
00507 amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) +
00508 Factor * amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) ;
00509 }
00510 }
00511 else if ( ( p->getParent() -> getId() == BM ) ||
00512 ( p->getParent() -> getId() == B0B ) ) {
00513 Factor = Factor * EvtComplex( cos ( gamma ) , - sin ( gamma ) ) ;
00514
00515 if ( p->getId() == D0 ) {
00516 amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) +
00517 Factor * amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) ;
00518 }
00519 else {
00520 amp = amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) +
00521 Factor * amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
00522 }
00523 }
00524 }
00525 else {
00526 amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
00527 }
00528 }
00529
00530
00531
00532
00533
00534 if(_flag==6) {
00535 EvtResonance2 DsKKpiRes1(p4_p, moms3, moms1, 1.0, 0.0, 0.0455, 0.8944, 1, true);
00536 EvtResonance2 DsKKpiRes2(p4_p, moms3, moms1, 1.48, 138., 0.290, 1.414, 0);
00537 EvtFlatte DsKKpiRes3(p4_p, moms1, moms2, 5.07, 156., 0.965, _kkpi_params);
00538 EvtResonance2 DsKKpiRes4(p4_p, moms1, moms2, 1.15, -10., 0.00426, 1.019455, 1, true);
00539 EvtResonance2 DsKKpiRes5(p4_p, moms1, moms2, 1.28, 53., 0.265, 1.350, 0);
00540 EvtResonance2 DsKKpiRes6(p4_p, moms1, moms2, 1.19, 87., 0.137, 1.724, 0);
00541 amp = DsKKpiRes1.resAmpl() + DsKKpiRes2.resAmpl() + DsKKpiRes3.resAmpl()
00542 + DsKKpiRes4.resAmpl() + DsKKpiRes5.resAmpl() + DsKKpiRes6.resAmpl();
00543
00544 }
00545
00546
00547 vertex(amp);
00548
00549 return ;
00550 }
00551
00552 EvtComplex EvtDDalitz::amplDtoK0PiPi(EvtVector4R p4_p, EvtVector4R moms1,
00553 EvtVector4R moms2, EvtVector4R moms3) {
00554
00555
00556 EvtResonance2 DK2piRes1(p4_p,moms1,moms2,1.418,-190.0,0.0508,0.89166,1);
00557
00558 EvtResonance2 DK2piRes2(p4_p,moms1,moms2,1.818,-337.0,0.294 ,1.412 ,0);
00559
00560 EvtResonance2 DK2piRes3(p4_p,moms1,moms2,0.909, -5.0,0.0985,1.4256 ,2);
00561
00562 EvtResonance2 DK2piRes4(p4_p,moms1,moms2,5.091,-166.0,0.322 ,1.717 ,1);
00563
00564 EvtResonance2 DK2piRes5(p4_p,moms1,moms3,0.100, -19.0,0.0508,0.89166,1);
00565
00566
00567 EvtResonance2 DK2piRes6(p4_p,moms3,moms2,0.909,-340.0,0.1502,0.7693,1);
00568
00569 EvtResonance2 DK2piRes7(p4_p,moms3,moms2,.0336,-226.0,0.00844,0.78257,1);
00570
00571 EvtResonance2 DK2piRes8(p4_p,moms3,moms2,0.309,-152.0,0.05,0.977,0);
00572
00573 EvtResonance2 DK2piRes9(p4_p,moms3,moms2,1.636,-255.0,0.272,1.31,0);
00574
00575 EvtResonance2 DK2piRes10(p4_p,moms3,moms2,0.636,-32.0,0.1851,1.2754,2);
00576
00577 return EvtComplex(1.0,0.0) +
00578 DK2piRes1.resAmpl() + DK2piRes2.resAmpl() +
00579 DK2piRes3.resAmpl() + DK2piRes4.resAmpl() +
00580 DK2piRes5.resAmpl() + DK2piRes6.resAmpl() +
00581 DK2piRes7.resAmpl() + DK2piRes8.resAmpl() +
00582 DK2piRes9.resAmpl() + DK2piRes10.resAmpl();
00583 }
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595 EvtComplex EvtDDalitz::amplDtoK0KK(EvtVector4R p4_p, EvtVector4R moms1,
00596 EvtVector4R moms2, EvtVector4R moms3) {
00597
00598
00599 EvtResonance DK0KKRes1( p4_p, moms2, moms3, 113.75, -40.0, 0.0043,
00600 1.019456, 1 ) ;
00601
00602 EvtResonance DK0KKRes2( p4_p, moms2, moms3, 152.25, 69.0, 0.1196 , 0.9847,
00603 0 ) ;
00604
00605 EvtResonance DK0KKRes3( p4_p, moms2, moms3, 30.5, -201.0, 0.05, 0.980 ,
00606 0 ) ;
00607
00608 EvtResonance DK0KKRes4( p4_p, moms1, moms2, 85.75, -93.0, 0.1196 , 0.9847,
00609 0 ) ;
00610
00611 EvtResonance DK0KKRes5( p4_p, moms3, moms1, 8. , -53.0 ,0.1196, 0.9847,
00612 0 ) ;
00613
00614
00615 return EvtComplex(1.0,0.0) +
00616
00617 DK0KKRes1.resAmpl() + DK0KKRes2.resAmpl() +
00618
00619 DK0KKRes3.resAmpl() + DK0KKRes4.resAmpl() +
00620
00621 DK0KKRes5.resAmpl() ;
00622
00623
00624 }