BOSS 7.0.3
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//
22#include <stdlib.h>
25#include "EvtGenBase/EvtPDL.hh"
32#include "EvtJPE.hh"
33#include <string>
34using std::endl;
35
37
38void EvtJPE::getName(std::string& model_name){
39
40 model_name="JPE";
41
42}
43
44
46
47 return new EvtJPE;
48
49}
50
52static EvtId GAM=EvtPDL::getId("gamma");
53// check that there are 0 arguments
54 checkNArg(0);
55 checkNDaug(2);
59 if (!(getDaug(0)==GAM)) {
60 report(ERROR,"EvtGen") << "EvtJPE generator radiative decays expected "<<endl;
61 ::abort();
62}
63 }
64
65
66/*
67void EvtJPE::initProbMax() {
68
69//Hard coded... should not be hard to calculate...
70setProbMax(1.0);
71
72}
73*/
74
76
78
79 EvtParticle *v,*s1;
80 EvtVector4R pv,ps,ppr;
81
82 v =p->getDaug(0); //gamma
83 s1=p->getDaug(1); //eta_c
84 pv=v->getP4();
85 ps=s1->getP4();
86 ppr=p->getP4();
87 EvtVector4R pvcm=v->getP4();
88
89// Put phase space results into the daughters.
90 EvtHelSys angles(ppr,pv); //using helicity sys. angles
91 double theta =angles.getHelAng(1);
92 double phi =angles.getHelAng(2);
93 double gamma=0;
94
95 double mass_M = EvtPDL::getMass(getParentId());
96 double Mpsip=fabs(mass_M-3.686);
97 double Mpsipp=fabs(mass_M-3.771);
98 double FP=pvcm.d3mag(); //for J/psi and psi(3770) decays, M1 transition assumed with form factor =1. P-wave gives the p_gamma factor
99 if(Mpsip<0.1) {FP=FP*FP;} else{FP=1;} //for psi(2S) decays, M1 transition assumed with form factor=k_gamma^2
100
101
102 double FM=-FP;
103 vertex(0,0,Djmn(1, 1, 1,phi,theta,gamma)*FP); // Jpsi helicity =1 corresponding index=0
104 vertex(0,1,Djmn(1, 1,-1,phi,theta,gamma)*FM);
105 vertex(1,0,Djmn(1,-1, 1,phi,theta,gamma)*FP); // Jpsi helicity =-1 corresponding index=1
106 vertex(1,1,Djmn(1,-1,-1,phi,theta,gamma)*FM);
107 vertex(2,0,Djmn(1, 0, 1,phi,theta,gamma)*FP); // Jpsi helicity =0 corresponding index=2
108 vertex(2,1,Djmn(1, 0,-1,phi,theta,gamma)*FM);
109
110
111 return ;
112
113}
114
115
116
117
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ 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)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
EvtId getParentId()
Definition: EvtDecayBase.hh:60
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)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
double getHelAng(int i)
Definition: EvtHelSys.cc:54
Definition: EvtId.hh:27
void getName(std::string &name)
Definition: EvtJPE.cc:38
EvtDecayBase * clone()
Definition: EvtJPE.cc:45
void init()
Definition: EvtJPE.cc:51
virtual ~EvtJPE()
Definition: EvtJPE.cc:36
void decay(EvtParticle *p)
Definition: EvtJPE.cc:75
EvtJPE()
Definition: EvtJPE.hh:32
static double getMass(EvtId i)
Definition: EvtPDL.hh:46
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
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)
double d3mag() const
Definition: EvtVector4R.cc:186