CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtPi0Dalitz.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: EvtPi0Dalitz.cc
12//
13// Description: pi0 -> e+ e- gamma
14//
15// Modification history:
16//
17// DJL/RYD June 30, 1998 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
23#include <fstream>
24#include <stdio.h>
25#include <string>
28#include "EvtGenBase/EvtPDL.hh"
35using std::fstream;
36
38
39void EvtPi0Dalitz::getName(std::string& model_name){
40
41 model_name="PI0_DALITZ";
42
43}
44
46
47 return new EvtPi0Dalitz;
48
49}
50
51
53
54 setProbMax(3.5);
55
56}
57
58
60
61 // check that there are 0 arguments
62 checkNArg(0);
63 checkNDaug(3);
64
65
67
71
72}
73
74
76
77 EvtParticle *ep, *em, *gamma;
78 setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),0.00000002,0,1));
79
80 ep=p->getDaug(0);
81 em=p->getDaug(1);
82 gamma=p->getDaug(2);
83
84 // the next four lines generates events with a weight such that
85 // the efficiency for selecting them is good. The parameter below of
86 // 0.1 is the size of the peak at low q^2 (in arbitrary units).
87 // The value of 0.1 is appropriate for muons.
88 // when you use this remember to remove the cut on q^2!
89
90
91 //ep em invariant mass^2
92 double m2=(ep->getP4()+em->getP4()).mass2();
93 EvtVector4R q=ep->getP4()+em->getP4();
94 //Just use the prob summed over spins...
95
96 EvtTensor4C w,v;
97
98 v=2.0*(gamma->getP4()*q)*directProd(q,gamma->getP4())
99 - (gamma->getP4()*q)*(gamma->getP4()*q)*EvtTensor4C::g()
100 -m2*directProd(gamma->getP4(),gamma->getP4());
101
102 w=4.0*( directProd(ep->getP4(),em->getP4()) + directProd(em->getP4(),ep->getP4())
103 -EvtTensor4C::g()*(ep->getP4()*em->getP4()-ep->getP4().mass2()));
104
105 double prob=(real(cont(v,w)))/(m2*m2);
106 prob *=(1.0/( (0.768*0.768-m2)*(0.768*0.768-m2)
107 +0.768*0.768*0.151*0.151));
108
109 // report(INFO,"EvtGen") << "prob is "<<prob<<endl;
110 setProb(prob);
111
112 return;
113}
114
115
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
double real(const EvtComplex &c)
Definition: EvtComplex.hh:240
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:312
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition: KKsem.h:33
**********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 checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
Definition: EvtDecayProb.hh:34
void setWeight(double weight)
Definition: EvtDecayProb.hh:36
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void decay(EvtParticle *p)
Definition: EvtPi0Dalitz.cc:75
void initProbMax()
Definition: EvtPi0Dalitz.cc:52
void getName(std::string &name)
Definition: EvtPi0Dalitz.cc:39
virtual ~EvtPi0Dalitz()
Definition: EvtPi0Dalitz.cc:37
EvtDecayBase * clone()
Definition: EvtPi0Dalitz.cc:45
static const EvtTensor4C & g()
Definition: EvtTensor4C.cc:47
double mass2() const
Definition: EvtVector4R.hh:116