Pluto v6.3.0
Loading...
Searching...
No Matches
PDeltaDalitzFF.cc
Go to the documentation of this file.
1
2//
3// Dalitz decay form factor models
4//
5// QED: Version with factors from M.I. Krivoruchenko, nucl-th/0104045
6// (Ref21)
7// The coupling constants can be changed via
8// SetCC(G_m,G_e,G_c);
9// VMD: Calculation by F. Iachello and Q. Wan
10// Int. J. Mod. Phys. A 20 (2005) 1846;
11// Q. Wan, Ph.D. Thesis, Yale University, New Haven, Connecticut (2007);
12// (Ref22)
13// Provided by B. Ramstein
14// SetCC(G_m,G_e,G_c); -> re-normalize VMD model such that
15// it matches to the QED at pole mass
16//
17// Author: I. Froehlich / B. Ramstein
19
20
21
22#include "PDeltaDalitzFF.h"
23#include "PDynamicData.h"
24
26 //clone the object
27 return new PDeltaDalitzFF((const PDeltaDalitzFF &)* this);
28};
29
30PDeltaDalitzFF::PDeltaDalitzFF(const Char_t *id ,const Char_t *de, Int_t key) :
31 PChannelModel(id, de, key) {
32 //Constructor
33
34 beta_prime = 0.004;
35 beta = 1.2748;
36 a2 = 0.29;
37 theta = 53.;
38
39 mass_pi = makeStaticData()->GetParticleMass("pi+");
40 fm_pis = 4*mass_pi*mass_pi;
41 // mass_rho = makeStaticData()->GetParticleMass("rho0");
42 // gamma_rho = makeStaticData()->GetParticleTotalWidth("rho0");
43 mass_rho = 0.765;
44 gamma_rho = 0.112;
45 mass_delta = makeStaticData()->GetParticleMass("D+");
46 mass_n = makeStaticData()->GetParticleMass("n");
47
48 rhopid = makeStaticData()->GetParticleID("rho0");
49
50 mu_p = 2.793;
51 g_m2 = 3.2*3.2;
52 g_e2 = 0.04*0.04;
53 g_c2 = 0.2 *0.2;
54
55 useQED = -2;
56 rescale = 0;
57};
58
59Double_t PDeltaDalitzFF::gk2(Double_t t) {
60 // intrinsic form_factor
61 Double_t denom2 = 1 + a2*a2*t*t + 2.*a2*t*cos(theta*TMath::Pi()/180.);
62 //cout <<"t= "<<t<< " g= "<<1-1./denom2<<endl;
63 return 1/denom2;
64}
65
66Double_t PDeltaDalitzFF::facteur_rho(Double_t x) {
67 // rho propagator term
68
69 //Iachello "old" version
70 if ((x < fm_pis) && (useQED != -2)) return mass_rho*mass_rho
71 /(mass_rho*mass_rho - x);
72 //scaling to avoid "step"
73 // Double_t scale=0.91;
74 Double_t scale = 1.;
75 Double_t alpha = 1.;
76 Double_t beta = 0.;
77
78 if (useQED == -1)
79 gamma_rho = makeDynamicData()->GetParticleTotalWidth(sqrt(x), rhopid);
80
81 if ((useQED == -2) && (x < fm_pis)) { //TODO: Make a more meaningfull flag name
82 alpha = sqrt((fm_pis - x)/x)*(1.-2/TMath::Pi() *atan(sqrt((fm_pis - x)/x)));
83 beta = 0.;
84 } else {
85 Double_t qnorm = x/fm_pis;
86 Double_t logpart = (sqrt(x - fm_pis ) + sqrt(x))/(2*mass_pi);
87 alpha = 2/TMath::Pi()*sqrt((x - fm_pis )/x)*log(logpart);
88 beta = sqrt(pow(qnorm-1.,3)/qnorm);
89 }
90
91 // Double_t logpart = (sqrt(x - fm_pis ) + sqrt(x))/(2*mass_pi);
92 // Double_t alpha= 2/TMath::Pi()*sqrt((x - fm_pis )/x)*log(logpart);
93 Double_t denom_reel = mass_rho*mass_rho - x + (fm_pis -x)*gamma_rho*alpha/mass_pi;
94 // Double_t qnorm=x/fm_pis;
95 // Double_t beta = sqrt(pow(qnorm-1.,3)/qnorm);
96 double denom_im = gamma_rho*4*mass_pi*beta;
97 return scale*(mass_rho*mass_rho +
98 8*gamma_rho*mass_pi/TMath::Pi())
99 /sqrt(denom_reel*denom_reel+denom_im*denom_im);
100}
101
102Double_t PDeltaDalitzFF::GetWeight(Double_t *mass, Int_t *) {
103
104 Double_t x = mass[0]*mass[0];
105 Double_t m_d2 = mass[1]*mass[1]; //mass of Delta sq.
106
107 //q-dependent QED-Formfactor
108 if (useQED == 1)
109 return (g_m2 + 3 * g_e2 + (g_c2*x/(2*m_d2)));
110
111 //VMD-Formfactor
112 Double_t ff = 2.4637*gk2(-x)*(beta_prime + beta*facteur_rho(x));
113 if (rescale) ff *= sqrt((4.76826/4.68927)*(g_m2/(3.2*3.2)));
114 return ff*ff;
115
116}
117
118
120
121
ClassImp(PBeamLineSimulation) PBeamLineSimulation
PDynamicData * makeDynamicData()
PStaticData * makeStaticData()
PDistribution * Clone(const char *delme=NULL) const
virtual Double_t GetWeight(void)
PDeltaDalitzFF(const Char_t *id, const Char_t *de, Int_t key)
Double_t GetParticleTotalWidth(Double_t mass, Int_t pid)
double GetParticleMass(const int &id)
int GetParticleID(const char *id, int warn=1)
Double_t mass