1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtSemiLeptonicBaryonAmp.cc
13 // Description: Routine to implement semileptonic decays of Dirac baryons
15 // Modification history:
17 // R.J. Tesarek May 28, 2004 Module created
18 // Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+,
19 // 1/2+->1/2-, 1/2+->3/2- Lambda decays
21 //--------------------------------------------------------------------------
23 #include "EvtGenBase/EvtPatches.hh"
24 #include "EvtGenBase/EvtParticle.hh"
25 #include "EvtGenBase/EvtGenKine.hh"
26 #include "EvtGenBase/EvtPDL.hh"
27 #include "EvtGenBase/EvtReport.hh"
28 #include "EvtGenBase/EvtTensor4C.hh"
29 #include "EvtGenBase/EvtVector4C.hh"
30 #include "EvtGenBase/EvtDiracSpinor.hh"
31 #include "EvtGenBase/EvtDiracParticle.hh"
32 #include "EvtGenBase/EvtRaritaSchwinger.hh"
33 #include "EvtGenBase/EvtSemiLeptonicBaryonAmp.hh"
34 #include "EvtGenBase/EvtId.hh"
35 #include "EvtGenBase/EvtAmp.hh"
36 #include "EvtGenBase/EvtSemiLeptonicFF.hh"
37 #include "EvtGenBase/EvtGammaMatrix.hh"
44 EvtSemiLeptonicBaryonAmp::~EvtSemiLeptonicBaryonAmp(){
48 void EvtSemiLeptonicBaryonAmp::CalcAmp( EvtParticle *parent,
50 EvtSemiLeptonicFF *FormFactors ) {
52 static EvtId EM=EvtPDL::getId("e-");
53 static EvtId MUM=EvtPDL::getId("mu-");
54 static EvtId TAUM=EvtPDL::getId("tau-");
55 static EvtId EP=EvtPDL::getId("e+");
56 static EvtId MUP=EvtPDL::getId("mu+");
57 static EvtId TAUP=EvtPDL::getId("tau+");
60 //Add the lepton and neutrino 4 momenta to find q2
62 EvtVector4R q = parent->getDaug(1)->getP4()
63 + parent->getDaug(2)->getP4();
64 double q2 = (q.mass2());
66 double f1v,f1a,f2v,f2a;
67 double m_meson = parent->getDaug(0)->mass();
69 FormFactors->getbaryonff(parent->getId(),
70 parent->getDaug(0)->getId(),
79 p4b.set(parent->mass(),0.0,0.0,0.0);
81 EvtVector4C temp_00_term1;
82 EvtVector4C temp_00_term2;
84 EvtVector4C temp_01_term1;
85 EvtVector4C temp_01_term2;
87 EvtVector4C temp_10_term1;
88 EvtVector4C temp_10_term2;
90 EvtVector4C temp_11_term1;
91 EvtVector4C temp_11_term2;
93 EvtDiracSpinor p0=parent->sp(0);
94 EvtDiracSpinor p1=parent->sp(1);
96 EvtDiracSpinor d0=parent->getDaug(0)->spParent(0);
97 EvtDiracSpinor d1=parent->getDaug(0)->spParent(1);
99 temp_00_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p0)));
100 temp_00_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
101 temp_01_term1.set(0,f1v*(d0*(EvtGammaMatrix::g0()*p1)));
102 temp_01_term2.set(0,f1a*(d0*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
103 temp_10_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p0)));
104 temp_10_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p0)));
105 temp_11_term1.set(0,f1v*(d1*(EvtGammaMatrix::g0()*p1)));
106 temp_11_term2.set(0,f1a*(d1*((EvtGammaMatrix::g0()*EvtGammaMatrix::g5())*p1)));
108 temp_00_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p0)));
109 temp_00_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
110 temp_01_term1.set(1,f1v*(d0*(EvtGammaMatrix::g1()*p1)));
111 temp_01_term2.set(1,f1a*(d0*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
112 temp_10_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p0)));
113 temp_10_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p0)));
114 temp_11_term1.set(1,f1v*(d1*(EvtGammaMatrix::g1()*p1)));
115 temp_11_term2.set(1,f1a*(d1*((EvtGammaMatrix::g1()*EvtGammaMatrix::g5())*p1)));
117 temp_00_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p0)));
118 temp_00_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
119 temp_01_term1.set(2,f1v*(d0*(EvtGammaMatrix::g2()*p1)));
120 temp_01_term2.set(2,f1a*(d0*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
121 temp_10_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p0)));
122 temp_10_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p0)));
123 temp_11_term1.set(2,f1v*(d1*(EvtGammaMatrix::g2()*p1)));
124 temp_11_term2.set(2,f1a*(d1*((EvtGammaMatrix::g2()*EvtGammaMatrix::g5())*p1)));
126 temp_00_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p0)));
127 temp_00_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
128 temp_01_term1.set(3,f1v*(d0*(EvtGammaMatrix::g3()*p1)));
129 temp_01_term2.set(3,f1a*(d0*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
130 temp_10_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p0)));
131 temp_10_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p0)));
132 temp_11_term1.set(3,f1v*(d1*(EvtGammaMatrix::g3()*p1)));
133 temp_11_term2.set(3,f1a*(d1*((EvtGammaMatrix::g3()*EvtGammaMatrix::g5())*p1)));
139 EvtId l_num = parent->getDaug(1)->getId();
140 if (l_num==EM||l_num==MUM||l_num==TAUM){
142 l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
143 parent->getDaug(2)->spParentNeutrino());
144 l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
145 parent->getDaug(2)->spParentNeutrino());
148 if (l_num==EP||l_num==MUP||l_num==TAUP){
149 l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
150 parent->getDaug(1)->spParent(0));
151 l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
152 parent->getDaug(1)->spParent(1));
155 report(ERROR,"EvtGen") << "Wrong lepton number"<<endl;
159 amp.vertex(0,0,0,l1.cont(temp_00_term1+temp_00_term2));
160 amp.vertex(0,0,1,l2.cont(temp_00_term1+temp_00_term2));
162 amp.vertex(0,1,0,l1.cont(temp_01_term1+temp_01_term2));
163 amp.vertex(0,1,1,l2.cont(temp_01_term1+temp_01_term2));
165 amp.vertex(1,0,0,l1.cont(temp_10_term1+temp_10_term2));
166 amp.vertex(1,0,1,l2.cont(temp_10_term1+temp_10_term2));
168 amp.vertex(1,1,0,l1.cont(temp_11_term1+temp_11_term2));
169 amp.vertex(1,1,1,l2.cont(temp_11_term1+temp_11_term2));
176 double EvtSemiLeptonicBaryonAmp::CalcMaxProb( EvtId parent, EvtId baryon,
177 EvtId lepton, EvtId nudaug,
178 EvtSemiLeptonicFF *FormFactors,
179 EvtComplex r00, EvtComplex r01,
180 EvtComplex r10, EvtComplex r11) {
182 //This routine takes the arguements parent, baryon, and lepton
183 //number, and a form factor model, and returns a maximum
184 //probability for this semileptonic form factor model. A
185 //brute force method is used. The 2D cos theta lepton and
186 //q2 phase space is probed.
188 //Start by declaring a particle at rest.
190 //It only makes sense to have a scalar parent. For now.
191 //This should be generalized later.
193 // EvtScalarParticle *scalar_part;
194 // scalar_part=new EvtScalarParticle;
196 EvtDiracParticle *dirac_part;
197 EvtParticle *root_part;
198 dirac_part=new EvtDiracParticle;
200 //cludge to avoid generating random numbers!
201 // scalar_part->noLifeTime();
202 dirac_part->noLifeTime();
206 p_init.set(EvtPDL::getMass(parent),0.0,0.0,0.0);
207 // scalar_part->init(parent,p_init);
208 // root_part=(EvtParticle *)scalar_part;
209 // root_part->set_type(EvtSpinType::SCALAR);
211 dirac_part->init(parent,p_init);
212 root_part=(EvtParticle *)dirac_part;
213 root_part->setDiagonalSpinDensity();
215 EvtParticle *daughter, *lep, *trino;
220 listdaug[0] = baryon;
221 listdaug[1] = lepton;
222 listdaug[2] = nudaug;
224 amp.init(parent,3,listdaug);
226 root_part->makeDaughters(3,listdaug);
227 daughter=root_part->getDaug(0);
228 lep=root_part->getDaug(1);
229 trino=root_part->getDaug(2);
231 //cludge to avoid generating random numbers!
232 daughter->noLifeTime();
237 //Initial particle is unpolarized, well it is a scalar so it is
240 rho.setDiag(root_part->getSpinStates());
244 double m = root_part->mass();
246 EvtVector4R p4baryon, p4lepton, p4nu, p4w;
249 double q2, elepton, plepton;
251 double erho,prho,costl;
253 double maxfoundprob = 0.0;
257 for (massiter=0;massiter<3;massiter++){
259 mass[0] = EvtPDL::getMass(baryon);
260 mass[1] = EvtPDL::getMass(lepton);
261 mass[2] = EvtPDL::getMass(nudaug);
263 mass[0] = EvtPDL::getMinMass(baryon);
266 mass[0] = EvtPDL::getMaxMass(baryon);
269 q2max = (m-mass[0])*(m-mass[0]);
274 q2 = ((i+0.5)*q2max)/25.0;
276 erho = ( m*m + mass[0]*mass[0] - q2 )/(2.0*m);
278 prho = sqrt(erho*erho-mass[0]*mass[0]);
280 p4baryon.set(erho,0.0,0.0,-1.0*prho);
281 p4w.set(m-erho,0.0,0.0,prho);
283 //This is in the W rest frame
284 elepton = (q2+mass[1]*mass[1])/(2.0*sqrt(q2));
285 plepton = sqrt(elepton*elepton-mass[1]*mass[1]);
291 costl = 0.99*(j - 1.0);
293 //These are in the W rest frame. Need to boost out into
295 p4lepton.set(elepton,0.0,
296 plepton*sqrt(1.0-costl*costl),plepton*costl);
297 p4nu.set(plepton,0.0,
298 -1.0*plepton*sqrt(1.0-costl*costl),-1.0*plepton*costl);
300 EvtVector4R boost((m-erho),0.0,0.0,1.0*prho);
301 p4lepton=boostTo(p4lepton,boost);
302 p4nu=boostTo(p4nu,boost);
304 //Now initialize the daughters...
306 daughter->init(baryon,p4baryon);
307 lep->init(lepton,p4lepton);
308 trino->init(nudaug,p4nu);
310 CalcAmp(root_part,amp,FormFactors,r00,r01,r10,r11);
312 //Now find the probability at this q2 and cos theta lepton point
313 //and compare to maxfoundprob.
315 //Do a little magic to get the probability!!
316 prob = rho.normalizedProb(amp.getSpinDensity());
321 //probclt contains prob at ctl=-1,0,1.
322 //prob=a+b*ctl+c*ctl^2
325 double b=0.5*(probctl[2]-probctl[0]);
326 double c=0.5*(probctl[2]+probctl[0])-probctl[1];
329 if (probctl[1]>prob) prob=probctl[1];
330 if (probctl[2]>prob) prob=probctl[2];
333 double ctlx=-0.5*b/c;
335 double probtmp=a+b*ctlx+c*ctlx*ctlx;
336 if (probtmp>prob) prob=probtmp;
341 //report(DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
342 // << probctl[0]<<" "
343 // << probctl[1]<<" "
344 // << probctl[2]<<std::endl;
346 if ( prob > maxfoundprob ) {
351 if ( EvtPDL::getWidth(baryon) <= 0.0 ) {
352 //if the particle is narrow dont bother with changing the mass.
357 root_part->deleteTree();
363 void EvtSemiLeptonicBaryonAmp::CalcAmp(EvtParticle *parent,
365 EvtSemiLeptonicFF *FormFactors,
366 EvtComplex r00, EvtComplex r01,
367 EvtComplex r10, EvtComplex r11) {
369 static EvtId EM=EvtPDL::getId("e-");
370 static EvtId MUM=EvtPDL::getId("mu-");
371 static EvtId TAUM=EvtPDL::getId("tau-");
373 static EvtId EP=EvtPDL::getId("e+");
374 static EvtId MUP=EvtPDL::getId("mu+");
375 static EvtId TAUP=EvtPDL::getId("tau+");
378 static EvtId LAMCP=EvtPDL::getId("Lambda_c+");
379 static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+");
380 static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+");
381 static EvtId LAMB=EvtPDL::getId("Lambda_b0");
384 static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-");
385 static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-");
386 static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-");
387 static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0");
389 // Set the spin density matrix of the parent baryon
398 EvtVector4R vector4P = parent->getP4Lab();
399 double pmag = vector4P.d3mag();
400 double cosTheta = vector4P.get(3)/pmag;
402 double theta = acos(cosTheta);
403 double phi = atan2(vector4P.get(2), vector4P.get(1));
405 parent->setSpinDensityForwardHelicityBasis(rho,phi,theta, 0.0);
406 //parent->setSpinDensityForward(rho);
408 // Set the four momentum of the parent baryon in it's rest frame
410 p4b.set(parent->mass(), 0.0,0.0,0.0);
412 // Get the four momentum of the daughter baryon in the parent's rest frame
413 EvtVector4R p4daught = parent->getDaug(0)->getP4();
415 // Add the lepton and neutrino 4 momenta to find q (q^2)
416 EvtVector4R q = parent->getDaug(1)->getP4()
417 + parent->getDaug(2)->getP4();
419 double q2 = q.mass2();
422 EvtId l_num = parent->getDaug(1)->getId();
423 EvtId bar_num = parent->getDaug(0)->getId();
424 EvtId par_num = parent->getId();
426 double baryonmass = parent->getDaug(0)->mass();
428 // Handle spin-1/2 daughter baryon Dirac spinor cases
429 if( EvtPDL::getSpinType(parent->getDaug(0)->getId())==EvtSpinType::DIRAC ) {
431 // Set the form factors
432 double f1,f2,f3,g1,g2,g3;
433 FormFactors->getdiracff( par_num,
440 const double form_fact[6] = {f1, f2, f3, g1, g2, g3};
442 EvtVector4C b11, b12, b21, b22, l1, l2;
445 if(l_num==EM || l_num==MUM || l_num==TAUM){
447 l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
448 parent->getDaug(2)->spParentNeutrino());
449 l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
450 parent->getDaug(2)->spParentNeutrino());
452 } else if (l_num==EP || l_num==MUP || l_num==TAUP) {
454 l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
455 parent->getDaug(1)->spParent(0));
456 l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
457 parent->getDaug(1)->spParent(1));
460 report(ERROR,"EvtGen")<< "Wrong lepton number \n";
466 // Flag for particle/anti-particle parent, daughter with same/opp. parity
467 // pflag = 0 => particle, same parity parent, daughter
468 // pflag = 1 => particle, opp. parity parent, daughter
469 // pflag = 2 => anti-particle, same parity parent, daughter
470 // pflag = 3 => anti-particle, opp. parity parent, daughter
474 // Handle 1/2+ -> 1/2+ first
475 if ( (par_num==LAMB && bar_num==LAMCP)
476 || (par_num==LAMBB && bar_num==LAMCM) ) {
478 // Set particle/anti-particle flag
481 else if (bar_num==LAMCM)
484 b11=EvtBaryonVACurrent(parent->getDaug(0)->spParent(0),
486 p4b, p4daught, form_fact, pflag);
487 b21=EvtBaryonVACurrent(parent->getDaug(0)->spParent(0),
489 p4b, p4daught, form_fact, pflag);
490 b12=EvtBaryonVACurrent(parent->getDaug(0)->spParent(1),
492 p4b, p4daught, form_fact, pflag);
493 b22=EvtBaryonVACurrent(parent->getDaug(0)->spParent(1),
495 p4b, p4daught, form_fact, pflag);
498 // Handle 1/2+ -> 1/2- second
499 else if( (par_num==LAMB && bar_num==LAMC1P)
500 || (par_num==LAMBB && bar_num==LAMC1M) ) {
502 // Set particle/anti-particle flag
505 else if (bar_num==LAMC1M)
508 b11=EvtBaryonVACurrent((parent->getDaug(0)->spParent(0)),
509 (EvtGammaMatrix::g5()*parent->sp(0)),
510 p4b, p4daught, form_fact, pflag);
511 b21=EvtBaryonVACurrent((parent->getDaug(0)->spParent(0)),
512 (EvtGammaMatrix::g5()*parent->sp(1)),
513 p4b, p4daught, form_fact, pflag);
514 b12=EvtBaryonVACurrent((parent->getDaug(0)->spParent(1)),
515 (EvtGammaMatrix::g5()*parent->sp(0)),
516 p4b, p4daught, form_fact, pflag);
517 b22=EvtBaryonVACurrent((parent->getDaug(0)->spParent(1)),
518 (EvtGammaMatrix::g5()*parent->sp(1)),
519 p4b, p4daught, form_fact, pflag);
524 report(ERROR,"EvtGen") << "Dirac semilep. baryon current "
525 << "not implemented for this decay sequence."
530 amp.vertex(0,0,0,l1*b11);
531 amp.vertex(0,0,1,l2*b11);
533 amp.vertex(1,0,0,l1*b21);
534 amp.vertex(1,0,1,l2*b21);
536 amp.vertex(0,1,0,l1*b12);
537 amp.vertex(0,1,1,l2*b12);
539 amp.vertex(1,1,0,l1*b22);
540 amp.vertex(1,1,1,l2*b22);
544 // Need special handling for the spin-3/2 daughter baryon
545 // Rarita-Schwinger spinor cases
546 else if( EvtPDL::getSpinType(parent->getDaug(0)->getId())==EvtSpinType::RARITASCHWINGER ) {
548 // Set the form factors
549 double f1,f2,f3,f4,g1,g2,g3,g4;
550 FormFactors->getraritaff( par_num,
557 const double form_fact[8] = {f1, f2, f3, f4, g1, g2, g3, g4};
559 EvtId l_num = parent->getDaug(1)->getId();
561 EvtVector4C b11, b12, b21, b22, b13, b23, b14, b24, l1, l2;
564 if (l_num==EM || l_num==MUM || l_num==TAUM) {
566 l1=EvtLeptonVACurrent(parent->getDaug(1)->spParent(0),
567 parent->getDaug(2)->spParentNeutrino());
568 l2=EvtLeptonVACurrent(parent->getDaug(1)->spParent(1),
569 parent->getDaug(2)->spParentNeutrino());
571 else if (l_num==EP || l_num==MUP || l_num==TAUP) {
572 l1=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
573 parent->getDaug(1)->spParent(0));
574 l2=EvtLeptonVACurrent(parent->getDaug(2)->spParentNeutrino(),
575 parent->getDaug(1)->spParent(1));
578 report(ERROR,"EvtGen")<< "Wrong lepton number \n";
582 // Declare particle, anti-particle flag, same/opp. parity
583 // pflag = 0 => particle
584 // pflag = 1 => anti-particle
587 // Handle cases of 1/2+ -> 3/2-
588 if (par_num==LAMB && bar_num==LAMC2P) {
589 // Set flag for particle case
592 else if (par_num==LAMBB && bar_num==LAMC2M) {
593 // Set flag for anti-particle case
597 report(ERROR,"EvtGen") << "Rarita-Schwinger semilep. baryon current "
598 << "not implemented for this decay sequence."
604 b11=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(0),
606 p4b, p4daught, form_fact, pflag);
607 b21=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(0),
609 p4b, p4daught, form_fact, pflag);
611 b12=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(1),
613 p4b, p4daught, form_fact, pflag);
614 b22=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(1),
616 p4b, p4daught, form_fact, pflag);
618 b13=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(2),
620 p4b, p4daught, form_fact, pflag);
621 b23=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(2),
623 p4b, p4daught, form_fact, pflag);
625 b14=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(3),
627 p4b, p4daught, form_fact, pflag);
628 b24=EvtBaryonVARaritaCurrent(parent->getDaug(0)->spRSParent(3),
630 p4b, p4daught, form_fact, pflag);
632 amp.vertex(0,0,0,l1*b11);
633 amp.vertex(0,0,1,l2*b11);
635 amp.vertex(1,0,0,l1*b21);
636 amp.vertex(1,0,1,l2*b21);
638 amp.vertex(0,1,0,l1*b12);
639 amp.vertex(0,1,1,l2*b12);
641 amp.vertex(1,1,0,l1*b22);
642 amp.vertex(1,1,1,l2*b22);
644 amp.vertex(0,2,0,l1*b13);
645 amp.vertex(0,2,1,l2*b13);
647 amp.vertex(1,2,0,l1*b23);
648 amp.vertex(1,2,1,l2*b23);
650 amp.vertex(0,3,0,l1*b14);
651 amp.vertex(0,3,1,l2*b14);
653 amp.vertex(1,3,0,l1*b24);
654 amp.vertex(1,3,1,l2*b24);
661 EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVACurrent( const EvtDiracSpinor& Bf,
662 const EvtDiracSpinor& Bi,
668 // flag == 0 => particle, same parity
669 // flag == 1 => particle, opposite parity
670 // flag == 2 => anti-particle, same parity
671 // flag == 3 => anti-particle, opposite parity
674 EvtComplex cv = EvtComplex(1.0, 0.);
675 EvtComplex ca = EvtComplex(1.0, 0.);
677 EvtComplex cg0 = EvtComplex(1.0, 0.);
678 EvtComplex cg5 = EvtComplex(1.0, 0.);
680 // antiparticle- same parity parent & daughter
682 cv = EvtComplex(-1.0, 0.);
683 ca = EvtComplex(1.0, 0.);
685 cg0 = EvtComplex(1.0, 0.0);
686 cg5 = EvtComplex(0.0, -1.0);
688 // antiparticle- opposite parity parent & daughter
689 else if( pflag == 3) {
690 cv = EvtComplex(1.0, 0.);
691 ca = EvtComplex(-1.0, 0.);
693 cg0 = EvtComplex(0.0, -1.0);
694 cg5 = EvtComplex(1.0, 0.0);
699 // Term 1 = \bar{u}(p',s')*(F_1(q^2)*\gamma_{mu})*u(p,s)
700 t[0] = cv*EvtLeptonVCurrent( Bf, Bi);
702 // Term 2 = \bar{u}(p',s')*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
703 t[1] = cg0*EvtLeptonSCurrent( Bf, Bi ) * (parent/parent.mass());
705 // Term 3 = \bar{u}(p',s')*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
706 t[2] = cg0*EvtLeptonSCurrent( Bf, Bi ) * (daught/daught.mass());
708 // Term 4 = \bar{u}(p',s')*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
709 t[3] = ca*EvtLeptonACurrent( Bf, Bi);
711 // Term 5 = \bar{u}(p',s')*(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
712 t[4] = cg5*EvtLeptonPCurrent( Bf, Bi ) * (parent/parent.mass());
714 // Term 6 = \bar{u}(p',s')*(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
715 t[5] = cg5*EvtLeptonPCurrent( Bf, Bi ) * (daught/daught.mass());
717 // Sum the individual terms
718 EvtVector4C current = (ff[0]*t[0] + ff[1]*t[1] + ff[2]*t[2]
719 - ff[3]*t[3] - ff[4]*t[4] - ff[5]*t[5]);
724 EvtVector4C EvtSemiLeptonicBaryonAmp::EvtBaryonVARaritaCurrent( const EvtRaritaSchwinger& Bf,
725 const EvtDiracSpinor& Bi,
731 // flag == 0 => particle
732 // flag == 1 => anti-particle
735 EvtComplex cv = EvtComplex(1.0, 0.);
736 EvtComplex ca = EvtComplex(1.0, 0.);
738 EvtComplex cg0 = EvtComplex(1.0, 0.);
739 EvtComplex cg5 = EvtComplex(1.0, 0.);
743 cv = EvtComplex(-1.0, 0.);
744 ca = EvtComplex(1.0, 0.);
746 cg0 = EvtComplex(1.0, 0.0);
747 cg5 = EvtComplex(0.0, -1.0);
752 id.setdiag(1.0,1.0,1.0,1.0);
755 for(int i=0;i<4;i++){
756 tmp.set_spinor(i,Bf.getVector(i)*parent);
760 for(int i=0;i<4;i++){
761 v1.set(i,EvtLeptonSCurrent(Bf.getSpinor(i),Bi));
762 v2.set(i,EvtLeptonPCurrent(Bf.getSpinor(i),Bi));
765 // Term 1 = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_1(q^2)*\gamma_{mu})*u(p,s)
766 t[0] = (cv/parent.mass()) * EvtLeptonVCurrent(tmp, Bi);
769 // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_2(q^2)*(p_{mu}/m_{\Lambda_Q}))*u(p,s)
770 t[1] = ((cg0/parent.mass()) * EvtLeptonSCurrent(tmp, Bi)) * (parent/parent.mass());
773 // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(F_3(q^2)*(p'_{mu}/m_{\Lambda_q}))*u(p,s)
774 t[2] = ((cg0/parent.mass()) * EvtLeptonSCurrent(tmp, Bi)) * (daught/daught.mass());
776 // Term 4 = \bar{u}^{\alpha}(p',s')*(F_4(q^2)*g_{\alpha,\mu})*u(p,s)
777 t[3] = cg0*(id.cont2(v1));
780 // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})*(G_1(q^2)*\gamma_{mu}*\gamma_5)*u(p,s)
781 t[4] = (ca/parent.mass()) * EvtLeptonACurrent(tmp, Bi);
784 // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
785 // *(G_2(q^2)*(p_{mu}/m_{\Lambda_Q})*\gamma_5)*u(p,s)
786 t[5] = ((cg5/parent.mass()) * EvtLeptonPCurrent(tmp, Bi)) * (parent/parent.mass());
789 // = \bar{u}^{\alpha}(p',s')*(p_{\alpha}/m_{\Lambda_Q})
790 // *(G_3(q^2)*(p'_{mu}/m_{\Lambda_q})*\gamma_5)*u(p,s)
791 t[6] = ((cg5/parent.mass()) * EvtLeptonPCurrent(tmp, Bi)) * (daught/daught.mass());
793 // Term 8 = \bar{u}^{\alpha}(p',s')*(G_4(q^2)*g_{\alpha,\mu}*\gamma_5))*u(p,s)
794 t[7] = cg5*(id.cont2(v2));
796 // Sum the individual terms
797 EvtVector4C current = (ff[0]*t[0] + ff[1]*t[1] + ff[2]*t[2] + ff[3]*t[3]
798 - ff[4]*t[4] - ff[5]*t[5] - ff[6]*t[6] - ff[7]*t[7]);