CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
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//
23#include <stdlib.h>
26#include "EvtGenBase/EvtPDL.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
EvtDecayBase * clone()
void initProbMax()
void getName(std::string &name)
void decay(EvtParticle *p)
virtual ~EvtCBTo3piP00()
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
Definition: EvtId.hh:27
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtId getId() const
Definition: EvtParticle.cc:113
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
void set(int i, double d)
Definition: EvtVector4R.hh:183