BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBtoKpiCPiso.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: EvtBtoKpiCPiso.cc
12//
13// Description: Routine to decay B -> K pi with isospin amplitudes
14//
15// Modification history:
16//
17// RYD/NK Febuary 7, 1998 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtBtoKpiCPiso.hh"
27#include <stdlib.h>
28#include <string>
29
31
32void EvtBtoKpiCPiso::getName( std::string& model_name ) { model_name = "BTOKPI_CP_ISO"; }
33
35
37
38 // check that there are 15 arguments
39 checkNArg( 15 );
40 checkNDaug( 2 );
41
43
46}
47
49
50 // this might need to be revised
51
52 // added by Lange Jan4,2000
53 static EvtId PI0 = EvtPDL::getId( "pi0" );
54 static EvtId PIP = EvtPDL::getId( "pi+" );
55 static EvtId PIM = EvtPDL::getId( "pi+" );
56 static EvtId K0 = EvtPDL::getId( "K0" );
57 static EvtId KB = EvtPDL::getId( "anti-K0" );
58 static EvtId KP = EvtPDL::getId( "K+" );
59 static EvtId KM = EvtPDL::getId( "K-" );
60
61 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KP ) ) ||
62 ( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PI0 ) ) )
63 { setProbMax( 2.0 * ( getArg( 2 ) * getArg( 2 ) + getArg( 10 ) * getArg( 10 ) ) ); }
64
65 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KM ) ) ||
66 ( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PI0 ) ) )
67 { setProbMax( 2.0 * ( getArg( 4 ) * getArg( 4 ) + getArg( 12 ) * getArg( 12 ) ) ); }
68
69 if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == K0 ) ) ||
70 ( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PIP ) ) )
71 { setProbMax( 4.0 * ( getArg( 6 ) * getArg( 6 ) + getArg( 10 ) * getArg( 10 ) ) ); }
72
73 if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KB ) ) ||
74 ( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PIM ) ) )
75 { setProbMax( 4.0 * ( getArg( 8 ) * getArg( 8 ) + getArg( 12 ) * getArg( 12 ) ) ); }
76
77 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == K0 ) ) ||
78 ( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PI0 ) ) )
79 { setProbMax( 2.0 * ( getArg( 2 ) * getArg( 2 ) + getArg( 10 ) * getArg( 10 ) ) ); }
80
81 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KB ) ) ||
82 ( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PI0 ) ) )
83 { setProbMax( 2.0 * ( getArg( 4 ) * getArg( 4 ) + getArg( 12 ) * getArg( 12 ) ) ); }
84
85 if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KP ) ) ||
86 ( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PIM ) ) )
87 { setProbMax( 4.0 * ( getArg( 6 ) * getArg( 6 ) + getArg( 10 ) * getArg( 10 ) ) ); }
88
89 if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == KM ) ) ||
90 ( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PIP ) ) )
91 { setProbMax( 4.0 * ( getArg( 8 ) * getArg( 8 ) + getArg( 12 ) * getArg( 12 ) ) ); }
92}
93
95
97 // added by Lange Jan4,2000
98 static EvtId PI0 = EvtPDL::getId( "pi0" );
99 static EvtId PIP = EvtPDL::getId( "pi+" );
100 static EvtId PIM = EvtPDL::getId( "pi+" );
101 static EvtId K0 = EvtPDL::getId( "K0" );
102 static EvtId KB = EvtPDL::getId( "anti-K0" );
103 static EvtId KP = EvtPDL::getId( "K+" );
104 static EvtId KM = EvtPDL::getId( "K-" );
105
106 EvtComplex A;
107 EvtComplex U, Ubar, V, Vbar, W, Wbar;
108
109 U = EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ), getArg( 2 ) * sin( getArg( 3 ) ) );
110 Ubar = EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ), getArg( 4 ) * sin( getArg( 5 ) ) );
111 V = EvtComplex( getArg( 6 ) * cos( getArg( 7 ) ), getArg( 6 ) * sin( getArg( 7 ) ) );
112 Vbar = EvtComplex( getArg( 8 ) * cos( getArg( 9 ) ), getArg( 8 ) * sin( getArg( 9 ) ) );
113 W = EvtComplex( getArg( 10 ) * cos( getArg( 11 ) ), getArg( 10 ) * sin( getArg( 11 ) ) );
114 Wbar = EvtComplex( getArg( 12 ) * cos( getArg( 13 ) ), getArg( 12 ) * sin( getArg( 13 ) ) );
115
116 // depending on what combination of K pi we have, there will be different
117 // A and Abar (only A given in comments!)
118
119 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KP ) ) ||
120 ( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PI0 ) ) )
121 {
122
123 // pi0 K+, so U - W
124
125 A = U - W;
126 }
127
128 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KM ) ) ||
129 ( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PI0 ) ) )
130 {
131
132 // pi0 K-, so Ubar - Wbar
133
134 A = Ubar - Wbar;
135 }
136
137 if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == K0 ) ) ||
138 ( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PIP ) ) )
139 {
140
141 // pi+ K0, so V + W
142
143 A = sqrt( 2.0 ) * ( V + W );
144 }
145
146 if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KB ) ) ||
147 ( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PIM ) ) )
148 {
149
150 // pi- K0bar, so Vbar + Wbar
151 A = sqrt( 2.0 ) * ( Vbar + Wbar );
152 }
153
154 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == K0 ) ) ||
155 ( ( getDaug( 0 ) == K0 ) && ( getDaug( 1 ) == PI0 ) ) )
156 {
157
158 // pi0 K0, so U + W
159
160 A = U + W;
161 }
162
163 if ( ( ( getDaug( 0 ) == PI0 ) && ( getDaug( 1 ) == KB ) ) ||
164 ( ( getDaug( 0 ) == KB ) && ( getDaug( 1 ) == PI0 ) ) )
165 { A = Ubar + Wbar; }
166
167 if ( ( ( getDaug( 0 ) == PIM ) && ( getDaug( 1 ) == KP ) ) ||
168 ( ( getDaug( 0 ) == KP ) && ( getDaug( 1 ) == PIM ) ) )
169 {
170
171 // pi- K+, so V - W
172
173 A = sqrt( 2.0 ) * ( V - W );
174 }
175
176 if ( ( ( getDaug( 0 ) == PIP ) && ( getDaug( 1 ) == KM ) ) ||
177 ( ( getDaug( 0 ) == KM ) && ( getDaug( 1 ) == PIP ) ) )
178 { A = sqrt( 2.0 ) * ( Vbar - Wbar ); }
179
180 vertex( A );
181
182 return;
183}
EvtDecayBase * clone()
void getName(std::string &name)
virtual ~EvtBtoKpiCPiso()
void decay(EvtParticle *p)
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
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)