BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJpipi.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang @IHEP
10//
11// Module: EvtJpipi.cc
12//
13// Description: Routine to decay psi(2S)-> J/psi pi pi using chiral Lagrangian and
14// information by fitting the exp. data
15//
16// Modification history:
17//
18// Ping R.-G. December, 2006 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtJpipi.hh"
30#include <stdlib.h>
31#include <string>
32using std::endl;
33
35
36void EvtJpipi::getName( std::string& model_name ) { model_name = "JPIPI"; }
37
39
41
42 static EvtId PIP = EvtPDL::getId( "pi+" );
43 static EvtId PIM = EvtPDL::getId( "pi-" );
44 static EvtId PI0 = EvtPDL::getId( "pi0" );
45
46 // check that there are 0 arguments
47 checkNArg( 0 );
48 checkNDaug( 3 );
49
52
53 if ( ( !( getDaug( 1 ) == PIP && getDaug( 2 ) == PIM ) ) &&
54 ( !( getDaug( 1 ) == PI0 && getDaug( 2 ) == PI0 ) ) )
55 {
56 report( ERROR, "EvtGen" ) << "EvtJpipi generator expected "
57 << " pi+ and pi- (or pi0 and pi0) "
58 << "as 2nd and 3rd daughter. " << endl;
59 report( ERROR, "EvtGen" ) << "Will terminate execution!" << endl;
60 ::abort();
61 }
62}
63
65
66 // Hard coded... should not be hard to calculate...
67 setProbMax( 0.019 );
68}
69
71
73
74 EvtParticle *v, *s1, *s2;
75
76 v = p->getDaug( 0 );
77 s1 = p->getDaug( 1 );
78 s2 = p->getDaug( 2 );
79
80 // Put phase space results into the daughters.
81
82 EvtVector4C ep0, ep1, ep2;
83
84 ep0 = p->eps( 0 );
85 ep1 = p->eps( 1 );
86 ep2 = p->eps( 2 );
87
88 // double fac=(s1->getP4()+s2->getP4()).mass2()-4*s1->mass()*s2->mass();
89 double fac1 = ( s1->getP4() + s2->getP4() ).mass2() - 2 * s1->mass() * s2->mass();
90 double fac = 0.3 * fac1 - 2 * 0.11 * ( s1->getP4() ).get( 0 ) * ( s2->getP4() ).get( 0 );
91
92 vertex( 0, 0, fac * ( ep0 * v->epsParent( 0 ).conj() ) );
93 vertex( 0, 1, fac * ( ep0 * v->epsParent( 1 ).conj() ) );
94 vertex( 0, 2, fac * ( ep0 * v->epsParent( 2 ).conj() ) );
95
96 vertex( 1, 0, fac * ( ep1 * v->epsParent( 0 ).conj() ) );
97 vertex( 1, 1, fac * ( ep1 * v->epsParent( 1 ).conj() ) );
98 vertex( 1, 2, fac * ( ep1 * v->epsParent( 2 ).conj() ) );
99
100 vertex( 2, 0, fac * ( ep2 * v->epsParent( 0 ).conj() ) );
101 vertex( 2, 1, fac * ( ep2 * v->epsParent( 1 ).conj() ) );
102 vertex( 2, 2, fac * ( ep2 * v->epsParent( 2 ).conj() ) );
103
104 return;
105}
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
**********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 vertex(const EvtComplex &amp)
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)
EvtId getDaug(int i)
Definition EvtId.hh:27
EvtDecayBase * clone()
Definition EvtJpipi.cc:38
void decay(EvtParticle *p)
Definition EvtJpipi.cc:70
void initProbMax()
Definition EvtJpipi.cc:64
virtual ~EvtJpipi()
Definition EvtJpipi.cc:34
void getName(std::string &name)
Definition EvtJpipi.cc:36
void init()
Definition EvtJpipi.cc:40
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)