BOSS 7.0.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVPHOtoVISR Class Reference

#include <EvtVPHOtoVISR.hh>

+ Inheritance diagram for EvtVPHOtoVISR:

Public Member Functions

 EvtVPHOtoVISR ()
 
virtual ~EvtVPHOtoVISR ()
 
void getName (std::string &name)
 
EvtDecayBaseclone ()
 
void decay (EvtParticle *p)
 
void init ()
 
void initProbMax ()
 
- Public Member Functions inherited from EvtDecayAmp
void makeDecay (EvtParticle *p)
 
void setWeight (double weight)
 
void vertex (const EvtComplex &amp)
 
void vertex (int i1, const EvtComplex &amp)
 
void vertex (int i1, int i2, const EvtComplex &amp)
 
void vertex (int i1, int i2, int i3, const EvtComplex &amp)
 
void vertex (int *i1, const EvtComplex &amp)
 
virtual ~EvtDecayAmp ()
 
- Public Member Functions inherited from EvtDecayBase
virtual void getName (std::string &name)=0
 
virtual void decay (EvtParticle *p)=0
 
virtual void makeDecay (EvtParticle *p)=0
 
virtual EvtDecayBaseclone ()=0
 
virtual void init ()
 
virtual void initProbMax ()
 
virtual std::string commandName ()
 
virtual void command (std::string cmd)
 
double getProbMax (double prob)
 
double resetProbMax (double prob)
 
 EvtDecayBase ()
 
virtual ~EvtDecayBase ()
 
virtual bool matchingDecay (const EvtDecayBase &other) const
 
EvtId getParentId ()
 
double getBranchingFraction ()
 
void disableCheckQ ()
 
void checkQ ()
 
int getNDaug ()
 
EvtIdgetDaugs ()
 
EvtId getDaug (int i)
 
int getNArg ()
 
int getPHOTOS ()
 
void setPHOTOS ()
 
void setVerbose ()
 
void setSummary ()
 
double * getArgs ()
 
std::string * getArgsStr ()
 
double getArg (int j)
 
std::string getArgStr (int j)
 
std::string getModelName ()
 
int getDSum ()
 
int summary ()
 
int verbose ()
 
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
 
void printSummary ()
 
void setProbMax (double prbmx)
 
void noProbMax ()
 
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
 
void checkNDaug (int d1, int d2=-1)
 
void checkSpinParent (EvtSpinType::spintype sp)
 
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
 
virtual int nRealDaughters ()
 

Additional Inherited Members

- Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
 
static void findMass (EvtParticle *p)
 
static double findMaxMass (EvtParticle *p)
 
- Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
 
- Protected Attributes inherited from EvtDecayAmp
EvtAmp _amp2
 
- Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel
 

Detailed Description

Definition at line 28 of file EvtVPHOtoVISR.hh.

Constructor & Destructor Documentation

◆ EvtVPHOtoVISR()

EvtVPHOtoVISR::EvtVPHOtoVISR ( )
inline

Definition at line 32 of file EvtVPHOtoVISR.hh.

32{}

Referenced by clone().

◆ ~EvtVPHOtoVISR()

EvtVPHOtoVISR::~EvtVPHOtoVISR ( )
virtual

Definition at line 32 of file EvtVPHOtoVISR.cc.

