BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzReso Class Reference

#include <EvtDalitzReso.hh>

Public Types

enum  NumType {
  NBW = 0 , RBW_ZEMACH = 1 , RBW_KUEHN = 2 , RBW_CLEO = 3 ,
  RBW_ZEMACH2 = 4 , GS_CLEO = 5 , K_MATRIX = 6 , RBW_CLEO_ZEMACH = 7 ,
  GS_CLEO_ZEMACH = 8 , LASS = 9 , K_MATRIX_I = 10 , K_MATRIX_II = 11 ,
  GAUSS_CLEO = 12 , GAUSS_CLEO_ZEMACH = 13
}
 
enum  CouplingType {
  Undefined =0 , PicPic =1 , PizPiz , PiPi ,
  KcKc , KzKz , KK , EtaPic ,
  EtaPiz , PicPicKK , WA76
}
 

Public Member Functions

 EvtDalitzReso ()
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, double m0, double g0, NumType typeN)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double m0_mix, double g0_mix, double delta_mix, EvtComplex amp_mix)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, double m0, NumType typeN, double g1, double g2, CouplingType coupling2)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairRes, std::string nameIndex, NumType typeN, EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairRes, double m0, double g0, double a, double r, double B, double phiB, double R, double phiR)
 
 EvtDalitzReso (const EvtDalitzReso &other)
 
 ~EvtDalitzReso ()
 
EvtDalitzResoclone () const
 
EvtComplex evaluate (const EvtDalitzPoint &p)
 
void set_fd (double R)
 
void set_fb (double R)
 

Detailed Description

Definition at line 34 of file EvtDalitzReso.hh.

Member Enumeration Documentation

◆ CouplingType

Enumerator
Undefined 
PicPic 
PizPiz 
PiPi 
KcKc 
KzKz 
KK 
EtaPic 
EtaPiz 
PicPicKK 
WA76 

Definition at line 51 of file EvtDalitzReso.hh.

◆ NumType

Enumerator
NBW 
RBW_ZEMACH 
RBW_KUEHN 
RBW_CLEO 
RBW_ZEMACH2 
GS_CLEO 
K_MATRIX 
RBW_CLEO_ZEMACH 
GS_CLEO_ZEMACH 
LASS 
K_MATRIX_I 
K_MATRIX_II 
GAUSS_CLEO 
GAUSS_CLEO_ZEMACH 

Definition at line 38 of file EvtDalitzReso.hh.

Constructor & Destructor Documentation

◆ EvtDalitzReso() [1/7]

EvtDalitzReso::EvtDalitzReso ( )
inline

Definition at line 53 of file EvtDalitzReso.hh.

53{};

Referenced by clone().

◆ EvtDalitzReso() [2/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot dp,
EvtCyclic3::Pair  pairAng,
EvtCyclic3::Pair  pairRes,
EvtSpinType::spintype  spin,
double  m0,
double  g0,
NumType  typeN 
)

◆ EvtDalitzReso() [3/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot dp,
EvtCyclic3::Pair  pairAng,
EvtCyclic3::Pair  pairRes,
EvtSpinType::spintype  spin,
double  m0,
double  g0,
NumType  typeN,
double  m0_mix,
double  g0_mix,
double  delta_mix,
EvtComplex  amp_mix 
)

◆ EvtDalitzReso() [4/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot dp,
EvtCyclic3::Pair  pairAng,
EvtCyclic3::Pair  pairRes,
EvtSpinType::spintype  spin,
double  m0,
NumType  typeN,
double  g1,
double  g2,
CouplingType  coupling2 
)

◆ EvtDalitzReso() [5/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot dp,
EvtCyclic3::Pair  pairRes,
std::string  nameIndex,
NumType  typeN,
EvtComplex  fr12prod,
EvtComplex  fr13prod,
EvtComplex  fr14prod,
EvtComplex  fr15prod,
double  s0prod 
)

◆ EvtDalitzReso() [6/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot dp,
EvtCyclic3::Pair  pairRes,
double  m0,
double  g0,
double  a,
double  r,
double  B,
double  phiB,
double  R,
double  phiR 
)

◆ EvtDalitzReso() [7/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzReso other)

Definition at line 155 of file EvtDalitzReso.cc.

156 : _dp(other._dp),
157 _pairAng(other._pairAng),
158 _pairRes(other._pairRes),
159 _spin(other._spin),
160 _typeN(other._typeN),
161 _m0(other._m0),_g0(other._g0),
162 _vb(other._vb),_vd(other._vd),
163 _massFirst(other._massFirst),_massSecond(other._massSecond),
164 _m0_mix(other._m0_mix),_g0_mix(other._g0_mix),_delta_mix(other._delta_mix),_amp_mix(other._amp_mix),
165 _g1(other._g1),_g2(other._g2),_coupling2(other._coupling2),
166 _kmatrix_index(other._kmatrix_index),
167 _fr12prod(other._fr12prod),_fr13prod(other._fr13prod),_fr14prod(other._fr14prod),_fr15prod(other._fr15prod),
168 _s0prod(other._s0prod),
169 _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR)
170{}
Index other(Index i, Index j)
Definition: EvtCyclic3.cc:118

◆ ~EvtDalitzReso()

EvtDalitzReso::~EvtDalitzReso ( )

Definition at line 173 of file EvtDalitzReso.cc.

