BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJ2BB1.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: EvtJ2BB1.cc
12//
13// Description: Routine to decay J/psi-> B_8 bar B_8 using helicity amplitude.
14//
15// Modification history:
16//
17// Pang C.-Y., Ping R.-G. December, 2006 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
25#include "EvtGenBase/EvtPDL.hh"
32#include "EvtJ2BB1.hh"
33#include <string>
34using std::endl;
35
37
38void EvtJ2BB1::getName(std::string& model_name){
39
40 model_name="J2BB1";
41
42}
43
44
46
47 return new EvtJ2BB1;
48
49}
50
51/*
52void EvtJ2BB1::initProbMax() {
53 double ProbMax=12.;
54 setProbMax(ProbMax);
55}
56*/
57
59 checkNDaug(2);
63}
64
66
68
69 EvtParticle *v,*s1;
70 EvtVector4R pv,ps,ppr;
71
72 v =p->getDaug(0); //Baryon
73 s1=p->getDaug(1); //Baryon
74 pv=v->getP4();
75 ps=s1->getP4();
76 ppr=p->getP4();
77// Put phase space results into the daughters.
78
79 EvtHelSys angles(ppr,pv); //using helicity sys.angles
80 double theta=angles.getHelAng(1);
81 double phi =angles.getHelAng(2);
82 double gamma=0;
83 double costheta=cos(theta); //using helicity angles in parent system
84// double costheta=ppr.get(3)/ppr.d3mag(); //using Lab system
85
86 if(getNArg()>0){ alpha=getArg(0);}
87 else{double mass_b1 = EvtPDL::getMass(getDaug(0));
88 double mass_b2 = EvtPDL::getMass(getDaug(1));
89 double mass_M = EvtPDL::getMass(getParentId());
90 double c1=pow(pv.d3mag(),2.0);
91 double R=(mass_b1+pv.get(0))*(mass_b2+ps.get(0));
92 u=pow((R-c1)/(R+c1),2.0);
93 alpha=(pow(4+u,2.0)-u*pow(2+3*u,2.0))/(pow(4+u,2.0)+u*pow(2+3*u,2.0));}
94
95 double F01=sqrt((1+alpha)/2);
96 double F00=sqrt((1-alpha)/4);
97 double F10=F01;
98 double F11=F00;
99
100 vertex(0,0,0,Djmn(1, 1, 0,phi,theta,gamma)*F00); // J/psi helicity =1 corresponding index=0
101 vertex(0,0,1,Djmn(1, 1, 1,phi,theta,gamma)*F01);
102 vertex(0,1,0,Djmn(1, 1,-1,phi,theta,gamma)*F10);
103 vertex(0,1,1,Djmn(1, 1, 0,phi,theta,gamma)*F11);
104 vertex(1,0,0,Djmn(1,-1, 0,phi,theta,gamma)*F00); // J/psi helicity =-1 corresponding index=1
105 vertex(1,0,1,Djmn(1,-1, 1,phi,theta,gamma)*F01);
106 vertex(1,1,0,Djmn(1,-1,-1,phi,theta,gamma)*F10);
107 vertex(1,1,1,Djmn(1,-1, 0,phi,theta,gamma)*F11);
108 vertex(2,0,0,Djmn(1, 0, 0,phi,theta,gamma)*F00); // J/psi helicity =0 corresponding index=2
109 vertex(2,0,1,Djmn(1, 0, 1,phi,theta,gamma)*F01);
110 vertex(2,1,0,Djmn(1, 0,-1,phi,theta,gamma)*F10);
111 vertex(2,1,1,Djmn(1, 0, 0,phi,theta,gamma)*F11);
112
113
114 return ;
115
116}
117
118
119
120
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
double cos(const BesAngle a)
**********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: EvtJ2BB1.cc:45
void init()
Definition: EvtJ2BB1.cc:58
double u
Definition: EvtJ2BB1.hh:45
EvtJ2BB1()
Definition: EvtJ2BB1.hh:33
void decay(EvtParticle *p)
Definition: EvtJ2BB1.cc:65
double alpha
Definition: EvtJ2BB1.hh:44
virtual ~EvtJ2BB1()
Definition: EvtJ2BB1.cc:36
void getName(std::string &name)
Definition: EvtJ2BB1.cc:38
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)
double get(int i) const
Definition: EvtVector4R.hh:179
double d3mag() const
Definition: EvtVector4R.cc:186