BOSS 7.0.9
BESIII Offline Software System
Loading...
Searching...
No Matches
BesEvtGen-00-04-08/src/EvtGen/EvtGenModels/EvtP2GC1.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: EvtP2GC1.cc
12//
13// Description: Routine to decay psi(2S) to gamma chi_c1 by assuming E1 dominant
14//
15// Modification history:
16//
17// Ping R.-G. December, 2006 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtGenBase/EvtPatches.hh"
22#include <stdlib.h>
23#include "EvtGenBase/EvtParticle.hh"
24#include "EvtGenBase/EvtGenKine.hh"
25#include "EvtGenBase/EvtPDL.hh"
26#include "EvtGenBase/EvtVector4C.hh"
27#include "EvtGenBase/EvtVector4R.hh"
28#include "EvtGenBase/EvtTensor4C.hh"
29#include "EvtGenBase/EvtReport.hh"
30#include "EvtGenBase/EvtHelSys.hh"
31#include "EvtP2GC1.hh"
32#include "EvtGenBase/EvtdFunctionSingle.hh"
33#include <string>
34using std::endl;
35
37
38void EvtP2GC1::getName(std::string& model_name){
39
40 model_name="P2GC1";
41
42}
43
44
46
47 return new EvtP2GC1;
48
49}
50
51void EvtP2GC1::init(){
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") << "EvtP2GC1 generator radiative decays expected "<<endl;
61 ::abort();
62}
63 }
64
65
67
68 //Hard coded... should not be hard to calculate...
69 setProbMax(1.67);
70
71}
72
74
76
77 EvtParticle *v,*s1;
78 EvtVector4R pv,ps,ppr;
79
80 v =p->getDaug(0); //gamma
81 s1=p->getDaug(1); //chi_c1
82 pv=v->getP4();
83 ps=s1->getP4();
84 ppr=p->getP4();
85
86// Put phase space results into the daughters.
87 EvtHelSys angles(ppr,pv); //using helicity sys. angles
88 double theta =angles.getHelAng(1);
89 double phi =angles.getHelAng(2);
90 double gamma =0;
91 double alpha=-1./3.;
92 double A02=sqrt((1+alpha)/2);
93 double A00=sqrt((1-alpha)/4);
94 double A12=-A02,A11=-A00;
95 int j1,j2,j3;
96 for(j1=0;j1<=2;){
97 for(j2=0;j2<=1;){
98 for(j3=0;j3<=2;){
99 vertex(j1,j2,j3,0.0);j3++;}
100j2++;}
101j1++;}
102
103 vertex(0,1,2,Djmn(1, 1,-1,phi,theta,gamma)*A12); //helicity for psiprime = 1
104 vertex(0,1,1,Djmn(1, 1, 0,phi,theta,gamma)*A11);
105 vertex(0,0,2,Djmn(1, 1, 1,phi,theta,gamma)*A02);
106 vertex(0,0,0,Djmn(1, 1, 0,phi,theta,gamma)*A00);
107
108 vertex(1,1,2,Djmn(1,-1,-1,phi,theta,gamma)*A12); //helicity for psiprime = -1
109 vertex(1,1,1,Djmn(1,-1, 0,phi,theta,gamma)*A11);
110 vertex(1,0,2,Djmn(1,-1, 1,phi,theta,gamma)*A02);
111 vertex(1,0,0,Djmn(1,-1, 0,phi,theta,gamma)*A00);
112
113 vertex(2,1,2,Djmn(1, 0,-1,phi,theta,gamma)*A12); //helicity for psiprime = -1
114 vertex(2,1,1,Djmn(1, 0, 0,phi,theta,gamma)*A11);
115 vertex(2,0,2,Djmn(1, 0, 1,phi,theta,gamma)*A02);
116 vertex(2,0,0,Djmn(1, 0, 0,phi,theta,gamma)*A00);
117
118
119 return ;
120
121}
122
123
124
125
const double alpha
**********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
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
ostream & report(Severity severity, const char *facility)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static EvtId getId(const std::string &name)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)