174{}

Member Function Documentation

◆ clone()

EvtDalitzReso * EvtDalitzReso::clone ( ) const
inline

Definition at line 77 of file EvtDalitzReso.hh.

77{ return new EvtDalitzReso(*this); }

◆ evaluate()

EvtComplex EvtDalitzReso::evaluate ( const EvtDalitzPoint p)

Definition at line 177 of file EvtDalitzReso.cc.

178{
179 double m = sqrt(x.q(_pairRes));
180
181 // do use always hash table (speed up fitting)
182 if (_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II)
183 return Fvector( m*m, _kmatrix_index );
184
185 if (_typeN==LASS)
186 return lass(m*m);
187
188 EvtComplex amp(1.0,0.0);
189
190 if (_dp.bigM() != x.bigM()) _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin);
191 EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
192 EvtTwoBodyKine vd(_massFirst,_massSecond,m);
193
194 EvtComplex prop(0,0);
195 if (_typeN==NBW) {
196 prop = propBreitWigner(_m0,_g0,m);
197 } else if (_typeN==GAUSS_CLEO || _typeN==GAUSS_CLEO_ZEMACH) {
198 prop = propGauss(_m0,_g0,m);
199 } else {
200 if (_coupling2==Undefined) {
201 // single BW
202 double g = (_g0<=0. || _vd.pD()<=0.)? -_g0 : _g0*_vd.widthFactor(vd); // running width
203 if (_typeN==GS_CLEO || _typeN==GS_CLEO_ZEMACH) {
204 // Gounaris-Sakurai (GS)
205 assert(_massFirst==_massSecond);
206 prop = propGounarisSakurai(_m0,fabs(_g0),_vd.pD(),m,g,vd.p());
207 } else {
208 // standard relativistic BW
209 prop = propBreitWignerRel(_m0,g,m);
210 }
211 } else {
212 // coupled width BW
213 EvtComplex G1,G2;
214 switch (_coupling2) {
215 case PicPic: {
216 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
217 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
218 G2 = _g2*_g2*psFactor(mPic,mPic,m);
219 break;
220 }
221 case PizPiz: {
222 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
223 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
224 G2 = _g2*_g2*psFactor(mPiz,mPiz,m);
225 break;
226 }
227 case PiPi: {
228 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
229 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
230 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
231 G2 = _g2*_g2*psFactor(mPic,mPic,mPiz,mPiz,m);
232 break;
233 }
234 case KcKc: {
235 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
236 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
237 G2 = _g2*_g2*psFactor(mKc,mKc,m);
238 break;
239 }
240 case KzKz: {
241 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
242 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
243 G2 = _g2*_g2*psFactor(mKz,mKz,m);
244 break;
245 }
246 case KK: {
247 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
248 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
249 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
250 G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
251 break;
252 }
253 case EtaPic: {
254 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
255 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
256 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
257 G2 = _g2*_g2*psFactor(mEta,mPic,m);
258 break;
259 }
260 case EtaPiz: {
261 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
262 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
263 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
264 G2 = _g2*_g2*psFactor(mEta,mPiz,m);
265 break;
266 }
267 case PicPicKK: {
268 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
269 //G1 = _g1*_g1*psFactor(mPic,mPic,m);
270 G1 = _g1*psFactor(mPic,mPic,m);
271 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
272 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
273 //G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
274 G2 = _g2*psFactor(mKc,mKc,mKz,mKz,m);
275 break;
276 }
277 default:
278 std::cout << "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state." << std::endl;
279 assert(0);
280 break;
281 }
282 // calculate standard couple BW propagator
283 if (_coupling2 != WA76)
284 prop = _g1*propBreitWignerRelCoupled(_m0,G1,G2,m);
285 }
286 }
287 amp *= prop;
288
289 // Compute form-factors (Blatt-Weisskopf penetration factor)
290 amp *= _vb.formFactor(vb);
291 amp *= _vd.formFactor(vd);
292
293 // Compute numerator (angular distribution)
294 amp *= numerator(x,vb,vd);
295
296 // Compute electromagnetic mass mixing factor
297 if (_m0_mix>0.) {
298 EvtComplex prop_mix;
299 if (_typeN==NBW) {
300 prop_mix = propBreitWigner(_m0_mix,_g0_mix,m);
301 } else {
302 assert(_g1<0.); // running width only
303 double g_mix = _g0_mix*_vd.widthFactor(vd);
304 prop_mix = propBreitWignerRel(_m0_mix,g_mix,m);
305 }
306 amp *= mixFactor(prop,prop_mix);
307 }
308
309 return amp;
310}
Double_t x[10]
double bigM() const
double m(EvtCyclic3::Index i) const
static double getMass(EvtId i)
Definition: EvtPDL.hh:46
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
double formFactor(EvtTwoBodyKine x) const
double pD() const
double widthFactor(EvtTwoBodyKine x) const

◆ set_fb()

void EvtDalitzReso::set_fb ( double  R)
inline

Definition at line 82 of file EvtDalitzReso.hh.

82{ _vb.set_f( R ); }
void set_f(double R)

◆ set_fd()

void EvtDalitzReso::set_fd ( double  R)
inline

Definition at line 81 of file EvtDalitzReso.hh.

81{ _vd.set_f( R ); }

The documentation for this class was generated from the following files: