Pluto v6.3.0
Loading...
Searching...
No Matches
PResonanceDalitz.cc
Go to the documentation of this file.
1
2//
3// Dalitz decay for N* resonances
4//
5//Reference:
6//Dilepton decays of baryon resonances.
7//M. Zetenyi, Gy. Wolf, (Budapest, RMKI) . Feb 2002. 16pp.
8//Published in Heavy Ion Phys.17:27-39,2003.
9//e-Print: nucl-th/0202047
10//
11//
12// Author: A. Rustamov
14
15#include "PResonanceDalitz.h"
16
18 //clone the object
19 return new PResonanceDalitz((const PResonanceDalitz &)* this);
20};
21
22PResonanceDalitz::PResonanceDalitz(const Char_t *id, const Char_t *de, Int_t key) : PDalitzDecay(id, de, key) {
23 //Constructor
24 mass_x = mass_p;
28};
29
30double PResonanceDalitz::GetMatrixT(int &spin, int &parity, int&, const double& ecm, const double& M) {
31 float matr;
32 if (spin == 1) {
33 if (parity == 1) {
34 matr = TMath::Power((ecm2 - mn2),2)*(ecmPmn2 - M2);
35 return matr/2./mn4;
36 } else {
37 matr = TMath::Power((ecm2 - mn2),2)*(ecmMmn2 - M2);
38 return matr/2./mn4;
39 }
40 } else if (spin == 3) {
41 if (parity == 1) {
42 matr = (ecmMmn2 - M*M )*(3.*ecm4 + 6.*ecm3*mn + 4.*ecm2*mn2 +
43 2.*ecm*mn3 + mn4 - 2.*ecm*mn*M2 - 2.*mn2*M2 + M4);
44 return matr/12./ecm2/mn2;
45 } else {
46 matr = (ecmPmn2 - M*M )*(3.*ecm4 - 6.*ecm3*mn + 4.*ecm2*mn2 -
47 2.*ecm*mn3 + mn4 + 2.*ecm*mn*M2 - 2.*mn2*M2 + M4);
48 return matr/12./ecm2/mn2;
49 }
50 } else if (spin == 5) {
51 if (parity == 1) {
52 matr = (ecmMmn2 - M*M )*(ecmPmn2 - M*M )*(ecmPmn2 - M*M )*
53 (2.*ecm4 - 4.*ecm3*mn + 3.*ecm2*mn2 - 2.*ecm*mn3 + mn4 +
54 2.*ecm*mn*M2 - 2.*mn2*M2 + M4);
55 return matr/480./ecm4/mn4;
56 } else {
57 matr = (ecmMmn2 - M*M )*(ecmMmn2 - M*M )*(ecmPmn2 - M*M )*
58 (2.*ecm4 + 4.*ecm3*mn + 3.*ecm2*mn2 + 2.*ecm*mn3 + mn4 -
59 2.*ecm*mn*M2 - 2.*mn2*M2 + M4);
60 return matr/480./ecm4/mn4;
61 }
62 } else {
63 cout << "enter resonable spin " << endl;
64 return 0;
65 }
66}
67
68double PResonanceDalitz::GetMatrixL(int &spin, int &parity, int&, const double&, const double& M) {
69 float matr;
70 if (spin == 1) {
71 if (parity == 1) {
72 matr = M2*ecmPmn2*(ecmPmn2 - M2);
73 return matr/2./mn4;
74 } else {
75 matr = M2*ecmMmn2*(ecmMmn2 - M2);
76 return matr/2./mn4;
77 }
78 } else if (spin == 3) {
79 if (parity == 1) {
80 matr = M2*(ecmMmn2 - M*M );
81 return matr/3/mn2;
82 } else {
83 matr = M2*(ecmPmn2 - M*M );
84 return matr/3./mn2;
85 }
86 } else if (spin == 5) {
87 if (parity == 1) {
88 matr = M2*(ecmMmn2 - M*M )*(ecmPmn2 - M*M)*(ecmPmn2 - M*M);
89 return matr/120/ecm2/mn4;
90 } else {
91 matr =M2*(ecmMmn2 - M*M )*(ecmMmn2 - M*M )*(ecmPmn2 - M*M);
92 return matr/120/ecm2/mn4;
93 }
94 } else {
95 cout<<"enter resonable spin "<<endl;
96 return 0;
97 }
98}
99
100
101double PResonanceDalitz::getLambda(double a, double b, double c) {
102 return a*a + b*b + c*c - 2*(a*b + b*c + a*c);
103}
104
105
106double PResonanceDalitz::dGdM(const int&, const double& m, const double& ecm) {
107
108 mn = 0.938273;
109 mn2 = mn*mn;
110 mn3 = mn*mn*mn;
111 mn4 = mn*mn*mn*mn;
112 ecm2 = TMath::Power(ecm,2);
113 ecm4 = TMath::Power(ecm,4);
114 ecm3 = TMath::Power(ecm,3);
115 ecmPmn2 = TMath::Power((ecm + mn),2);
116 ecmMmn2 = TMath::Power((ecm - mn),2);
117 M2 = m*m;
118 M4 = m*m*m*m;
119 double lam = getLambda(ecm*ecm,mn*mn,m*m);
120 double alfa = 0.007297;
121 double pi = 3.14159265;
122
123 double dgdm = alfa*alfa*g_Em*g_Em*sqrt(lam)*
124 (2.*GetMatrixT(spin,par,charge,ecm,m) +
125 GetMatrixL(spin,par,charge,ecm,m))/6./pi/ecm/ecm/ecm/m;
126
127 if (dgdm > 0) return dgdm;
128 return 0;
129}
130
131
132
134
ClassImp(PBeamLineSimulation) PBeamLineSimulation
PStaticData * makeStaticData()
PDistribution * Clone(const char *delme=NULL) const
double getLambda(double, double, double)
virtual double dGdM(const int &id, const double &m, const double &ecm)
PResonanceDalitz(const Char_t *id, const Char_t *de, Int_t key)
double GetMatrixT(int &, int &, int &, const double &, const double &)
double GetMatrixL(int &, int &, int &, const double &, const double &)
int GetParticleCharge(const int &id)
int GetParticleSpin(const int &id)
int GetParticleParity(const int &id)
PChannel * c[]
PParticle * pi