BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBtoXsgammaAliGreub Class Reference

#include <EvtBtoXsgammaAliGreub.hh>

Inheritance diagram for EvtBtoXsgammaAliGreub:

Public Member Functions

 EvtBtoXsgammaAliGreub ()
virtual ~EvtBtoXsgammaAliGreub ()
void init (int, double *)
double GetMass (int code)
Public Member Functions inherited from EvtBtoXsgammaAbsModel
 EvtBtoXsgammaAbsModel ()
virtual ~EvtBtoXsgammaAbsModel ()

Detailed Description

Definition at line 28 of file EvtBtoXsgammaAliGreub.hh.

Constructor & Destructor Documentation

◆ EvtBtoXsgammaAliGreub()

EvtBtoXsgammaAliGreub::EvtBtoXsgammaAliGreub ( )
inline

Definition at line 31 of file EvtBtoXsgammaAliGreub.hh.

31{}

◆ ~EvtBtoXsgammaAliGreub()

EvtBtoXsgammaAliGreub::~EvtBtoXsgammaAliGreub ( )
virtual

Definition at line 46 of file EvtBtoXsgammaAliGreub.cc.

46{}

Member Function Documentation

◆ GetMass()

double EvtBtoXsgammaAliGreub::GetMass ( int code)
virtual

Implements EvtBtoXsgammaAbsModel.

Definition at line 61 of file EvtBtoXsgammaAliGreub.cc.

61 {
62
63 // The special lineshape for strange hadrons X_s in b -> s gamma:
64 // An 18 parameter function fitted to the theoretical mass spectrum
65 // of Ali & Greub for a B meson mass of 5.279 GeV; top quark mass of
66 // 174.3 GeV; strange quark mass of 0.48 GeV (tuned to give minimum
67 // M_Xs of 0.64 GeV) and Fermi momentum of 265 MeV for spectator quark
68 // mass of 150 MeV (from CLEO fit). Truncated at max on high side
69 // and min (just above K pi or KK thresold) on low side.
70 double min = 0.64;
71 double max = 4.5;
72 double xbox, ybox, alifit;
73 double mass = 0.0;
74
75 double par[18];
76 if ( ( Xscode == 30343 ) || ( Xscode == -30343 ) || ( Xscode == 30353 ) ||
77 ( Xscode == -30353 ) )
78 { // Xsu or Xsd
79 min = 0.6373; // Just above K pi threshold for Xsd/u
80 // min=0.6333; // K pi threshold for neutral Xsd
81 par[0] = -2057.2380371094;
82 par[1] = 2502.2556152344;
83 par[2] = 1151.5632324219;
84 par[3] = 0.82431584596634;
85 par[4] = -4110.5234375000;
86 par[5] = 8445.6757812500;
87 par[6] = -3034.1894531250;
88 par[7] = 1.1557708978653;
89 par[8] = 1765.9311523438;
90 par[9] = 1.3730158805847;
91 par[10] = 0.51371538639069;
92 par[11] = 2.0056934356689;
93 par[12] = 37144.097656250;
94 par[13] = -50296.781250000;
95 par[14] = 27319.095703125;
96 par[15] = -7408.0678710938;
97 par[16] = 1000.8093261719;
98 par[17] = -53.834449768066;
99 }
100 else if ( ( Xscode == 30363 ) || ( Xscode == -30363 ) )
101 {
102 min = 0.9964; // Just above KK threshold for Xss
103 par[0] = -32263.908203125;
104 par[1] = 57186.589843750;
105 par[2] = -24230.728515625;
106 par[3] = 1.1155973672867;
107 par[4] = -12161.131835938;
108 par[5] = 20162.146484375;
109 par[6] = -7198.8564453125;
110 par[7] = 1.3783323764801;
111 par[8] = 1995.1691894531;
112 par[9] = 1.4655895233154;
113 par[10] = 0.48869228363037;
114 par[11] = 2.1038570404053;
115 par[12] = 55100.058593750;
116 par[13] = -75201.703125000;
117 par[14] = 41096.066406250;
118 par[15] = -11205.986328125;
119 par[16] = 1522.4024658203;
120 par[17] = -82.379623413086;
121 }
122 else
123 {
124 report( DEBUG, "EvtGen" ) << "In EvtBtoXsgammaAliGreub: Particle with id " << Xscode
125 << " is not a Xss particle" << endl;
126 return 0;
127 }
128
129 double boxheight = par[8];
130 double boxwidth = max - min;
131
132 while ( ( mass > max ) || ( mass < min ) )
133 {
134 xbox = EvtRandom::Flat( boxwidth ) + min;
135 ybox = EvtRandom::Flat( boxheight );
136 if ( xbox < par[3] ) { alifit = par[0] + par[1] * xbox + par[2] * pow( xbox, 2 ); }
137 else if ( xbox < par[7] ) { alifit = par[4] + par[5] * xbox + par[6] * pow( xbox, 2 ); }
138 else if ( xbox < par[11] )
139 { alifit = par[8] * exp( -0.5 * pow( ( xbox - par[9] ) / par[10], 2 ) ); }
140 else
141 {
142 alifit = par[12] + par[13] * xbox + par[14] * pow( xbox, 2 ) + par[15] * pow( xbox, 3 ) +
143 par[16] * pow( xbox, 4 ) + par[17] * pow( xbox, 5 );
144 }
145 if ( ybox > alifit ) { mass = 0.0; }
146 else { mass = xbox; }
147 }
148 return mass;
149}
double mass
#define min(a, b)
#define max(a, b)
EvtComplex exp(const EvtComplex &c)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ DEBUG
Definition EvtReport.hh:53
static double Flat()
Definition EvtRandom.cc:69

◆ init()

void EvtBtoXsgammaAliGreub::init ( int nArg,
double * args )
virtual

Reimplemented from EvtBtoXsgammaAbsModel.

Definition at line 48 of file EvtBtoXsgammaAliGreub.cc.

48 {
49
50 if ( ( nArg - 1 ) != 0 )
51 {
52
53 report( ERROR, "EvtGen" ) << "EvtBtoXsgamma generator model "
54 << "EvtBtoXsgammaAliGreub expected "
55 << "zero arguments but found: " << nArg - 1 << endl;
56 report( ERROR, "EvtGen" ) << "Will terminate execution!" << endl;
57 ::abort();
58 }
59}
@ ERROR
Definition EvtReport.hh:49

The documentation for this class was generated from the following files: