BOSS 7.0.1
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
24#include <stdlib.h>
27#include "EvtGenBase/EvtPDL.hh"
33#include "EvtJ2BB2.hh"
37
38#include <string>
39
40using std::endl;
41using std::cout;
43
44void EvtJ2BB2::getName(std::string& model_name){
45
46 model_name="J2BB2";
47
48}
49
50
52
53 return new EvtJ2BB2;
54
55}
56
58// checkNArg(1);
59 checkNDaug(2);
63
64 }
65
66/*
67void EvtJ2BB2::initProbMax() {
68
69 //Hard coded... should not be hard to calculate...
70 setProbMax(100.0);
71}
72*/
73
75
76 static EvtId DZP=EvtPDL::getId("Delta0");
77 static EvtId DZM=EvtPDL::getId("anti-Delta0");
78 static EvtId DPP=EvtPDL::getId("Delta+");
79 static EvtId DPM=EvtPDL::getId("anti-Delta-");
80 static EvtId DMP=EvtPDL::getId("Delta-");
81 static EvtId DMM=EvtPDL::getId("anti-Delta+");
82 static EvtId DPPP=EvtPDL::getId("Delta++");
83 static EvtId DPPM=EvtPDL::getId("anti-Delta--");
84
85 static EvtId SZP=EvtPDL::getId("Sigma*0");
86 static EvtId SZM=EvtPDL::getId("anti-Sigma*0");
87 static EvtId SPP=EvtPDL::getId("Sigma*+");
88 static EvtId SPM=EvtPDL::getId("anti-Sigma*-");
89 static EvtId SMP=EvtPDL::getId("Sigma*-");
90 static EvtId SMM=EvtPDL::getId("anti-Sigma*+");
91
92 static EvtId XP=EvtPDL::getId("Xi*-");
93 static EvtId XM=EvtPDL::getId("anti-Xi*+");
94 static EvtId XZP=EvtPDL::getId("Xi*0");
95 static EvtId XZM=EvtPDL::getId("anti-Xi*0");
96
97 static EvtId OP=EvtPDL::getId("Omega-");
98 static EvtId OM=EvtPDL::getId("anti-Omega+");
99
101
102 EvtParticle *v,*s1;
103 EvtVector4R pv,ps,ppr;
104
105 v =p->getDaug(0);
106 s1=p->getDaug(1);
107 pv=v->getP4();
108 ps=s1->getP4();
109 ppr=p->getP4();
110// Put phase space results into the daughters.
111 EvtHelSys angles(ppr,pv); //using helicity sys. angles
112 double theta =angles.getHelAng(1);
113 double phi =angles.getHelAng(2);
114 double gamma=0;
115/* double costheta=cos(theta);
116 double sintheta=sqrt(1-costheta*costheta);
117 double d11=(1+costheta)/2.;
118 double d1m1=(1-costheta)/2.;
119 double d10=-sintheta/sqrt(2.);
120 double dm10=-d10;
121 double dm11=d1m1,dm1m1=d11;
122 double d0m1=d10,d01=-d10,d00=costheta;
123*/
124// double mass_b1 = EvtPDL::getMass(getDaug(0));
125// double mass_b2 = EvtPDL::getMass(getDaug(1));
126 double mass_b1,mass_b2;
127 EvtId d1;
128 d1=v->getId();
129
130// the mass of daughters are defined in our model. Because the distribution of Delta BreitWigner mass is very large.
131
132 if((d1==XP)||(d1==XM)||(d1==XZP)||(d1==XZM)) {mass_b1=1.532;}
133 else if((d1==SPP)||(d1==SPM)||(d1==SMP)||(d1==SMM)||(d1==SZP)||(d1==SZM)){mass_b1=1.383;}
134 else if((d1==DZP)||(d1==DZM)||(d1==DPP)||(d1==DPM)||(d1==DMP)||(d1==DMM)||(d1==DPPP)||(d1==DPPM)){mass_b1=1.232;}
135 else if((d1==OP)||d1==OM){mass_b1=1.67245;}
136 else{cout<<"The decay is not the process: J/psi->B10 B10bar(decuplet baryon) ."<<endl;}
137
138 mass_b2=mass_b1;
139 double mass_M = EvtPDL::getMass(getParentId());
140
141// double c1=pow(pv.d3mag(),2.0);
142// double R=(mass_b1+pv.get(0))*(mass_b2+ps.get(0));
143
144 double R=pow(mass_b1+mass_M/2.0,2.0);
145 double c1=mass_M*mass_M/4.0-mass_b1*mass_b1;
146 double u=pow((R-c1)/(R+c1),2.0);
147
148 if(getNArg()>0){ alpha=getArg(0);}
149 else{
150 alpha=(-9*u*u*u+17*u*u-16*u+8)/(9*u*u*u-7*u*u+8);
151 }
152
153 double F00,F01,F03,F10,F11,F22,F23,F30,F32,F33;
154 double scale1=sqrt(3.0)*u/(u-2.0); //scale1=F01:F03.
155 double scale2=3.0*u/(3.0*u-4); //scale2=F11:F00.
156
157// F00=1.0; F01=scale1*F03;F11=scale2*F00;
158// F03=sqrt(2.0*(1.0+scale2*scale2)*(1.0+alpha)/((1.0-alpha)*(1.0+2.0*scale1*scale1)));
159
160 F00=sqrt((1-alpha)/(4.0*(1.0+scale2*scale2)));
161 F03=sqrt((1+alpha)/(2.0*(1.0+2.0*scale1*scale1)));
162 F01=scale1*F03;F11=scale2*F00;
163 F22=F11;F32=F01;F33=F00;F30=F03;F10=F01;F23=F32; //07.2
164
165// J/psi helicity =1,-1,0 corresponding index=0,1,2
166//decuplt baryon helicity =1/2,3/2,-3/2,-1/2 corresponding index=0,1,2,3
167 vertex(0,0,0,Djmn(1, 1, 0,phi,theta,gamma)*F00);
168 vertex(0,0,1,Djmn(1, 1,-1,phi,theta,gamma)*F01);
169 vertex(0,0,2,0.0);
170 vertex(0,0,3,Djmn(1, 1, 1,phi,theta,gamma)*F03);
171 vertex(0,1,0,Djmn(1, 1, 1,phi,theta,gamma)*F10);
172 vertex(0,1,1,Djmn(1, 1, 0,phi,theta,gamma)*F11);
173 vertex(0,1,2,0.0);
174 vertex(0,1,3,0.0);
175 vertex(0,2,0,0.0);
176 vertex(0,2,1,0.0);
177 vertex(0,2,2,Djmn(1, 1, 0,phi,theta,gamma)*F22);
178 vertex(0,2,3,Djmn(1, 1,-1,phi,theta,gamma)*F23);
179 vertex(0,3,0,Djmn(1, 1,-1,phi,theta,gamma)*F30);
180 vertex(0,3,1,0.0);
181 vertex(0,3,2,Djmn(1, 1, 1,phi,theta,gamma)*F32);
182 vertex(0,3,3,Djmn(1, 1, 0,phi,theta,gamma)*F33);
183
184 vertex(1,0,0,Djmn(1,-1, 0,phi,theta,gamma)*F00);
185 vertex(1,0,1,Djmn(1,-1,-1,phi,theta,gamma)*F01);
186 vertex(1,0,2,0.0);
187 vertex(1,0,3,Djmn(1,-1, 1,phi,theta,gamma)*F03);
188 vertex(1,1,0,Djmn(1,-1, 1,phi,theta,gamma)*F10);
189 vertex(1,1,1,Djmn(1,-1, 0,phi,theta,gamma)*F11);
190 vertex(1,1,2,0.0);
191 vertex(1,1,3,0.0);
192 vertex(1,2,0,0.0);
193 vertex(1,2,1,0.0);
194 vertex(1,2,2,Djmn(1,-1, 0,phi,theta,gamma)*F22);
195 vertex(1,2,3,Djmn(1,-1,-1,phi,theta,gamma)*F23);
196 vertex(1,3,0,Djmn(1,-1,-1,phi,theta,gamma)*F30);
197 vertex(1,3,1,0.0);
198 vertex(1,3,2,Djmn(1,-1, 1,phi,theta,gamma)*F32);
199 vertex(1,3,3,Djmn(1,-1, 0,phi,theta,gamma)*F33);
200
201 vertex(2,0,0,Djmn(1, 0, 0,phi,theta,gamma)*F00);
202 vertex(2,0,1,Djmn(1, 0,-1,phi,theta,gamma)*F01);
203 vertex(2,0,2,0.0);
204 vertex(2,0,3,Djmn(1, 0, 1,phi,theta,gamma)*F03);
205 vertex(2,1,0,Djmn(1, 0, 1,phi,theta,gamma)*F10);
206 vertex(2,1,1,Djmn(1, 0, 0,phi,theta,gamma)*F11);
207 vertex(2,1,2,0.0);
208 vertex(2,1,3,0.0);
209 vertex(2,2,0,0.0);
210 vertex(2,2,1,0.0);
211 vertex(2,2,2,Djmn(1, 0, 0,phi,theta,gamma)*F22);
212 vertex(2,2,3,Djmn(1, 0,-1,phi,theta,gamma)*F23);
213 vertex(2,3,0,Djmn(1, 0,-1,phi,theta,gamma)*F30);
214 vertex(2,3,1,0.0);
215 vertex(2,3,2,Djmn(1, 0, 1,phi,theta,gamma)*F32);
216 vertex(2,3,3,Djmn(1, 0, 0,phi,theta,gamma)*F33);
217
218 return ;
219
220}
221
222
223
224
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
**********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)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
EvtId getParentId()
Definition: EvtDecayBase.hh:60
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
double getHelAng(int i)
Definition: EvtHelSys.cc:54
Definition: EvtId.hh:27
EvtJ2BB2()
Definition: EvtJ2BB2.hh:33
double alpha
Definition: EvtJ2BB2.hh:44
double u
Definition: EvtJ2BB2.hh:45
EvtDecayBase * clone()
Definition: EvtJ2BB2.cc:51
void init()
Definition: EvtJ2BB2.cc:57
void decay(EvtParticle *p)
Definition: EvtJ2BB2.cc:74
void getName(std::string &name)
Definition: EvtJ2BB2.cc:44
virtual ~EvtJ2BB2()
Definition: EvtJ2BB2.cc:42
static double getMass(EvtId i)
Definition: EvtPDL.hh:46
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)