CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJ2BB3.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, Pang Cai-Ying@IHEP
10//
11// Module: EvtJ2BB3.cc
12//
13// Description: Routine to decay J/psi-> B_8 bar B_10 with using the
14// GVDM approach.(see J.-G. Korner Z.Physik C-Particles
15// and Fields 33,529-535(1987))
16//
17// Modification history:
18//
19// Pang C.-Y., Ping R.-G. Mar, 2007 Module created
20//
21//------------------------------------------------------------------------
22
24#include <stdlib.h>
27#include "EvtGenBase/EvtPDL.hh"
33#include "EvtJ2BB3.hh"
37
38#include <string>
39
40using std::endl;
41using std::cout;
43
44void EvtJ2BB3::getName(std::string& model_name){
45
46 model_name="J2BB3";
47
48}
49
50
52
53 return new EvtJ2BB3;
54
55}
56
58// checkNArg(1);
59 checkNDaug(2);
63 }
64
65/*
66void EvtJ2BB3::initProbMax() {
67
68 //Hard coded... should not be hard to calculate...
69 //setProbMax(10000.0); //the ProbMax value must have noticed.
70 setProbMax(100.0);
71}
72*/
73
75 loop:
77
78 EvtParticle *v,*s1;
79 EvtVector4R pv,ps,ppr;
80
81 v =p->getDaug(0);
82 s1=p->getDaug(1);
83 pv=v->getP4();
84 ps=s1->getP4();
85 ppr=p->getP4();
86// Put phase space results into the daughters.
87 EvtHelSys angles(ppr,pv); //using helicity sys. angles
88 double theta =angles.getHelAng(1);
89 double phi =angles.getHelAng(2);
90 double gamma=0;
91
92 double m_b0 = EvtPDL::getMass(getDaug(0)); //the mass of daughter1 is large than daughter0.
93 double m_b1 = EvtPDL::getMass(getDaug(1));
94
95
96 double m_M = EvtPDL::getMass(getParentId());
97 double M2=pow(m_M,2.0);double b2_p=pow((m_b0+m_b1),2.0);
98 double b2_m=pow((m_b1-m_b0),2.0);
99
100 if(M2-b2_p<=0) goto loop;
101
102 double P_c=sqrt((M2-b2_p)*(M2-b2_m)/(4.0*M2));
103 double Q=M2-b2_p;
104 double F1=-0.54/(m_b0*b2_p);
105 double F2=-0.54*(m_b1-m_b0)/(m_b0*(m_b0+m_b1));
106 double F3=-0.89/m_b0;
107 double H1,H0,Hm1;
108
109//OK. We have all tested these parameters.
110
111 if(getNArg()>0)
112 { alpha=getArg(0);
113 H0=1.0;H1=sqrt((1+alpha)/(1-alpha));Hm1=H1;
114 }
115 else{
116 H1=-1.15*P_c*m_M*(-M2*Q*F1-Q*F2+(M2-m_b0*(m_b0+m_b1))*F3)/(sqrt(Q)*m_b1);
117 H0=-0.82*P_c*M2*(-(m_b1-m_b0)*Q*F1/m_b1-Q*F2/(m_b1*(m_b1-m_b0))+2.0*F3)/sqrt(Q);
118 Hm1=2*P_c*m_M*(m_b0+m_b1)*F3/sqrt(Q);
119 alpha=(H1*H1+Hm1*Hm1-2*H0*H0)/(H1*H1+Hm1*Hm1+2*H0*H0);
120 }
121//cout<<"------alpha="<<alpha<<";H0="<<H0<<";H1="<<H1<<";Hm1="<<Hm1<<endl;
122
123// J/psi helicity =1 corresponding index=0
124 vertex(0,0,0,Djmn(1, 1, 0,phi,theta,gamma)*H0);
125 vertex(0,0,1,Djmn(1, 1,-1,phi,theta,gamma)*Hm1);
126 vertex(0,0,2,0.0);
127 vertex(0,0,3,Djmn(1, 1, 1,phi,theta,gamma)*H1);
128 vertex(0,1,0,Djmn(1, 1,-1,phi,theta,gamma)*H1);
129 vertex(0,1,1,0.0);
130 vertex(0,1,2,Djmn(1, 1, 1,phi,theta,gamma)*Hm1);
131 vertex(0,1,3,Djmn(1, 1, 0,phi,theta,gamma)*H0);
132// J/psi helicity =-1 corresponding index=1
133 vertex(1,0,0,Djmn(1,-1, 0,phi,theta,gamma)*H0);
134 vertex(1,0,1,Djmn(1,-1,-1,phi,theta,gamma)*Hm1);
135 vertex(1,0,2,0.0);
136 vertex(1,0,3,Djmn(1,-1, 1,phi,theta,gamma)*H1);
137 vertex(1,1,0,Djmn(1,-1,-1,phi,theta,gamma)*H1);
138 vertex(1,1,1,0.0);
139 vertex(1,1,2,Djmn(1,-1, 1,phi,theta,gamma)*Hm1);
140 vertex(1,1,3,Djmn(1,-1, 0,phi,theta,gamma)*H0);
141
142// J/psi helicity =0 corresponding index=2
143 vertex(2,0,0,Djmn(1, 0, 0,phi,theta,gamma)*H0);
144 vertex(2,0,1,Djmn(1, 0,-1,phi,theta,gamma)*Hm1);
145 vertex(2,0,2,0.0);
146 vertex(2,0,3,Djmn(1, 0, 1,phi,theta,gamma)*H1);
147 vertex(2,1,0,Djmn(1, 0,-1,phi,theta,gamma)*H1);
148 vertex(2,1,1,0.0);
149 vertex(2,1,2,Djmn(1, 0, 1,phi,theta,gamma)*Hm1);
150 vertex(2,1,3,Djmn(1, 0, 0,phi,theta,gamma)*H0);
151
152 return ;
153
154}
155
156
157
158
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_b1
Definition: GPS.h:30
**********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
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
double getHelAng(int i)
Definition: EvtHelSys.cc:54
EvtDecayBase * clone()
Definition: EvtJ2BB3.cc:51
void decay(EvtParticle *p)
Definition: EvtJ2BB3.cc:74
virtual ~EvtJ2BB3()
Definition: EvtJ2BB3.cc:42
EvtJ2BB3()
Definition: EvtJ2BB3.hh:36
void init()
Definition: EvtJ2BB3.cc:57
void getName(std::string &name)
Definition: EvtJ2BB3.cc:44
double alpha
Definition: EvtJ2BB3.hh:47
static double getMass(EvtId i)
Definition: EvtPDL.hh:46
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)