BOSS 8.0.0
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//
22#include "EvtCBTo3piP00.hh"
28#include <stdlib.h>
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" {
35extern void evt3pionsp00_( double*, int*, double*, double*, double*, double*, double*, double*,
36 double*, double*, double* );
37}
38
40
41void EvtCBTo3piP00::getName( std::string& model_name ) { model_name = "CB3PI-P00"; }
42
44
46
47 // check that there are 1 argument
48 checkNArg( 1 );
49 checkNDaug( 3 );
50
52
56}
57
59
61
62 // added by Lange Jan4,2000
63 static EvtId BM = EvtPDL::getId( "B-" );
64 static EvtId BP = EvtPDL::getId( "B+" );
65
66 EvtParticle *pi1, *pi2, *pi3;
67
69 pi1 = p->getDaug( 0 );
70 pi2 = p->getDaug( 1 );
71 pi3 = p->getDaug( 2 );
72
73 EvtVector4R p4[3];
74 double alpha = getArg( 0 );
75 int iset;
76 static int first = 1;
77
78 if ( first == 1 )
79 {
80 iset = 10000;
81 first = 0;
82 }
83 else { iset = 0; }
84
85 double p4pi1[4], p4Gamma11[4], p4Gamma12[4];
86 double p4Gamma21[4], p4Gamma22[4];
87
88 double realA, imgA, realbarA, imgbarA;
89
90 evt3pionsp00_( &alpha, &iset, p4pi1, p4Gamma11, p4Gamma12, p4Gamma21, p4Gamma22, &realA,
91 &imgA, &realbarA, &imgbarA );
92
93 p4[0].set( p4pi1[3], p4pi1[0], p4pi1[1], p4pi1[2] );
94 p4[1].set( p4Gamma11[3] + p4Gamma12[3], p4Gamma11[0] + p4Gamma12[0],
95 p4Gamma11[1] + p4Gamma12[1], p4Gamma11[2] + p4Gamma12[2] );
96 p4[2].set( p4Gamma21[3] + p4Gamma22[3], p4Gamma21[0] + p4Gamma22[0],
97 p4Gamma21[1] + p4Gamma22[1], p4Gamma21[2] + p4Gamma22[2] );
98
99 pi1->init( getDaug( 0 ), p4[0] );
100 pi2->init( getDaug( 1 ), p4[1] );
101 pi3->init( getDaug( 2 ), p4[2] );
102
103 EvtComplex A( realA, imgA );
104 EvtComplex Abar( realbarA, imgbarA );
105
106 EvtComplex amp;
107 if ( p->getId() == BP ) { amp = A; }
108 if ( p->getId() == BM ) { amp = Abar; }
109
110 vertex( amp );
111
112 return;
113}
character *LEPTONflag integer iresonances real pi2
void evt3pionsp00_(double *, int *, double *, double *, double *, double *, double *, double *, double *, double *, double *)
double alpha
EvtDecayBase * clone()
void getName(std::string &name)
void decay(EvtParticle *p)
virtual ~EvtCBTo3piP00()
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)
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)
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtId getId() const
EvtParticle * getDaug(int i)
void set(int i, double d)