BOSS 8.0.0
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
23#include "EvtJ2BB3.hh"
36#include <stdlib.h>
37
38#include <string>
39
40using std::cout;
41using std::endl;
43
44void EvtJ2BB3::getName( std::string& model_name ) { model_name = "J2BB3"; }
45
47
55
56/*
57void EvtJ2BB3::initProbMax() {
58
59 //Hard coded... should not be hard to calculate...
60 //setProbMax(10000.0); //the ProbMax value must have noticed.
61 setProbMax(100.0);
62}
63*/
64
66loop:
68
69 EvtParticle *v, *s1;
70 EvtVector4R pv, ps, ppr;
71
72 v = p->getDaug( 0 );
73 s1 = p->getDaug( 1 );
74 pv = v->getP4();
75 ps = s1->getP4();
76 ppr = p->getP4();
77 // Put phase space results into the daughters.
78 EvtHelSys angles( ppr, pv ); // using helicity sys. angles
79 double theta = angles.getHelAng( 1 );
80 double phi = angles.getHelAng( 2 );
81 double gamma = 0;
82
83 double m_b0 =
84 EvtPDL::getMass( getDaug( 0 ) ); // the mass of daughter1 is large than daughter0.
85 double m_b1 = EvtPDL::getMass( getDaug( 1 ) );
86
87 double m_M = EvtPDL::getMass( getParentId() );
88 double M2 = pow( m_M, 2.0 );
89 double b2_p = pow( ( m_b0 + m_b1 ), 2.0 );
90 double b2_m = pow( ( m_b1 - m_b0 ), 2.0 );
91
92 if ( M2 - b2_p <= 0 ) goto loop;
93
94 double P_c = sqrt( ( M2 - b2_p ) * ( M2 - b2_m ) / ( 4.0 * M2 ) );
95 double Q = M2 - b2_p;
96 double F1 = -0.54 / ( m_b0 * b2_p );
97 double F2 = -0.54 * ( m_b1 - m_b0 ) / ( m_b0 * ( m_b0 + m_b1 ) );
98 double F3 = -0.89 / m_b0;
99 double H1, H0, Hm1;
100
101 // OK. We have all tested these parameters.
102
103 if ( getNArg() > 0 )
104 {
105 alpha = getArg( 0 );
106 H0 = 1.0;
107 H1 = sqrt( ( 1 + alpha ) / ( 1 - alpha ) );
108 Hm1 = H1;
109 }
110 else
111 {
112 H1 = -1.15 * P_c * m_M * ( -M2 * Q * F1 - Q * F2 + ( M2 - m_b0 * ( m_b0 + m_b1 ) ) * F3 ) /
113 ( sqrt( Q ) * m_b1 );
114 H0 =
115 -0.82 * P_c * M2 *
116 ( -( m_b1 - m_b0 ) * Q * F1 / m_b1 - Q * F2 / ( m_b1 * ( m_b1 - m_b0 ) ) + 2.0 * F3 ) /
117 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}
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition EvtHelSys.cc:165
*********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)
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 EvtJ2BB3.cc:46
void decay(EvtParticle *p)
Definition EvtJ2BB3.cc:65
virtual ~EvtJ2BB3()
Definition EvtJ2BB3.cc:42
void init()
Definition EvtJ2BB3.cc:48
void getName(std::string &name)
Definition EvtJ2BB3.cc:44
double alpha
Definition EvtJ2BB3.hh:45
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)