BOSS 7.0.9
BESIII Offline Software System
Loading...
Searching...
No Matches
BesEvtGen-00-04-08/src/EvtGen/EvtGenModels/EvtCBTo3piP00.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: EvtCBTo3piP00.cc
12//
13// Description: Routine to decay B+/-->pi0 pi0 pi+/-
14// and has CP violation.
15//
16// Modification history:
17//
18// RYD,Versille May 6, 1997 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtGenBase/EvtPatches.hh"
23#include <stdlib.h>
24#include "EvtGenBase/EvtParticle.hh"
25#include "EvtGenBase/EvtGenKine.hh"
26#include "EvtGenBase/EvtPDL.hh"
27#include "EvtGenBase/EvtReport.hh"
28#include "EvtGenModels/EvtCBTo3piP00.hh"
29#include <string>
30
31//Below you will have do modify the declaration to be appropriate
32//for your new routine for the calculation of the amplitude
33
34extern "C" {
35 extern void evt3pionsp00_(double *,int *,
36 double *,
37 double *,double *,
38 double *,double *,
39 double *,double *,double *,double *);
40}
41
43
44void EvtCBTo3piP00::getName(std::string& model_name){
45
46 model_name="CB3PI-P00";
47
48}
49
50
52
53 return new EvtCBTo3piP00;
54
55}
56
58
59 // check that there are 1 argument
60 checkNArg(1);
61 checkNDaug(3);
62
64
68
69}
70
71
72
74
75 setProbMax(1.5);
76
77}
78
79
81
82 //added by Lange Jan4,2000
83 static EvtId BM=EvtPDL::getId("B-");
84 static EvtId BP=EvtPDL::getId("B+");
85
86 EvtParticle *pi1,*pi2,*pi3;
87
89 pi1=p->getDaug(0);
90 pi2=p->getDaug(1);
91 pi3=p->getDaug(2);
92
93 EvtVector4R p4[3];
94 double alpha = getArg(0);
95 int iset;
96 static int first=1;
97
98 if (first==1) {
99 iset=10000;
100 first=0;
101 }
102 else{
103 iset=0;
104 }
105
106 double p4pi1[4],p4Gamma11[4],p4Gamma12[4];
107 double p4Gamma21[4],p4Gamma22[4];
108
109 double realA,imgA,realbarA,imgbarA;
110
111 evt3pionsp00_(&alpha,&iset,
112 p4pi1,
113 p4Gamma11,p4Gamma12,
114 p4Gamma21,p4Gamma22,
115 &realA,&imgA,&realbarA,&imgbarA);
116
117 p4[0].set(p4pi1[3],p4pi1[0],p4pi1[1],p4pi1[2]);
118 p4[1].set(p4Gamma11[3]+p4Gamma12[3],
119 p4Gamma11[0]+p4Gamma12[0],
120 p4Gamma11[1]+p4Gamma12[1],
121 p4Gamma11[2]+p4Gamma12[2]);
122 p4[2].set(p4Gamma21[3]+p4Gamma22[3],
123 p4Gamma21[0]+p4Gamma22[0],
124 p4Gamma21[1]+p4Gamma22[1],
125 p4Gamma21[2]+p4Gamma22[2]);
126
127 pi1->init( getDaug(0), p4[0] );
128 pi2->init( getDaug(1), p4[1] );
129 pi3->init( getDaug(2), p4[2] );
130
131 EvtComplex A(realA,imgA);
132 EvtComplex Abar(realbarA, imgbarA);
133
134 EvtComplex amp;
135 if(p->getId()==BP)
136 {
137 amp = A;
138 }
139 if(p->getId()==BM)
140 {
141 amp = Abar;
142 }
143
144 vertex(amp);
145
146 return ;
147}
148
void evt3pionsp00_(double *, int *, double *, double *, double *, double *, double *, double *, double *, double *, double *)
const double alpha
void evt3pionsp00_(double *, int *, double *, double *, double *, double *, double *, double *, double *, double *, double *)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static EvtId getId(const std::string &name)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0