Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
4 : // This software is part of the EvtGen package developed jointly
5 : // for the BaBar and CLEO collaborations. If you use all or part
6 : // of it, please give an appropriate acknowledgement.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 1998 Caltech, UCSB
10 : //
11 : // Module: EvtDDalitz.cc
12 : //
13 : // Description: Routine to handle three-body decays of D0/D0_bar or D+/D-
14 : //
15 : // Modification history:
16 : //
17 : // NK September 3, 1997 Module created
18 : //
19 : //------------------------------------------------------------------------
20 : //
21 : #include "EvtGenBase/EvtPatches.hh"
22 : #include <stdlib.h>
23 : #include "EvtGenBase/EvtParticle.hh"
24 : #include "EvtGenBase/EvtGenKine.hh"
25 : #include "EvtGenBase/EvtPDL.hh"
26 : #include "EvtGenBase/EvtReport.hh"
27 : #include "EvtGenBase/EvtResonance.hh"
28 : #include "EvtGenBase/EvtResonance2.hh"
29 : #include "EvtGenModels/EvtDDalitz.hh"
30 : #include <string>
31 : #include "EvtGenBase/EvtConst.hh"
32 : #include "EvtGenBase/EvtFlatte.hh"
33 : #include "EvtGenBase/EvtDecayTable.hh"
34 : using std::endl;
35 :
36 0 : EvtDDalitz::~EvtDDalitz() {}
37 :
38 : std::string EvtDDalitz::getName(){
39 :
40 0 : return "D_DALITZ";
41 :
42 : }
43 :
44 :
45 : EvtDecayBase* EvtDDalitz::clone(){
46 :
47 0 : return new EvtDDalitz;
48 :
49 0 : }
50 :
51 : void EvtDDalitz::init(){
52 :
53 : // check that there are 0 arguments
54 :
55 0 : static EvtId DM=EvtPDL::getId("D-");
56 0 : static EvtId DP=EvtPDL::getId("D+");
57 0 : static EvtId D0=EvtPDL::getId("D0");
58 0 : static EvtId D0B=EvtPDL::getId("anti-D0");
59 0 : static EvtId DSP=EvtPDL::getId("D_s+");
60 0 : static EvtId DSM=EvtPDL::getId("D_s-");
61 0 : static EvtId KM=EvtPDL::getId("K-");
62 0 : static EvtId KP=EvtPDL::getId("K+");
63 0 : static EvtId K0=EvtPDL::getId("K0");
64 0 : static EvtId KB=EvtPDL::getId("anti-K0");
65 0 : static EvtId KL=EvtPDL::getId("K_L0");
66 0 : static EvtId KS=EvtPDL::getId("K_S0");
67 0 : static EvtId PIM=EvtPDL::getId("pi-");
68 0 : static EvtId PIP=EvtPDL::getId("pi+");
69 0 : static EvtId PI0=EvtPDL::getId("pi0");
70 :
71 0 : static double MPI = EvtPDL::getMeanMass(PI0);
72 0 : static double MKP = EvtPDL::getMeanMass(KP);
73 :
74 :
75 0 : checkNArg(0);
76 0 : checkNDaug(3);
77 :
78 0 : checkSpinParent(EvtSpinType::SCALAR);
79 :
80 0 : checkSpinDaughter(0,EvtSpinType::SCALAR);
81 0 : checkSpinDaughter(1,EvtSpinType::SCALAR);
82 0 : checkSpinDaughter(2,EvtSpinType::SCALAR);
83 :
84 0 : EvtId parnum=getParentId();
85 0 : EvtId d1=getDaug(0);
86 0 : EvtId d2=getDaug(1);
87 0 : EvtId d3=getDaug(2);
88 :
89 0 : _flag=0;
90 0 : if ( parnum == D0 ) {
91 : //look for either a K- pi+ pi0 or K0bar pi+ pi-
92 0 : if ( d1==KM && d2==PIP && d3==PI0 ) { _flag=4; _d1=0; _d2=1; _d3=2;}
93 0 : if ( d1==KM && d3==PIP && d2==PI0 ) { _flag=4; _d1=0; _d2=2; _d3=1;}
94 0 : if ( d2==KM && d1==PIP && d3==PI0 ) { _flag=4; _d1=1; _d2=0; _d3=2;}
95 0 : if ( d2==KM && d3==PIP && d1==PI0 ) { _flag=4; _d1=1; _d2=2; _d3=0;}
96 0 : if ( d3==KM && d1==PIP && d2==PI0 ) { _flag=4; _d1=2; _d2=0; _d3=1;}
97 0 : if ( d3==KM && d2==PIP && d1==PI0 ) { _flag=4; _d1=2; _d2=1; _d3=0;}
98 :
99 0 : if ( d1==KB && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
100 0 : if ( d1==KB && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
101 0 : if ( d2==KB && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
102 0 : if ( d2==KB && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
103 0 : if ( d3==KB && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
104 0 : if ( d3==KB && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
105 :
106 0 : if ( d1==KL && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
107 0 : if ( d1==KL && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
108 0 : if ( d2==KL && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
109 0 : if ( d2==KL && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
110 0 : if ( d3==KL && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
111 0 : if ( d3==KL && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
112 :
113 0 : if ( d1==KS && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
114 0 : if ( d1==KS && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
115 0 : if ( d2==KS && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
116 0 : if ( d2==KS && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
117 0 : if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
118 0 : if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
119 :
120 0 : if ( d1==KS && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
121 0 : if ( d1==KS && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
122 0 : if ( d2==KS && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
123 0 : if ( d2==KS && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
124 0 : if ( d3==KS && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
125 0 : if ( d3==KS && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
126 :
127 0 : if ( d1==KL && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
128 0 : if ( d1==KL && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
129 0 : if ( d2==KL && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
130 0 : if ( d2==KL && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
131 0 : if ( d3==KL && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
132 0 : if ( d3==KL && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
133 :
134 0 : if ( d1==KB && d2==KP && d3==KM ) {_flag=5;_d1=0;_d2=1;_d3=2;}
135 0 : if ( d1==KB && d3==KP && d2==KM ) {_flag=5;_d1=0;_d2=2;_d3=1;}
136 0 : if ( d2==KB && d1==KP && d3==KM ) {_flag=5;_d1=1;_d2=0;_d3=2;}
137 0 : if ( d2==KB && d3==KP && d1==KM ) {_flag=5;_d1=2;_d2=0;_d3=1;}
138 0 : if ( d3==KB && d1==KP && d2==KM ) {_flag=5;_d1=1;_d2=2;_d3=0;}
139 0 : if ( d3==KB && d2==KP && d1==KM ) {_flag=5;_d1=2;_d2=1;_d3=0;}
140 :
141 0 : if ( d1==PIM && d2==PIP && d3==PI0 ) { _flag=12;_d1=0;_d2=1;_d3=2;}
142 0 : if ( d1==PIM && d3==PIP && d2==PI0 ) { _flag=12;_d1=0;_d2=2;_d3=1;}
143 0 : if ( d2==PIM && d1==PIP && d3==PI0 ) { _flag=12;_d1=1;_d2=0;_d3=2;}
144 0 : if ( d2==PIM && d3==PIP && d1==PI0 ) { _flag=12;_d1=2;_d2=0;_d3=1;}
145 0 : if ( d3==PIM && d1==PIP && d2==PI0 ) { _flag=12;_d1=1;_d2=2;_d3=0;}
146 0 : if ( d3==PIM && d2==PIP && d1==PI0 ) { _flag=12;_d1=2;_d2=1;_d3=0;}
147 : }
148 0 : if ( parnum == D0B ) {
149 : //look for either a K+ pi- pi0 or K0 pi+ pi-
150 0 : if ( d1==KP && d2==PIM && d3==PI0 ) { _flag=4; _d1=0; _d2=1; _d3=2;}
151 0 : if ( d1==KP && d3==PIM && d2==PI0 ) { _flag=4; _d1=0; _d2=2; _d3=1;}
152 0 : if ( d2==KP && d1==PIM && d3==PI0 ) { _flag=4; _d1=1; _d2=0; _d3=2;}
153 0 : if ( d2==KP && d3==PIM && d1==PI0 ) { _flag=4; _d1=1; _d2=2; _d3=0;}
154 0 : if ( d3==KP && d1==PIM && d2==PI0 ) { _flag=4; _d1=2; _d2=0; _d3=1;}
155 0 : if ( d3==KP && d2==PIM && d1==PI0 ) { _flag=4; _d1=2; _d2=1; _d3=0;}
156 :
157 0 : if ( d1==K0 && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
158 0 : if ( d1==K0 && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
159 0 : if ( d2==K0 && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
160 0 : if ( d2==K0 && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
161 0 : if ( d3==K0 && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
162 0 : if ( d3==K0 && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
163 :
164 0 : if ( d1==KL && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
165 0 : if ( d1==KL && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
166 0 : if ( d2==KL && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
167 0 : if ( d2==KL && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
168 0 : if ( d3==KL && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
169 0 : if ( d3==KL && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
170 :
171 0 : if ( d1==KS && d2==PIP && d3==PIM ) { _flag=3; _d1=0; _d2=1; _d3=2;}
172 0 : if ( d1==KS && d3==PIP && d2==PIM ) { _flag=3; _d1=0; _d2=2; _d3=1;}
173 0 : if ( d2==KS && d1==PIP && d3==PIM ) { _flag=3; _d1=1; _d2=0; _d3=2;}
174 0 : if ( d2==KS && d3==PIP && d1==PIM ) { _flag=3; _d1=1; _d2=2; _d3=0;}
175 0 : if ( d3==KS && d1==PIP && d2==PIM ) { _flag=3; _d1=2; _d2=0; _d3=1;}
176 0 : if ( d3==KS && d2==PIP && d1==PIM ) { _flag=3; _d1=2; _d2=1; _d3=0;}
177 :
178 0 : if ( d1==KS && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
179 0 : if ( d1==KS && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
180 0 : if ( d2==KS && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
181 0 : if ( d2==KS && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
182 0 : if ( d3==KS && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
183 0 : if ( d3==KS && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
184 :
185 0 : if ( d1==KL && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
186 0 : if ( d1==KL && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
187 0 : if ( d2==KL && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
188 0 : if ( d2==KL && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
189 0 : if ( d3==KL && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
190 0 : if ( d3==KL && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
191 :
192 0 : if ( d1==K0 && d2==KM && d3==KP ) {_flag=5;_d1=0;_d2=1;_d3=2;}
193 0 : if ( d1==K0 && d3==KM && d2==KP ) {_flag=5;_d1=0;_d2=2;_d3=1;}
194 0 : if ( d2==K0 && d1==KM && d3==KP ) {_flag=5;_d1=1;_d2=0;_d3=2;}
195 0 : if ( d2==K0 && d3==KM && d1==KP ) {_flag=5;_d1=2;_d2=0;_d3=1;}
196 0 : if ( d3==K0 && d1==KM && d2==KP ) {_flag=5;_d1=1;_d2=2;_d3=0;}
197 0 : if ( d3==K0 && d2==KM && d1==KP ) {_flag=5;_d1=2;_d2=1;_d3=0;}
198 :
199 0 : if ( d1==PIP && d2==PIM && d3==PI0 ) { _flag=12;_d1=0;_d2=1;_d3=2;}
200 0 : if ( d1==PIP && d3==PIM && d2==PI0 ) { _flag=12;_d1=0;_d2=2;_d3=1;}
201 0 : if ( d2==PIP && d1==PIM && d3==PI0 ) { _flag=12;_d1=1;_d2=0;_d3=2;}
202 0 : if ( d2==PIP && d3==PIM && d1==PI0 ) { _flag=12;_d1=2;_d2=0;_d3=1;}
203 0 : if ( d3==PIP && d1==PIM && d2==PI0 ) { _flag=12;_d1=1;_d2=2;_d3=0;}
204 0 : if ( d3==PIP && d2==PIM && d1==PI0 ) { _flag=12;_d1=2;_d2=1;_d3=0;}
205 :
206 : }
207 :
208 0 : if ( parnum == DP ) {
209 : //look for K- pi+ pi+
210 0 : if ( d1==KB && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
211 0 : if ( d1==KB && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
212 0 : if ( d2==KB && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
213 0 : if ( d2==KB && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
214 0 : if ( d3==KB && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
215 0 : if ( d3==KB && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
216 :
217 0 : if ( d1==KL && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
218 0 : if ( d1==KL && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
219 0 : if ( d2==KL && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
220 0 : if ( d2==KL && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
221 0 : if ( d3==KL && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
222 0 : if ( d3==KL && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
223 :
224 0 : if ( d1==KS && d2==PIP && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
225 0 : if ( d1==KS && d3==PIP && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
226 0 : if ( d2==KS && d1==PIP && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
227 0 : if ( d2==KS && d3==PIP && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
228 0 : if ( d3==KS && d1==PIP && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
229 0 : if ( d3==KS && d2==PIP && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
230 :
231 0 : if ( d1==KM && d2==PIP && d3==PIP ) { _flag=1; _d1=0; _d2=1; _d3=2;}
232 0 : if ( d2==KM && d1==PIP && d3==PIP ) { _flag=1; _d1=1; _d2=0; _d3=2;}
233 0 : if ( d3==KM && d1==PIP && d2==PIP ) { _flag=1; _d1=2; _d2=0; _d3=1;}
234 : }
235 :
236 0 : if ( parnum == DM ) {
237 : //look for K- pi+ pi+
238 0 : if ( d1==K0 && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
239 0 : if ( d1==K0 && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
240 0 : if ( d2==K0 && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
241 0 : if ( d2==K0 && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
242 0 : if ( d3==K0 && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
243 0 : if ( d3==K0 && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
244 :
245 0 : if ( d1==KL && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
246 0 : if ( d1==KL && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
247 0 : if ( d2==KL && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
248 0 : if ( d2==KL && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
249 0 : if ( d3==KL && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
250 0 : if ( d3==KL && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
251 :
252 0 : if ( d1==KS && d2==PIM && d3==PI0 ) { _flag=2; _d1=0; _d2=1; _d3=2;}
253 0 : if ( d1==KS && d3==PIM && d2==PI0 ) { _flag=2; _d1=0; _d2=2; _d3=1;}
254 0 : if ( d2==KS && d1==PIM && d3==PI0 ) { _flag=2; _d1=1; _d2=0; _d3=2;}
255 0 : if ( d2==KS && d3==PIM && d1==PI0 ) { _flag=2; _d1=1; _d2=2; _d3=0;}
256 0 : if ( d3==KS && d1==PIM && d2==PI0 ) { _flag=2; _d1=2; _d2=0; _d3=1;}
257 0 : if ( d3==KS && d2==PIM && d1==PI0 ) { _flag=2; _d1=2; _d2=1; _d3=0;}
258 :
259 0 : if ( d1==KP && d2==PIM && d3==PIM ) { _flag=1; _d1=0; _d2=1; _d3=2;}
260 0 : if ( d2==KP && d1==PIM && d3==PIM ) { _flag=1; _d1=1; _d2=0; _d3=2;}
261 0 : if ( d3==KP && d1==PIM && d2==PIM ) { _flag=1; _d1=2; _d2=0; _d3=1;}
262 : }
263 :
264 0 : if ( parnum == DSP ) {
265 0 : if ( d1==KM && d2==KP && d3==PIP ) { _flag=6; _d1=0; _d2=1; _d3=2; }
266 0 : if ( d1==KM && d3==KP && d2==PIP ) { _flag=6; _d1=0; _d2=2; _d3=1; }
267 0 : if ( d2==KM && d1==KP && d3==PIP ) { _flag=6; _d1=1; _d2=0; _d3=2; }
268 0 : if ( d2==KM && d3==KP && d1==PIP ) { _flag=6; _d1=1; _d2=2; _d3=0; }
269 0 : if ( d3==KM && d1==KP && d2==PIP ) { _flag=6; _d1=2; _d2=0; _d3=1; }
270 0 : if ( d3==KM && d2==KP && d1==PIP ) { _flag=6; _d1=2; _d2=1; _d3=0; }
271 :
272 0 : if ( d1==PIM && d2==PIP && d3==KP ) { _flag=9; _d1=0; _d2=1; _d3=2; }
273 0 : if ( d1==PIM && d3==PIP && d2==KP ) { _flag=9; _d1=0; _d2=2; _d3=1; }
274 0 : if ( d2==PIM && d1==PIP && d3==KP ) { _flag=9; _d1=1; _d2=0; _d3=2; }
275 0 : if ( d2==PIM && d3==PIP && d1==KP ) { _flag=9; _d1=1; _d2=2; _d3=0; }
276 0 : if ( d3==PIM && d1==PIP && d2==KP ) { _flag=9; _d1=2; _d2=0; _d3=1; }
277 0 : if ( d3==PIM && d2==PIP && d1==KP ) { _flag=9; _d1=2; _d2=1; _d3=0; }
278 :
279 0 : if ( d1==PIM && d2==PIP && d3==PIP ) { _flag=11; _d1=0; _d2=1; _d3=2; }
280 0 : if ( d1==PIM && d3==PIP && d2==PIP ) { _flag=11; _d1=0; _d2=2; _d3=1; }
281 0 : if ( d2==PIM && d1==PIP && d3==PIP ) { _flag=11; _d1=1; _d2=0; _d3=2; }
282 0 : if ( d2==PIM && d3==PIP && d1==PIP ) { _flag=11; _d1=1; _d2=2; _d3=0; }
283 0 : if ( d3==PIM && d1==PIP && d2==PIP ) { _flag=11; _d1=2; _d2=0; _d3=1; }
284 0 : if ( d3==PIM && d2==PIP && d1==PIP ) { _flag=11; _d1=2; _d2=1; _d3=0; }
285 : }
286 :
287 0 : if ( parnum == DSM ) {
288 0 : if ( d1==KP && d2==KM && d3==PIM ) { _flag=6; _d1=0; _d2=1; _d3=2; }
289 0 : if ( d1==KP && d3==KM && d2==PIM ) { _flag=6; _d1=0; _d2=2; _d3=1; }
290 0 : if ( d2==KP && d1==KM && d3==PIM ) { _flag=6; _d1=1; _d2=0; _d3=2; }
291 0 : if ( d2==KP && d3==KM && d1==PIM ) { _flag=6; _d1=1; _d2=2; _d3=0; }
292 0 : if ( d3==KP && d1==KM && d2==PIM ) { _flag=6; _d1=2; _d2=0; _d3=1; }
293 0 : if ( d3==KP && d2==KM && d1==PIM ) { _flag=6; _d1=2; _d2=1; _d3=0; }
294 :
295 0 : if ( d1==PIP && d2==PIM && d3==KM ) { _flag=9; _d1=0; _d2=1; _d3=2; }
296 0 : if ( d1==PIP && d3==PIM && d2==KM ) { _flag=9; _d1=0; _d2=2; _d3=1; }
297 0 : if ( d2==PIP && d1==PIM && d3==KM ) { _flag=9; _d1=1; _d2=0; _d3=2; }
298 0 : if ( d2==PIP && d3==PIM && d1==KM ) { _flag=9; _d1=1; _d2=2; _d3=0; }
299 0 : if ( d3==PIP && d1==PIM && d2==KM ) { _flag=9; _d1=2; _d2=0; _d3=1; }
300 0 : if ( d3==PIP && d2==PIM && d1==KM ) { _flag=9; _d1=2; _d2=1; _d3=0; }
301 :
302 0 : if ( d1==PIP && d2==PIM && d3==PIM ) { _flag=11; _d1=0; _d2=1; _d3=2; }
303 0 : if ( d1==PIP && d3==PIM && d2==PIM ) { _flag=11; _d1=0; _d2=2; _d3=1; }
304 0 : if ( d2==PIP && d1==PIM && d3==PIM ) { _flag=11; _d1=1; _d2=0; _d3=2; }
305 0 : if ( d2==PIP && d3==PIM && d1==PIM ) { _flag=11; _d1=1; _d2=2; _d3=0; }
306 0 : if ( d3==PIP && d1==PIM && d2==PIM ) { _flag=11; _d1=2; _d2=0; _d3=1; }
307 0 : if ( d3==PIP && d2==PIM && d1==PIM ) { _flag=11; _d1=2; _d2=1; _d3=0; }
308 :
309 : }
310 0 : if ( parnum == DP ) {
311 0 : if ( d1==KM && d2==KP && d3==PIP ) { _flag=7; _d1=0; _d2=1; _d3=2; }
312 0 : if ( d1==KM && d3==KP && d2==PIP ) { _flag=7; _d1=0; _d2=2; _d3=1; }
313 0 : if ( d2==KM && d1==KP && d3==PIP ) { _flag=7; _d1=1; _d2=0; _d3=2; }
314 0 : if ( d2==KM && d3==KP && d1==PIP ) { _flag=7; _d1=2; _d2=0; _d3=1; }
315 0 : if ( d3==KM && d1==KP && d2==PIP ) { _flag=7; _d1=1; _d2=2; _d3=0; }
316 0 : if ( d3==KM && d2==KP && d1==PIP ) { _flag=7; _d1=2; _d2=1; _d3=0; }
317 :
318 0 : if ( d1==PIM && d2==PIP && d3==KP ) { _flag=8; _d1=0; _d2=1; _d3=2; }
319 0 : if ( d1==PIM && d3==PIP && d2==KP ) { _flag=8; _d1=0; _d2=2; _d3=1; }
320 0 : if ( d2==PIM && d1==PIP && d3==KP ) { _flag=8; _d1=1; _d2=0; _d3=2; }
321 0 : if ( d2==PIM && d3==PIP && d1==KP ) { _flag=8; _d1=1; _d2=2; _d3=0; }
322 0 : if ( d3==PIM && d1==PIP && d2==KP ) { _flag=8; _d1=2; _d2=0; _d3=1; }
323 0 : if ( d3==PIM && d2==PIP && d1==KP ) { _flag=8; _d1=2; _d2=1; _d3=0; }
324 :
325 0 : if ( d1==PIM && d2==PIP && d3==PIP ) { _flag=10; _d1=0; _d2=1; _d3=2; }
326 0 : if ( d1==PIM && d3==PIP && d2==PIP ) { _flag=10; _d1=0; _d2=2; _d3=1; }
327 0 : if ( d2==PIM && d1==PIP && d3==PIP ) { _flag=10; _d1=1; _d2=0; _d3=2; }
328 0 : if ( d2==PIM && d3==PIP && d1==PIP ) { _flag=10; _d1=1; _d2=2; _d3=0; }
329 0 : if ( d3==PIM && d1==PIP && d2==PIP ) { _flag=10; _d1=2; _d2=0; _d3=1; }
330 0 : if ( d3==PIM && d2==PIP && d1==PIP ) { _flag=10; _d1=2; _d2=1; _d3=0; }
331 :
332 : }
333 0 : if ( parnum == DM ) {
334 0 : if ( d1==KP && d2==KM && d3==PIM ) { _flag=7; _d1=0; _d2=1; _d3=2; }
335 0 : if ( d1==KP && d3==KM && d2==PIM ) { _flag=7; _d1=0; _d2=2; _d3=1; }
336 0 : if ( d2==KP && d1==KM && d3==PIM ) { _flag=7; _d1=1; _d2=0; _d3=2; }
337 0 : if ( d2==KP && d3==KM && d1==PIM ) { _flag=7; _d1=2; _d2=0; _d3=1; }
338 0 : if ( d3==KP && d1==KM && d2==PIM ) { _flag=7; _d1=1; _d2=2; _d3=0; }
339 0 : if ( d3==KP && d2==KM && d1==PIM ) { _flag=7; _d1=2; _d2=1; _d3=0; }
340 :
341 0 : if ( d1==PIP && d2==PIM && d3==KM ) { _flag=8; _d1=0; _d2=1; _d3=2; }
342 0 : if ( d1==PIP && d3==PIM && d2==KM ) { _flag=8; _d1=0; _d2=2; _d3=1; }
343 0 : if ( d2==PIP && d1==PIM && d3==KM ) { _flag=8; _d1=1; _d2=0; _d3=2; }
344 0 : if ( d2==PIP && d3==PIM && d1==KM ) { _flag=8; _d1=1; _d2=2; _d3=0; }
345 0 : if ( d3==PIP && d1==PIM && d2==KM ) { _flag=8; _d1=2; _d2=0; _d3=1; }
346 0 : if ( d3==PIP && d2==PIM && d1==KM ) { _flag=8; _d1=2; _d2=1; _d3=0; }
347 :
348 0 : if ( d1==PIP && d2==PIM && d3==PIM ) { _flag=10; _d1=0; _d2=1; _d3=2; }
349 0 : if ( d1==PIP && d3==PIM && d2==PIM ) { _flag=10; _d1=0; _d2=2; _d3=1; }
350 0 : if ( d2==PIP && d1==PIM && d3==PIM ) { _flag=10; _d1=1; _d2=0; _d3=2; }
351 0 : if ( d2==PIP && d3==PIM && d1==PIM ) { _flag=10; _d1=1; _d2=2; _d3=0; }
352 0 : if ( d3==PIP && d1==PIM && d2==PIM ) { _flag=10; _d1=2; _d2=0; _d3=1; }
353 0 : if ( d3==PIP && d2==PIM && d1==PIM ) { _flag=10; _d1=2; _d2=1; _d3=0; }
354 : }
355 :
356 0 : if ( _flag==6) {
357 0 : _kkpi_params.push_back(EvtFlatteParam(MPI, MPI, 0.406));
358 0 : _kkpi_params.push_back(EvtFlatteParam(MKP, MKP, 0.800));
359 0 : }
360 :
361 0 : if ( _flag==0) {
362 0 : report(Severity::Error,"EvtGen") << "EvtDDaltiz: Invalid mode."<<endl;
363 0 : assert(0);
364 : }
365 0 : }
366 :
367 : void EvtDDalitz::initProbMax() {
368 :
369 : // probmax different for different modes!
370 :
371 0 : if ( _flag==1 ) {setProbMax(2500.0);}
372 0 : if ( _flag==2 ) {setProbMax(150.0);}
373 0 : if ( _flag==3 ) {setProbMax(3000.0);}
374 0 : if ( _flag==4 ) {setProbMax(600.0);}
375 0 : if ( _flag==5 ) {setProbMax(2500000.0);}
376 0 : if ( _flag==6 ) {setProbMax(45000.0);}
377 0 : if ( _flag==7 ) {setProbMax(35000.0);}
378 0 : if ( _flag==8 ) {setProbMax(2500.0);}
379 0 : if ( _flag==9 ) {setProbMax(1700.0);}
380 0 : if ( _flag==10 ) {setProbMax(1300.0);}
381 0 : if ( _flag==11 ) {setProbMax(2200.0);}
382 0 : if ( _flag==12 ) {setProbMax(1000.0);}
383 :
384 0 : }
385 :
386 : void EvtDDalitz::decay( EvtParticle *p){
387 :
388 0 : static EvtId BP = EvtPDL::getId("B+");
389 0 : static EvtId BM = EvtPDL::getId("B-");
390 0 : static EvtId B0 = EvtPDL::getId("B0");
391 0 : static EvtId B0B = EvtPDL::getId("anti-B0");
392 :
393 0 : static EvtId D0=EvtPDL::getId("D0");
394 :
395 : double oneby2 = 0.707106782;
396 :
397 : bool isBToDK=false;
398 0 : if ( p -> getParent () ) {
399 0 : EvtId parId = p -> getParent()->getId ();
400 0 : if ( ( BP == parId ) || ( BM == parId ) || ( B0 == parId ) ||
401 0 : ( B0B == parId ) )
402 0 : if (EvtDecayTable::getInstance()->getDecayFunc(p->getParent())->getName() == "BTODDALITZCPK") isBToDK=true;
403 0 : }
404 :
405 :
406 : //same structure for all of these decays
407 :
408 0 : p->initializePhaseSpace(getNDaug(),getDaugs());
409 0 : EvtVector4R moms1 = p->getDaug(_d1)->getP4();
410 0 : EvtVector4R moms2 = p->getDaug(_d2)->getP4();
411 0 : EvtVector4R moms3 = p->getDaug(_d3)->getP4();
412 :
413 0 : EvtVector4R p4_p;
414 0 : p4_p.set(p->mass(),0.0,0.0,0.0);
415 :
416 0 : EvtComplex amp(1.0,0.0);
417 :
418 : //now determine which D and which decay
419 :
420 : //data from Anjos et al, Phys.Rev.D 1993, v.48,num.1,p.56 (E691 resuls)
421 : //for D+ -> K- pi+ pi+, and from Adler et al, Phys.Lett. B196 (1987), 107
422 : //(Mark III results) for D+ -> K0bar pi+ pi0.
423 : //CLEO results for D0->k-pi+pi0
424 :
425 0 : if ( _flag==1) {
426 :
427 : // //have a D+ -> K- pi+ pi+ decay, or charge conjugate
428 : // //Anjos etal e691 - Phys Rev D48, 56 (1993)
429 : // EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
430 : // EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);//K*(892)
431 :
432 : // EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
433 : // EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);//K*(1430)
434 :
435 : // EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
436 : // EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);//K*(1680)
437 :
438 : // amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
439 :
440 :
441 : // EvtResonance DplusRes11(p4_p,moms1,moms2,amp,phase,width,mass,L);
442 : //CLEO-c p15,arxiv:0802.4214v2
443 0 : EvtResonance2 DplusRes11(p4_p,moms1,moms2,1.0, 0.0, 0.0503, 0.896, 1, true);
444 0 : EvtResonance2 DplusRes12(p4_p,moms3,moms1,1.0, 0.0, 0.0503, 0.896, 1, true);//K*(892)
445 0 : EvtResonance2 DplusRes21(p4_p,moms1,moms2,3.0, 49.7-180.0, 0.164, 1.463, 0);
446 0 : EvtResonance2 DplusRes22(p4_p,moms3,moms1,3.0, 49.7-180.0, 0.164, 1.463, 0);//K*(1430)
447 0 : EvtResonance2 DplusRes31(p4_p, moms1, moms2, 0.96, -29.9+180.0, 0.109, 1.4324, 2, true);
448 0 : EvtResonance2 DplusRes32(p4_p, moms3, moms1, 0.96, -29.9+180.0, 0.109, 1.4324, 2, true);// K*_2(1430)
449 0 : EvtResonance2 DplusRes41(p4_p,moms1,moms2, 6.5, 29.0, 0.323, 1.717, 1, true);
450 0 : EvtResonance2 DplusRes42(p4_p,moms3,moms1, 6.5, 29.0, 0.323, 1.717, 1, true);//K*(1680)
451 0 : EvtResonance2 DplusRes51(p4_p,moms1,moms2, 5.01, -163.7+180.0, 0.470, 0.809, 0);
452 0 : EvtResonance2 DplusRes52(p4_p,moms3,moms1, 5.01, -163.7+180.0, 0.470, 0.809, 0);//kappa(800)
453 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
454 0 : amp = EvtComplex(7.4*cos((-18.4+180.0)*pi180inv),7.4*sin((-18.4+180.0)*pi180inv))+ oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) + oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) + oneby2*(DplusRes31.resAmpl()+ DplusRes32.resAmpl()) + oneby2*(-DplusRes41.resAmpl()+ DplusRes42.resAmpl()) + oneby2*(DplusRes51.resAmpl()+ DplusRes52.resAmpl());
455 : //amp = amp+oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl());
456 :
457 0 : }
458 :
459 0 : if ( _flag==2) {
460 :
461 : //have a D+ -> K0bar pi+ pi0 decay
462 : //adler etal MarkIII - Phys Lett B196, 107 (1987)
463 : // Results in this paper:
464 : // Kbar rho+ FitFraction = 68+/-8+/-12 Phase 0
465 : // Kbar* pi+ 19+/-6+/-6 43+/-23
466 : // nonres 13+/-7+/-8 250+/-19
467 : // These numbers below seem not to be exactly the same
468 : // the phases are equiv to -106=254 and 41
469 : //
470 0 : EvtResonance DplusKpipi0Res1(p4_p,moms2,moms3,1.00,0.00,0.1512,0.7699,1); //rho+
471 0 : EvtResonance DplusKpipi0Res2(p4_p,moms3,moms1,0.8695,0.7191,0.0498,0.89159,1); //K*0
472 :
473 0 : 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);
474 :
475 0 : }
476 :
477 0 : if(_flag==3) {
478 : // D0 -> K0 pi+ pi- + CC
479 : // If it does not come from a B->DK, decay it as D0 or D0bar separatly
480 : // if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
481 : // if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
482 :
483 0 : if ( isBToDK ) {
484 : // Gamma angle in rad.
485 0 : double gamma = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
486 : -> getArg( 0 ) ;
487 : // Strong phase in rad.
488 0 : double delta = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
489 : -> getArg( 1 ) ;
490 : // Ratio between B->D0K and B->D0barK
491 0 : double A = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
492 : -> getArg( 2 ) ;
493 :
494 0 : EvtComplex Factor( fabs( A ) * cos ( delta ) ,
495 0 : fabs( A ) * sin ( delta ) ) ;
496 :
497 0 : if ( ( p->getParent()->getId() == BP ) ||
498 0 : ( p->getParent()->getId() == B0 ) ) {
499 : // the ratio D/Dbar
500 0 : Factor = Factor * EvtComplex( cos ( gamma ) , sin ( gamma ) ) ;
501 0 : if ( p->getId() == D0 ) {
502 : // the flavor of the particle has no meaning. But we need
503 : // it to know which daughter is pi+ or pi-
504 : // M( B+ or B0 ) = f(Dbar) + factor * f(D)
505 : // f(Dbar) = amplDtoK0PiPi(pD, K0, pi+, pi-)
506 : // f(D) = amplDtoK0PiPi(pD, K0, pi-, pi+)
507 : // Then ...
508 0 : amp = amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) +
509 0 : Factor * amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
510 0 : }
511 : else {
512 0 : amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) +
513 0 : Factor * amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) ;
514 : }
515 : }
516 0 : else if ( ( p->getParent() -> getId() == BM ) ||
517 0 : ( p->getParent() -> getId() == B0B ) ) {
518 0 : Factor = Factor * EvtComplex( cos ( gamma ) , - sin ( gamma ) ) ;
519 : // here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
520 0 : if ( p->getId() == D0 ) {
521 0 : amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) +
522 0 : Factor * amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) ;
523 0 : }
524 : else {
525 0 : amp = amplDtoK0PiPi( p4_p , moms1 , moms3 , moms2 ) +
526 0 : Factor * amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
527 : }
528 : }
529 0 : }
530 : else {
531 0 : amp = amplDtoK0PiPi( p4_p , moms1 , moms2 , moms3 ) ;
532 : }
533 : }
534 :
535 :
536 0 : if(_flag==4) {
537 :
538 0 : EvtResonance2 DKpipi0Res1(p4_p,moms2,moms3,1.0 ,0.0 ,0.1507,0.770 ,1); //rho
539 0 : EvtResonance2 DKpipi0Res2(p4_p,moms1,moms2,0.39, -0.2 ,0.0505,0.8961,1); //k*0
540 0 : EvtResonance2 DKpipi0Res3(p4_p,moms1,moms3,0.44, 163.0 ,0.050 ,0.8915,1); //k*-
541 :
542 0 : EvtResonance2 DKpipi0Res4(p4_p,moms1,moms3,0.77 ,55.5 ,0.294 ,1.412 ,0); //k01430-
543 0 : EvtResonance2 DKpipi0Res5(p4_p,moms1,moms2,0.85 ,166.0 ,0.294 ,1.412 ,0); //k01430bar
544 0 : EvtResonance2 DKpipi0Res6(p4_p,moms2,moms3,2.5 ,171.0 ,0.240 ,1.700 ,1); //rho1700
545 0 : EvtResonance2 DKpipi0Res7(p4_p,moms1,moms3,2.5 ,103.0 ,0.322 ,1.717 ,1); //K*1680-
546 :
547 :
548 :
549 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
550 :
551 0 : amp = EvtComplex(1.75*cos(31.2*pi180inv),1.75*sin(31.2*pi180inv))
552 0 : + DKpipi0Res1.resAmpl() + DKpipi0Res2.resAmpl() + DKpipi0Res3.resAmpl()
553 0 : + DKpipi0Res4.resAmpl() + DKpipi0Res5.resAmpl()
554 0 : + DKpipi0Res6.resAmpl()
555 0 : + DKpipi0Res7.resAmpl();
556 :
557 0 : }
558 :
559 0 : if(_flag==5) {
560 :
561 : // D0 -> K0 K+ K- + CC
562 : // If it does not come from a B->DK, decay it as D0 or D0bar separatly
563 : // if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
564 : // if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
565 :
566 0 : if ( isBToDK ){
567 : // Gamma angle in rad.
568 0 : double gamma = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
569 : -> getArg( 0 ) ;
570 : // Strong phase in rad.
571 0 : double delta = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
572 : -> getArg( 1 ) ;
573 : // Ratio between B->D0K and B->D0barK
574 0 : double A = EvtDecayTable::getInstance()->getDecayFunc( p->getParent() )
575 : -> getArg( 2 ) ;
576 :
577 0 : EvtComplex Factor( fabs( A ) * cos ( delta ) ,
578 0 : fabs( A ) * sin ( delta ) ) ;
579 :
580 0 : if ( ( p->getParent()->getId() == BP ) ||
581 0 : ( p->getParent()->getId() == B0 ) ) {
582 : // the ratio D/Dbar
583 0 : Factor = Factor * EvtComplex( cos ( gamma ) , sin ( gamma ) ) ;
584 0 : if ( p->getId() == D0 ) {
585 : // the flavor of the particle has no meaning. But we need
586 : // it to know which daughter is pi+ or pi-
587 : // M( B+ or B0 ) = f(Dbar) + factor * f(D)
588 : // f(Dbar) = amplDtoK0PiPi(pD, K0, K+, K-)
589 : // f(D) = amplDtoK0PiPi(pD, K0, K-, K+)
590 : // Then ...
591 0 : amp = amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) +
592 0 : Factor * amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
593 0 : }
594 : else {
595 0 : amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) +
596 0 : Factor * amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) ;
597 : }
598 : }
599 0 : else if ( ( p->getParent() -> getId() == BM ) ||
600 0 : ( p->getParent() -> getId() == B0B ) ) {
601 0 : Factor = Factor * EvtComplex( cos ( gamma ) , - sin ( gamma ) ) ;
602 : // here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
603 0 : if ( p->getId() == D0 ) {
604 0 : amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) +
605 0 : Factor * amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) ;
606 0 : }
607 : else {
608 0 : amp = amplDtoK0KK( p4_p , moms1 , moms3 , moms2 ) +
609 0 : Factor * amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
610 : }
611 : }
612 0 : }
613 : else {
614 0 : amp = amplDtoK0KK( p4_p , moms1 , moms2 , moms3 ) ;
615 : }
616 : }
617 :
618 :
619 :
620 :
621 : // Ds -> K K pi
622 : //Babar, arxiv:1011.4190
623 0 : if(_flag==6) {
624 0 : EvtResonance2 DsKKpiRes1(p4_p, moms3, moms1, 1.0, 0.0, 0.0455, 0.8944, 1, true); // K*(892)
625 0 : EvtResonance2 DsKKpiRes2(p4_p, moms3, moms1, 1.48, 138., 0.290, 1.414, 0); // K*_0(1430)
626 0 : EvtFlatte DsKKpiRes3(p4_p, moms1, moms2, 5.07, 156., 0.965, _kkpi_params); // f_0(980)
627 0 : EvtResonance2 DsKKpiRes4(p4_p, moms1, moms2, 1.15, -10., 0.00426, 1.019455, 1, true); // phi(1020)
628 0 : EvtResonance2 DsKKpiRes5(p4_p, moms1, moms2, 1.28, 53., 0.265, 1.350, 0); // f_0(1370)
629 0 : EvtResonance2 DsKKpiRes6(p4_p, moms1, moms2, 1.19, 87., 0.137, 1.724, 0); // f_0(1710)
630 0 : amp = DsKKpiRes1.resAmpl() + DsKKpiRes2.resAmpl() + DsKKpiRes3.resAmpl()
631 0 : + DsKKpiRes4.resAmpl() + DsKKpiRes5.resAmpl() + DsKKpiRes6.resAmpl();
632 :
633 0 : }
634 :
635 : //D+ -> K K pi
636 : //CLEO PRD 78, 072003 (2008) Fit A
637 0 : if(_flag==7) {
638 0 : EvtResonance2 DpKKpiRes1(p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.8960, 1, true); // K*(892)
639 0 : EvtResonance2 DpKKpiRes2(p4_p, moms3, moms1, 3.7, 73.0, 0.290, 1.414, 0); // K*_0(1430)
640 0 : EvtResonance2 DpKKpiRes3(p4_p, moms1, moms2, 1.189, -179.0+180.0, 0.00426, 1.019455, 1, true); // phi(1020)
641 0 : EvtResonance2 DpKKpiRes4(p4_p, moms1, moms2, 1.72, 123., 0.265, 1.474, 0); // a_0(1450)
642 0 : EvtResonance2 DpKKpiRes5(p4_p, moms1, moms2, 1.9, -52.0+180.0, 0.15, 1.68, 1, true); // phi(1680)
643 0 : EvtResonance2 DpKKpiRes6(p4_p, moms3, moms1, 6.4, 150., 0.109, 1.4324, 2, true); // K*_2(1430)
644 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
645 0 : amp = EvtComplex(5.1*cos((53.0)*pi180inv),5.1*sin((53.0)*pi180inv)) +
646 0 : DpKKpiRes1.resAmpl() + DpKKpiRes2.resAmpl() + DpKKpiRes3.resAmpl()
647 0 : + DpKKpiRes4.resAmpl() + DpKKpiRes5.resAmpl() + DpKKpiRes6.resAmpl();
648 0 : }
649 :
650 : //D+ -> K pi pi WS (DCS)
651 : //FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
652 : // thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
653 : // integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
654 : // and Kpi resonances are (31); masses and widths corresponds to PDG 2010
655 0 : if(_flag==8) {
656 0 : EvtResonance2 DpKpipiDCSRes1(p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775, 1, true); // rho(770)
657 0 : EvtResonance2 DpKpipiDCSRes2(p4_p, moms3, moms1, 1.0971, -167.1, 0.0487, 0.896, 1, true); // K*(890)
658 0 : EvtResonance2 DpKpipiDCSRes3(p4_p, moms1, moms2, 0.4738, -134.5, 0.059, 0.972, 0); // f0(980) as simple BW
659 0 : EvtResonance2 DpKpipiDCSRes4(p4_p, moms3, moms1, 2.2688, 54.4, 0.109, 1.432, 2, true); // K*2(1430)
660 0 : amp = DpKpipiDCSRes1.resAmpl() + DpKpipiDCSRes2.resAmpl() + DpKpipiDCSRes3.resAmpl()
661 0 : + DpKpipiDCSRes4.resAmpl();
662 0 : }
663 :
664 : //Ds+ -> K pi pi WS (CS)
665 : //FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not explicit in the paper)
666 : // thus the magnitudes appearing below come from dividing the ones appearing in the paper by the sqrt of the
667 : // integral over the DP of the corresponding squared amplitude. Writing as pi- pi+ K+ so pipi resonances are (12)
668 : // and Kpi resonances are (31); masses and widths corresponds to PDG 2010
669 : // PROBLEM: by simply doing the procedure for D+, the resulting DP and projections do not resemble what is
670 : // in the paper; the best model is by adding 180 to the vector Kpi resonances
671 0 : if(_flag==9) {
672 0 : EvtResonance2 DsKpipiCSRes1(p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775, 1, true); // rho(770)
673 0 : EvtResonance2 DsKpipiCSRes2(p4_p, moms3, moms1, 0.7236, -18.3, 0.0487, 0.896, 1, true); // K*(890)
674 0 : EvtResonance2 DsKpipiCSRes3(p4_p, moms3, moms1, 2.711, 145.2, 0.232, 1.414, 1, true); // K*(1410)
675 0 : EvtResonance2 DsKpipiCSRes4(p4_p, moms3, moms1, 1.7549, 59.3, 0.270, 1.425, 0); // K*0(1430)
676 0 : EvtResonance2 DsKpipiCSRes5(p4_p, moms1, moms2, 7.0589, -151.7, 0.400, 1.465, 1, true); // rho(1450)
677 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
678 0 : amp = EvtComplex(3.98*cos(43.1*pi180inv),3.98*sin(43.1*pi180inv)) + DsKpipiCSRes1.resAmpl()
679 0 : + DsKpipiCSRes2.resAmpl() + DsKpipiCSRes3.resAmpl() + DsKpipiCSRes4.resAmpl()
680 0 : + DsKpipiCSRes5.resAmpl();
681 0 : }
682 : // D+ -> pi- pi+ pi+ from E791 [PRL 86 770 (2001)]
683 : // masses and widths below correspond to what they used; there, the amplitudes were individually normalized
684 : // (although not explicit) so magnitudes here are obtained after correcting for that
685 : // Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
686 : // thus the NR magnitude is set as negative
687 0 : if(_flag==10) {
688 0 : EvtResonance2 DppipipiRes11(p4_p, moms1, moms2, 1.0, 0.0, 0.150, 0.769, 1, true); // rho(770)
689 0 : EvtResonance2 DppipipiRes12(p4_p, moms3, moms1, 1.0, 0.0, 0.150, 0.769, 1, true); // rho(770)
690 0 : EvtResonance2 DppipipiRes21(p4_p, moms1, moms2, 2.2811, 205.7, 0.324, 0.478, 0); // sigma(500)
691 0 : EvtResonance2 DppipipiRes22(p4_p, moms3, moms1, 2.2811, 205.7, 0.324, 0.478, 0); // sigma(500)
692 0 : EvtResonance2 DppipipiRes31(p4_p, moms1, moms2, 0.4265, 165.0, 0.044, 0.977, 0); // f0(980) simple BW
693 0 : EvtResonance2 DppipipiRes32(p4_p, moms3, moms1, 0.4265, 165.0, 0.044, 0.977, 0); // f0(980) simple BW
694 0 : EvtResonance2 DppipipiRes41(p4_p, moms1, moms2, 2.0321, 57.3, 0.185, 1.275, 2, true); // f2(1270)
695 0 : EvtResonance2 DppipipiRes42(p4_p, moms3, moms1, 2.0321, 57.3, 0.185, 1.275, 2, true); // f2(1270)
696 0 : EvtResonance2 DppipipiRes51(p4_p, moms1, moms2, 0.7888, 105.4, 0.173, 1.434, 0); // f0(1370)
697 0 : EvtResonance2 DppipipiRes52(p4_p, moms3, moms1, 0.7888, 105.4, 0.173, 1.434, 0); // f0(1370)
698 0 : EvtResonance2 DppipipiRes61(p4_p, moms1, moms2, 0.7363, 319.1, 0.310, 1.465, 1, true); // rho(1450)
699 0 : EvtResonance2 DppipipiRes62(p4_p, moms3, moms1, 0.7363, 319.1, 0.310, 1.465, 1, true); // rho(1450)
700 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
701 0 : amp = EvtComplex(-3.98*cos(57.3*pi180inv),-3.98*sin(57.3*pi180inv))
702 0 : + (DppipipiRes11.resAmpl() - DppipipiRes12.resAmpl()) //spin1
703 0 : + (DppipipiRes21.resAmpl() + DppipipiRes22.resAmpl()) + (DppipipiRes31.resAmpl() + DppipipiRes32.resAmpl())
704 0 : + (DppipipiRes41.resAmpl() + DppipipiRes42.resAmpl()) + (DppipipiRes51.resAmpl() + DppipipiRes52.resAmpl())
705 0 : + (DppipipiRes61.resAmpl() - DppipipiRes62.resAmpl()); //spin1
706 0 : }
707 : // Ds+ -> pi- pi+ pi+ from E791 [PRL 86 765 (2001)]
708 : // masses and widths below correspond to what they used; there, the amplitudes were individually normalized
709 : // (although not explicit) so magnitudes here are obtained after correcting for that
710 : // Breit-Wigner has a factor of (-1) there which changes the relative phase of the NR wrt to the resonances
711 : // thus the NR magnitude is set as negative
712 0 : if(_flag==11) {
713 0 : EvtResonance2 DspipipiRes11(p4_p, moms1, moms2, 0.288, 109., 0.150, 0.769, 1, true); // rho(770)
714 0 : EvtResonance2 DspipipiRes12(p4_p, moms3, moms1, 0.288, 109., 0.150, 0.769, 1, true); // rho(770)
715 0 : EvtResonance2 DspipipiRes21(p4_p, moms1, moms2, 1.0, 0.0, 0.044, 0.977, 0); // f0(980) simple BW
716 0 : EvtResonance2 DspipipiRes22(p4_p, moms3, moms1, 1.0, 0.0, 0.044, 0.977, 0); // f0(980) simple BW
717 0 : EvtResonance2 DspipipiRes31(p4_p, moms1, moms2, 1.075, 133., 0.185, 1.275, 2, true); // f2(1270)
718 0 : EvtResonance2 DspipipiRes32(p4_p, moms3, moms1, 1.075, 133., 0.185, 1.275, 2, true); // f2(1270)
719 0 : EvtResonance2 DspipipiRes41(p4_p, moms1, moms2, 2.225, 198., 0.173, 1.434, 0); // f0(1370)
720 0 : EvtResonance2 DspipipiRes42(p4_p, moms3, moms1, 2.225, 198., 0.173, 1.434, 0); // f0(1370)
721 0 : EvtResonance2 DspipipiRes51(p4_p, moms1, moms2, 1.107, 162., 0.310, 1.465, 1, true); // rho(1450)
722 0 : EvtResonance2 DspipipiRes52(p4_p, moms3, moms1, 1.107, 162., 0.310, 1.465, 1, true); // rho(1450)
723 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
724 0 : amp = EvtComplex(-0.723*cos(181.*pi180inv),-0.723*sin(181.*pi180inv))
725 0 : + (DspipipiRes11.resAmpl() - DspipipiRes12.resAmpl()) //spin1
726 0 : + (DspipipiRes21.resAmpl() + DspipipiRes22.resAmpl()) + (DspipipiRes31.resAmpl() + DspipipiRes32.resAmpl())
727 0 : + (DspipipiRes41.resAmpl() + DspipipiRes42.resAmpl())
728 0 : + (DspipipiRes51.resAmpl() - DspipipiRes52.resAmpl()); //spin1
729 0 : }
730 :
731 : //D0 -> pi+pi-pi0
732 : //PRL 99, 251801 (2007)
733 : //arXiv:hep-ex/0703037
734 0 : if(_flag==12) {
735 0 : EvtResonance2 DpipipiRes1p(p4_p, moms2, moms3, 1.0, 0.0, 0.149, 0.775, 1, true);//rho+(770)
736 0 : EvtResonance2 DpipipiRes1(p4_p, moms1, moms2, 0.588, 16.2, 0.149, 0.775, 1, true);//rho0(770)
737 0 : EvtResonance2 DpipipiRes1m(p4_p, moms3, moms1, 0.714, -2.0, 0.149, 0.775, 1, true);//rho-(770)
738 0 : EvtResonance2 DpipipiRes2p(p4_p, moms2, moms3, 0.21, -146.0, 0.400, 1.465, 1, true);//rho+(1450)
739 0 : EvtResonance2 DpipipiRes2(p4_p, moms1, moms2, 0.33, 10.0, 0.400, 1.465, 1, true);//rho0(1450)
740 0 : EvtResonance2 DpipipiRes2m(p4_p, moms3, moms1, 0.82, 16.0, 0.400, 1.465, 1, true);//rho-(1450)
741 0 : EvtResonance2 DpipipiRes3p(p4_p, moms2, moms3, 2.25, -17.0, 0.250, 1.720, 1, true);//rho+(1700)
742 0 : EvtResonance2 DpipipiRes3(p4_p, moms1, moms2, 2.51, -17.0, 0.250, 1.720, 1, true);//rho0(1700)
743 0 : EvtResonance2 DpipipiRes3m(p4_p, moms3, moms1, 2.00, -50.0, 0.250, 1.720, 1, true);//rho-(1700)
744 0 : EvtResonance2 DpipipiRes4(p4_p, moms1, moms2, 0.015, -59.0, 0.07, 0.980, 0);//f0(980)
745 0 : EvtResonance2 DpipipiRes5(p4_p, moms1, moms2, 0.063, 156.0, 0.350, 1.370, 0);//f0(1370)
746 0 : EvtResonance2 DpipipiRes6(p4_p, moms1, moms2, 0.058, 12.0, 0.109, 1.505, 0);//f0(1500)
747 0 : EvtResonance2 DpipipiRes7(p4_p, moms1, moms2, 0.112, 51.0, 0.135, 1.720, 0);//f0(1720)
748 0 : EvtResonance2 DpipipiRes8(p4_p, moms1, moms2, 1.04, -171.0, 0.185, 1.275, 2, true);//f2(1270)
749 0 : EvtResonance2 DpipipiRes9(p4_p, moms1, moms2, 0.069, 8.0, 0.600, 0.400, 0);//sigma(400)
750 :
751 0 : double pi180inv = 1.0/EvtConst::radToDegrees;
752 0 : amp = EvtComplex(0.57*cos(-11.0*pi180inv),0.57*sin(-11.0*pi180inv))
753 0 : + DpipipiRes1p.resAmpl() + DpipipiRes1.resAmpl() + DpipipiRes1m.resAmpl()
754 0 : + DpipipiRes2p.resAmpl() + DpipipiRes2.resAmpl() + DpipipiRes2m.resAmpl()
755 0 : + DpipipiRes3p.resAmpl() + DpipipiRes3.resAmpl() + DpipipiRes3m.resAmpl()
756 0 : + DpipipiRes4.resAmpl() + DpipipiRes5.resAmpl() + DpipipiRes6.resAmpl()
757 0 : + DpipipiRes7.resAmpl() + DpipipiRes8.resAmpl() + DpipipiRes9.resAmpl();
758 :
759 0 : }
760 :
761 0 : vertex(amp);
762 :
763 : return ;
764 0 : }
765 :
766 : EvtComplex EvtDDalitz::amplDtoK0PiPi(EvtVector4R p4_p, EvtVector4R moms1,
767 : EvtVector4R moms2, EvtVector4R moms3) {
768 :
769 : //K*(892)-
770 0 : EvtResonance2 DK2piRes1(p4_p,moms1,moms2,1.418,-190.0,0.0508,0.89166,1);
771 : //K0*(1430)
772 0 : EvtResonance2 DK2piRes2(p4_p,moms1,moms2,1.818,-337.0,0.294 ,1.412 ,0);
773 : //K2*(1430)
774 0 : EvtResonance2 DK2piRes3(p4_p,moms1,moms2,0.909, -5.0,0.0985,1.4256 ,2);
775 : //K*(1680)
776 0 : EvtResonance2 DK2piRes4(p4_p,moms1,moms2,5.091,-166.0,0.322 ,1.717 ,1);
777 : //DCS K*(892)
778 0 : EvtResonance2 DK2piRes5(p4_p,moms1,moms3,0.100, -19.0,0.0508,0.89166,1);
779 :
780 : //Rho
781 0 : EvtResonance2 DK2piRes6(p4_p,moms3,moms2,0.909,-340.0,0.1502,0.7693,1);
782 : //Omega
783 0 : EvtResonance2 DK2piRes7(p4_p,moms3,moms2,.0336,-226.0,0.00844,0.78257,1);
784 : //f0(980)
785 0 : EvtResonance2 DK2piRes8(p4_p,moms3,moms2,0.309,-152.0,0.05,0.977,0);
786 : //f0(1370)
787 0 : EvtResonance2 DK2piRes9(p4_p,moms3,moms2,1.636,-255.0,0.272,1.31,0);
788 : //f2(1270)
789 0 : EvtResonance2 DK2piRes10(p4_p,moms3,moms2,0.636,-32.0,0.1851,1.2754,2);
790 :
791 0 : return EvtComplex(1.0,0.0) +
792 0 : DK2piRes1.resAmpl() + DK2piRes2.resAmpl() +
793 0 : DK2piRes3.resAmpl() + DK2piRes4.resAmpl() +
794 0 : DK2piRes5.resAmpl() + DK2piRes6.resAmpl() +
795 0 : DK2piRes7.resAmpl() + DK2piRes8.resAmpl() +
796 0 : DK2piRes9.resAmpl() + DK2piRes10.resAmpl();
797 0 : }
798 :
799 : //
800 : // BaBar decay amplitudes for D0->Ks K+ K-
801 : //
802 : // p4_p is D0
803 : // moms1 is K0s
804 : // moms2 is K+
805 : // moms3 is K-
806 : // Amplitudes and phases are taken from BaBar hep-ex/0207089
807 : // with convention : Non Resonant = Amp 1. / Phase 0.
808 :
809 : EvtComplex EvtDDalitz::amplDtoK0KK(EvtVector4R p4_p, EvtVector4R moms1,
810 : EvtVector4R moms2, EvtVector4R moms3) {
811 :
812 : //phi
813 0 : EvtResonance DK0KKRes1( p4_p, moms2, moms3, 113.75, -40.0, 0.0043,
814 : 1.019456, 1 ) ;
815 : //a0(980)
816 0 : EvtResonance DK0KKRes2( p4_p, moms2, moms3, 152.25, 69.0, 0.1196 , 0.9847,
817 : 0 ) ;
818 : //f0(980)
819 0 : EvtResonance DK0KKRes3( p4_p, moms2, moms3, 30.5, -201.0, 0.05, 0.980 ,
820 : 0 ) ;
821 : //a0(980)+
822 0 : EvtResonance DK0KKRes4( p4_p, moms1, moms2, 85.75, -93.0, 0.1196 , 0.9847,
823 : 0 ) ;
824 : //a0(980)-
825 0 : EvtResonance DK0KKRes5( p4_p, moms3, moms1, 8. , -53.0 ,0.1196, 0.9847,
826 : 0 ) ;
827 :
828 0 : return EvtComplex(1.0,0.0) +
829 0 : DK0KKRes1.resAmpl() + DK0KKRes2.resAmpl() +
830 0 : DK0KKRes3.resAmpl() + DK0KKRes4.resAmpl() +
831 0 : DK0KKRes5.resAmpl() ;
832 :
833 0 : }
|