BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDDalitz.cc
Go to the documentation of this file.
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(s)+/D(s)-
14//
15// Modification history:
16//
17// NK September 3, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtDDalitz.hh"
31#include <stdlib.h>
32#include <string>
33// #include "../EvtGenBase/EvtFlatte.hh"
35using std::endl;
36
38
39void EvtDDalitz::getName( std::string& model_name ) { model_name = "D_DALITZ"; }
40
42
44
45 // check that there are 0 arguments
46
47 static EvtId DM = EvtPDL::getId( "D-" );
48 static EvtId DP = EvtPDL::getId( "D+" );
49 static EvtId D0 = EvtPDL::getId( "D0" );
50 static EvtId D0B = EvtPDL::getId( "anti-D0" );
51 static EvtId DSP = EvtPDL::getId( "D_s+" );
52 static EvtId DSM = EvtPDL::getId( "D_s-" );
53 static EvtId KM = EvtPDL::getId( "K-" );
54 static EvtId KP = EvtPDL::getId( "K+" );
55 static EvtId K0 = EvtPDL::getId( "K0" );
56 static EvtId KB = EvtPDL::getId( "anti-K0" );
57 static EvtId KL = EvtPDL::getId( "K_L0" );
58 static EvtId KS = EvtPDL::getId( "K_S0" );
59 static EvtId PIM = EvtPDL::getId( "pi-" );
60 static EvtId PIP = EvtPDL::getId( "pi+" );
61 static EvtId PI0 = EvtPDL::getId( "pi0" );
62
63 static double MPI = EvtPDL::getMeanMass( PI0 );
64 static double MKP = EvtPDL::getMeanMass( KP );
65
66 checkNArg( 0 );
67 checkNDaug( 3 );
68
70
74
75 EvtId parnum = getParentId();
76 EvtId d1 = getDaug( 0 );
77 EvtId d2 = getDaug( 1 );
78 EvtId d3 = getDaug( 2 );
79 _flag = 0;
80 if ( parnum == D0 )
81 {
82 // look for either a K- pi+ pi0 or K0bar pi+ pi-
83 if ( d1 == KM && d2 == PIP && d3 == PI0 )
84 {
85 _flag = 4;
86 _d1 = 0;
87 _d2 = 1;
88 _d3 = 2;
89 }
90 if ( d1 == KM && d3 == PIP && d2 == PI0 )
91 {
92 _flag = 4;
93 _d1 = 0;
94 _d2 = 2;
95 _d3 = 1;
96 }
97 if ( d2 == KM && d1 == PIP && d3 == PI0 )
98 {
99 _flag = 4;
100 _d1 = 1;
101 _d2 = 0;
102 _d3 = 2;
103 }
104 if ( d2 == KM && d3 == PIP && d1 == PI0 )
105 {
106 _flag = 4;
107 _d1 = 1;
108 _d2 = 2;
109 _d3 = 0;
110 }
111 if ( d3 == KM && d1 == PIP && d2 == PI0 )
112 {
113 _flag = 4;
114 _d1 = 2;
115 _d2 = 0;
116 _d3 = 1;
117 }
118 if ( d3 == KM && d2 == PIP && d1 == PI0 )
119 {
120 _flag = 4;
121 _d1 = 2;
122 _d2 = 1;
123 _d3 = 0;
124 }
125
126 if ( d1 == KB && d2 == PIP && d3 == PIM )
127 {
128 _flag = 3;
129 _d1 = 0;
130 _d2 = 2;
131 _d3 = 1;
132 }
133 if ( d1 == KB && d3 == PIP && d2 == PIM )
134 {
135 _flag = 3;
136 _d1 = 0;
137 _d2 = 1;
138 _d3 = 2;
139 }
140 if ( d2 == KB && d1 == PIP && d3 == PIM )
141 {
142 _flag = 3;
143 _d1 = 1;
144 _d2 = 2;
145 _d3 = 0;
146 }
147 if ( d2 == KB && d3 == PIP && d1 == PIM )
148 {
149 _flag = 3;
150 _d1 = 1;
151 _d2 = 0;
152 _d3 = 2;
153 }
154 if ( d3 == KB && d1 == PIP && d2 == PIM )
155 {
156 _flag = 3;
157 _d1 = 2;
158 _d2 = 1;
159 _d3 = 0;
160 }
161 if ( d3 == KB && d2 == PIP && d1 == PIM )
162 {
163 _flag = 3;
164 _d1 = 2;
165 _d2 = 0;
166 _d3 = 1;
167 }
168
169 if ( d1 == KL && d2 == PIP && d3 == PIM )
170 {
171 _flag = 3;
172 _d1 = 0;
173 _d2 = 2;
174 _d3 = 1;
175 }
176 if ( d1 == KL && d3 == PIP && d2 == PIM )
177 {
178 _flag = 3;
179 _d1 = 0;
180 _d2 = 1;
181 _d3 = 2;
182 }
183 if ( d2 == KL && d1 == PIP && d3 == PIM )
184 {
185 _flag = 3;
186 _d1 = 1;
187 _d2 = 2;
188 _d3 = 0;
189 }
190 if ( d2 == KL && d3 == PIP && d1 == PIM )
191 {
192 _flag = 3;
193 _d1 = 1;
194 _d2 = 0;
195 _d3 = 2;
196 }
197 if ( d3 == KL && d1 == PIP && d2 == PIM )
198 {
199 _flag = 3;
200 _d1 = 2;
201 _d2 = 1;
202 _d3 = 0;
203 }
204 if ( d3 == KL && d2 == PIP && d1 == PIM )
205 {
206 _flag = 3;
207 _d1 = 2;
208 _d2 = 0;
209 _d3 = 1;
210 }
211
212 if ( d1 == KS && d2 == PIP && d3 == PIM )
213 {
214 _flag = 3;
215 _d1 = 0;
216 _d2 = 2;
217 _d3 = 1;
218 }
219 if ( d1 == KS && d3 == PIP && d2 == PIM )
220 {
221 _flag = 3;
222 _d1 = 0;
223 _d2 = 1;
224 _d3 = 2;
225 }
226 if ( d2 == KS && d1 == PIP && d3 == PIM )
227 {
228 _flag = 3;
229 _d1 = 1;
230 _d2 = 2;
231 _d3 = 0;
232 }
233 if ( d2 == KS && d3 == PIP && d1 == PIM )
234 {
235 _flag = 3;
236 _d1 = 1;
237 _d2 = 0;
238 _d3 = 2;
239 }
240 if ( d3 == KS && d1 == PIP && d2 == PIM )
241 {
242 _flag = 3;
243 _d1 = 2;
244 _d2 = 1;
245 _d3 = 0;
246 }
247 if ( d3 == KS && d2 == PIP && d1 == PIM )
248 {
249 _flag = 3;
250 _d1 = 2;
251 _d2 = 0;
252 _d3 = 1;
253 }
254
255 if ( d1 == KS && d2 == KP && d3 == KM )
256 {
257 _flag = 5;
258 _d1 = 0;
259 _d2 = 2;
260 _d3 = 1;
261 }
262 if ( d1 == KS && d3 == KP && d2 == KM )
263 {
264 _flag = 5;
265 _d1 = 0;
266 _d2 = 1;
267 _d3 = 2;
268 }
269 if ( d2 == KS && d1 == KP && d3 == KM )
270 {
271 _flag = 5;
272 _d1 = 1;
273 _d2 = 2;
274 _d3 = 0;
275 }
276 if ( d2 == KS && d3 == KP && d1 == KM )
277 {
278 _flag = 5;
279 _d1 = 1;
280 _d2 = 0;
281 _d3 = 2;
282 }
283 if ( d3 == KS && d1 == KP && d2 == KM )
284 {
285 _flag = 5;
286 _d1 = 2;
287 _d2 = 1;
288 _d3 = 0;
289 }
290 if ( d3 == KS && d2 == KP && d1 == KM )
291 {
292 _flag = 5;
293 _d1 = 2;
294 _d2 = 0;
295 _d3 = 1;
296 }
297
298 if ( d1 == KL && d2 == KP && d3 == KM )
299 {
300 _flag = 5;
301 _d1 = 0;
302 _d2 = 2;
303 _d3 = 1;
304 }
305 if ( d1 == KL && d3 == KP && d2 == KM )
306 {
307 _flag = 5;
308 _d1 = 0;
309 _d2 = 1;
310 _d3 = 2;
311 }
312 if ( d2 == KL && d1 == KP && d3 == KM )
313 {
314 _flag = 5;
315 _d1 = 1;
316 _d2 = 2;
317 _d3 = 0;
318 }
319 if ( d2 == KL && d3 == KP && d1 == KM )
320 {
321 _flag = 5;
322 _d1 = 1;
323 _d2 = 0;
324 _d3 = 2;
325 }
326 if ( d3 == KL && d1 == KP && d2 == KM )
327 {
328 _flag = 5;
329 _d1 = 2;
330 _d2 = 1;
331 _d3 = 0;
332 }
333 if ( d3 == KL && d2 == KP && d1 == KM )
334 {
335 _flag = 5;
336 _d1 = 2;
337 _d2 = 0;
338 _d3 = 1;
339 }
340
341 if ( d1 == K0 && d2 == KP && d3 == KM )
342 {
343 _flag = 5;
344 _d1 = 0;
345 _d2 = 2;
346 _d3 = 1;
347 }
348 if ( d1 == K0 && d3 == KP && d2 == KM )
349 {
350 _flag = 5;
351 _d1 = 0;
352 _d2 = 1;
353 _d3 = 2;
354 }
355 if ( d2 == K0 && d1 == KP && d3 == KM )
356 {
357 _flag = 5;
358 _d1 = 1;
359 _d2 = 2;
360 _d3 = 0;
361 }
362 if ( d2 == K0 && d3 == KP && d1 == KM )
363 {
364 _flag = 5;
365 _d1 = 1;
366 _d2 = 0;
367 _d3 = 2;
368 }
369 if ( d3 == K0 && d1 == KP && d2 == KM )
370 {
371 _flag = 5;
372 _d1 = 2;
373 _d2 = 1;
374 _d3 = 0;
375 }
376 if ( d3 == K0 && d2 == KP && d1 == KM )
377 {
378 _flag = 5;
379 _d1 = 2;
380 _d2 = 0;
381 _d3 = 1;
382 }
383
384 if ( d1 == PIM && d2 == PIP && d3 == PI0 )
385 {
386 _flag = 11;
387 _d1 = 0;
388 _d2 = 1;
389 _d3 = 2;
390 } // DLY: D0 -> pi- pi+ pi0
391 if ( d1 == PIM && d3 == PIP && d2 == PI0 )
392 {
393 _flag = 11;
394 _d1 = 0;
395 _d2 = 2;
396 _d3 = 1;
397 }
398 if ( d2 == PIM && d1 == PIP && d3 == PI0 )
399 {
400 _flag = 11;
401 _d1 = 1;
402 _d2 = 0;
403 _d3 = 2;
404 }
405 if ( d2 == PIM && d3 == PIP && d1 == PI0 )
406 {
407 _flag = 11;
408 _d1 = 1;
409 _d2 = 2;
410 _d3 = 0;
411 }
412 if ( d3 == PIM && d1 == PIP && d2 == PI0 )
413 {
414 _flag = 11;
415 _d1 = 2;
416 _d2 = 0;
417 _d3 = 1;
418 }
419 if ( d3 == PIM && d2 == PIP && d1 == PI0 )
420 {
421 _flag = 11;
422 _d1 = 2;
423 _d2 = 1;
424 _d3 = 0;
425 }
426 }
427 if ( parnum == D0B )
428 {
429 // look for either a K+ pi- pi0 or K0 pi+ pi-
430 if ( d1 == KP && d2 == PIM && d3 == PI0 )
431 {
432 _flag = 4;
433 _d1 = 0;
434 _d2 = 1;
435 _d3 = 2;
436 }
437 if ( d1 == KP && d3 == PIM && d2 == PI0 )
438 {
439 _flag = 4;
440 _d1 = 0;
441 _d2 = 2;
442 _d3 = 1;
443 }
444 if ( d2 == KP && d1 == PIM && d3 == PI0 )
445 {
446 _flag = 4;
447 _d1 = 1;
448 _d2 = 0;
449 _d3 = 2;
450 }
451 if ( d2 == KP && d3 == PIM && d1 == PI0 )
452 {
453 _flag = 4;
454 _d1 = 1;
455 _d2 = 2;
456 _d3 = 0;
457 }
458 if ( d3 == KP && d1 == PIM && d2 == PI0 )
459 {
460 _flag = 4;
461 _d1 = 2;
462 _d2 = 0;
463 _d3 = 1;
464 }
465 if ( d3 == KP && d2 == PIM && d1 == PI0 )
466 {
467 _flag = 4;
468 _d1 = 2;
469 _d2 = 1;
470 _d3 = 0;
471 }
472
473 if ( d1 == K0 && d2 == PIP && d3 == PIM )
474 {
475 _flag = 3;
476 _d1 = 0;
477 _d2 = 1;
478 _d3 = 2;
479 }
480 if ( d1 == K0 && d3 == PIP && d2 == PIM )
481 {
482 _flag = 3;
483 _d1 = 0;
484 _d2 = 2;
485 _d3 = 1;
486 }
487 if ( d2 == K0 && d1 == PIP && d3 == PIM )
488 {
489 _flag = 3;
490 _d1 = 1;
491 _d2 = 0;
492 _d3 = 2;
493 }
494 if ( d2 == K0 && d3 == PIP && d1 == PIM )
495 {
496 _flag = 3;
497 _d1 = 1;
498 _d2 = 2;
499 _d3 = 0;
500 }
501 if ( d3 == K0 && d1 == PIP && d2 == PIM )
502 {
503 _flag = 3;
504 _d1 = 2;
505 _d2 = 0;
506 _d3 = 1;
507 }
508 if ( d3 == K0 && d2 == PIP && d1 == PIM )
509 {
510 _flag = 3;
511 _d1 = 2;
512 _d2 = 1;
513 _d3 = 0;
514 }
515
516 if ( d1 == KL && d2 == PIP && d3 == PIM )
517 {
518 _flag = 3;
519 _d1 = 0;
520 _d2 = 1;
521 _d3 = 2;
522 }
523 if ( d1 == KL && d3 == PIP && d2 == PIM )
524 {
525 _flag = 3;
526 _d1 = 0;
527 _d2 = 2;
528 _d3 = 1;
529 }
530 if ( d2 == KL && d1 == PIP && d3 == PIM )
531 {
532 _flag = 3;
533 _d1 = 1;
534 _d2 = 0;
535 _d3 = 2;
536 }
537 if ( d2 == KL && d3 == PIP && d1 == PIM )
538 {
539 _flag = 3;
540 _d1 = 1;
541 _d2 = 2;
542 _d3 = 0;
543 }
544 if ( d3 == KL && d1 == PIP && d2 == PIM )
545 {
546 _flag = 3;
547 _d1 = 2;
548 _d2 = 0;
549 _d3 = 1;
550 }
551 if ( d3 == KL && d2 == PIP && d1 == PIM )
552 {
553 _flag = 3;
554 _d1 = 2;
555 _d2 = 1;
556 _d3 = 0;
557 }
558
559 if ( d1 == KS && d2 == PIP && d3 == PIM )
560 {
561 _flag = 3;
562 _d1 = 0;
563 _d2 = 1;
564 _d3 = 2;
565 }
566 if ( d1 == KS && d3 == PIP && d2 == PIM )
567 {
568 _flag = 3;
569 _d1 = 0;
570 _d2 = 2;
571 _d3 = 1;
572 }
573 if ( d2 == KS && d1 == PIP && d3 == PIM )
574 {
575 _flag = 3;
576 _d1 = 1;
577 _d2 = 0;
578 _d3 = 2;
579 }
580 if ( d2 == KS && d3 == PIP && d1 == PIM )
581 {
582 _flag = 3;
583 _d1 = 1;
584 _d2 = 2;
585 _d3 = 0;
586 }
587 if ( d3 == KS && d1 == PIP && d2 == PIM )
588 {
589 _flag = 3;
590 _d1 = 2;
591 _d2 = 0;
592 _d3 = 1;
593 }
594 if ( d3 == KS && d2 == PIP && d1 == PIM )
595 {
596 _flag = 3;
597 _d1 = 2;
598 _d2 = 1;
599 _d3 = 0;
600 }
601
602 if ( d1 == KS && d2 == KP && d3 == KM )
603 {
604 _flag = 5;
605 _d1 = 0;
606 _d2 = 1;
607 _d3 = 2;
608 }
609 if ( d1 == KS && d3 == KP && d2 == KM )
610 {
611 _flag = 5;
612 _d1 = 0;
613 _d2 = 2;
614 _d3 = 1;
615 }
616 if ( d2 == KS && d1 == KP && d3 == KM )
617 {
618 _flag = 5;
619 _d1 = 1;
620 _d2 = 0;
621 _d3 = 2;
622 }
623 if ( d2 == KS && d3 == KP && d1 == KM )
624 {
625 _flag = 5;
626 _d1 = 1;
627 _d2 = 2;
628 _d3 = 0;
629 }
630 if ( d3 == KS && d1 == KP && d2 == KM )
631 {
632 _flag = 5;
633 _d1 = 2;
634 _d2 = 0;
635 _d3 = 1;
636 }
637 if ( d3 == KS && d2 == KP && d1 == KM )
638 {
639 _flag = 5;
640 _d1 = 2;
641 _d2 = 1;
642 _d3 = 0;
643 }
644
645 if ( d1 == KL && d2 == KP && d3 == KM )
646 {
647 _flag = 5;
648 _d1 = 0;
649 _d2 = 1;
650 _d3 = 2;
651 }
652 if ( d1 == KL && d3 == KP && d2 == KM )
653 {
654 _flag = 5;
655 _d1 = 0;
656 _d2 = 2;
657 _d3 = 1;
658 }
659 if ( d2 == KL && d1 == KP && d3 == KM )
660 {
661 _flag = 5;
662 _d1 = 1;
663 _d2 = 0;
664 _d3 = 2;
665 }
666 if ( d2 == KL && d3 == KP && d1 == KM )
667 {
668 _flag = 5;
669 _d1 = 1;
670 _d2 = 2;
671 _d3 = 0;
672 }
673 if ( d3 == KL && d1 == KP && d2 == KM )
674 {
675 _flag = 5;
676 _d1 = 2;
677 _d2 = 0;
678 _d3 = 1;
679 }
680 if ( d3 == KL && d2 == KP && d1 == KM )
681 {
682 _flag = 5;
683 _d1 = 2;
684 _d2 = 1;
685 _d3 = 0;
686 }
687
688 if ( d1 == K0 && d2 == KP && d3 == KM )
689 {
690 _flag = 5;
691 _d1 = 0;
692 _d2 = 1;
693 _d3 = 2;
694 }
695 if ( d1 == K0 && d3 == KP && d2 == KM )
696 {
697 _flag = 5;
698 _d1 = 0;
699 _d2 = 2;
700 _d3 = 1;
701 }
702 if ( d2 == K0 && d1 == KP && d3 == KM )
703 {
704 _flag = 5;
705 _d1 = 1;
706 _d2 = 0;
707 _d3 = 2;
708 }
709 if ( d2 == K0 && d3 == KP && d1 == KM )
710 {
711 _flag = 5;
712 _d1 = 1;
713 _d2 = 2;
714 _d3 = 0;
715 }
716 if ( d3 == K0 && d1 == KP && d2 == KM )
717 {
718 _flag = 5;
719 _d1 = 2;
720 _d2 = 0;
721 _d3 = 1;
722 }
723 if ( d3 == K0 && d2 == KP && d1 == KM )
724 {
725 _flag = 5;
726 _d1 = 2;
727 _d2 = 1;
728 _d3 = 0;
729 }
730
731 if ( d1 == PIP && d2 == PIM && d3 == PI0 )
732 {
733 _flag = 11;
734 _d1 = 0;
735 _d2 = 1;
736 _d3 = 2;
737 } // DLY: D0B -> pi+ pi- pi0
738 if ( d1 == PIP && d3 == PIM && d2 == PI0 )
739 {
740 _flag = 11;
741 _d1 = 0;
742 _d2 = 2;
743 _d3 = 1;
744 }
745 if ( d2 == PIP && d1 == PIM && d3 == PI0 )
746 {
747 _flag = 11;
748 _d1 = 1;
749 _d2 = 0;
750 _d3 = 2;
751 }
752 if ( d2 == PIP && d3 == PIM && d1 == PI0 )
753 {
754 _flag = 11;
755 _d1 = 1;
756 _d2 = 2;
757 _d3 = 0;
758 }
759 if ( d3 == PIP && d1 == PIM && d2 == PI0 )
760 {
761 _flag = 11;
762 _d1 = 2;
763 _d2 = 0;
764 _d3 = 1;
765 }
766 if ( d3 == PIP && d2 == PIM && d1 == PI0 )
767 {
768 _flag = 11;
769 _d1 = 2;
770 _d2 = 1;
771 _d3 = 0;
772 }
773 }
774
775 if ( parnum == DP )
776 {
777 // look for K- pi+ pi+
778 if ( d1 == KB && d2 == PIP && d3 == PI0 )
779 {
780 _flag = 2;
781 _d1 = 0;
782 _d2 = 1;
783 _d3 = 2;
784 }
785 if ( d1 == KB && d3 == PIP && d2 == PI0 )
786 {
787 _flag = 2;
788 _d1 = 0;
789 _d2 = 2;
790 _d3 = 1;
791 }
792 if ( d2 == KB && d1 == PIP && d3 == PI0 )
793 {
794 _flag = 2;
795 _d1 = 1;
796 _d2 = 0;
797 _d3 = 2;
798 }
799 if ( d2 == KB && d3 == PIP && d1 == PI0 )
800 {
801 _flag = 2;
802 _d1 = 1;
803 _d2 = 2;
804 _d3 = 0;
805 }
806 if ( d3 == KB && d1 == PIP && d2 == PI0 )
807 {
808 _flag = 2;
809 _d1 = 2;
810 _d2 = 0;
811 _d3 = 1;
812 }
813 if ( d3 == KB && d2 == PIP && d1 == PI0 )
814 {
815 _flag = 2;
816 _d1 = 2;
817 _d2 = 1;
818 _d3 = 0;
819 }
820
821 if ( d1 == KL && d2 == PIP && d3 == PI0 )
822 {
823 _flag = 2;
824 _d1 = 0;
825 _d2 = 1;
826 _d3 = 2;
827 }
828 if ( d1 == KL && d3 == PIP && d2 == PI0 )
829 {
830 _flag = 2;
831 _d1 = 0;
832 _d2 = 2;
833 _d3 = 1;
834 }
835 if ( d2 == KL && d1 == PIP && d3 == PI0 )
836 {
837 _flag = 2;
838 _d1 = 1;
839 _d2 = 0;
840 _d3 = 2;
841 }
842 if ( d2 == KL && d3 == PIP && d1 == PI0 )
843 {
844 _flag = 2;
845 _d1 = 1;
846 _d2 = 2;
847 _d3 = 0;
848 }
849 if ( d3 == KL && d1 == PIP && d2 == PI0 )
850 {
851 _flag = 2;
852 _d1 = 2;
853 _d2 = 0;
854 _d3 = 1;
855 }
856 if ( d3 == KL && d2 == PIP && d1 == PI0 )
857 {
858 _flag = 2;
859 _d1 = 2;
860 _d2 = 1;
861 _d3 = 0;
862 }
863
864 if ( d1 == KS && d2 == PIP && d3 == PI0 )
865 {
866 _flag = 2;
867 _d1 = 0;
868 _d2 = 1;
869 _d3 = 2;
870 }
871 if ( d1 == KS && d3 == PIP && d2 == PI0 )
872 {
873 _flag = 2;
874 _d1 = 0;
875 _d2 = 2;
876 _d3 = 1;
877 }
878 if ( d2 == KS && d1 == PIP && d3 == PI0 )
879 {
880 _flag = 2;
881 _d1 = 1;
882 _d2 = 0;
883 _d3 = 2;
884 }
885 if ( d2 == KS && d3 == PIP && d1 == PI0 )
886 {
887 _flag = 2;
888 _d1 = 1;
889 _d2 = 2;
890 _d3 = 0;
891 }
892 if ( d3 == KS && d1 == PIP && d2 == PI0 )
893 {
894 _flag = 2;
895 _d1 = 2;
896 _d2 = 0;
897 _d3 = 1;
898 }
899 if ( d3 == KS && d2 == PIP && d1 == PI0 )
900 {
901 _flag = 2;
902 _d1 = 2;
903 _d2 = 1;
904 _d3 = 0;
905 }
906
907 if ( d1 == KM && d2 == PIP && d3 == PIP )
908 {
909 _flag = 1;
910 _d1 = 0;
911 _d2 = 1;
912 _d3 = 2;
913 }
914 if ( d2 == KM && d1 == PIP && d3 == PIP )
915 {
916 _flag = 1;
917 _d1 = 1;
918 _d2 = 0;
919 _d3 = 2;
920 }
921 if ( d3 == KM && d1 == PIP && d2 == PIP )
922 {
923 _flag = 1;
924 _d1 = 2;
925 _d2 = 0;
926 _d3 = 1;
927 }
928
929 if ( d1 == KM && d2 == KP && d3 == PIP )
930 {
931 _flag = 8;
932 _d1 = 0;
933 _d2 = 1;
934 _d3 = 2;
935 } // DLY: D+ -> K- K+ pi+
936 if ( d1 == KM && d3 == KP && d2 == PIP )
937 {
938 _flag = 8;
939 _d1 = 0;
940 _d2 = 2;
941 _d3 = 1;
942 }
943 if ( d2 == KM && d1 == KP && d3 == PIP )
944 {
945 _flag = 8;
946 _d1 = 1;
947 _d2 = 0;
948 _d3 = 2;
949 }
950 if ( d2 == KM && d3 == KP && d1 == PIP )
951 {
952 _flag = 8;
953 _d1 = 1;
954 _d2 = 2;
955 _d3 = 0;
956 }
957 if ( d3 == KM && d1 == KP && d2 == PIP )
958 {
959 _flag = 8;
960 _d1 = 2;
961 _d2 = 0;
962 _d3 = 1;
963 }
964 if ( d3 == KM && d2 == KP && d1 == PIP )
965 {
966 _flag = 8;
967 _d1 = 2;
968 _d2 = 1;
969 _d3 = 0;
970 }
971
972 if ( d1 == PIM && d2 == PIP && d3 == KP )
973 {
974 _flag = 9;
975 _d1 = 0;
976 _d2 = 1;
977 _d3 = 2;
978 } // DLY: D+ -> pi- pi+ K+
979 if ( d1 == PIM && d3 == PIP && d2 == KP )
980 {
981 _flag = 9;
982 _d1 = 0;
983 _d2 = 2;
984 _d3 = 1;
985 }
986 if ( d2 == PIM && d1 == PIP && d3 == KP )
987 {
988 _flag = 9;
989 _d1 = 1;
990 _d2 = 0;
991 _d3 = 2;
992 }
993 if ( d2 == PIM && d3 == PIP && d1 == KP )
994 {
995 _flag = 9;
996 _d1 = 1;
997 _d2 = 2;
998 _d3 = 0;
999 }
1000 if ( d3 == PIM && d1 == PIP && d2 == KP )
1001 {
1002 _flag = 9;
1003 _d1 = 2;
1004 _d2 = 0;
1005 _d3 = 1;
1006 }
1007 if ( d3 == PIM && d2 == PIP && d1 == KP )
1008 {
1009 _flag = 9;
1010 _d1 = 2;
1011 _d2 = 1;
1012 _d3 = 0;
1013 }
1014
1015 if ( d1 == PIM && d2 == PIP && d3 == PIP )
1016 {
1017 _flag = 10;
1018 _d1 = 0;
1019 _d2 = 1;
1020 _d3 = 2;
1021 } // DLY: D+ -> pi- pi+ pi+
1022 if ( d2 == PIM && d1 == PIP && d3 == PIP )
1023 {
1024 _flag = 10;
1025 _d1 = 1;
1026 _d2 = 0;
1027 _d3 = 2;
1028 }
1029 if ( d3 == PIM && d1 == PIP && d2 == PIP )
1030 {
1031 _flag = 10;
1032 _d1 = 2;
1033 _d2 = 0;
1034 _d3 = 1;
1035 }
1036 }
1037
1038 if ( parnum == DM )
1039 {
1040 // look for K- pi+ pi+
1041 if ( d1 == K0 && d2 == PIM && d3 == PI0 )
1042 {
1043 _flag = 2;
1044 _d1 = 0;
1045 _d2 = 1;
1046 _d3 = 2;
1047 }
1048 if ( d1 == K0 && d3 == PIM && d2 == PI0 )
1049 {
1050 _flag = 2;
1051 _d1 = 0;
1052 _d2 = 2;
1053 _d3 = 1;
1054 }
1055 if ( d2 == K0 && d1 == PIM && d3 == PI0 )
1056 {
1057 _flag = 2;
1058 _d1 = 1;
1059 _d2 = 0;
1060 _d3 = 2;
1061 }
1062 if ( d2 == K0 && d3 == PIM && d1 == PI0 )
1063 {
1064 _flag = 2;
1065 _d1 = 1;
1066 _d2 = 2;
1067 _d3 = 0;
1068 }
1069 if ( d3 == K0 && d1 == PIM && d2 == PI0 )
1070 {
1071 _flag = 2;
1072 _d1 = 2;
1073 _d2 = 0;
1074 _d3 = 1;
1075 }
1076 if ( d3 == K0 && d2 == PIM && d1 == PI0 )
1077 {
1078 _flag = 2;
1079 _d1 = 2;
1080 _d2 = 1;
1081 _d3 = 0;
1082 }
1083
1084 if ( d1 == KL && d2 == PIM && d3 == PI0 )
1085 {
1086 _flag = 2;
1087 _d1 = 0;
1088 _d2 = 1;
1089 _d3 = 2;
1090 }
1091 if ( d1 == KL && d3 == PIM && d2 == PI0 )
1092 {
1093 _flag = 2;
1094 _d1 = 0;
1095 _d2 = 2;
1096 _d3 = 1;
1097 }
1098 if ( d2 == KL && d1 == PIM && d3 == PI0 )
1099 {
1100 _flag = 2;
1101 _d1 = 1;
1102 _d2 = 0;
1103 _d3 = 2;
1104 }
1105 if ( d2 == KL && d3 == PIM && d1 == PI0 )
1106 {
1107 _flag = 2;
1108 _d1 = 1;
1109 _d2 = 2;
1110 _d3 = 0;
1111 }
1112 if ( d3 == KL && d1 == PIM && d2 == PI0 )
1113 {
1114 _flag = 2;
1115 _d1 = 2;
1116 _d2 = 0;
1117 _d3 = 1;
1118 }
1119 if ( d3 == KL && d2 == PIM && d1 == PI0 )
1120 {
1121 _flag = 2;
1122 _d1 = 2;
1123 _d2 = 1;
1124 _d3 = 0;
1125 }
1126
1127 if ( d1 == KS && d2 == PIM && d3 == PI0 )
1128 {
1129 _flag = 2;
1130 _d1 = 0;
1131 _d2 = 1;
1132 _d3 = 2;
1133 }
1134 if ( d1 == KS && d3 == PIM && d2 == PI0 )
1135 {
1136 _flag = 2;
1137 _d1 = 0;
1138 _d2 = 2;
1139 _d3 = 1;
1140 }
1141 if ( d2 == KS && d1 == PIM && d3 == PI0 )
1142 {
1143 _flag = 2;
1144 _d1 = 1;
1145 _d2 = 0;
1146 _d3 = 2;
1147 }
1148 if ( d2 == KS && d3 == PIM && d1 == PI0 )
1149 {
1150 _flag = 2;
1151 _d1 = 1;
1152 _d2 = 2;
1153 _d3 = 0;
1154 }
1155 if ( d3 == KS && d1 == PIM && d2 == PI0 )
1156 {
1157 _flag = 2;
1158 _d1 = 2;
1159 _d2 = 0;
1160 _d3 = 1;
1161 }
1162 if ( d3 == KS && d2 == PIM && d1 == PI0 )
1163 {
1164 _flag = 2;
1165 _d1 = 2;
1166 _d2 = 1;
1167 _d3 = 0;
1168 }
1169
1170 if ( d1 == KP && d2 == PIM && d3 == PIM )
1171 {
1172 _flag = 1;
1173 _d1 = 0;
1174 _d2 = 1;
1175 _d3 = 2;
1176 }
1177 if ( d2 == KP && d1 == PIM && d3 == PIM )
1178 {
1179 _flag = 1;
1180 _d1 = 1;
1181 _d2 = 0;
1182 _d3 = 2;
1183 }
1184 if ( d3 == KP && d1 == PIM && d2 == PIM )
1185 {
1186 _flag = 1;
1187 _d1 = 2;
1188 _d2 = 0;
1189 _d3 = 1;
1190 }
1191
1192 if ( d1 == KP && d2 == KM && d3 == PIM )
1193 {
1194 _flag = 8;
1195 _d1 = 0;
1196 _d2 = 1;
1197 _d3 = 2;
1198 } // DLY: D- -> K+ K- pi-
1199 if ( d1 == KP && d3 == KM && d2 == PIM )
1200 {
1201 _flag = 8;
1202 _d1 = 0;
1203 _d2 = 2;
1204 _d3 = 1;
1205 }
1206 if ( d2 == KP && d1 == KM && d3 == PIM )
1207 {
1208 _flag = 8;
1209 _d1 = 1;
1210 _d2 = 0;
1211 _d3 = 2;
1212 }
1213 if ( d2 == KP && d3 == KM && d1 == PIM )
1214 {
1215 _flag = 8;
1216 _d1 = 1;
1217 _d2 = 2;
1218 _d3 = 0;
1219 }
1220 if ( d3 == KP && d1 == KM && d2 == PIM )
1221 {
1222 _flag = 8;
1223 _d1 = 2;
1224 _d2 = 0;
1225 _d3 = 1;
1226 }
1227 if ( d3 == KP && d2 == KM && d1 == PIM )
1228 {
1229 _flag = 8;
1230 _d1 = 2;
1231 _d2 = 1;
1232 _d3 = 0;
1233 }
1234
1235 if ( d1 == PIP && d2 == PIM && d3 == KM )
1236 {
1237 _flag = 9;
1238 _d1 = 0;
1239 _d2 = 1;
1240 _d3 = 2;
1241 } // DLY: D- -> pi+ pi- K-
1242 if ( d1 == PIP && d3 == PIM && d2 == KM )
1243 {
1244 _flag = 9;
1245 _d1 = 0;
1246 _d2 = 2;
1247 _d3 = 1;
1248 }
1249 if ( d2 == PIP && d1 == PIM && d3 == KM )
1250 {
1251 _flag = 9;
1252 _d1 = 1;
1253 _d2 = 0;
1254 _d3 = 2;
1255 }
1256 if ( d2 == PIP && d3 == PIM && d1 == KM )
1257 {
1258 _flag = 9;
1259 _d1 = 1;
1260 _d2 = 2;
1261 _d3 = 0;
1262 }
1263 if ( d3 == PIP && d1 == PIM && d2 == KM )
1264 {
1265 _flag = 9;
1266 _d1 = 2;
1267 _d2 = 0;
1268 _d3 = 1;
1269 }
1270 if ( d3 == PIP && d2 == PIM && d1 == KM )
1271 {
1272 _flag = 9;
1273 _d1 = 2;
1274 _d2 = 1;
1275 _d3 = 0;
1276 }
1277
1278 if ( d1 == PIP && d2 == PIM && d3 == PIM )
1279 {
1280 _flag = 10;
1281 _d1 = 0;
1282 _d2 = 1;
1283 _d3 = 2;
1284 } // DLY: D- -> pi+ pi- pi-
1285 if ( d2 == PIP && d1 == PIM && d3 == PIM )
1286 {
1287 _flag = 10;
1288 _d1 = 1;
1289 _d2 = 0;
1290 _d3 = 2;
1291 }
1292 if ( d3 == PIP && d1 == PIM && d2 == PIM )
1293 {
1294 _flag = 10;
1295 _d1 = 2;
1296 _d2 = 0;
1297 _d3 = 1;
1298 }
1299 }
1300
1301 if ( parnum == DSP )
1302 {
1303 if ( d1 == KM && d2 == KP && d3 == PIP )
1304 {
1305 _flag = 6;
1306 _d1 = 0;
1307 _d2 = 1;
1308 _d3 = 2;
1309 }
1310 if ( d1 == KM && d3 == KP && d2 == PIP )
1311 {
1312 _flag = 6;
1313 _d1 = 0;
1314 _d2 = 2;
1315 _d3 = 1;
1316 }
1317 if ( d2 == KM && d1 == KP && d3 == PIP )
1318 {
1319 _flag = 6;
1320 _d1 = 1;
1321 _d2 = 0;
1322 _d3 = 2;
1323 }
1324 if ( d2 == KM && d3 == KP && d1 == PIP )
1325 {
1326 _flag = 6;
1327 _d1 = 1;
1328 _d2 = 2;
1329 _d3 = 0;
1330 }
1331 if ( d3 == KM && d1 == KP && d2 == PIP )
1332 {
1333 _flag = 6;
1334 _d1 = 2;
1335 _d2 = 0;
1336 _d3 = 1;
1337 }
1338 if ( d3 == KM && d2 == KP && d1 == PIP )
1339 {
1340 _flag = 6;
1341 _d1 = 2;
1342 _d2 = 1;
1343 _d3 = 0;
1344 }
1345
1346 if ( d1 == PIM && d2 == PIP && d3 == PIP )
1347 {
1348 _flag = 7;
1349 _d1 = 0;
1350 _d2 = 1;
1351 _d3 = 2;
1352 }
1353 if ( d2 == PIM && d1 == PIP && d3 == PIP )
1354 {
1355 _flag = 7;
1356 _d1 = 1;
1357 _d2 = 0;
1358 _d3 = 2;
1359 }
1360 if ( d3 == PIM && d1 == PIP && d2 == PIP )
1361 {
1362 _flag = 7;
1363 _d1 = 2;
1364 _d2 = 0;
1365 _d3 = 1;
1366 }
1367 }
1368
1369 if ( parnum == DSM )
1370 {
1371 if ( d1 == KP && d2 == KM && d3 == PIM )
1372 {
1373 _flag = 6;
1374 _d1 = 0;
1375 _d2 = 1;
1376 _d3 = 2;
1377 }
1378 if ( d1 == KP && d3 == KM && d2 == PIM )
1379 {
1380 _flag = 6;
1381 _d1 = 0;
1382 _d2 = 2;
1383 _d3 = 1;
1384 }
1385 if ( d2 == KP && d1 == KM && d3 == PIM )
1386 {
1387 _flag = 6;
1388 _d1 = 1;
1389 _d2 = 0;
1390 _d3 = 2;
1391 }
1392 if ( d2 == KP && d3 == KM && d1 == PIM )
1393 {
1394 _flag = 6;
1395 _d1 = 1;
1396 _d2 = 2;
1397 _d3 = 0;
1398 }
1399 if ( d3 == KP && d1 == KM && d2 == PIM )
1400 {
1401 _flag = 6;
1402 _d1 = 2;
1403 _d2 = 0;
1404 _d3 = 1;
1405 }
1406 if ( d3 == KP && d2 == KM && d1 == PIM )
1407 {
1408 _flag = 6;
1409 _d1 = 2;
1410 _d2 = 1;
1411 _d3 = 0;
1412 }
1413
1414 if ( d1 == PIP && d2 == PIM && d3 == PIM )
1415 {
1416 _flag = 7;
1417 _d1 = 0;
1418 _d2 = 1;
1419 _d3 = 2;
1420 }
1421 if ( d2 == PIP && d1 == PIM && d3 == PIM )
1422 {
1423 _flag = 7;
1424 _d1 = 1;
1425 _d2 = 0;
1426 _d3 = 2;
1427 }
1428 if ( d3 == PIP && d1 == PIM && d2 == PIM )
1429 {
1430 _flag = 7;
1431 _d1 = 2;
1432 _d2 = 0;
1433 _d3 = 1;
1434 }
1435 }
1436
1437 /*
1438 cout << "DDalitz : flag = " << _flag;
1439 if (_flag==1) {
1440 cout << " = D+ -> K- pi+ pi+"<<endl;
1441 } else if (_flag==2) {
1442 cout << " = D+ -> K0bar pi+ pi0"<<endl;
1443 } else if (_flag==3) {
1444 cout << " = D0 -> K0bar pi+ pi-"<<endl;
1445 } else if (_flag==4) {
1446 cout << " = D0 -> K- pi+ pi0"<<endl;
1447 } else if (_flag==5) {
1448 cout << " = D0 -> K0 K+ K-"<<endl;
1449 } else if (_flag==6) {
1450 cout << " = Ds+ -> K- K+ pi+"<<endl;
1451 } else if (_flag==7) {
1452 cout << " = Ds+ -> pi+ pi- pi+"<<endl;
1453 } else if (_flag==8) {
1454 cout << " = D+ -> K- K+ pi+"<<endl;
1455 } else if (_flag==9) {
1456 cout << " = D+ -> pi- pi+ K+ WS (DCS)"<<endl;
1457 } else if (_flag==10) {
1458 cout << " = D+ -> pi- pi+ pi+"<<endl;
1459 } else if (_flag==11) {
1460 cout << " = D0 -> pi- pi+ pi0"<<endl;
1461 } else if (_flag==0) {
1462 cout << " = Invalid mode."<<endl;
1463 }
1464 */
1465
1466 if ( _flag == 6 )
1467 {
1468 _kkpi_params.push_back( EvtFlatteParam( MPI, MPI, 0.406 ) );
1469 _kkpi_params.push_back( EvtFlatteParam( MKP, MKP, 0.800 ) );
1470 }
1471
1472 if ( _flag == 0 )
1473 {
1474 report( ERROR, "EvtGen" ) << "EvtDDaltiz: Invalid mode." << endl;
1475 assert( 0 );
1476 }
1477}
1478
1480 if ( _flag == 1 ) { setProbMax( 2500.0 ); }
1481 if ( _flag == 2 ) { setProbMax( 10000 ); } // old if ( _flag==2 ) {setProbMax(147.9);}
1482 if ( _flag == 3 ) { setProbMax( 5000.0 ); }
1483 if ( _flag == 4 ) { setProbMax( 3000.0 ); }
1484 if ( _flag == 5 ) { setProbMax( 10000000.0 ); }
1485 if ( _flag == 6 ) { setProbMax( 50000.0 ); }
1486 if ( _flag == 7 ) { setProbMax( 50000.0 ); }
1487 if ( _flag == 8 ) { setProbMax( 35000.0 ); }
1488 if ( _flag == 9 ) { setProbMax( 2500.0 ); }
1489 if ( _flag == 10 ) { setProbMax( 1300.0 ); }
1490 if ( _flag == 11 ) { setProbMax( 1000.0 ); }
1491}
1492
1494
1495 // added by Lange Jan4,2000
1496 static EvtId BP = EvtPDL::getId( "B+" );
1497 static EvtId BM = EvtPDL::getId( "B-" );
1498 static EvtId B0 = EvtPDL::getId( "B0" );
1499 static EvtId B0B = EvtPDL::getId( "anti-B0" );
1500 static EvtId DM = EvtPDL::getId( "D-" );
1501 static EvtId DP = EvtPDL::getId( "D+" );
1502 static EvtId D0 = EvtPDL::getId( "D0" );
1503 static EvtId D0B = EvtPDL::getId( "anti-D0" );
1504 static EvtId KM = EvtPDL::getId( "K-" );
1505 static EvtId KP = EvtPDL::getId( "K+" );
1506 static EvtId K0 = EvtPDL::getId( "K0" );
1507 static EvtId KB = EvtPDL::getId( "anti-K0" );
1508 static EvtId PIM = EvtPDL::getId( "pi-" );
1509 static EvtId PIP = EvtPDL::getId( "pi+" );
1510 static EvtId PI0 = EvtPDL::getId( "pi0" );
1511
1512 double oneby2 = 0.707106782;
1513
1514 bool isBToDK = false;
1515 if ( p->getParent() )
1516 {
1517 std::string name1;
1519
1520 EvtId parId = p->getParent()->getId();
1521 if ( ( BP == parId ) || ( BM == parId ) || ( B0 == parId ) || ( B0B == parId ) )
1522 if ( name1 == "BTODDALITZCPK" ) isBToDK = true;
1523 }
1524
1525 // same structure for all of these decays
1526
1528 EvtVector4R moms1 = p->getDaug( _d1 )->getP4();
1529 EvtVector4R moms2 = p->getDaug( _d2 )->getP4();
1530 EvtVector4R moms3 = p->getDaug( _d3 )->getP4();
1531
1532 EvtVector4R p4_p;
1533 p4_p.set( p->mass(), 0.0, 0.0, 0.0 );
1534
1535 EvtComplex amp( 1.0, 0.0 );
1536
1537 // now determine which D and which decay
1538
1539 // data from Anjos et al, Phys.Rev.D 1993, v.48,num.1,p.56 (E691 resuls)
1540 // for D+ -> K- pi+ pi+, and from Adler et al, Phys.Lett. B196 (1987), 107
1541 //(Mark III results) for D+ -> K0bar pi+ pi0.
1542 // CLEO results for D0->k-pi+pi0
1543
1544 if ( _flag == 1 )
1545 {
1546
1547 // have a D+ -> K- pi+ pi+ decay, or charge conjugate
1548 // Anjos etal e691 - Phys Rev D48, 56 (1993)
1549 // EvtResonance DplusRes11(p4_p,moms1,moms2,0.78,-60.0,0.0498,0.89610,1);
1550 // EvtResonance DplusRes12(p4_p,moms3,moms1,0.78,-60.0,0.0498,0.89610,1);//K*(892)
1551 //
1552 // EvtResonance DplusRes21(p4_p,moms1,moms2,0.53,132.0,0.287,1.429,0);
1553 // EvtResonance DplusRes22(p4_p,moms3,moms1,0.53,132.0,0.287,1.429,0);//K*(1430)
1554 //
1555 // EvtResonance DplusRes31(p4_p,moms1,moms2,0.47,-51.0,0.323,1.714,1);
1556 // EvtResonance DplusRes32(p4_p,moms3,moms1,0.47,-51.0,0.323,1.714,1);//K*(1680)
1557 //
1558 // amp = amp + oneby2*(-DplusRes11.resAmpl()+DplusRes12.resAmpl()) +
1559 // oneby2*(DplusRes21.resAmpl() + DplusRes22.resAmpl()) +
1560 // oneby2*(-DplusRes31.resAmpl()+ DplusRes32.resAmpl());
1561 // CLEO-c p15,arxiv:0802.4214v2
1562 EvtResonance2 DplusRes11( p4_p, moms1, moms2, 1.0, 0.0, 0.0503, 0.896, 1, true );
1563 EvtResonance2 DplusRes12( p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.896, 1,
1564 true ); // K*(892)
1565 EvtResonance2 DplusRes21( p4_p, moms1, moms2, 3.0, 49.7 - 180.0, 0.164, 1.463, 0 );
1566 EvtResonance2 DplusRes22( p4_p, moms3, moms1, 3.0, 49.7 - 180.0, 0.164, 1.463,
1567 0 ); // K*(1430)
1568 EvtResonance2 DplusRes31( p4_p, moms1, moms2, 0.96, -29.9 + 180.0, 0.109, 1.4324, 2,
1569 true );
1570 EvtResonance2 DplusRes32( p4_p, moms3, moms1, 0.96, -29.9 + 180.0, 0.109, 1.4324, 2,
1571 true ); // K*_2(1430)
1572 EvtResonance2 DplusRes41( p4_p, moms1, moms2, 6.5, 29.0, 0.323, 1.717, 1, true );
1573 EvtResonance2 DplusRes42( p4_p, moms3, moms1, 6.5, 29.0, 0.323, 1.717, 1,
1574 true ); // K*(1680)
1575 EvtResonance2 DplusRes51( p4_p, moms1, moms2, 5.01, -163.7 + 180.0, 0.470, 0.809, 0 );
1576 EvtResonance2 DplusRes52( p4_p, moms3, moms1, 5.01, -163.7 + 180.0, 0.470, 0.809,
1577 0 ); // kappa(800)
1578 double pi180inv = 1.0 / EvtConst::radToDegrees;
1579 amp = EvtComplex( 7.4 * cos( ( -18.4 + 180.0 ) * pi180inv ),
1580 7.4 * sin( ( -18.4 + 180.0 ) * pi180inv ) ) +
1581 oneby2 * ( -DplusRes11.resAmpl() + DplusRes12.resAmpl() ) +
1582 oneby2 * ( DplusRes21.resAmpl() + DplusRes22.resAmpl() ) +
1583 oneby2 * ( DplusRes31.resAmpl() + DplusRes32.resAmpl() ) +
1584 oneby2 * ( -DplusRes41.resAmpl() + DplusRes42.resAmpl() ) +
1585 oneby2 * ( DplusRes51.resAmpl() + DplusRes52.resAmpl() );
1586 }
1587
1588 if ( _flag == 2 )
1589 {
1590
1591 // have a D+ -> K0bar pi+ pi0 decay (daughters must be listed in this order!)
1592 // adler etal MarkIII - Phys Lett B196, 107 (1987)
1593 // Results in this paper:
1594 // Kbar rho+ FitFraction = 68+/-8+/-12 Phase 0
1595 // Kbar* pi+ 19+/-6+/-6 43+/-23
1596 // nonres 13+/-7+/-8 250+/-19
1597 // These numbers below seem not to be exactly the same
1598 // the phases are equiv to -106=254 and 41
1599 //
1600 // old EvtResonance DplusKpipi0Res1(p4_p,moms2,moms3,1.00,0.00,0.1512,0.7699,1); //rho+
1601 // old EvtResonance DplusKpipi0Res2(p4_p,moms3,moms1,0.8695,0.7191,0.0498,0.89159,1);
1602 // //K*0 old amp = 0.9522*EvtComplex(cos(-1.8565),sin(-1.8565))
1603 // + 1.00*DplusKpipi0Res1.relBrWig(0) +
1604 // 0.8695*EvtComplex(cos(0.7191),sin(0.7191))*DplusKpipi0Res2.relBrWig(1);
1605 double pi180inv = 1.0 / EvtConst::radToDegrees;
1606 // NR rho K*(892) K0(1430) K2(1430) K(1680) rho(1450)
1607 // kappa
1608 // double amp1[8]={0.920322, 1, 0.198943, 0.604074,
1609 // 0.225741, 1.257776, 1.989557, 1.332243}; double phi[8]={278.810706, 0, 288.035519,
1610 // 324.018021, 263.172850, 276.218704, 169.42471, 88.091929}; double amp1[8]={0.797929, 1,
1611 // 0.194377, 0.332583, 0.286707, 1.440519, 2.278415, 0.611784}; double
1612 // phi[8]={272.941122, 0, 288.439024, 329.600012, 258.197983,273.091907,
1613 // 172.456067, 85.072272}; double amp1[8]={0.8, 1, 0.2, 0.3, 0, 0, 2.5, 0}; double
1614 // phi[8] ={273, 0, 288, 330, 258, 0, 172, 85};
1615 // Final result
1616 double amp1[8] = { 0.797929, 1, 0.194377, 0.332583, 0, 1.440519, 2.278415, 0.611784 };
1617 double phi[8] = { 279, 0, 293, 334, 0, 252, 187, 93 };
1618 EvtResonance2 DplusKpipi0Res1( p4_p, moms2, moms3, amp1[1], phi[1], 0.1494, 0.77549, 1 );
1619 EvtResonance2 DplusKpipi0Res2( p4_p, moms1, moms3, amp1[2], phi[2], 0.0503, 0.896, 1 );
1620 EvtResonance2 DplusKpipi0Res3( p4_p, moms1, moms3, amp1[3], phi[3], 0.27, 1.425,
1621 0 ); // mass and width fixed at PDG, Liaoyuan Dong
1622 EvtResonance2 DplusKpipi0Res4( p4_p, moms1, moms3, amp1[4], phi[4], 0.109, 1.4324, 2 );
1623 EvtResonance2 DplusKpipi0Res5( p4_p, moms1, moms3, amp1[5], phi[5], 0.322, 1.717, 1 );
1624 // Fitted
1625 EvtResonance2 DplusKpipi0Res6( p4_p, moms2, moms3, amp1[6], phi[6], 0.4, 1.465,
1626 1 ); // mass and width fixed at PDG, Liaoyuan Dong
1627 EvtResonance2 DplusKpipi0Res7( p4_p, moms1, moms3, 1, 0, 0.175, 1.465, 0 );
1628 amp = amp1[0] * EvtComplex( cos( phi[0] * pi180inv ), sin( phi[0] * pi180inv ) ) +
1629 DplusKpipi0Res1.resAmpl() + DplusKpipi0Res2.resAmpl() + DplusKpipi0Res3.resAmpl() +
1630 DplusKpipi0Res4.resAmpl() + DplusKpipi0Res5.resAmpl() + DplusKpipi0Res6.resAmpl();
1631 // EvtComplex
1632 // kappa=1./(EvtComplex(0.731086,-0.244799)*EvtComplex(0.731086,-0.244799)-(moms1+moms3).mass2());
1633 // EvtComplex
1634 // kappa=1./(EvtComplex(0.710843,-0.251841)*EvtComplex(0.710843,-0.251841)-(moms1+moms3).mass2());
1635 // Final result
1636 EvtComplex kappa = 1. / ( EvtComplex( 0.752, -0.229 ) * EvtComplex( 0.752, -0.229 ) -
1637 ( moms1 + moms3 ).mass2() );
1638 amp += amp1[7] * EvtComplex( cos( phi[7] * pi180inv ), sin( phi[7] * pi180inv ) ) * kappa;
1639 }
1640
1641 if ( _flag == 3 )
1642 {
1643
1644 // know it's a D0 -> K0_bar pi+ pi- or charge conjugate
1645
1646 // EvtResonance DK2piRes1(p4_p,moms1,moms2,2.31,109.0,0.0498,0.89610,1);//K*(892)
1647 // EvtResonance DK2piRes2(p4_p,moms3,moms2,1.59,-123.0,0.1491,0.7683,1);//RHO(770)
1648
1649 // amp = amp + DK2piRes1.resAmpl() + DK2piRes2.resAmpl();
1650
1651 // D0 -> K0 pi+ pi- + CC
1652 // If it does not come from a B->DK, decay it as D0 or D0bar separatly
1653 // if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
1654 // if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
1655
1656 if ( isBToDK )
1657 {
1658 // Gamma angle in rad.
1659 double gamma = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 0 );
1660 // Strong phase in rad.
1661 double delta = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 1 );
1662 // Ratio between B->D0K and B->D0barK
1663 double A = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 2 );
1664
1665 EvtComplex Factor( fabs( A ) * cos( delta ), fabs( A ) * sin( delta ) );
1666
1667 if ( ( p->getParent()->getId() == BP ) || ( p->getParent()->getId() == B0 ) )
1668 {
1669 // the ratio D/Dbar
1670 Factor = Factor * EvtComplex( cos( gamma ), sin( gamma ) );
1671 if ( p->getId() == D0 )
1672 {
1673 // the flavor of the particle has no meaning. But we need
1674 // it to know which daughter is pi+ or pi-
1675 // M( B+ or B0 ) = f(Dbar) + factor * f(D)
1676 // f(Dbar) = amplDtoK0PiPi(pD, K0, pi+, pi-)
1677 // f(D) = amplDtoK0PiPi(pD, K0, pi-, pi+)
1678 // Then ...
1679 amp = amplDtoK0PiPi( p4_p, moms1, moms3, moms2 ) +
1680 Factor * amplDtoK0PiPi( p4_p, moms1, moms2, moms3 );
1681 }
1682 else
1683 {
1684 amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 ) +
1685 Factor * amplDtoK0PiPi( p4_p, moms1, moms3, moms2 );
1686 }
1687 }
1688 else if ( ( p->getParent()->getId() == BM ) || ( p->getParent()->getId() == B0B ) )
1689 {
1690 Factor = Factor * EvtComplex( cos( gamma ), -sin( gamma ) );
1691 // here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
1692 if ( p->getId() == D0 )
1693 {
1694 amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 ) +
1695 Factor * amplDtoK0PiPi( p4_p, moms1, moms3, moms2 );
1696 }
1697 else
1698 {
1699 amp = amplDtoK0PiPi( p4_p, moms1, moms3, moms2 ) +
1700 Factor * amplDtoK0PiPi( p4_p, moms1, moms2, moms3 );
1701 }
1702 }
1703 }
1704 else { amp = amplDtoK0PiPi( p4_p, moms1, moms2, moms3 ); }
1705 }
1706
1707 if ( _flag == 4 )
1708 {
1709
1710 EvtResonance2 DKpipi0Res1( p4_p, moms2, moms3, 1.0, 0.0, 0.1507, 0.770, 1 ); // rho
1711 EvtResonance2 DKpipi0Res2( p4_p, moms1, moms2, 0.39, -0.2, 0.0505, 0.8961, 1 ); // k*0
1712 EvtResonance2 DKpipi0Res3( p4_p, moms1, moms3, 0.44, 163.0, 0.050, 0.8915, 1 ); // k*-
1713
1714 EvtResonance2 DKpipi0Res4( p4_p, moms1, moms3, 0.77, 55.5, 0.294, 1.412, 0 ); // k01430-
1715 EvtResonance2 DKpipi0Res5( p4_p, moms1, moms2, 0.85, 166.0, 0.294, 1.412, 0 ); // k01430bar
1716 EvtResonance2 DKpipi0Res6( p4_p, moms2, moms3, 2.5, 171.0, 0.240, 1.700, 1 ); // rho1700
1717 EvtResonance2 DKpipi0Res7( p4_p, moms1, moms3, 2.5, 103.0, 0.322, 1.717, 1 ); // K*1680-
1718
1719 double pi180inv = 1.0 / EvtConst::radToDegrees;
1720
1721 amp = EvtComplex( 1.75 * cos( 31.2 * pi180inv ), 1.75 * sin( 31.2 * pi180inv ) ) +
1722 DKpipi0Res1.resAmpl() + DKpipi0Res2.resAmpl() + DKpipi0Res3.resAmpl() +
1723 DKpipi0Res4.resAmpl() + DKpipi0Res5.resAmpl() + DKpipi0Res6.resAmpl() +
1724 DKpipi0Res7.resAmpl();
1725 }
1726
1727 if ( _flag == 5 )
1728 {
1729
1730 // D0 -> K0 K+ K- + CC
1731 // If it does not come from a B->DK, decay it as D0 or D0bar separatly
1732 // if p4_p is D0, moms1 is K0, moms2 is pi-, moms3 is pi+
1733 // if p4_p is D0bar, moms1 is K0, moms2 is pi+, moms3 is pi-
1734
1735 if ( isBToDK )
1736 {
1737 // Gamma angle in rad.
1738 double gamma = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 0 );
1739 // Strong phase in rad.
1740 double delta = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 1 );
1741 // Ratio between B->D0K and B->D0barK
1742 double A = EvtDecayTable::getDecayFunc( p->getParent() )->getArg( 2 );
1743
1744 EvtComplex Factor( fabs( A ) * cos( delta ), fabs( A ) * sin( delta ) );
1745
1746 if ( ( p->getParent()->getId() == BP ) || ( p->getParent()->getId() == B0 ) )
1747 {
1748 // the ratio D/Dbar
1749 Factor = Factor * EvtComplex( cos( gamma ), sin( gamma ) );
1750 if ( p->getId() == D0 )
1751 {
1752 // the flavor of the particle has no meaning. But we need
1753 // it to know which daughter is pi+ or pi-
1754 // M( B+ or B0 ) = f(Dbar) + factor * f(D)
1755 // f(Dbar) = amplDtoK0PiPi(pD, K0, K+, K-)
1756 // f(D) = amplDtoK0PiPi(pD, K0, K-, K+)
1757 // Then ...
1758 amp = amplDtoK0KK( p4_p, moms1, moms3, moms2 ) +
1759 Factor * amplDtoK0KK( p4_p, moms1, moms2, moms3 );
1760 }
1761 else
1762 {
1763 amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 ) +
1764 Factor * amplDtoK0KK( p4_p, moms1, moms3, moms2 );
1765 }
1766 }
1767 else if ( ( p->getParent()->getId() == BM ) || ( p->getParent()->getId() == B0B ) )
1768 {
1769 Factor = Factor * EvtComplex( cos( gamma ), -sin( gamma ) );
1770 // here M( B- or B0bar ) = f(D) + factor * f(Dbar) then ...
1771 if ( p->getId() == D0 )
1772 {
1773 amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 ) +
1774 Factor * amplDtoK0KK( p4_p, moms1, moms3, moms2 );
1775 }
1776 else
1777 {
1778 amp = amplDtoK0KK( p4_p, moms1, moms3, moms2 ) +
1779 Factor * amplDtoK0KK( p4_p, moms1, moms2, moms3 );
1780 }
1781 }
1782 }
1783 else { amp = amplDtoK0KK( p4_p, moms1, moms2, moms3 ); }
1784 }
1785
1786 // Ds -> K K pi
1787 if ( _flag == 6 )
1788 {
1789 EvtResonance2 DsKKpiRes1( p4_p, moms3, moms1, 1.0, 0.0, 0.0455, 0.8944, 1,
1790 true ); // K*(892)
1791 EvtResonance2 DsKKpiRes2( p4_p, moms3, moms1, 1.48, 138., 0.290, 1.414, 0 ); // K*_0(1430)
1792 EvtFlatte DsKKpiRes3( p4_p, moms1, moms2, 5.07, 156., 0.965, _kkpi_params ); // f_0(980)
1793 EvtResonance2 DsKKpiRes4( p4_p, moms1, moms2, 1.15, -10., 0.00426, 1.019455, 1,
1794 true ); // phi(1020)
1795 EvtResonance2 DsKKpiRes5( p4_p, moms1, moms2, 1.28, 53., 0.265, 1.350, 0 ); // f_0(1370)
1796 EvtResonance2 DsKKpiRes6( p4_p, moms1, moms2, 1.19, 87., 0.137, 1.724, 0 ); // f_0(1710)
1797 amp = DsKKpiRes1.resAmpl() + DsKKpiRes2.resAmpl() + DsKKpiRes3.resAmpl() +
1798 DsKKpiRes4.resAmpl() + DsKKpiRes5.resAmpl() + DsKKpiRes6.resAmpl();
1799 }
1800
1801 // D -> pi pi pi
1802 if ( _flag == 7 )
1803 {
1804 // BaBar decay amplitudes for Ds+ -> pi- pi+ pi+, or charge conjugate
1805 // p4_p is Ds+
1806 // moms1 is pi-
1807 // moms2 is pi+
1808 // moms3 is pi+
1809 // Amplitudes and phases are taken from BaBar hep-ex/0808.0971 with MIPWA s-wave component
1810
1811 EvtResonance2 DspipipiRes1( p4_p, moms1, moms2, 1.0, 0.0, 0.1867, 1.2755, 2, true,
1812 false ); // f2(1270), 12
1813 EvtResonance2 DspipipiRes2( p4_p, moms1, moms3, 1.0, 0.0, 0.1867, 1.2755, 2, true,
1814 false ); // f2(1270), 13
1815
1816 EvtResonance2 DspipipiRes3( p4_p, moms1, moms2, 1.25706e-01,
1817 5.44277 * EvtConst::radToDegrees, 0.1491, 0.77526, 1, true,
1818 false ); // rho, 12
1819 EvtResonance2 DspipipiRes4( p4_p, moms1, moms3, 1.25706e-01,
1820 5.44277 * EvtConst::radToDegrees, 0.1491, 0.77526, 1, true,
1821 false ); // rho, 13
1822 EvtResonance2 DspipipiRes5( p4_p, moms1, moms2, 9.06766e-01,
1823 1.03370 * EvtConst::radToDegrees, 0.400, 1.465, 1, true,
1824 false ); // rho(1450), 12
1825 EvtResonance2 DspipipiRes6( p4_p, moms1, moms3, 9.06766e-01,
1826 1.03370 * EvtConst::radToDegrees, 0.400, 1.465, 1, true,
1827 false ); // rho(1450), 13
1828
1829 const double xl[] = { 0.28, 0.448, 0.55, 0.647, 0.736, 0.803, 0.873, 0.921, 0.951, 0.968,
1830 0.981, 0.993, 1.024, 1.078, 1.135, 1.193, 1.235, 1.267, 1.297, 1.323,
1831 1.35, 1.376, 1.402, 1.427, 1.455, 1.492, 1.557, 1.64, 1.735 };
1832 const double ym[] = { 1.23487, 2.80323, 3.42035, 3.31677, 5.45084, 6.21976,
1833 7.88104, 11.8548, 16.8433, 21.7424, 26.455, 18.6398,
1834 11.1707, 8.00181, 6.74089, 6.09654, 6.62815, 6.26746,
1835 6.50165, 7.49954, 7.2659, 7.53306, 8.49471, 8.07989,
1836 8.28178, 5.8168, 1.63515, 1.37752, 2.08794 };
1837 const double yp[] = { -3.59059, -3.82322, -3.87059, -3.74264, -3.37687, -3.09568,
1838 -2.59601, -2.15795, -1.76578, -1.21117, -0.577655, -0.246062,
1839 0.17292, 0.550796, 0.981734, 1.27572, 1.32191, 1.56281,
1840 1.46746, 1.60172, 1.75168, 1.79924, 1.94462, 2.09212,
1841 2.53836, 3.06809, 3.05283, 7.0558, 7.31884 };
1842 EvtCubicSpline::setParams( 29, xl, ym, yp );
1843 EvtCubicSpline Dspipipiswave1( p4_p, moms1, moms2 ); // S-wave, 12
1844 EvtCubicSpline Dspipipiswave2( p4_p, moms1, moms3 ); // S-wave, 13
1845
1846 amp = DspipipiRes1.resAmpl() + DspipipiRes2.resAmpl() + DspipipiRes3.resAmpl() +
1847 DspipipiRes4.resAmpl() + DspipipiRes5.resAmpl() + DspipipiRes6.resAmpl() +
1848 Dspipipiswave1.resAmpl() + Dspipipiswave2.resAmpl();
1849 }
1850
1851 // D+ -> K- K+ pi+
1852 // CLEO PRD 78, 072003 (2008) Fit A
1853 if ( _flag == 8 )
1854 {
1855
1856 EvtResonance2 DpKKpiRes1( p4_p, moms3, moms1, 1.0, 0.0, 0.0503, 0.8960, 1,
1857 true ); // K*(892)
1858 EvtResonance2 DpKKpiRes2( p4_p, moms3, moms1, 3.7, 73.0, 0.290, 1.414, 0 ); // K*_0(1430)
1859 EvtResonance2 DpKKpiRes3( p4_p, moms1, moms2, 1.189, -179.0 + 180.0, 0.00426, 1.019455, 1,
1860 true ); // phi(1020)
1861 EvtResonance2 DpKKpiRes4( p4_p, moms1, moms2, 1.72, 123., 0.265, 1.474, 0 ); // a_0(1450)
1862 EvtResonance2 DpKKpiRes5( p4_p, moms1, moms2, 1.9, -52.0 + 180.0, 0.15, 1.68, 1,
1863 true ); // phi(1680)
1864 EvtResonance2 DpKKpiRes6( p4_p, moms3, moms1, 6.4, 150., 0.109, 1.4324, 2,
1865 true ); // K*_2(1430)
1866 double pi180inv = 1.0 / EvtConst::radToDegrees;
1867 amp = EvtComplex( 5.1 * cos( ( 53.0 ) * pi180inv ), 5.1 * sin( ( 53.0 ) * pi180inv ) ) +
1868 DpKKpiRes1.resAmpl() + DpKKpiRes2.resAmpl() + DpKKpiRes3.resAmpl() +
1869 DpKKpiRes4.resAmpl() + DpKKpiRes5.resAmpl() + DpKKpiRes6.resAmpl();
1870 }
1871
1872 // D+ -> pi- pi+ K+ WS (DCS)
1873 // FOCUS PLB 601 10 (2004) ; amplitudes there are individually normalized (although not
1874 // explicit in the paper)
1875 // thus the magnitudes appearing below come from dividing the ones appearing in the paper by
1876 // the sqrt of the integral over the DP of the corresponding squared amplitude. Writing as
1877 // pi- pi+ K+ so pipi resonances are (12) and Kpi resonances are (31); masses and widths
1878 // corresponds to PDG 2010
1879 if ( _flag == 9 )
1880 {
1881 EvtResonance2 DpKpipiDCSRes1( p4_p, moms1, moms2, 1.0, 0.0, 0.149, 0.775, 1,
1882 true ); // rho(770)
1883 EvtResonance2 DpKpipiDCSRes2( p4_p, moms3, moms1, 1.0971, -167.1, 0.0487, 0.896, 1,
1884 true ); // K*(890)
1885 EvtResonance2 DpKpipiDCSRes3( p4_p, moms1, moms2, 0.4738, -134.5, 0.059, 0.972,
1886 0 ); // f0(980) as simple BW
1887 EvtResonance2 DpKpipiDCSRes4( p4_p, moms3, moms1, 2.2688, 54.4, 0.109, 1.432, 2,
1888 true ); // K*2(1430)
1889 amp = DpKpipiDCSRes1.resAmpl() + DpKpipiDCSRes2.resAmpl() + DpKpipiDCSRes3.resAmpl() +
1890 DpKpipiDCSRes4.resAmpl();
1891 }
1892
1893 // D+ -> pi- pi+ pi+ from E791 [PRL 86 770 (2001)]
1894 // masses and widths below correspond to what they used; there, the amplitudes were
1895 // individually normalized (although not explicit) so magnitudes here are obtained after
1896 // correcting for that Breit-Wigner has a factor of (-1) there which changes the relative
1897 // phase of the NR wrt to the resonances thus the NR magnitude is set as negative
1898 if ( _flag == 10 )
1899 {
1900 EvtResonance2 DppipipiRes11( p4_p, moms1, moms2, 1.0, 0.0, 0.150, 0.769, 1,
1901 true ); // rho(770)
1902 EvtResonance2 DppipipiRes12( p4_p, moms3, moms1, 1.0, 0.0, 0.150, 0.769, 1,
1903 true ); // rho(770)
1904 EvtResonance2 DppipipiRes21( p4_p, moms1, moms2, 2.2811, 205.7, 0.324, 0.478,
1905 0 ); // sigma(500)
1906 EvtResonance2 DppipipiRes22( p4_p, moms3, moms1, 2.2811, 205.7, 0.324, 0.478,
1907 0 ); // sigma(500)
1908 EvtResonance2 DppipipiRes31( p4_p, moms1, moms2, 0.4265, 165.0, 0.044, 0.977,
1909 0 ); // f0(980) simple BW
1910 EvtResonance2 DppipipiRes32( p4_p, moms3, moms1, 0.4265, 165.0, 0.044, 0.977,
1911 0 ); // f0(980) simple BW
1912 EvtResonance2 DppipipiRes41( p4_p, moms1, moms2, 2.0321, 57.3, 0.185, 1.275, 2,
1913 true ); // f2(1270)
1914 EvtResonance2 DppipipiRes42( p4_p, moms3, moms1, 2.0321, 57.3, 0.185, 1.275, 2,
1915 true ); // f2(1270)
1916 EvtResonance2 DppipipiRes51( p4_p, moms1, moms2, 0.7888, 105.4, 0.173, 1.434,
1917 0 ); // f0(1370)
1918 EvtResonance2 DppipipiRes52( p4_p, moms3, moms1, 0.7888, 105.4, 0.173, 1.434,
1919 0 ); // f0(1370)
1920 EvtResonance2 DppipipiRes61( p4_p, moms1, moms2, 0.7363, 319.1, 0.310, 1.465, 1,
1921 true ); // rho(1450)
1922 EvtResonance2 DppipipiRes62( p4_p, moms3, moms1, 0.7363, 319.1, 0.310, 1.465, 1,
1923 true ); // rho(1450)
1924 double pi180inv = 1.0 / EvtConst::radToDegrees;
1925 amp = EvtComplex( -3.98 * cos( 57.3 * pi180inv ), -3.98 * sin( 57.3 * pi180inv ) ) +
1926 ( DppipipiRes11.resAmpl() - DppipipiRes12.resAmpl() ) // spin1
1927 + ( DppipipiRes21.resAmpl() + DppipipiRes22.resAmpl() ) +
1928 ( DppipipiRes31.resAmpl() + DppipipiRes32.resAmpl() ) +
1929 ( DppipipiRes41.resAmpl() + DppipipiRes42.resAmpl() ) +
1930 ( DppipipiRes51.resAmpl() + DppipipiRes52.resAmpl() ) +
1931 ( DppipipiRes61.resAmpl() - DppipipiRes62.resAmpl() ); // spin1
1932 }
1933
1934 // D0 -> pi- pi+ pi0
1935 // PRL 99, 251801 (2007) arXiv:hep-ex/0703037
1936 if ( _flag == 11 )
1937 {
1938 EvtResonance2 DpipipiRes1p( p4_p, moms2, moms3, 1.0, 0.0, 0.149, 0.775, 1,
1939 true ); // rho+(770)
1940 EvtResonance2 DpipipiRes1( p4_p, moms1, moms2, 0.588, 16.2, 0.149, 0.775, 1,
1941 true ); // rho0(770)
1942 EvtResonance2 DpipipiRes1m( p4_p, moms3, moms1, 0.714, -2.0, 0.149, 0.775, 1,
1943 true ); // rho-(770)
1944 EvtResonance2 DpipipiRes2p( p4_p, moms2, moms3, 0.21, -146.0, 0.400, 1.465, 1,
1945 true ); // rho+(1450)
1946 EvtResonance2 DpipipiRes2( p4_p, moms1, moms2, 0.33, 10.0, 0.400, 1.465, 1,
1947 true ); // rho0(1450)
1948 EvtResonance2 DpipipiRes2m( p4_p, moms3, moms1, 0.82, 16.0, 0.400, 1.465, 1,
1949 true ); // rho-(1450)
1950 EvtResonance2 DpipipiRes3p( p4_p, moms2, moms3, 2.25, -17.0, 0.250, 1.720, 1,
1951 true ); // rho+(1700)
1952 EvtResonance2 DpipipiRes3( p4_p, moms1, moms2, 2.51, -17.0, 0.250, 1.720, 1,
1953 true ); // rho0(1700)
1954 EvtResonance2 DpipipiRes3m( p4_p, moms3, moms1, 2.00, -50.0, 0.250, 1.720, 1,
1955 true ); // rho-(1700)
1956 EvtResonance2 DpipipiRes4( p4_p, moms1, moms2, 0.015, -59.0, 0.07, 0.980, 0 ); // f0(980)
1957 EvtResonance2 DpipipiRes5( p4_p, moms1, moms2, 0.063, 156.0, 0.350, 1.370, 0 ); // f0(1370)
1958 EvtResonance2 DpipipiRes6( p4_p, moms1, moms2, 0.058, 12.0, 0.109, 1.505, 0 ); // f0(1500)
1959 EvtResonance2 DpipipiRes7( p4_p, moms1, moms2, 0.112, 51.0, 0.135, 1.720, 0 ); // f0(1720)
1960 EvtResonance2 DpipipiRes8( p4_p, moms1, moms2, 1.04, -171.0, 0.185, 1.275, 2,
1961 true ); // f2(1270)
1962 EvtResonance2 DpipipiRes9( p4_p, moms1, moms2, 0.069, 8.0, 0.600, 0.400, 0 ); // sigma(400)
1963
1964 double pi180inv = 1.0 / EvtConst::radToDegrees;
1965 amp = EvtComplex( 0.57 * cos( -11.0 * pi180inv ), 0.57 * sin( -11.0 * pi180inv ) ) +
1966 DpipipiRes1p.resAmpl() + DpipipiRes1.resAmpl() + DpipipiRes1m.resAmpl() +
1967 DpipipiRes2p.resAmpl() + DpipipiRes2.resAmpl() + DpipipiRes2m.resAmpl() +
1968 DpipipiRes3p.resAmpl() + DpipipiRes3.resAmpl() + DpipipiRes3m.resAmpl() +
1969 DpipipiRes4.resAmpl() + DpipipiRes5.resAmpl() + DpipipiRes6.resAmpl() +
1970 DpipipiRes7.resAmpl() + DpipipiRes8.resAmpl() + DpipipiRes9.resAmpl();
1971 }
1972
1973 vertex( amp );
1974
1975 return;
1976}
1977
1978EvtComplex EvtDDalitz::amplDtoK0PiPi( EvtVector4R p4_p, EvtVector4R moms1, EvtVector4R moms2,
1979 EvtVector4R moms3 ) {
1980
1981 // K*(892)-
1982 EvtResonance2 DK2piRes1( p4_p, moms1, moms2, 1.418, -190.0, 0.0508, 0.89166, 1 );
1983 // K0*(1430)
1984 EvtResonance2 DK2piRes2( p4_p, moms1, moms2, 1.818, -337.0, 0.294, 1.412, 0 );
1985 // K2*(1430)
1986 EvtResonance2 DK2piRes3( p4_p, moms1, moms2, 0.909, -5.0, 0.0985, 1.4256, 2 );
1987 // K*(1680)
1988 EvtResonance2 DK2piRes4( p4_p, moms1, moms2, 5.091, -166.0, 0.322, 1.717, 1 );
1989 // DCS K*(892)
1990 EvtResonance2 DK2piRes5( p4_p, moms1, moms3, 0.100, -19.0, 0.0508, 0.89166, 1 );
1991
1992 // Rho
1993 EvtResonance2 DK2piRes6( p4_p, moms3, moms2, 0.909, -340.0, 0.1502, 0.7693, 1 );
1994 // Omega
1995 EvtResonance2 DK2piRes7( p4_p, moms3, moms2, .0336, -226.0, 0.00844, 0.78257, 1 );
1996 // f0(980)
1997 EvtResonance2 DK2piRes8( p4_p, moms3, moms2, 0.309, -152.0, 0.05, 0.977, 0 );
1998 // f0(1370)
1999 EvtResonance2 DK2piRes9( p4_p, moms3, moms2, 1.636, -255.0, 0.272, 1.31, 0 );
2000 // f2(1270)
2001 EvtResonance2 DK2piRes10( p4_p, moms3, moms2, 0.636, -32.0, 0.1851, 1.2754, 2 );
2002
2003 return EvtComplex( 1.0, 0.0 ) + DK2piRes1.resAmpl() + DK2piRes2.resAmpl() +
2004 DK2piRes3.resAmpl() + DK2piRes4.resAmpl() + DK2piRes5.resAmpl() +
2005 DK2piRes6.resAmpl() + DK2piRes7.resAmpl() + DK2piRes8.resAmpl() +
2006 DK2piRes9.resAmpl() + DK2piRes10.resAmpl();
2007}
2008
2009//
2010// BaBar decay amplitudes for D0->Ks K+ K-
2011//
2012// p4_p is D0
2013// moms1 is K0s
2014// moms2 is K+
2015// moms3 is K-
2016// Amplitudes and phases are taken from BaBar hep-ex/0207089
2017// with convention : Non Resonant = Amp 1. / Phase 0.
2018
2019EvtComplex EvtDDalitz::amplDtoK0KK( EvtVector4R p4_p, EvtVector4R moms1, EvtVector4R moms2,
2020 EvtVector4R moms3 ) {
2021
2022 // phi
2023 EvtResonance DK0KKRes1( p4_p, moms2, moms3, 113.75, -40.0, 0.0043, 1.019456, 1 );
2024 // a0(980)
2025 EvtResonance DK0KKRes2( p4_p, moms2, moms3, 152.25, 69.0, 0.1196, 0.9847, 0 );
2026 // f0(980)
2027 EvtResonance DK0KKRes3( p4_p, moms2, moms3, 30.5, -201.0, 0.05, 0.980, 0 );
2028 // a0(980)+
2029 EvtResonance DK0KKRes4( p4_p, moms1, moms2, 85.75, -93.0, 0.1196, 0.9847, 0 );
2030 // a0(980)-
2031 EvtResonance DK0KKRes5( p4_p, moms3, moms1, 8., -53.0, 0.1196, 0.9847, 0 );
2032
2033 return EvtComplex( 1.0, 0.0 ) +
2034
2035 DK0KKRes1.resAmpl() + DK0KKRes2.resAmpl() +
2036
2037 DK0KKRes3.resAmpl() + DK0KKRes4.resAmpl() +
2038
2039 DK0KKRes5.resAmpl();
2040}
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
static const double radToDegrees
Definition EvtConst.hh:29
EvtComplex resAmpl()
static void setParams(const vector< double > x, const vector< double > ym, const vector< double > yp)
EvtDecayBase * clone()
Definition EvtDDalitz.cc:41
void initProbMax()
void getName(std::string &name)
Definition EvtDDalitz.cc:39
void decay(EvtParticle *p)
virtual ~EvtDDalitz()
Definition EvtDDalitz.cc:37
void init()
Definition EvtDDalitz.cc:43
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
virtual void getName(std::string &name)=0
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
static EvtDecayBase * getDecayFunc(EvtParticle *)
EvtComplex resAmpl()
Definition EvtFlatte.cc:73
Definition EvtId.hh:27
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:43
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
EvtParticle * getParent()
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtComplex resAmpl()
void set(int i, double d)