BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBHadronic Class Reference

#include <EvtBHadronic.hh>

+ Inheritance diagram for EvtBHadronic:

Public Member Functions

 EvtBHadronic ()
 
virtual ~EvtBHadronic ()
 
void getName (std::string &name)
 
EvtDecayBaseclone ()
 
void init ()
 
void decay (EvtParticle *p)
 
- Public Member Functions inherited from EvtDecayAmp
void makeDecay (EvtParticle *p)
 
void setWeight (double weight)
 
void vertex (const EvtComplex &amp)
 
void vertex (int i1, const EvtComplex &amp)
 
void vertex (int i1, int i2, const EvtComplex &amp)
 
void vertex (int i1, int i2, int i3, const EvtComplex &amp)
 
void vertex (int *i1, const EvtComplex &amp)
 
virtual ~EvtDecayAmp ()
 
- Public Member Functions inherited from EvtDecayBase
virtual void initProbMax ()
 
virtual std::string commandName ()
 
virtual void command (std::string cmd)
 
double getProbMax (double prob)
 
double resetProbMax (double prob)
 
 EvtDecayBase ()
 
virtual ~EvtDecayBase ()
 
virtual bool matchingDecay (const EvtDecayBase &other) const
 
EvtId getParentId ()
 
double getBranchingFraction ()
 
void disableCheckQ ()
 
void checkQ ()
 
int getNDaug ()
 
EvtIdgetDaugs ()
 
EvtId getDaug (int i)
 
int getNArg ()
 
int getPHOTOS ()
 
void setPHOTOS ()
 
void setVerbose ()
 
void setSummary ()
 
double * getArgs ()
 
std::string * getArgsStr ()
 
double getArg (int j)
 
std::string getArgStr (int j)
 
std::string getModelName ()
 
int getDSum ()
 
int summary ()
 
int verbose ()
 
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
 
void printSummary ()
 
void setProbMax (double prbmx)
 
void noProbMax ()
 
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
 
void checkNDaug (int d1, int d2=-1)
 
void checkSpinParent (EvtSpinType::spintype sp)
 
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
 
virtual int nRealDaughters ()
 

Additional Inherited Members

- Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
 
static void findMass (EvtParticle *p)
 
static double findMaxMass (EvtParticle *p)
 
- Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
 
- Protected Attributes inherited from EvtDecayAmp
EvtAmp _amp2
 
- Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel
 

Detailed Description

Definition at line 27 of file EvtBHadronic.hh.

Constructor & Destructor Documentation

◆ EvtBHadronic()

EvtBHadronic::EvtBHadronic ( )
inline

Definition at line 31 of file EvtBHadronic.hh.

31{}

Referenced by clone().

◆ ~EvtBHadronic()

EvtBHadronic::~EvtBHadronic ( )
virtual

Definition at line 36 of file EvtBHadronic.cc.

