BOSS 7.0.9
BESIII Offline Software System
Loading...
Searching...
No Matches
BesEvtGen-00-04-08/user/UserDIY.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: EvtDIY.cc
12//
13// Description: Routine for users to create model to use the model DIY
14//
15// Modification history:
16//
17// Ping R.-G. December, 2006 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtGenBase/EvtPatches.hh"
22#include <math.h>
23#include <stdlib.h>
24#include "EvtGenBase/EvtParticle.hh"
25#include "EvtGenBase/EvtKine.hh"
26
27#include "EvtGenBase/EvtVector4C.hh"
28#include "EvtGenBase/EvtVector4R.hh"
29#include "EvtGenBase/EvtTensor4C.hh"
30#include "EvtGenBase/EvtHelSys.hh"
31#include "EvtGenModels/EvtDIY.hh"
32#include <string>
33using namespace std;
34
35
36// **** angular sample test
37
38class AngularSam{
39
40 public:
42 _a=alpha;
43 pd1=p1;
44 }
45// virtual ~AngularSam();
46 double amps();
47
48 private:
49 EvtVector4R pd1;
50 double _a;
51};
52
53double AngularSam::amps(){
54double costheta=pd1.get(3)/pd1.d3mag();
55return 1+_a*pow(costheta,2.);
56}
57//--------------------
58
59// ******** rhopi decays without interference
60class rhopi{
61 public:
63 _pd[0]=pd1;
64 _pd[1]=pd2;
65 _pd[2]=pd3;
66 }
67 double F00(double s);
68 double F10(double s);
69 double amps1(double s,int i, int j);
70 double amps( );
71
72 private:
73 EvtVector4R _pd[3];
74};
75
76 double rhopi::F00(double s){
77 double mpi=0.1395;
78 return sqrt(s-4*mpi*mpi)/sqrt(s);
79 }
80
81 double rhopi::F10(double s){
82 double mpi=0.1395,mpsi=3.096916;
83 double tep=sqrt((mpsi*mpsi-pow(mpi+sqrt(s),2.))*(mpsi*mpsi-pow(mpi-sqrt(s),2.)));
84 return tep;
85 }
86
87 double rhopi::amps1(double s, int i, int j){
88 double mrho=0.771,wrho=0.1492,dpro;
89 EvtComplex img(0.0,1.0);
90 dpro=pow(abs(s-mrho*mrho+img*sqrt(s)*wrho),2.);
91 EvtVector4R prho;
92 prho=_pd[i]+_pd[j];
93 EvtHelSys angles(prho,_pd[i]),labAngles;
94 double theta,phi,ct1,st1,phi1,st,ct,temp;
95 theta=angles.getHelAng(1);
96 phi =angles.getHelAng(2);
97 ct1 =labAngles.Angles(prho,1);
98 phi1=labAngles.Angles(prho,2);
99 st=sin(theta);ct=cos(theta);
100 temp=pow(F00(s),2.)*pow(F10(s),2.)*pow(st,2.)/dpro; // *(1+pow(ct1,2.)+pow(st1,2.)*cos(2*(phi1+phi)));
101 return temp;
102 }
103
104 double rhopi::amps(){
105 double temp,s12,s13,s23;
106 s12=(_pd[0]+_pd[1]).mass2();
107 s13=(_pd[0]+_pd[2]).mass2();
108 s23=(_pd[1]+_pd[2]).mass2();
109 temp=amps1(s12,0,1)+amps1(s13,0,2)+amps1(s23,1,2);
110 return temp;
111 }
112// ************** end class rhopi
113
114
115// ******** rhopi decays with interference
116class rhopifull{
117 public:
119 _pd[0]=pd1;
120 _pd[1]=pd2;
121 _pd[2]=pd3;
122 }
123 double Fij(int i, int j, double r);
124 double R00(double r);
125 EvtComplex amps1(int m, int i, int j);
126 double amps( );
127
128 private:
129 EvtVector4R _pd[3];
130};
131
132 double rhopifull::R00(double r){
133 double mpi=0.1395;
134 return r;
135 }
136
137 double rhopifull::Fij(int i, int j, double r){
138 double mpi=0.1395,mpsi=3.096916;
139 double temp=mpsi*r;
140 if(i==0&& j==0) return 0;
141 if(i==1&& j==0) return temp;
142 if(i==-1&& j==0) return -temp;
143
144 }
145
146 EvtComplex rhopifull::amps1(int m, int i, int j){
147 double mrho=0.771,wrho=0.1492,s;
148 EvtComplex img(0.0,1.0),dpro;
149 EvtVector4R prho;
150 prho=_pd[i]+_pd[j];
151 s=prho.mass2();
152 dpro=s-mrho*mrho+img*sqrt(s)*wrho;
153 EvtHelSys angles(prho,_pd[i]),labAngles;
154 double theta,phi,ct1,st1,phi1,st,ct;
155 double rpp=angles.getHelAng(0);
156 theta=angles.getHelAng(1);
157 phi =angles.getHelAng(2);
158 ct1 =labAngles.Angles(prho,1);
159 phi1=labAngles.Angles(prho,2);
160 int lamb;
161 EvtComplex temp(0.0,0.0);
162 for(lamb=-1;lamb<=1;lamb++) temp=temp+Fij(lamb,0,prho.d3mag())*Djmn(1,m,lamb,phi1,ct1,0.0)/dpro*R00(rpp)*Djmn(1,lamb,0,phi,theta,0.0);
163 return temp;
164 }
165
166 double rhopifull::amps(){
167 double temp=0.0;
168 int m;
169 for(m=-1;m<=1;m+=2) temp=temp+pow(abs(amps1(m,0,1)+amps1(m,0,2)+amps1(m,1,2)),2.);
170 return temp;
171 }
172// ************** end class rhopifull
173
174
175//////////////////***** DIY Model
179
180// AngularSam ppbar(0.7,dp1);
181// return ppbar.amps();
182
183// rhopi Jpsi2rhopi(dp1,dp2,dp3);
184// return Jpsi2rhopi.amps();
185
186 rhopifull Jpsi2rhopi(dp1,dp2,dp3);
187 return Jpsi2rhopi.amps();
188 }
189
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
Double_t phi1
const double alpha
const double mpi
Definition: Gam4pikp.cxx:47
XmlRpcServer s
Definition: HelloServer.cpp:11
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
AngularSam(double alpha, EvtVector4R p1)
double amps()
double amps()
double F10(double s)
double amps1(double s, int i, int j)
double F00(double s)
rhopi(EvtVector4R pd1, EvtVector4R pd2, EvtVector4R pd3)
double R00(double r)
rhopifull(EvtVector4R pd1, EvtVector4R pd2, EvtVector4R pd3)
EvtComplex amps1(int m, int i, int j)
double amps()
double Fij(int i, int j, double r)
float costheta