BOSS 8.0.0
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//
21#include "EvtPi0Dalitz.hh"
30#include <fstream>
31#include <stdio.h>
32#include <stdlib.h>
33#include <string>
34using std::fstream;
35
37
38void EvtPi0Dalitz::getName( std::string& model_name ) { model_name = "PI0_DALITZ"; }
39
41
43
45
46 // check that there are 0 arguments
47 checkNArg( 0 );
48 checkNDaug( 3 );
49
51
55}
56
58
59 EvtParticle *ep, *em, *gamma;
60 setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), 0.00000002, 0, 1 ) );
61
62 ep = p->getDaug( 0 );
63 em = p->getDaug( 1 );
64 gamma = p->getDaug( 2 );
65
66 // the next four lines generates events with a weight such that
67 // the efficiency for selecting them is good. The parameter below of
68 // 0.1 is the size of the peak at low q^2 (in arbitrary units).
69 // The value of 0.1 is appropriate for muons.
70 // when you use this remember to remove the cut on q^2!
71
72 // ep em invariant mass^2
73 double m2 = ( ep->getP4() + em->getP4() ).mass2();
74 EvtVector4R q = ep->getP4() + em->getP4();
75 // Just use the prob summed over spins...
76
78
79 v = 2.0 * ( gamma->getP4() * q ) * directProd( q, gamma->getP4() ) -
80 ( gamma->getP4() * q ) * ( gamma->getP4() * q ) * EvtTensor4C::g() -
81 m2 * directProd( gamma->getP4(), gamma->getP4() );
82
83 w = 4.0 * ( directProd( ep->getP4(), em->getP4() ) + directProd( em->getP4(), ep->getP4() ) -
84 EvtTensor4C::g() * ( ep->getP4() * em->getP4() - ep->getP4().mass2() ) );
85
86 double prob = ( real( cont( v, w ) ) ) / ( m2 * m2 );
87 prob *= ( 1.0 / ( ( 0.768 * 0.768 - m2 ) * ( 0.768 * 0.768 - m2 ) +
88 0.768 * 0.768 * 0.151 * 0.151 ) );
89
90 // report(INFO,"EvtGen") << "prob is "<<prob<<endl;
91 setProb( prob );
92
93 return;
94}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
double w
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
****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()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
void setWeight(double weight)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void decay(EvtParticle *p)
void initProbMax()
void getName(std::string &name)
virtual ~EvtPi0Dalitz()
EvtDecayBase * clone()
static const EvtTensor4C & g()
double double * m2
Definition qcdloop1.h:83
double int * ep
Definition qcdloop1.h:82