BOSS 8.0.0
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//
21#include "EvtJ2BB1.hh"
32#include <stdlib.h>
33#include <string>
34using std::endl;
35
37
38void EvtJ2BB1::getName( std::string& model_name ) { model_name = "J2BB1"; }
39
41
42/*
43void EvtJ2BB1::initProbMax() {
44 double ProbMax=12.;
45 setProbMax(ProbMax);
46}
47*/
48
55
57
59
60 EvtParticle *v, *s1;
61 EvtVector4R pv, ps, ppr;
62
63 v = p->getDaug( 0 ); // Baryon
64 s1 = p->getDaug( 1 ); // Baryon
65 pv = v->getP4();
66 ps = s1->getP4();
67 ppr = p->getP4();
68 // Put phase space results into the daughters.
69
70 EvtHelSys angles( ppr, pv ); // using helicity sys.angles
71 double theta = angles.getHelAng( 1 );
72 double phi = angles.getHelAng( 2 );
73 double gamma = 0;
74 double costheta = cos( theta ); // using helicity angles in parent system
75 // double costheta=ppr.get(3)/ppr.d3mag(); //using Lab system
76
77 if ( getNArg() > 0 ) { alpha = getArg( 0 ); }
78 else
79 {
80 double mass_b1 = EvtPDL::getMass( getDaug( 0 ) );
81 double mass_b2 = EvtPDL::getMass( getDaug( 1 ) );
82 double mass_M = EvtPDL::getMass( getParentId() );
83 double c1 = pow( pv.d3mag(), 2.0 );
84 double R = ( mass_b1 + pv.get( 0 ) ) * ( mass_b2 + ps.get( 0 ) );
85 u = pow( ( R - c1 ) / ( R + c1 ), 2.0 );
86 alpha = ( pow( 4 + u, 2.0 ) - u * pow( 2 + 3 * u, 2.0 ) ) /
87 ( pow( 4 + u, 2.0 ) + u * pow( 2 + 3 * u, 2.0 ) );
88 }
89
90 double F01 = sqrt( ( 1 + alpha ) / 2 );
91 double F00 = sqrt( ( 1 - alpha ) / 4 );
92 double F10 = F01;
93 double F11 = F00;
94
95 vertex( 0, 0, 0, Djmn( 1, 1, 0, phi, theta, gamma ) * F00 ); // J/psi helicity =1
96 // corresponding index=0
97 vertex( 0, 0, 1, Djmn( 1, 1, 1, phi, theta, gamma ) * F01 );
98 vertex( 0, 1, 0, Djmn( 1, 1, -1, phi, theta, gamma ) * F10 );
99 vertex( 0, 1, 1, Djmn( 1, 1, 0, phi, theta, gamma ) * F11 );
100 vertex( 1, 0, 0, Djmn( 1, -1, 0, phi, theta, gamma ) * F00 ); // J/psi helicity =-1
101 // corresponding index=1
102 vertex( 1, 0, 1, Djmn( 1, -1, 1, phi, theta, gamma ) * F01 );
103 vertex( 1, 1, 0, Djmn( 1, -1, -1, phi, theta, gamma ) * F10 );
104 vertex( 1, 1, 1, Djmn( 1, -1, 0, phi, theta, gamma ) * F11 );
105 vertex( 2, 0, 0, Djmn( 1, 0, 0, phi, theta, gamma ) * F00 ); // J/psi helicity =0
106 // corresponding index=2
107 vertex( 2, 0, 1, Djmn( 1, 0, 1, phi, theta, gamma ) * F01 );
108 vertex( 2, 1, 0, Djmn( 1, 0, -1, phi, theta, gamma ) * F10 );
109 vertex( 2, 1, 1, Djmn( 1, 0, 0, phi, theta, gamma ) * F11 );
110
111 return;
112}
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()
EvtId getDaug(int i)
double getHelAng(int i)
Definition EvtHelSys.cc:52
EvtDecayBase * clone()
Definition EvtJ2BB1.cc:40
void init()
Definition EvtJ2BB1.cc:49
double u
Definition EvtJ2BB1.hh:43
void decay(EvtParticle *p)
Definition EvtJ2BB1.cc:56
double alpha
Definition EvtJ2BB1.hh:42
virtual ~EvtJ2BB1()
Definition EvtJ2BB1.cc:36
void getName(std::string &name)
Definition EvtJ2BB1.cc:38
static double getMass(EvtId i)
Definition EvtPDL.hh:44
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double get(int i) const
double d3mag() const