32{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtVPHOtoVISR::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 41 of file EvtVPHOtoVISR.cc.

41 {
42
43 return new EvtVPHOtoVISR;
44
45}

◆ decay()

void EvtVPHOtoVISR::decay ( EvtParticle p)
virtual

Implements EvtDecayBase.

Definition at line 67 of file EvtVPHOtoVISR.cc.

67 {
68
69 //take photon along z-axis, either forward or backward.
70 //Implement this as generating the photon momentum along
71 //the z-axis uniformly
72
73 double w=p->mass();
74 double s=w*w;
75
76 double L=2.0*log(w/0.000511);
77 double alpha=1/137.0;
78 double beta=(L-1)*2.0*alpha/EvtConst::pi;
79
80 //This uses the fact that there is a daughter of the
81 //psi(3770)
82 assert(p->getDaug(0)->getDaug(0)!=0);
83 double md=EvtPDL::getMeanMass(p->getDaug(0)->getDaug(0)->getId());
84
85 static double mD0=EvtPDL::getMeanMass(EvtPDL::getId("D0"));
86 static double mDp=EvtPDL::getMeanMass(EvtPDL::getId("D+"));
87
88 double pgmax=(s-4.0*md*md)/(2.0*w);
89
90 assert(pgmax>0.0);
91
92 double pgz=0.99*pgmax*exp(log(EvtRandom::Flat(1.0))/beta);
93
94 if (EvtRandom::Flat(1.0)<0.5) pgz=-pgz;
95
96 double k=fabs(pgz);
97
98 EvtVector4R p4g(k,0.0,0.0,pgz);
99
100 EvtVector4R p4res=p->getP4Restframe()-p4g;
101
102 double mres=p4res.mass();
103
104 double ed=mres/2.0;
105
106 assert(ed>md);
107
108 double pd=sqrt(ed*ed-md*md);
109
110
111 //std::cout << "k, mres, w, md, ed, pd:"<<k<<" "<<mres<<" "<<w<<" "<<md<<" "<<ed<<" "<<pd<<std::endl;
112
113 p->getDaug(0)->init(getDaug(0),p4res);
114 p->getDaug(1)->init(getDaug(1),p4g);
115
116
117 double sigma=beta*pow(2/w,beta)*(1+alpha*(1.5*L-2.0+EvtConst::pi*EvtConst::pi/3.0)/EvtConst::pi);
118
119 double m=EvtPDL::getMeanMass(p->getDaug(0)->getId());
120 double Gamma=EvtPDL::getWidth(p->getDaug(0)->getId());
121
122 //mres is the energy of the psi(3770)
123
124 double p0=0.0;
125 if (ed>mD0) p0=sqrt(ed*ed-mD0*mD0);
126 double pp=0.0;
127 if (ed>mDp) pp=sqrt(ed*ed-mDp*mDp);
128
129 double p0norm=sqrt(0.25*m*m-mD0*mD0);
130 double ppnorm=sqrt(0.25*m*m-mDp*mDp);
131
132 double r0=12.7;
133 double rp=12.7;
134
135 if (getNArg()==2){
136 r0=getArg(0);
137 rp=getArg(1);
138 }
139
140 double GammaTot=Gamma*(pp*pp*pp/(1+pp*pp*rp*rp)+p0*p0*p0/(1+p0*p0*r0*r0))/
141 (ppnorm*ppnorm*ppnorm/(1+ppnorm*ppnorm*rp*rp)+
142 p0norm*p0norm*p0norm/(1+p0norm*p0norm*r0*r0));
143
144
145 sigma*=pd*pd*pd/((mres-m)*(mres-m)+0.25*GammaTot*GammaTot);
146
147 assert(sigma>0.0);
148
149 static double sigmax=sigma;
150
151 if (sigma>sigmax){
152 sigmax=sigma;
153 }
154
155
156
157 static int count=0;
158
159 count++;
160
161 //if (count%10000==0){
162 // std::cout << "sigma :"<<sigma<<std::endl;
163 // std::cout << "sigmax:"<<sigmax<<std::endl;
164 //}
165
166 double norm=sqrt(sigma);
167
168 vertex(0,0,0,norm*p->eps(0)*p->epsParent(0).conj());
169 vertex(1,0,0,norm*p->eps(1)*p->epsParent(0).conj());
170 vertex(2,0,0,norm*p->eps(2)*p->epsParent(0).conj());
171
172 vertex(0,1,0,norm*p->eps(0)*p->epsParent(1).conj());
173 vertex(1,1,0,norm*p->eps(1)*p->epsParent(1).conj());
174 vertex(2,1,0,norm*p->eps(2)*p->epsParent(1).conj());
175
176 vertex(0,2,0,norm*p->eps(0)*p->epsParent(2).conj());
177 vertex(1,2,0,norm*p->eps(1)*p->epsParent(2).conj());
178 vertex(2,2,0,norm*p->eps(2)*p->epsParent(2).conj());
179
180 vertex(0,0,1,norm*p->eps(0)*p->epsParent(0).conj());
181 vertex(1,0,1,norm*p->eps(1)*p->epsParent(0).conj());
182 vertex(2,0,1,norm*p->eps(2)*p->epsParent(0).conj());
183
184 vertex(0,1,1,norm*p->eps(0)*p->epsParent(1).conj());
185 vertex(1,1,1,norm*p->eps(1)*p->epsParent(1).conj());
186 vertex(2,1,1,norm*p->eps(2)*p->epsParent(1).conj());
187
188 vertex(0,2,1,norm*p->eps(0)*p->epsParent(2).conj());
189 vertex(1,2,1,norm*p->eps(1)*p->epsParent(2).conj());
190 vertex(2,2,1,norm*p->eps(2)*p->epsParent(2).conj());
191
192 return;
193}
EvtComplex exp(const EvtComplex &c)
Definition: EvtComplex.hh:252
DOUBLE_PRECISION count[3]
double w
const double alpha
XmlRpcServer s
Definition: HelloServer.cpp:11
static const double pi
Definition: EvtConst.hh:28
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
double getArg(int j)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
static double getWidth(EvtId i)
Definition: EvtPDL.hh:54
static double getMeanMass(EvtId i)
Definition: EvtPDL.hh:45
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
virtual EvtVector4C epsParent(int i) const
Definition: EvtParticle.cc:565
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtId getId() const
Definition: EvtParticle.cc:113
EvtVector4R getP4Restframe()
Definition: EvtParticle.cc:700
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
virtual EvtVector4C eps(int i) const
Definition: EvtParticle.cc:576
static double Flat()
Definition: EvtRandom.cc:73
EvtVector4C conj() const
Definition: EvtVector4C.hh:206
double mass() const
Definition: EvtVector4R.cc:39
double Gamma(const double Q2, const double M2, const double G, const double mkpp2, const double mkmp2)
Definition: TUtil.h:16

◆ getName()

void EvtVPHOtoVISR::getName ( std::string &  name)
virtual

Implements EvtDecayBase.

Definition at line 34 of file EvtVPHOtoVISR.cc.

34 {
35
36 model_name="VPHOTOVISR";
37
38}

◆ init()

void EvtVPHOtoVISR::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 47 of file EvtVPHOtoVISR.cc.

47 {
48
49 // check that there are 0 or 2 arguments
50 checkNArg(0,2);
51
52 // check that there are 2 daughters
53 checkNDaug(2);
54
55 // check the parent and daughter spins
59}
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ initProbMax()

void EvtVPHOtoVISR::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 61 of file EvtVPHOtoVISR.cc.

61 {
62
63 //setProbMax(100000.0);
64
65}

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