BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJ2BB2.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtJ2BB2.cc //
12// Description: Routine to decay jpsi or psi(2S) to B10 B10 bar.
13// The augular distribution parameter alpha is writed as -- in the model
14// with use the Carimalo approach that it is expended by us for jpsi or
15// psi(2S) decays B10 B10 bar.
16//
17// Modification history:
18//
19// Pang C.Y. and Ping R.-G. Apr, 2007 Module created
20//
21//------------------------------------------------------------------------
22
23#include "EvtJ2BB2.hh"
36#include <stdlib.h>
37
38#include <string>
39
40using std::cout;
41using std::endl;
43
44void EvtJ2BB2::getName( std::string& model_name ) { model_name = "J2BB2"; }
45
47
55
56/*
57void EvtJ2BB2::initProbMax() {
58
59 //Hard coded... should not be hard to calculate...
60 setProbMax(100.0);
61}
62*/
63
65
66 static EvtId DZP = EvtPDL::getId( "Delta0" );
67 static EvtId DZM = EvtPDL::getId( "anti-Delta0" );
68 static EvtId DPP = EvtPDL::getId( "Delta+" );
69 static EvtId DPM = EvtPDL::getId( "anti-Delta-" );
70 static EvtId DMP = EvtPDL::getId( "Delta-" );
71 static EvtId DMM = EvtPDL::getId( "anti-Delta+" );
72 static EvtId DPPP = EvtPDL::getId( "Delta++" );
73 static EvtId DPPM = EvtPDL::getId( "anti-Delta--" );
74
75 static EvtId SZP = EvtPDL::getId( "Sigma*0" );
76 static EvtId SZM = EvtPDL::getId( "anti-Sigma*0" );
77 static EvtId SPP = EvtPDL::getId( "Sigma*+" );
78 static EvtId SPM = EvtPDL::getId( "anti-Sigma*-" );
79 static EvtId SMP = EvtPDL::getId( "Sigma*-" );
80 static EvtId SMM = EvtPDL::getId( "anti-Sigma*+" );
81
82 static EvtId XP = EvtPDL::getId( "Xi*-" );
83 static EvtId XM = EvtPDL::getId( "anti-Xi*+" );
84 static EvtId XZP = EvtPDL::getId( "Xi*0" );
85 static EvtId XZM = EvtPDL::getId( "anti-Xi*0" );
86
87 static EvtId OP = EvtPDL::getId( "Omega-" );
88 static EvtId OM = EvtPDL::getId( "anti-Omega+" );
89
91
92 EvtParticle *v, *s1;
93 EvtVector4R pv, ps, ppr;
94
95 v = p->getDaug( 0 );
96 s1 = p->getDaug( 1 );
97 pv = v->getP4();
98 ps = s1->getP4();
99 ppr = p->getP4();
100 // Put phase space results into the daughters.
101 EvtHelSys angles( ppr, pv ); // using helicity sys. angles
102 double theta = angles.getHelAng( 1 );
103 double phi = angles.getHelAng( 2 );
104 double gamma = 0;
105 /* double costheta=cos(theta);
106 double sintheta=sqrt(1-costheta*costheta);
107 double d11=(1+costheta)/2.;
108 double d1m1=(1-costheta)/2.;
109 double d10=-sintheta/sqrt(2.);
110 double dm10=-d10;
111 double dm11=d1m1,dm1m1=d11;
112 double d0m1=d10,d01=-d10,d00=costheta;
113 */
114 // double mass_b1 = EvtPDL::getMass(getDaug(0));
115 // double mass_b2 = EvtPDL::getMass(getDaug(1));
116 double mass_b1, mass_b2;
117 EvtId d1;
118 d1 = v->getId();
119
120 // the mass of daughters are defined in our model. Because the distribution of Delta
121 // BreitWigner mass is very large.
122
123 if ( ( d1 == XP ) || ( d1 == XM ) || ( d1 == XZP ) || ( d1 == XZM ) ) { mass_b1 = 1.532; }
124 else if ( ( d1 == SPP ) || ( d1 == SPM ) || ( d1 == SMP ) || ( d1 == SMM ) ||
125 ( d1 == SZP ) || ( d1 == SZM ) )
126 { mass_b1 = 1.383; }
127 else if ( ( d1 == DZP ) || ( d1 == DZM ) || ( d1 == DPP ) || ( d1 == DPM ) ||
128 ( d1 == DMP ) || ( d1 == DMM ) || ( d1 == DPPP ) || ( d1 == DPPM ) )
129 { mass_b1 = 1.232; }
130 else if ( ( d1 == OP ) || d1 == OM ) { mass_b1 = 1.67245; }
131 else
132 { cout << "The decay is not the process: J/psi->B10 B10bar(decuplet baryon) ." << endl; }
133
134 mass_b2 = mass_b1;
135 double mass_M = EvtPDL::getMass( getParentId() );
136
137 // double c1=pow(pv.d3mag(),2.0);
138 // double R=(mass_b1+pv.get(0))*(mass_b2+ps.get(0));
139
140 double R = pow( mass_b1 + mass_M / 2.0, 2.0 );
141 double c1 = mass_M * mass_M / 4.0 - mass_b1 * mass_b1;
142 double u = pow( ( R - c1 ) / ( R + c1 ), 2.0 );
143
144 if ( getNArg() > 0 ) { alpha = getArg( 0 ); }
145 else
146 { alpha = ( -9 * u * u * u + 17 * u * u - 16 * u + 8 ) / ( 9 * u * u * u - 7 * u * u + 8 ); }
147
148 double F00, F01, F03, F10, F11, F22, F23, F30, F32, F33;
149 double scale1 = sqrt( 3.0 ) * u / ( u - 2.0 ); // scale1=F01:F03.
150 double scale2 = 3.0 * u / ( 3.0 * u - 4 ); // scale2=F11:F00.
151
152 // F00=1.0; F01=scale1*F03;F11=scale2*F00;
153 // F03=sqrt(2.0*(1.0+scale2*scale2)*(1.0+alpha)/((1.0-alpha)*(1.0+2.0*scale1*scale1)));
154
155 F00 = sqrt( ( 1 - alpha ) / ( 4.0 * ( 1.0 + scale2 * scale2 ) ) );
156 F03 = sqrt( ( 1 + alpha ) / ( 2.0 * ( 1.0 + 2.0 * scale1 * scale1 ) ) );
157 F01 = scale1 * F03;
158 F11 = scale2 * F00;
159 F22 = F11;
160 F32 = F01;
161 F33 = F00;
162 F30 = F03;
163 F10 = F01;
164 F23 = F32; // 07.2
165
166 // J/psi helicity =1,-1,0 corresponding index=0,1,2
167 // decuplt baryon helicity =1/2,3/2,-3/2,-1/2 corresponding index=0,1,2,3
168 vertex( 0, 0, 0, Djmn( 1, 1, 0, phi, theta, gamma ) * F00 );
169 vertex( 0, 0, 1, Djmn( 1, 1, -1, phi, theta, gamma ) * F01 );
170 vertex( 0, 0, 2, 0.0 );
171 vertex( 0, 0, 3, Djmn( 1, 1, 1, phi, theta, gamma ) * F03 );
172 vertex( 0, 1, 0, Djmn( 1, 1, 1, phi, theta, gamma ) * F10 );
173 vertex( 0, 1, 1, Djmn( 1, 1, 0, phi, theta, gamma ) * F11 );
174 vertex( 0, 1, 2, 0.0 );
175 vertex( 0, 1, 3, 0.0 );
176 vertex( 0, 2, 0, 0.0 );
177 vertex( 0, 2, 1, 0.0 );
178 vertex( 0, 2, 2, Djmn( 1, 1, 0, phi, theta, gamma ) * F22 );
179 vertex( 0, 2, 3, Djmn( 1, 1, -1, phi, theta, gamma ) * F23 );
180 vertex( 0, 3, 0, Djmn( 1, 1, -1, phi, theta, gamma ) * F30 );
181 vertex( 0, 3, 1, 0.0 );
182 vertex( 0, 3, 2, Djmn( 1, 1, 1, phi, theta, gamma ) * F32 );
183 vertex( 0, 3, 3, Djmn( 1, 1, 0, phi, theta, gamma ) * F33 );
184
185 vertex( 1, 0, 0, Djmn( 1, -1, 0, phi, theta, gamma ) * F00 );
186 vertex( 1, 0, 1, Djmn( 1, -1, -1, phi, theta, gamma ) * F01 );
187 vertex( 1, 0, 2, 0.0 );
188 vertex( 1, 0, 3, Djmn( 1, -1, 1, phi, theta, gamma ) * F03 );
189 vertex( 1, 1, 0, Djmn( 1, -1, 1, phi, theta, gamma ) * F10 );
190 vertex( 1, 1, 1, Djmn( 1, -1, 0, phi, theta, gamma ) * F11 );
191 vertex( 1, 1, 2, 0.0 );
192 vertex( 1, 1, 3, 0.0 );
193 vertex( 1, 2, 0, 0.0 );
194 vertex( 1, 2, 1, 0.0 );
195 vertex( 1, 2, 2, Djmn( 1, -1, 0, phi, theta, gamma ) * F22 );
196 vertex( 1, 2, 3, Djmn( 1, -1, -1, phi, theta, gamma ) * F23 );
197 vertex( 1, 3, 0, Djmn( 1, -1, -1, phi, theta, gamma ) * F30 );
198 vertex( 1, 3, 1, 0.0 );
199 vertex( 1, 3, 2, Djmn( 1, -1, 1, phi, theta, gamma ) * F32 );
200 vertex( 1, 3, 3, Djmn( 1, -1, 0, phi, theta, gamma ) * F33 );
201
202 vertex( 2, 0, 0, Djmn( 1, 0, 0, phi, theta, gamma ) * F00 );
203 vertex( 2, 0, 1, Djmn( 1, 0, -1, phi, theta, gamma ) * F01 );
204 vertex( 2, 0, 2, 0.0 );
205 vertex( 2, 0, 3, Djmn( 1, 0, 1, phi, theta, gamma ) * F03 );
206 vertex( 2, 1, 0, Djmn( 1, 0, 1, phi, theta, gamma ) * F10 );
207 vertex( 2, 1, 1, Djmn( 1, 0, 0, phi, theta, gamma ) * F11 );
208 vertex( 2, 1, 2, 0.0 );
209 vertex( 2, 1, 3, 0.0 );
210 vertex( 2, 2, 0, 0.0 );
211 vertex( 2, 2, 1, 0.0 );
212 vertex( 2, 2, 2, Djmn( 1, 0, 0, phi, theta, gamma ) * F22 );
213 vertex( 2, 2, 3, Djmn( 1, 0, -1, phi, theta, gamma ) * F23 );
214 vertex( 2, 3, 0, Djmn( 1, 0, -1, phi, theta, gamma ) * F30 );
215 vertex( 2, 3, 1, 0.0 );
216 vertex( 2, 3, 2, Djmn( 1, 0, 1, phi, theta, gamma ) * F32 );
217 vertex( 2, 3, 3, Djmn( 1, 0, 0, phi, theta, gamma ) * F33 );
218
219 return;
220}
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition EvtHelSys.cc:165
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition KarLud.h:35
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
double getHelAng(int i)
Definition EvtHelSys.cc:52
Definition EvtId.hh:27
double alpha
Definition EvtJ2BB2.hh:42
double u
Definition EvtJ2BB2.hh:43
EvtDecayBase * clone()
Definition EvtJ2BB2.cc:46
void init()
Definition EvtJ2BB2.cc:48
void decay(EvtParticle *p)
Definition EvtJ2BB2.cc:64
void getName(std::string &name)
Definition EvtJ2BB2.cc:44
virtual ~EvtJ2BB2()
Definition EvtJ2BB2.cc:42
static double getMass(EvtId i)
Definition EvtPDL.hh:44
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)