36{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtBHadronic::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 45 of file EvtBHadronic.cc.

45 {
46
47 return new EvtBHadronic;
48
49}

◆ decay()

void EvtBHadronic::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 60 of file EvtBHadronic.cc.

60 {
61
62 //added by Lange Jan4,2000
63 static EvtId B0=EvtPDL::getId("B0");
64 static EvtId D0=EvtPDL::getId("D0");
65 static EvtId DST0=EvtPDL::getId("D*0");
66 static EvtId D3P10=EvtPDL::getId("D'_10");
67 static EvtId D3P20=EvtPDL::getId("D_2*0");
68 static EvtId D3P00=EvtPDL::getId("D_0*0");
69 static EvtId D1P10=EvtPDL::getId("D_10");
70
71 static EvtISGW2FF ffmodel;
72
74
75
77 double m;
78
79 m = p->mass();
80
81
82 int i,j;
83
84 for ( i=0; i<getNDaug(); i++) {
85 p4[i]=p->getDaug(i)->getP4();
86 }
87
88 int bcurrent,wcurrent;
89 int nbcurrent=0;
90 int nwcurrent=0;
91
92 bcurrent=(int)getArg(0);
93 wcurrent=(int)getArg(1);
94
95 EvtVector4C jb[5],jw[5];
96 EvtTensor4C g,tds;
97
98 EvtVector4R p4b;
99 p4b.set(p->mass(),0.0,0.0,0.0);
100
102 double q2;
103
104 EvtComplex ep_meson_bb[5];
105 double f,gf,ap,am;
106 double fp,fm;
107 double hf,kf,bp,bm;
108 EvtVector4R pp,pm;
109 EvtVector4C ep_meson_b[5];
110
111 switch (bcurrent) {
112
113 // D0
114 case 1:
115 q=p4b-p4[0];
116 q2=q*q;
117 nbcurrent=1;
118 ffmodel.getscalarff(B0,D0,EvtPDL::getMeanMass(D0),
119 EvtPDL::getMeanMass(getDaugs()[1]),&fp,&fm);
120 jb[0]=EvtVector4C(fp*(p4b+p4[0])-fm*q);
121 break;
122 // D*
123 case 2:
124 q=p4b-p4[0];
125 q2=q*q;
126 nbcurrent=3;
127 ffmodel.getvectorff(B0,DST0,EvtPDL::getMeanMass(DST0),q2,&f,&gf,&ap,&am);
128
129 g.setdiag(1.0,-1.0,-1.0,-1.0);
130 tds = -f*g
131 -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
132 -gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
133 -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
134 jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
135 jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
136 jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
137 break;
138 // D1
139 case 3:
140 q=p4b-p4[0];
141 q2=q*q;
142 nbcurrent=3;
143 ffmodel.getvectorff(B0,D3P10,EvtPDL::getMeanMass(D3P10),q2,&f,&gf,&ap,&am);
144
145 g.setdiag(1.0,-1.0,-1.0,-1.0);
146 tds = -f*g
147 -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
148 -gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
149 -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
150 jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
151 jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
152 jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
153
154 break;
155 // D2*
156 case 4:
157 q=p4b-p4[0];
158 q2=q*q;
159 nbcurrent=5;
160 ffmodel.gettensorff(B0,D3P20,EvtPDL::getMeanMass(D3P20),q2,&hf,&kf,&bp,&bm);
161 g.setdiag(1.0,-1.0,-1.0,-1.0);
162
163 ep_meson_b[0] = ((p->getDaug(0)->epsTensorParent(0)).cont2(p4b)).conj();
164 ep_meson_b[1] = ((p->getDaug(0)->epsTensorParent(1)).cont2(p4b)).conj();
165 ep_meson_b[2] = ((p->getDaug(0)->epsTensorParent(2)).cont2(p4b)).conj();
166 ep_meson_b[3] = ((p->getDaug(0)->epsTensorParent(3)).cont2(p4b)).conj();
167 ep_meson_b[4] = ((p->getDaug(0)->epsTensorParent(4)).cont2(p4b)).conj();
168
169 pp=p4b+p4[0];
170 pm=p4b-p4[0];
171
172 ep_meson_bb[0]=ep_meson_b[0]*(p4b);
173 ep_meson_bb[1]=ep_meson_b[1]*(p4b);
174 ep_meson_bb[2]=ep_meson_b[2]*(p4b);
175 ep_meson_bb[3]=ep_meson_b[3]*(p4b);
176 ep_meson_bb[4]=ep_meson_b[4]*(p4b);
177
178 jb[0]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[0])
179 -kf*ep_meson_b[0]
180 -bp*ep_meson_bb[0]*pp-bm*ep_meson_bb[0]*pm;
181
182 jb[1]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[1])
183 -kf*ep_meson_b[1]
184 -bp*ep_meson_bb[1]*pp-bm*ep_meson_bb[1]*pm;
185
186 jb[2]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[2])
187 -kf*ep_meson_b[2]
188 -bp*ep_meson_bb[2]*pp-bm*ep_meson_bb[2]*pm;
189
190 jb[3]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[3])
191 -kf*ep_meson_b[3]
192 -bp*ep_meson_bb[3]*pp-bm*ep_meson_bb[3]*pm;
193
194 jb[4]=EvtComplex(0.0,(1.0)*hf)*dual(directProd(pp,pm)).cont2(ep_meson_b[4])
195 -kf*ep_meson_b[4]
196 -bp*ep_meson_bb[4]*pp-bm*ep_meson_bb[4]*pm;
197 break;
198 // D_0*
199 case 5:
200 q=p4b-p4[0];
201 q2=q*q;
202 double f,gf,ap,am;
203 nbcurrent=3;
204 ffmodel.getvectorff(B0,D1P10,EvtPDL::getMeanMass(D1P10),q2,&f,&gf,&ap,&am);
205 g.setdiag(1.0,-1.0,-1.0,-1.0);
206 tds = -f*g
207 -ap*(directProd(p4b,p4b)+directProd(p4b,p4[0]))
208 +gf*EvtComplex(0.0,1.0)*dual(directProd(p4[0]+p4b,p4b-p4[0]))
209 -am*((directProd(p4b,p4b)-directProd(p4b,p4[0])));
210 jb[0]=tds.cont1(p->getDaug(0)->epsParent(0).conj());
211 jb[1]=tds.cont1(p->getDaug(0)->epsParent(1).conj());
212 jb[2]=tds.cont1(p->getDaug(0)->epsParent(2).conj());
213 break;
214 // D_1
215 case 6:
216 q=p4b-p4[0];
217 q2=q*q;
218 nbcurrent=1;
219 ffmodel.getscalarff(B0,D3P00,EvtPDL::getMeanMass(D3P00),q2,&fp,&fm);
220 jb[0]=fp*(p4b+p4[0])+fm*q;
221 break;
222 default:
223 report(ERROR,"EvtGen")<<"In EvtBHadronic, unknown hadronic current."<<endl;
224
225 }
226
227 double norm;
228
229 switch (wcurrent) {
230
231
232 case 1: case 3: case 4:
233 nwcurrent=1;
234 jw[0]=p4[getNDaug()-1];
235 break;
236
237 case 2: case 5: case 6:
238 nwcurrent=3;
239 norm=1.0/sqrt(p4[1].get(0)*p4[1].get(0)/p4[1].mass2()-1.0);
240 jw[0]=norm*p->getDaug(getNDaug()-1)->epsParent(0);
241 jw[1]=norm*p->getDaug(getNDaug()-1)->epsParent(1);
242 jw[2]=norm*p->getDaug(getNDaug()-1)->epsParent(2);
243 break;
244
245
246 default:
247 report(ERROR,"EvtGen")<<"In EvtBHadronic, unknown W current."<<endl;
248
249 }
250
251 if (nbcurrent==1&&nwcurrent==1){
252 vertex(jb[0]*jw[0]);
253 return;
254 }
255
256 if (nbcurrent==1){
257 //report(INFO,"EvtGen") << "Amplitudes:";
258 //EvtComplex a=0.0;
259 for(j=0;j<nwcurrent;j++){
260 //report(INFO,"EvtGen") << jb[0]*jw[j] << " ";
261 //a+=(jb[0]*jw[j]*jb[0]*jw[j]);
262 vertex(j,jb[0]*jw[j]);
263 }
264 //report(INFO,"EvtGen") << " prob:"<<a<<" mass:"<<p4[1].mass()<< endl;
265 return;
266 }
267
268 if (nwcurrent==1){
269 for(j=0;j<nbcurrent;j++){
270 vertex(j,jb[j]*jw[0]);
271 }
272 return;
273 }
274
275 for(j=0;j<nbcurrent;j++){
276 for(i=0;i<nwcurrent;i++){
277 vertex(j,i,jb[j]*jw[i]);
278 }
279 }
280 return;
281
282}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
const int MAX_DAUG
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:36
@ ERROR
Definition EvtReport.hh:49
EvtTensor4C dual(const EvtTensor4C &t2)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition KKsem.h:33
void vertex(const EvtComplex &amp)
double getArg(int j)
EvtId * getDaugs()
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f)
Definition EvtISGW2FF.cc:35
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf)
Definition EvtId.hh:27
static double getMeanMass(EvtId i)
Definition EvtPDL.hh:45
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
virtual EvtVector4C epsParent(int i) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void setdiag(double t00, double t11, double t22, double t33)
EvtVector4C cont1(const EvtVector4C &v4) const
EvtVector4C cont2(const EvtVector4C &v4) const
EvtVector4C conj() const
void set(int i, double d)
double double double * p4
Definition qcdloop1.h:77

◆ getName()

void EvtBHadronic::getName ( std::string & name)
virtual

Implements EvtDecayBase.

Definition at line 38 of file EvtBHadronic.cc.

38 {
39
40 model_name="BHADRONIC";
41
42}

◆ init()

void EvtBHadronic::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 52 of file EvtBHadronic.cc.

52 {
53
54 // check that there are 2 argument
55 checkNArg(2);
56
57
58}
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

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