BOSS 7.1.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTwoBodyVertex.cc
Go to the documentation of this file.
2/*******************************************************************************
3 * Project: BaBar detector at the SLAC PEP-II B-factory
4 * Package: EvtGenBase
5 * File: $Id: EvtTwoBodyVertex.cc,v 1.4 2018/12/05 07:37:32 pingrg Exp $
6 * Author: Alexei Dvoretskii, [email protected], 2001-2002
7 *
8 * Copyright (C) 2002 Caltech
9 *******************************************************************************/
10
11#include <iostream>
12#include <math.h>
13#include <assert.h>
16using std::endl;
17using std::ostream;
18
19
20// Default ctor can sometimes be useful
21
23 : _LL(0), _p0(0), _f(0)
24{}
25
26EvtTwoBodyVertex::EvtTwoBodyVertex(double mA, double mB, double mAB, int L)
27 : _kine(), _LL(L), _p0(0), _f(0)
28{
29 // Kinematics is initialized only if the decay is above threshold
30
31 if(mAB > mA + mB) {
32
33 _kine = EvtTwoBodyKine(mA,mB,mAB);
34 _p0 = _kine.p();
35 }
36}
37
38
40 : _kine(other._kine), _LL(other._LL), _p0(other._p0),
41 _f( (other._f) ? new EvtBlattWeisskopf(*other._f) : 0 )
42{}
43
45{
46 if(_f) delete _f;
47}
48
49
51{
52 if(_f) delete _f;
53 _f = new EvtBlattWeisskopf(_LL,R,_p0);
54}
55
56
58{
59 assert(_p0 > 0.);
60
61 double p1 = x.p();
62 double ff = formFactor(x);
63 double factor = pow(p1/_p0,2*_LL+1)*pow(mAB()/x.mAB(),2) * ff * ff; //pingrg,2008-11-24, in EvtGen Manual Eq 66, (m0/m) should be squared
64 //see PLB537,201; PLB561, 55; ZPC48, 445, and PRD65, 032002, PRD68, 052006
65 return factor;
66}
67
68
70{
71 double p1 = x.p(i);
72 double factor = pow(p1,_LL);
73 return factor;
74}
75
76
78{
79 double ff = 1.;
80
81 if(_f) {
82
83 double p1 = x.p();
84 ff = (*_f)(p1);
85 }
86
87 return ff;
88}
89
90void EvtTwoBodyVertex::print(ostream& os) const
91{
92 os << " mA = " << mA() << endl;
93 os << " mB = " << mB() << endl;
94 os << "mAB = " << mAB() << endl;
95 os << " L = " << _LL << endl;
96 os << " p0 = " << _p0 << endl;
97}
98
99
100ostream& operator<<(ostream& os, const EvtTwoBodyVertex& v)
101{
102 v.print(os);
103 return os;
104}
Double_t x[10]
ostream & operator<<(ostream &os, const EvtTwoBodyVertex &v)
**********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
double p(Index i=AB) const
double mAB() const
double formFactor(EvtTwoBodyKine x) const
void print(std::ostream &os) const
void set_f(double R)
double widthFactor(EvtTwoBodyKine x) const
double mA() const
double mB() const
double phaseSpaceFactor(EvtTwoBodyKine x, EvtTwoBodyKine::Index) const