BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtResonance2.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtResonance2.cc
12//
13// Description: resonance-defining class
14//
15// Modification history:
16//
17// NK September 4, 1997 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <math.h>
24#include "EvtGenBase/EvtKine.hh"
29
31
32//operator
33
35{
36 if ( &n == this ) return *this;
37 _p4_p = n._p4_p;
38 _p4_d1 = n._p4_d1;
39 _p4_d2 = n._p4_d2;
40 _ampl = n._ampl;
41 _theta = n._theta;
42 _gamma = n._gamma;
43 _spin = n._spin;
44 _bwm = n._bwm;
45 _invmass_angdenom = n._invmass_angdenom;
46 return *this;
47}
48
49//constructor
50
52 const EvtVector4R& p4_d2, double ampl,
53 double theta, double gamma, double bwm, int spin,
54 bool invmass_angdenom): ////////////////////////////////////////////////////
55 _p4_p(p4_p),_p4_d1(p4_d1), _p4_d2(p4_d2),_ampl(ampl), _theta(theta),
56 _gamma(gamma), _bwm(bwm), _spin(spin), _invmass_angdenom(invmass_angdenom) {}///////////////////////////////////////////////////////////////////
57
58//amplitude function
59
61
62 double pi180inv = 1.0/EvtConst::radToDegrees;
63
64 EvtComplex ampl;
65 EvtVector4R p4_d3 = _p4_p-_p4_d1-_p4_d2;
66
67 //get cos of the angle between the daughters from their 4-momenta
68 //and the 4-momentum of the parent
69
70 //in general, EvtDecayAngle(parent, part1+part2, part1) gives the angle
71 //the missing particle (not listed in the arguments) makes
72 //with part2 in the rest frame of both
73 //listed particles (12)
74
75 //angle 3 makes with 2 in rest frame of 12 (CS3)
76 //double cos_phi_0 = EvtDecayAngle(_p4_p, _p4_d1+_p4_d2, _p4_d1);
77 //angle 3 makes with 1 in 12 is, of course, -cos_phi_0
78
79 //first compute several quantities...follow CLEO preprint 00-23
80
81 double mAB=(_p4_d1+_p4_d2).mass();
82 double mBC=(_p4_d2+p4_d3).mass();
83 double mAC=(_p4_d1+p4_d3).mass();
84 double mA=_p4_d1.mass();
85 double mB=_p4_d2.mass();
86 double mD=_p4_p.mass();
87 double mC=p4_d3.mass();
88
89 double mR=_bwm;
90 double gammaR=_gamma;
91 double mdenom = _invmass_angdenom ? mAB : mR;/////////////////////////////////////////////////////////
92 double pAB=sqrt( (((mAB*mAB-mA*mA-mB*mB)*(mAB*mAB-mA*mA-mB*mB)/4.0) -
93 mA*mA*mB*mB)/(mAB*mAB));
94 double pR=sqrt( (((mR*mR-mA*mA-mB*mB)*(mR*mR-mA*mA-mB*mB)/4.0) -
95 mA*mA*mB*mB)/(mR*mR));
96
97 double pD= (((mD*mD-mR*mR-mC*mC)*(mD*mD-mR*mR-mC*mC)/4.0) -
98 mR*mR*mC*mC)/(mD*mD);
99 if ( pD>0 ) { pD=sqrt(pD); } else {pD=0;}
100 double pDAB=sqrt( (((mD*mD-mAB*mAB-mC*mC)*(mD*mD-mAB*mAB-mC*mC)/4.0) -
101 mAB*mAB*mC*mC)/(mD*mD));
102
103
104 // report(INFO,"EvtGen") << mAB<<" "<< mBC<<" "<< mAC<<" "<< mA<<" "<< mB<<" "<< mC<<" "
105 // << mD<<" "<< mR<<" "<< gammaR<<" "<< pAB<<" "<< pR<<" "<< pD<<" "<<pDAB<<endl;
106
107 double fR=1;
108 double fD=1;
109 int power=0;
110 switch (_spin) {
111 case 0:
112 fR=1.0;
113 fD=1.0;
114 power=1;
115 //report(INFO,"EvtGen") << "fR="<<fR<<" fD="<<fD<<endl;
116 break;
117 case 1:
118 fR=sqrt(1.0+1.5*1.5*pR*pR)/sqrt(1.0+1.5*1.5*pAB*pAB);
119 fD=sqrt(1.0+5.0*5.0*pD*pD)/sqrt(1.0+5.0*5.0*pDAB*pDAB);
120 //report(INFO,"EvtGen") << "fR="<<fR<<" fD="<<fD<<endl;
121 power=3;
122 break;
123 case 2:///////////////////////////////////////////////////////////
124 fR = sqrt( (9+3*pow((1.5*pR),2)+pow((1.5*pR),4))/(9+3*pow((1.5*pAB),2)+pow((1.5*pAB),4)) );//////////////////////////////////////////////////////////
125 fD = sqrt( (9+3*pow((5.0*pD),2)+pow((5.0*pD),4))/(9+3*pow((5.0*pDAB),2)+pow((5.0*pDAB),4)) );//////////////////////////////////////////////////
126 power=5;///////////////////////////////////////////////////
127 break;///////////////////////////////////////////////////////////
128 default:
129 report(INFO,"EvtGen") << "Incorrect spin in EvtResonance22.cc\n";
130 }
131
132 double gammaAB= gammaR*pow(pAB/pR,power)*(mR/mAB)*fR*fR;
133 //report(INFO,"EvtGen") << gammaAB<<endl;
134 switch (_spin) {
135 case 0:
136 ampl=_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
137 fR*fD/(mR*mR-mAB*mAB-EvtComplex(0.0,mR*gammaAB));
138 break;
139 case 1:
140 ampl=_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
141 (fR*fD*(mAC*mAC-mBC*mBC+((mD*mD-mC*mC)*(mB*mB-mA*mA)/(mdenom*mdenom)))/ //////////////////////////////////////////////////////////////////
142 //(fR*fD*(mAC*mAC-mBC*mBC+((mD*mD-mC*mC)*(mB*mB-mA*mA)/(mR*mR)))/
143 (mR*mR-mAB*mAB-EvtComplex(0.0,mR*gammaAB)));
144 break;
145 case 2:
146 ampl=_ampl*EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv))*
147 fR*fD/(mR*mR-mAB*mAB-EvtComplex(0.0,mR*gammaAB))*
148 (pow((mBC*mBC-mAC*mAC+(mD*mD-mC*mC)*(mA*mA-mB*mB)/(mdenom*mdenom)),2)-
149 (1.0/3.0)*(mAB*mAB-2*mD*mD-2*mC*mC+pow((mD*mD- mC*mC)/mdenom, 2))*
150 (mAB*mAB-2*mA*mA-2*mB*mB+pow((mA*mA-mB*mB)/mdenom,2)));
151 break;
152
153 default:
154 report(INFO,"EvtGen") << "Incorrect spin in EvtResonance22.cc\n";
155 }
156
157 //report(INFO,"EvtGen") <<"The amplitude is "<<ampl<<endl;
158 return ampl;
159}
160
161
162
double mass
const Int_t n
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ INFO
Definition: EvtReport.hh:52
double sin(const BesAngle a)
double cos(const BesAngle a)
static const double radToDegrees
Definition: EvtConst.hh:30
EvtResonance2 & operator=(const EvtResonance2 &)
EvtComplex resAmpl()
virtual ~EvtResonance2()
EvtResonance2(const EvtVector4R &p4_p, const EvtVector4R &p4_d1, const EvtVector4R &p4_d2, double ampl=0.0, double theta=0.0, double gamma=0.0, double bwm=0.0, int spin=0, bool invmass_angdenom=false)
double mass() const
Definition: EvtVector4R.cc:39