BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtJPE.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: EvtJPE.cc
12//
13// Description: Routine to decay Vector->photon +pseudoscalar, e.g. J/psi to gamma eta or eta_c
14//
15// Modification history:
16//
17// Ping R.-G. Apr., 2007 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtJPE.hh"
32#include <stdlib.h>
33#include <string>
34using std::endl;
35
37
38void EvtJPE::getName( std::string& model_name ) { model_name = "JPE"; }
39
41
43 static EvtId GAM = EvtPDL::getId( "gamma" );
44 // check that there are 0 arguments
45 checkNArg( 0 );
46 checkNDaug( 2 );
50 if ( !( getDaug( 0 ) == GAM ) )
51 {
52 report( ERROR, "EvtGen" ) << "EvtJPE generator radiative decays expected " << endl;
53 ::abort();
54 }
55}
56
57/*
58void EvtJPE::initProbMax() {
59
60//Hard coded... should not be hard to calculate...
61setProbMax(1.0);
62
63}
64*/
65
67
69
70 EvtParticle *v, *s1;
71 EvtVector4R pv, ps, ppr;
72
73 v = p->getDaug( 0 ); // gamma
74 s1 = p->getDaug( 1 ); // eta_c
75 pv = v->getP4();
76 ps = s1->getP4();
77 ppr = p->getP4();
78 EvtVector4R pvcm = v->getP4();
79
80 // Put phase space results into the daughters.
81 EvtHelSys angles( ppr, pv ); // using helicity sys. angles
82 double theta = angles.getHelAng( 1 );
83 double phi = angles.getHelAng( 2 );
84 double gamma = 0;
85
86 double mass_M = EvtPDL::getMass( getParentId() );
87 double Mpsip = fabs( mass_M - 3.686 );
88 double Mpsipp = fabs( mass_M - 3.771 );
89 double FP = pvcm.d3mag(); // for J/psi and psi(3770) decays, M1 transition assumed with form
90 // factor =1. P-wave gives the p_gamma factor
91 if ( Mpsip < 0.1 ) { FP = FP * FP; }
92 else { FP = 1; } // for psi(2S) decays, M1 transition assumed with form factor=k_gamma^2
93
94 double FM = -FP;
95 vertex( 0, 0,
96 Djmn( 1, 1, 1, phi, theta, gamma ) * FP ); // Jpsi helicity =1 corresponding index=0
97 vertex( 0, 1, Djmn( 1, 1, -1, phi, theta, gamma ) * FM );
98 vertex( 1, 0, Djmn( 1, -1, 1, phi, theta, gamma ) * FP ); // Jpsi helicity =-1 corresponding
99 // index=1
100 vertex( 1, 1, Djmn( 1, -1, -1, phi, theta, gamma ) * FM );
101 vertex( 2, 0,
102 Djmn( 1, 0, 1, phi, theta, gamma ) * FP ); // Jpsi helicity =0 corresponding index=2
103 vertex( 2, 1, Djmn( 1, 0, -1, phi, theta, gamma ) * FM );
104
105 return;
106}
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition EvtHelSys.cc:165
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)
EvtId getParentId()
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)
double getHelAng(int i)
Definition EvtHelSys.cc:52
Definition EvtId.hh:27
void getName(std::string &name)
Definition EvtJPE.cc:38
EvtDecayBase * clone()
Definition EvtJPE.cc:40
void init()
Definition EvtJPE.cc:42
virtual ~EvtJPE()
Definition EvtJPE.cc:36
void decay(EvtParticle *p)
Definition EvtJPE.cc:66
EvtJPE()
Definition EvtJPE.hh:31
static double getMass(EvtId i)
Definition EvtPDL.hh:44
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double d3mag() const