1 #include "EvtGenModels/EvtLambdaB2LambdaV.hh"
2 #include "EvtGenBase/EvtRandom.hh"
3 #include "EvtGenBase/EvtPatches.hh"
8 #include "EvtGenBase/EvtGenKine.hh"
9 #include "EvtGenBase/EvtParticle.hh"
10 #include "EvtGenBase/EvtPDL.hh"
11 #include "EvtGenBase/EvtReport.hh"
14 //************************************************************************
16 //* Class EvtLambdaB2LambdaV *
18 //************************************************************************
19 //DECLARE_ALGORITHM_FACTORY( EvtLambdaB2LambdaV );
21 EvtLambdaB2LambdaV::EvtLambdaB2LambdaV()
24 fname="EvtGen.EvtLambdaB2LambdaV";
28 //------------------------------------------------------------------------
30 //------------------------------------------------------------------------
31 EvtLambdaB2LambdaV::~EvtLambdaB2LambdaV()
35 //------------------------------------------------------------------------
37 //------------------------------------------------------------------------
38 std::string EvtLambdaB2LambdaV::getName()
40 return "LAMBDAB2LAMBDAV";
44 //------------------------------------------------------------------------
46 //------------------------------------------------------------------------
47 EvtDecayBase* EvtLambdaB2LambdaV::clone()
49 return new EvtLambdaB2LambdaV;
54 //------------------------------------------------------------------------
55 // Method 'initProbMax'
56 //------------------------------------------------------------------------
57 void EvtLambdaB2LambdaV::initProbMax()
59 //maximum (case where C=0)
60 double Max = 1+fabs(A*B);
61 report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
66 //------------------------------------------------------------------------
68 //------------------------------------------------------------------------
69 void EvtLambdaB2LambdaV::init()
71 bool antiparticle=false;
74 report(DEBUG,fname.c_str())<< "*************************************************"<<std::endl;
75 report(DEBUG,fname.c_str())<< "* Event Model Class : EvtLambdaB2LambdaV *"<<std::endl;
76 report(DEBUG,fname.c_str())<< "*************************************************"<<std::endl;
78 //check the number of arguments
82 //check the number of daughters
85 const EvtId Id_mother = getParentId();
86 const EvtId Id_daug1 = getDaug(0);
87 const EvtId Id_daug2 = getDaug(1);
90 //lambdab identification
91 if (Id_mother==EvtPDL::getId("Lambda_b0"))
95 else if (Id_mother==EvtPDL::getId("anti-Lambda_b0"))
101 report(ERROR,fname.c_str())<<" Mother is not a Lambda_b0 or an anti-Lambda_b0, but a "
102 <<EvtPDL::name(Id_mother)<<std::endl;
107 if ( !(Id_daug1==EvtPDL::getId("Lambda0") && !antiparticle ) && !(Id_daug1==EvtPDL::getId("anti-Lambda0") && antiparticle) )
111 report(ERROR,fname.c_str()) << " Daughter1 is not a Lambda0, but a "
112 << EvtPDL::name(Id_daug1)<<std::endl;
115 { report(ERROR,fname.c_str()) << " Daughter1 is not an anti-Lambda0, but a "
116 << EvtPDL::name(Id_daug1)<<std::endl;
122 //identification meson V
123 if (getArg(1)==1) Vtype=VID::JPSI;
124 else if (getArg(1)==2) Vtype=VID::RHO;
125 else if (getArg(1)==3) Vtype=VID::OMEGA;
126 else if (getArg(1)==4) Vtype=VID::RHO_OMEGA_MIXING;
129 report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
134 //check vector meson V
135 if (Id_daug2==EvtPDL::getId("J/psi") && Vtype==VID::JPSI)
137 if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda J/psi"<<std::endl;
138 else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda J/psi"<<std::endl;
140 else if (Id_daug2==EvtPDL::getId("rho0") && Vtype==VID::RHO )
142 if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda rho0"<<std::endl;
143 else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda rho0"<<std::endl;
145 else if (Id_daug2==EvtPDL::getId("omega") && Vtype==VID::OMEGA)
147 if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda_b0 -> Lambda omega"<<std::endl;
148 else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda omega"<<std::endl;
150 else if ((Id_daug2==EvtPDL::getId("omega") || Id_daug2==EvtPDL::getId("rho0") )&& Vtype==VID::RHO_OMEGA_MIXING)
152 if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : "
153 <<"Lambda_b0 -> Lambda rho-omega-mixing"<<std::endl;
154 else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : "
155 <<"anti-Lambda_b0 -> anti-Lambda rho-omega-mixing"<<std::endl;
160 report(ERROR,fname.c_str())<<" Daughter2 is not a J/psi, phi or rho0 but a "
161 <<EvtPDL::name(Id_daug2)<<std::endl;
165 //fix dynamics parameters
166 B = (double) getArg(0);
167 C = EvtComplex((sqrt(2.)/2.),(sqrt(2.)/2.));
170 case VID::JPSI : A = 0.490; break;
173 case VID::RHO_OMEGA_MIXING : A = 0.194; break;
174 default : A = 0; break;
176 report(DEBUG,fname.c_str())<<" LambdaB decay parameters : "<<std::endl;
177 report(DEBUG,fname.c_str())<<" - lambda asymmetry A = "<<A<<std::endl;
178 report(DEBUG,fname.c_str())<<" - lambdab polarisation B = "<<B<<std::endl;
179 report(DEBUG,fname.c_str())<<" - lambdab density matrix rho+- C = "<<C<<std::endl;
187 //------------------------------------------------------------------------
189 //------------------------------------------------------------------------
190 void EvtLambdaB2LambdaV::decay( EvtParticle *lambdab)
192 lambdab->makeDaughters(getNDaug(),getDaugs());
194 //get lambda and V particles
195 EvtParticle * lambda = lambdab->getDaug(0);
196 EvtParticle * V = lambdab->getDaug(1);
198 //get resonance masses
199 // - LAMBDAB -> mass given by the preceding class
200 // - LAMBDA -> nominal mass
201 // - V -> getVmass method
202 double MASS_LAMBDAB = lambdab->mass();
203 double MASS_LAMBDA = EvtPDL::getMeanMass(EvtPDL::getId("Lambda0"));
204 double MASS_V = getVMass(MASS_LAMBDAB,MASS_LAMBDA);
206 //generate random angles
207 double phi = EvtRandom::Flat(0,2*EvtConst::pi);
208 double theta = acos( EvtRandom::Flat(-1,+1));
209 report(DEBUG,fname.c_str())<<" Angular angles : theta = "<<theta
210 <<" ; phi = "<<phi<<std::endl;
211 //computate resonance quadrivectors
212 double E_lambda = (MASS_LAMBDAB*MASS_LAMBDAB + MASS_LAMBDA*MASS_LAMBDA - MASS_V*MASS_V)
214 double E_V = (MASS_LAMBDAB*MASS_LAMBDAB + MASS_V*MASS_V - MASS_LAMBDA*MASS_LAMBDA)
216 double P = sqrt(E_lambda*E_lambda-lambda->mass()*lambda->mass());
221 EvtVector4R P_lambdab=lambdab->getP4();
223 double px = P_lambdab.get(1);
224 double py = P_lambdab.get(2);
225 double pz = P_lambdab.get(3);
226 double E = P_lambdab.get(0);
227 report(INFO,fname.c_str())<<"E of lambdab: "<< P_lambdab.get(0)<<std::endl;
228 report(INFO,fname.c_str())<<"E of lambdab: "<< E<<std::endl;
231 EvtVector4R q_lambdab2 (E,
232 ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(px))+(py*(py)))),
233 ((1/(sqrt(pow(px,2)+pow(py,2))))*(-((py)*(px))+(px*(py)))),
236 EvtVector4R q_lambdab3 (E,
242 EvtVector4R q_lambda0 (E_lambda,
243 P*sin(theta)*cos(phi),
244 P*sin(theta)*sin(phi),
247 EvtVector4R q_V0 (E_V,
248 -P*sin(theta)*cos(phi),
249 -P*sin(theta)*sin(phi),
253 EvtVector4R q_lambda1 (E_lambda,
258 EvtVector4R q_V1 (E_V,
263 EvtVector4R q_lambda (E_lambda,
264 ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(q_lambda1.get(1))) - (py*(q_lambda1.get(2))))),
265 ((1/(sqrt(pow(px,2)+pow(py,2))))*((py*(q_lambda1.get(1))) + (px*(q_lambda1.get(2))))),
269 EvtVector4R q_V (E_V,
270 ((1/(sqrt(pow(px,2)+pow(py,2))))*((px*(q_V1.get(1))) - (py*(q_V1.get(2))))),
271 ((1/(sqrt(pow(px,2)+pow(py,2))))*((py*(q_V1.get(1))) + (px*(q_V1.get(2))))),
280 report(INFO,fname.c_str())<<" LambdaB px: "<<px<<std::endl;
281 report(INFO,fname.c_str())<<" LambdaB py: "<<py<<std::endl;
282 report(INFO,fname.c_str())<<" LambdaB pz: "<<pz<<std::endl;
283 report(INFO,fname.c_str())<<" LambdaB E: "<<E<<std::endl;
285 report(INFO,fname.c_str())<<" Lambdab3 E: "<<q_lambdab3.get(0)<<std::endl;
286 report(INFO,fname.c_str())<<" Lambda 0 px: "<<q_lambda0.get(1)<<std::endl;
287 report(INFO,fname.c_str())<<" Lambda 0 py: "<<q_lambda0.get(2)<<std::endl;
288 report(INFO,fname.c_str())<<" Lambda 0 pz: "<<q_lambda0.get(3)<<std::endl;
289 report(INFO,fname.c_str())<<" Lambda 0 E: "<<q_lambda0.get(0)<<std::endl;
290 report(INFO,fname.c_str())<<" Lambda 1 px: "<<q_lambda1.get(1)<<std::endl;
291 report(INFO,fname.c_str())<<" Lambda 1 py: "<<q_lambda1.get(2)<<std::endl;
292 report(INFO,fname.c_str())<<" Lambda 1 pz: "<<q_lambda1.get(3)<<std::endl;
293 report(INFO,fname.c_str())<<" Lambda 1 E: "<<q_lambda1.get(0)<<std::endl;
294 report(INFO,fname.c_str())<<" Lambda px: "<<q_lambda.get(1)<<std::endl;
295 report(INFO,fname.c_str())<<" Lambda py: "<<q_lambda.get(2)<<std::endl;
296 report(INFO,fname.c_str())<<" Lambda pz: "<<q_lambda.get(3)<<std::endl;
297 report(INFO,fname.c_str())<<" Lambda E: "<<q_lambda0.get(3)<<std::endl;
298 report(INFO,fname.c_str())<<" V 0 px: "<<q_V0.get(1)<<std::endl;
299 report(INFO,fname.c_str())<<" V 0 py: "<<q_V0.get(2)<<std::endl;
300 report(INFO,fname.c_str())<<" V 0 pz: "<<q_V0.get(3)<<std::endl;
301 report(INFO,fname.c_str())<<" V 0 E: "<<q_V0.get(0)<<std::endl;
302 report(INFO,fname.c_str())<<" V 1 px: "<<q_V1.get(1)<<std::endl;
303 report(INFO,fname.c_str())<<" V 1 py: "<<q_V1.get(2)<<std::endl;
304 report(INFO,fname.c_str())<<" V 1 pz: "<<q_V1.get(3)<<std::endl;
305 report(INFO,fname.c_str())<<" V 1 E: "<<q_V1.get(0)<<std::endl;
306 report(INFO,fname.c_str())<<" V px: "<<q_V.get(1)<<std::endl;
307 report(INFO,fname.c_str())<<" V py: "<<q_V.get(2)<<std::endl;
308 report(INFO,fname.c_str())<<" V pz: "<<q_V.get(3)<<std::endl;
309 report(INFO,fname.c_str())<<" V E: "<<q_V0.get(3)<<std::endl;
310 //set quadrivectors to particles
311 lambda ->init(getDaugs()[0],q_lambda);
312 V ->init(getDaugs()[1],q_V );
315 double pdf = 1 + A*B*cos(theta) + 2*A*real(C*EvtComplex(cos(phi),sin(phi)))*sin(theta);
317 report(DEBUG,fname.c_str())<<" LambdaB decay pdf value : "<<pdf<<std::endl;
325 //------------------------------------------------------------------------
326 // Method 'BreitWignerRelPDF'
327 //------------------------------------------------------------------------
328 double EvtLambdaB2LambdaV::BreitWignerRelPDF(double m,double _m0, double _g0)
330 double a = (_m0 * _g0) * (_m0 * _g0);
331 double b = (m*m - _m0*_m0)*(m*m - _m0*_m0);
336 //------------------------------------------------------------------------
337 // Method 'RhoOmegaMixingPDF'
338 //------------------------------------------------------------------------
339 double EvtLambdaB2LambdaV::RhoOmegaMixingPDF(double m, double _mr, double _gr, double _mo, double _go)
341 double a = m*m - _mr*_mr;
342 double b = m*m - _mo*_mo;
345 double re_pi = -3500e-6; //GeV^2
346 double im_pi = -300e-6; //GeV^2
347 double va_pi = re_pi+im_pi;
349 //computate pdf value
350 double f = 1/(a*a+c*c) * ( 1+
351 (va_pi*va_pi+2*b*re_pi+2*d*im_pi)/(b*b+d*d));
353 //computate pdf max value
355 b = _mr*_mr - _mo*_mo;
357 double maxi = 1/(a*a+c*c) * ( 1+
358 (va_pi*va_pi+2*b*re_pi+2*d*im_pi)/(b*b+d*d));
364 //------------------------------------------------------------------------
366 //------------------------------------------------------------------------
367 double EvtLambdaB2LambdaV::getVMass(double MASS_LAMBDAB, double MASS_LAMBDA)
370 if (Vtype==VID::JPSI)
372 return EvtPDL::getMass(EvtPDL::getId("J/psi"));
375 //RHO,OMEGA,MIXING case
379 double MASS_RHO = EvtPDL::getMeanMass(EvtPDL::getId("rho0"));
380 double MASS_OMEGA = EvtPDL::getMeanMass(EvtPDL::getId("omega"));
381 double WIDTH_RHO = EvtPDL::getWidth(EvtPDL::getId("rho0"));
382 double WIDTH_OMEGA = EvtPDL::getWidth(EvtPDL::getId("omega"));
383 double MASS_PION = EvtPDL::getMeanMass(EvtPDL::getId("pi-"));
384 double _max = MASS_LAMBDAB - MASS_LAMBDA;
385 double _min = 2*MASS_PION;
387 double mass=0; bool test=false; int ntimes=10000;
390 double y = EvtRandom::Flat(0,1);
393 mass = (_max-_min) * EvtRandom::Flat(0,1) + _min;
399 case VID::RHO : f = BreitWignerRelPDF(mass,MASS_RHO,WIDTH_RHO); break;
400 case VID::OMEGA : f = BreitWignerRelPDF(mass,MASS_OMEGA,WIDTH_OMEGA); break;
401 case VID::RHO_OMEGA_MIXING : f = RhoOmegaMixingPDF(mass,MASS_RHO,WIDTH_RHO,
402 MASS_OMEGA,WIDTH_OMEGA); break;
403 default : f = 1; break;
408 }while(ntimes && !test);
410 //looping 10000 times
413 report(INFO,fname.c_str()) << "Tried accept/reject:10000"
414 <<" times, and rejected all the times!"<<std::endl;
415 report(INFO,fname.c_str()) << "Is therefore accepting the last event!"<<std::endl;
418 //return V particle mass
427 //************************************************************************
429 //* Class EvtLambda2PPiForLambdaB2LambdaV *
431 //************************************************************************
434 //------------------------------------------------------------------------
436 //------------------------------------------------------------------------
437 EvtLambda2PPiForLambdaB2LambdaV::EvtLambda2PPiForLambdaB2LambdaV()
440 fname="EvtGen.EvtLambda2PPiForLambdaB2LambdaV";
444 //------------------------------------------------------------------------
446 //------------------------------------------------------------------------
447 EvtLambda2PPiForLambdaB2LambdaV::~EvtLambda2PPiForLambdaB2LambdaV()
452 //------------------------------------------------------------------------
454 //------------------------------------------------------------------------
455 std::string EvtLambda2PPiForLambdaB2LambdaV::getName()
457 return "LAMBDA2PPIFORLAMBDAB2LAMBDAV";
461 //------------------------------------------------------------------------
463 //------------------------------------------------------------------------
464 EvtDecayBase* EvtLambda2PPiForLambdaB2LambdaV::clone()
466 return new EvtLambda2PPiForLambdaB2LambdaV;
470 //------------------------------------------------------------------------
471 // Method 'initProbMax'
472 //------------------------------------------------------------------------
473 void EvtLambda2PPiForLambdaB2LambdaV::initProbMax()
475 //maximum (case where D is real)
478 else if (C==0 || real(D)==0) Max=1+fabs(A*B);
479 else if (B==0) Max=1+ EvtConst::pi/2.0*fabs(C*A*real(D));
482 double theta_max = atan(- EvtConst::pi/2.0*C*real(D)/B);
483 double max1 = 1 + fabs(A*B*cos(theta_max)
484 - EvtConst::pi/2.0*C*A*real(D)*sin(theta_max));
485 double max2 = 1 + fabs(A*B);
486 if (max1>max2) Max=max1; else Max=max2;
488 report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
493 //------------------------------------------------------------------------
495 //------------------------------------------------------------------------
496 void EvtLambda2PPiForLambdaB2LambdaV::init()
498 bool antiparticle=false;
501 report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
502 report(DEBUG,fname.c_str())<<" * Event Model Class : EvtLambda2PPiForLambdaB2LambdaV *"<<std::endl;
503 report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
505 //check the number of arguments
508 //check the number of daughters
511 const EvtId Id_mother = getParentId();
512 const EvtId Id_daug1 = getDaug(0);
513 const EvtId Id_daug2 = getDaug(1);
515 //lambda identification
516 if (Id_mother==EvtPDL::getId("Lambda0"))
520 else if (Id_mother==EvtPDL::getId("anti-Lambda0"))
526 report(ERROR,fname.c_str())<<" Mother is not a Lambda0 or an anti-Lambda0, but a "
527 <<EvtPDL::name(Id_mother)<<std::endl;
531 //proton identification
532 if ( !(Id_daug1==EvtPDL::getId("p+") && !antiparticle ) && !(Id_daug1==EvtPDL::getId("anti-p-") && antiparticle) )
536 report(ERROR,fname.c_str()) << " Daughter1 is not a p+, but a "
537 << EvtPDL::name(Id_daug1)<<std::endl;
540 { report(ERROR,fname.c_str()) << " Daughter1 is not an anti-p-, but a "
541 << EvtPDL::name(Id_daug1)<<std::endl;
546 //pion identification
547 if ( !(Id_daug2==EvtPDL::getId("pi-") && !antiparticle ) && !(Id_daug2==EvtPDL::getId("pi+") && antiparticle) )
551 report(ERROR,fname.c_str()) << " Daughter2 is not a p-, but a "
552 << EvtPDL::name(Id_daug1)<<std::endl;
555 { report(ERROR,fname.c_str()) << " Daughter2 is not an p+, but a "
556 << EvtPDL::name(Id_daug1)<<std::endl;
560 if (!antiparticle) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Lambda0 -> p+ pi-"<<std::endl;
561 else report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : Anti-Lambda0 -> anti-p- pi+"<<std::endl;
563 //identification meson V
567 if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda J/psi"<<std::endl;
568 else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda J/psi"<<std::endl;
570 else if (getArg(1)==2)
573 if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda rho0"<<std::endl;
574 else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda rho0"<<std::endl;
576 else if (getArg(1)==3)
579 if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda omega"<<std::endl;
580 else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda omega"<<std::endl;
582 else if (getArg(1)==4)
584 Vtype=VID::RHO_OMEGA_MIXING;
588 report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
589 if (!antiparticle) report(DEBUG,fname.c_str())<<" From : Lambda_b0 -> Lambda rho-omega-mixing"<<std::endl;
590 else report(DEBUG,fname.c_str())<<" From : anti-Lambda_b0 -> anti-Lambda rho-omega-mixing"<<std::endl; abort();
595 C = (double) getArg(0);
598 case VID::JPSI : B = -0.167; D = EvtComplex(0.25,0.0); break;
601 case VID::RHO_OMEGA_MIXING : B = -0.21; D = EvtComplex(0.31,0.0); break;
602 default : B = 0; D = EvtComplex(0,0); break;
606 report(DEBUG,fname.c_str())<<" Lambda decay parameters : "<<std::endl;
607 report(DEBUG,fname.c_str())<<" - proton asymmetry A = "<<A<<std::endl;
608 report(DEBUG,fname.c_str())<<" - lambda polarisation B = "<<B<<std::endl;
609 report(DEBUG,fname.c_str())<<" - lambdaB polarisation C = "<<C<<std::endl;
610 report(DEBUG,fname.c_str())<<" - lambda density matrix rho+- D = "<<D<<std::endl;
614 //------------------------------------------------------------------------
616 //------------------------------------------------------------------------
617 void EvtLambda2PPiForLambdaB2LambdaV::decay( EvtParticle *lambda )
619 lambda->makeDaughters(getNDaug(),getDaugs());
621 //get proton and pion particles
622 EvtParticle * proton = lambda->getDaug(0);
623 EvtParticle * pion = lambda->getDaug(1);
625 //get resonance masses
626 // - LAMBDA -> mass given by EvtLambdaB2LambdaV class
627 // - PROTON & PION -> nominal mass
628 double MASS_LAMBDA = lambda->mass();
629 double MASS_PROTON = EvtPDL::getMeanMass(EvtPDL::getId("p+"));
630 double MASS_PION = EvtPDL::getMeanMass(EvtPDL::getId("pi-"));
632 //generate random angles
633 double phi = EvtRandom::Flat(0,2*EvtConst::pi);
634 double theta = acos( EvtRandom::Flat(-1,+1));
635 report(DEBUG,fname.c_str())<<" Angular angles : theta = "<<theta<<" ; phi = "<<phi<<std::endl;
637 //computate resonance quadrivectors
638 double E_proton = (MASS_LAMBDA*MASS_LAMBDA + MASS_PROTON*MASS_PROTON - MASS_PION*MASS_PION)
640 double E_pion = (MASS_LAMBDA*MASS_LAMBDA + MASS_PION*MASS_PION - MASS_PROTON*MASS_PROTON)
642 double P = sqrt(E_proton*E_proton-proton->mass()*proton->mass());
644 EvtVector4R P_lambda=lambda->getP4();
645 EvtParticle *Mother_lambda=lambda->getParent();
646 EvtVector4R lambdab=Mother_lambda->getP4();
650 double E_lambda =P_lambda.get(0);
651 double px_M =lambdab.get(1);
652 double py_M =lambdab.get(2);
653 double pz_M =lambdab.get(3);
654 double E_M =lambdab.get(0);
656 EvtVector4R q_lambdab2 (E_M,
657 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(px_M))+(py_M*(py_M)))),
658 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-((py_M)*(px_M))+(px_M*(py_M)))),
661 EvtVector4R q_lambdab3 (E_M,
668 EvtVector4R q_lambda1 (E_lambda,
669 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(P_lambda.get(1))) + (py_M*(P_lambda.get(2))))),
670 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-(py_M*(P_lambda.get(1))) + (px_M*(P_lambda.get(2))))),
673 EvtVector4R q_lambda2 (E_lambda,
682 double px=q_lambda2.get(1);
683 double py=q_lambda2.get(2);
684 double pz=q_lambda2.get(3);
689 EvtVector4R q_lambda4 (q_lambda2.get(0),
690 ((1/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2) + pow(q_lambda2.get(3),2))))* (1/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2))))*((q_lambda2.get(1))*(q_lambda2.get(1))*(q_lambda2.get(3))+((q_lambda2.get(2))*(q_lambda2.get(2))*(q_lambda2.get(3))) - ((q_lambda2.get(3))*(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2))))),
691 ((((q_lambda2.get(2))*(q_lambda2.get(1)))-((q_lambda2.get(1))*(q_lambda2.get(2))))/(sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2)))),
692 (((1/sqrt(pow(q_lambda2.get(1),2) + pow(q_lambda2.get(2),2) + pow(q_lambda2.get(3),2)))*( ((q_lambda2.get(1))*(q_lambda2.get(1))) +((q_lambda2.get(2))*(q_lambda2.get(2))) + ((q_lambda2.get(3))*(q_lambda2.get(3)))))) );
697 EvtVector4R q_proton1 (E_proton,
698 P*sin(theta)*cos(phi),
699 P*sin(theta)*sin(phi),
701 EvtVector4R q_pion1 (E_pion,
702 -P*sin(theta)*cos(phi),
703 -P*sin(theta)*sin(phi),
707 EvtVector4R q_proton3 (E_proton,
708 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_proton1.get(1))*(px)*(pz) - ((q_proton1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_proton1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
709 (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_proton1.get(1)))*(py)*(pz) + ((q_proton1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_proton1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
710 (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((-(q_proton1.get(1)))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_proton1.get(3))*(pz)))));
712 EvtVector4R q_pion3 (E_pion,
713 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_pion1.get(1))*(px)*(pz) - ((q_pion1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_pion1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
714 (((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_pion1.get(1))*(py)*(pz) + ((q_pion1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + (((q_pion1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
715 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))*((-(q_pion1.get(1)))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_pion1.get(3))*(pz)))));
717 EvtVector4R q_proton5 (q_proton3.get(0),
722 EvtVector4R q_pion5 (q_pion3.get(0),
727 EvtVector4R q_proton (q_proton5.get(0),
728 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_proton5.get(1)))-(py_M*(q_proton5.get(2))))),
729 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_proton5.get(1)))+(px_M*(q_proton5.get(2))))),
733 EvtVector4R q_pion (q_pion5.get(0),
734 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_pion5.get(1)))-(py_M*(q_pion5.get(2))))),
735 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_pion5.get(1)))+(px_M*(q_pion5.get(2))))),
738 report(INFO,fname.c_str())<<" Lambdab px: "<<px_M<<std::endl;
739 report(INFO,fname.c_str())<<" Lambdab py: "<<py_M<<std::endl;
740 report(INFO,fname.c_str())<<" Lambdab pz: "<<pz_M<<std::endl;
741 report(INFO,fname.c_str())<<" Lambdab E: "<<E_M<<std::endl;
742 report(INFO,fname.c_str())<<" Lambdab2 px: "<<q_lambdab2.get(1)<<std::endl;
743 report(INFO,fname.c_str())<<" Lambdab2 py: "<<q_lambdab2.get(2)<<std::endl;
744 report(INFO,fname.c_str())<<" Lambdab2 pz: "<<q_lambdab2.get(3)<<std::endl;
745 report(INFO,fname.c_str())<<" Lambdab2 E: "<<q_lambdab2.get(0)<<std::endl;
746 report(INFO,fname.c_str())<<" Lambdab3 px: "<<q_lambdab3.get(1)<<std::endl;
747 report(INFO,fname.c_str())<<" Lambdab3 py: "<<q_lambdab3.get(2)<<std::endl;
748 report(INFO,fname.c_str())<<" Lambdab3 pz: "<<q_lambdab3.get(3)<<std::endl;
749 report(INFO,fname.c_str())<<" Lambdab3 E: "<<q_lambdab3.get(0)<<std::endl;
750 report(INFO,fname.c_str())<<" Lambda 0 px: "<<P_lambda.get(1)<<std::endl;
751 report(INFO,fname.c_str())<<" Lambda 0 py: "<<P_lambda.get(2)<<std::endl;
752 report(INFO,fname.c_str())<<" Lambda 0 pz: "<<P_lambda.get(3)<<std::endl;
753 report(INFO,fname.c_str())<<" Lambda 0 E: "<<P_lambda.get(0)<<std::endl;
754 report(INFO,fname.c_str())<<" Lambda 1 px: "<<q_lambda1.get(1)<<std::endl;
755 report(INFO,fname.c_str())<<" Lambda 1 py: "<<q_lambda1.get(2)<<std::endl;
756 report(INFO,fname.c_str())<<" Lambda 1 pz: "<<q_lambda1.get(3)<<std::endl;
757 report(INFO,fname.c_str())<<" Lambda 1 E: "<<q_lambda1.get(0)<<std::endl;
758 report(INFO,fname.c_str())<<" Lambda 2 px: "<<q_lambda2.get(1)<<std::endl;
759 report(INFO,fname.c_str())<<" Lambda 2 py: "<<q_lambda2.get(2)<<std::endl;
760 report(INFO,fname.c_str())<<" Lambda 2 pz: "<<q_lambda2.get(3)<<std::endl;
761 report(INFO,fname.c_str())<<" Lambda 2 E: "<<q_lambda2.get(0)<<std::endl;
763 report(INFO,fname.c_str())<<" Lambda px: "<<px<<std::endl;
764 report(INFO,fname.c_str())<<" Lambda py: "<<py<<std::endl;
765 report(INFO,fname.c_str())<<" Lambda pz: "<<pz<<std::endl;
767 report(INFO,fname.c_str())<<" pion 1 px: "<<q_pion1.get(1)<<std::endl;
768 report(INFO,fname.c_str())<<" pion 1 py: "<<q_pion1.get(2)<<std::endl;
769 report(INFO,fname.c_str())<<" pion 1 pz: "<<q_pion1.get(3)<<std::endl;
770 report(INFO,fname.c_str())<<" pion 1 E: "<<q_pion1.get(0)<<std::endl;
772 report(INFO,fname.c_str())<<" pion 3 px: "<<q_pion3.get(1)<<std::endl;
773 report(INFO,fname.c_str())<<" pion 3 px: "<<q_pion3.get(1)<<std::endl;
774 report(INFO,fname.c_str())<<" pion 3 py: "<<q_pion3.get(2)<<std::endl;
775 report(INFO,fname.c_str())<<" pion 3 pz: "<<q_pion3.get(3)<<std::endl;
776 report(INFO,fname.c_str())<<" pion 3 E: "<<q_pion3.get(0)<<std::endl;
778 report(INFO,fname.c_str())<<" pion 5 px: "<<q_pion5.get(1)<<std::endl;
779 report(INFO,fname.c_str())<<" pion 5 py: "<<q_pion5.get(2)<<std::endl;
780 report(INFO,fname.c_str())<<" pion 5 pz: "<<q_pion5.get(3)<<std::endl;
781 report(INFO,fname.c_str())<<" pion 5 E: "<<q_pion5.get(0)<<std::endl;
785 report(INFO,fname.c_str())<<" proton 1 px: "<<q_proton1.get(1)<<std::endl;
786 report(INFO,fname.c_str())<<" proton 1 py: "<<q_proton1.get(2)<<std::endl;
787 report(INFO,fname.c_str())<<" proton 1 pz: "<<q_proton1.get(3)<<std::endl;
788 report(INFO,fname.c_str())<<" proton 1 E: "<<q_proton1.get(0)<<std::endl;
790 report(INFO,fname.c_str())<<" proton 3 px: "<<q_proton3.get(1)<<std::endl;
791 report(INFO,fname.c_str())<<" proton 3 py: "<<q_proton3.get(2)<<std::endl;
792 report(INFO,fname.c_str())<<" proton 3 pz: "<<q_proton3.get(3)<<std::endl;
793 report(INFO,fname.c_str())<<" proton 3 E: "<<q_proton3.get(0)<<std::endl;
795 report(INFO,fname.c_str())<<" proton 5 px: "<<q_proton5.get(1)<<std::endl;
796 report(INFO,fname.c_str())<<" proton 5 py: "<<q_proton5.get(2)<<std::endl;
797 report(INFO,fname.c_str())<<" proton 5 pz: "<<q_proton5.get(3)<<std::endl;
798 report(INFO,fname.c_str())<<" proton 5 E: "<<q_proton5.get(0)<<std::endl;
801 report(INFO,fname.c_str())<<" proton px: "<<q_proton.get(1)<<std::endl;
802 report(INFO,fname.c_str())<<" proton py: "<<q_proton.get(2)<<std::endl;
803 report(INFO,fname.c_str())<<"proton pz: "<<q_proton.get(3)<<std::endl;
804 report(INFO,fname.c_str())<<" pion px: "<<q_pion.get(1)<<std::endl;
805 report(INFO,fname.c_str())<<" pion py: "<<q_pion.get(2)<<std::endl;
806 report(INFO,fname.c_str())<<" pion pz: "<<q_pion.get(3)<<std::endl;
819 ///////////*******NEW********//////////////////////
821 //set quadrivectors to particles
822 proton->init(getDaugs()[0],q_proton);
823 pion ->init(getDaugs()[1],q_pion );
826 //double pdf = 1 + A*B*cos(theta) - EvtConst::pi/2.0*C*A*real(D*EvtComplex(cos(phi),sin(phi)))*sin(theta);
827 double pdf = 1 + A*B*cos(theta) + 2*A*real(D*EvtComplex(cos(phi),sin(phi)))*sin(theta);
828 report(DEBUG,fname.c_str())<<" Lambda decay pdf value : "<<pdf<<std::endl;
838 //************************************************************************
840 //* Class EvtLambda2PPiForLambdaB2LambdaV *
842 //************************************************************************
845 //------------------------------------------------------------------------
847 //------------------------------------------------------------------------
848 EvtV2VpVmForLambdaB2LambdaV::EvtV2VpVmForLambdaB2LambdaV()
851 fname="EvtGen.EvtV2VpVmForLambdaB2LambdaV";
855 //------------------------------------------------------------------------
857 //------------------------------------------------------------------------
858 EvtV2VpVmForLambdaB2LambdaV::~EvtV2VpVmForLambdaB2LambdaV()
862 //------------------------------------------------------------------------
864 //------------------------------------------------------------------------
865 std::string EvtV2VpVmForLambdaB2LambdaV::getName()
867 return "V2VPVMFORLAMBDAB2LAMBDAV";
870 //------------------------------------------------------------------------
872 //------------------------------------------------------------------------
873 EvtDecayBase* EvtV2VpVmForLambdaB2LambdaV::clone()
875 return new EvtV2VpVmForLambdaB2LambdaV;
879 //------------------------------------------------------------------------
880 // Method 'initProbMax'
881 //------------------------------------------------------------------------
882 void EvtV2VpVmForLambdaB2LambdaV::initProbMax()
886 if (Vtype==VID::JPSI)
888 if ((1-3*A)>0) Max=2*(1-A);
893 if ((3*A-1)>=0) Max=2*A;
897 report(DEBUG,fname.c_str())<<" PDF max value : "<<Max<<std::endl;
902 //------------------------------------------------------------------------
904 //------------------------------------------------------------------------
905 void EvtV2VpVmForLambdaB2LambdaV::init()
908 report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
909 report(DEBUG,fname.c_str())<<" * Event Model Class : EvtV2VpVmForLambdaB2LambdaV *"<<std::endl;
910 report(DEBUG,fname.c_str())<<" ***********************************************************"<<std::endl;
912 //check the number of arguments
915 //check the number of daughters
918 const EvtId Id_mother = getParentId();
919 const EvtId Id_daug1 = getDaug(0);
920 const EvtId Id_daug2 = getDaug(1);
922 //identification meson V
923 if (getArg(1)==1) Vtype=VID::JPSI;
924 else if (getArg(1)==2) Vtype=VID::RHO;
925 else if (getArg(1)==3) Vtype=VID::OMEGA;
926 else if (getArg(1)==4) Vtype=VID::RHO_OMEGA_MIXING;
929 report(ERROR,fname.c_str()) << " Vtype " <<getArg(1)<<" is unknown"<<std::endl;
934 if (Id_mother==EvtPDL::getId("J/psi") && Vtype==VID::JPSI)
937 else if (Id_mother==EvtPDL::getId("omega") && Vtype==VID::OMEGA)
940 else if (Id_mother==EvtPDL::getId("rho0") && Vtype==VID::RHO)
943 else if ((Id_mother==EvtPDL::getId("rho0") || Id_mother==EvtPDL::getId("omega")) && Vtype==VID::RHO_OMEGA_MIXING)
948 report(ERROR,fname.c_str())<<" Mother is not a J/psi, phi or rho0 but a "
949 <<EvtPDL::name(Id_mother)<<std::endl;
953 //daughters for each V possibility
957 if (Id_daug1!=EvtPDL::getId("mu+"))
959 report(ERROR,fname.c_str()) << " Daughter1 is not a mu+, but a "
960 << EvtPDL::name(Id_daug1)<<std::endl;
963 if (Id_daug2!=EvtPDL::getId("mu-"))
965 report(ERROR,fname.c_str()) << " Daughter2 is not a mu-, but a "
966 << EvtPDL::name(Id_daug2)<<std::endl;
969 report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : J/psi -> mu+ mu-"<<std::endl;
974 case VID::RHO_OMEGA_MIXING :
975 if (Id_daug1!=EvtPDL::getId("pi+"))
977 report(ERROR,fname.c_str()) << " Daughter1 is not a pi+, but a "
978 << EvtPDL::name(Id_daug1)<<std::endl;
981 if (Id_daug2!=EvtPDL::getId("pi-"))
983 report(ERROR,fname.c_str()) << " Daughter2 is not a pi-, but a "
984 << EvtPDL::name(Id_daug2)<<std::endl;
987 if (Vtype==VID::RHO) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : rho0 -> pi+ pi-"<<std::endl;
988 if (Vtype==VID::OMEGA) report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : omega -> pi+ pi-"<<std::endl;
989 if (Vtype==VID::RHO_OMEGA_MIXING)
990 report(DEBUG,fname.c_str())<<" Decay mode successfully initialized : rho-omega mixing -> pi+ pi-"<<std::endl; break;
993 report(ERROR,fname.c_str()) << "No decay mode chosen ! "<<std::endl;
998 //fix dynamics parameters
1001 case VID::JPSI : A = 0.66; break;
1004 case VID::RHO_OMEGA_MIXING : A = 0.79; break;
1005 default : A = 0; break;
1008 report(DEBUG,fname.c_str())<<" V decay parameters : "<<std::endl;
1009 report(DEBUG,fname.c_str())<<" - V density matrix rho00 A = "<<A<<std::endl;
1014 //------------------------------------------------------------------------
1016 //------------------------------------------------------------------------
1017 void EvtV2VpVmForLambdaB2LambdaV::decay( EvtParticle *V )
1019 V->makeDaughters(getNDaug(),getDaugs());
1021 //get Vp and Vm particles
1022 EvtParticle * Vp = V->getDaug(0);
1023 EvtParticle * Vm = V->getDaug(1);
1025 //get resonance masses
1026 // - V -> mass given by EvtLambdaB2LambdaV class
1027 // - Vp & Vm -> nominal mass
1028 double MASS_V = V->mass();
1032 case VID::JPSI : MASS_VM=EvtPDL::getMeanMass(EvtPDL::getId("mu-")); break;
1035 case VID::RHO_OMEGA_MIXING : MASS_VM=EvtPDL::getMeanMass(EvtPDL::getId("pi-")); break;
1036 default : MASS_VM=0; break;
1038 double MASS_VP = MASS_VM;
1040 //generate random angles
1041 double phi = EvtRandom::Flat(0,2*EvtConst::pi);
1042 double theta = acos( EvtRandom::Flat(-1,+1));
1043 report(DEBUG,fname.c_str())<<" Angular angles : theta = "<<theta<<" ; phi = "<<phi<<std::endl;
1045 //computate resonance quadrivectors
1046 double E_Vp = (MASS_V*MASS_V + MASS_VP*MASS_VP - MASS_VM*MASS_VM)
1048 double E_Vm = (MASS_V*MASS_V + MASS_VM*MASS_VM - MASS_VP*MASS_VP)
1050 double P = sqrt(E_Vp*E_Vp-Vp->mass()*Vp->mass());
1052 EvtVector4R P_V=V->getP4();
1053 EvtParticle *Mother_V=V->getParent();
1054 EvtVector4R lambdab=Mother_V->getP4();
1057 double E_V=(P_V.get(0));
1058 double px_M=lambdab.get(1);
1059 double py_M=lambdab.get(2);
1060 double pz_M=lambdab.get(3);
1061 double E_M=lambdab.get(0);
1063 EvtVector4R q_lambdab2 (E_M,
1064 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(px_M))+(py_M*(py_M)))),
1065 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-((py_M)*(px_M))+(px_M*(py_M)))),
1068 EvtVector4R q_lambdab3 (E_M,
1074 EvtVector4R q_V1 (E_V,
1075 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(P_V.get(1))) + (py_M*(P_V.get(2))))),
1076 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*(-(py_M*(P_V.get(1))) + (px_M*(P_V.get(2))))),
1079 EvtVector4R q_V2 (E_V,
1086 double px= -(q_V2.get(1));
1087 double py=-(q_V2.get(2));
1088 double pz=-(q_V2.get(3));
1093 EvtVector4R q_V4 (q_V2.get(0),
1094 ((1/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2) + pow(q_V2.get(3),2))))* (1/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2))))*((q_V2.get(1))*(q_V2.get(1))*(q_V2.get(3))+((q_V2.get(2))*(q_V2.get(2))*(q_V2.get(3))) - ((q_V2.get(3))*(pow(q_V2.get(1),2) + pow(q_V2.get(2),2))))),
1095 ((((q_V2.get(2))*(q_V2.get(1)))-((q_V2.get(1))*(q_V2.get(2))))/(sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2)))),
1096 (((1/sqrt(pow(q_V2.get(1),2) + pow(q_V2.get(2),2) + pow(q_V2.get(3),2)))*( ((q_V2.get(1))*(q_V2.get(1))) +((q_V2.get(2))*(q_V2.get(2))) + ((q_V2.get(3))*(q_V2.get(3)))))) );
1100 EvtVector4R q_Vp1 (E_Vp,
1101 P*sin(theta)*cos(phi),
1102 P*sin(theta)*sin(phi),
1104 EvtVector4R q_Vm1 (E_Vm,
1105 -P*sin(theta)*cos(phi),
1106 -P*sin(theta)*sin(phi),
1109 EvtVector4R q_Vp3 (q_Vp1.get(0),
1110 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_Vp1.get(1))*(px)*(pz)+((q_Vp1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vp1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
1111 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_Vp1.get(1)))*(py)*(pz) - ((q_Vp1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vp1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
1112 ((-(1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((q_Vp1.get(1))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_Vp1.get(3))*(pz)))));
1114 EvtVector4R q_Vm3 (q_Vm1.get(0),
1115 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*((q_Vm1.get(1))*(px)*(pz)+((q_Vm1.get(2))*(py)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vm1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(px)))),
1116 ((1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))* (1/(sqrt(pow(px,2) + pow(py,2))))*(((q_Vm1.get(1)))*(py)*(pz) - ((q_Vm1.get(2))*(px)*((sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - (((q_Vm1.get(3)))*(sqrt(pow(px,2) + pow(py,2)))*(py)))) ,
1117 ((-(1/(sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))*((q_Vm1.get(1))*((sqrt(pow(px,2) + pow(py,2)))) + ((q_Vm1.get(3))*(pz)))));
1124 EvtVector4R q_Vp5 (q_Vp3.get(0),
1129 EvtVector4R q_Vm5 (q_Vm3.get(0),
1135 EvtVector4R q_Vp (q_Vp5.get(0),
1136 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_Vp5.get(1)))-(py_M*(q_Vp5.get(2))))),
1137 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_Vp5.get(1)))+(px_M*(q_Vp5.get(2))))),
1141 EvtVector4R q_Vm (q_Vm5.get(0),
1142 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((px_M*(q_Vm5.get(1)))-(py_M*(q_Vm5.get(2))))),
1143 ((1/(sqrt(pow(px_M,2)+pow(py_M,2))))*((py_M*(q_Vm5.get(1)))+(px_M*(q_Vm5.get(2))))),
1146 report(INFO,fname.c_str())<<" Lambdab px: "<<px_M<<std::endl;
1147 report(INFO,fname.c_str())<<" Lambdab py: "<<py_M<<std::endl;
1148 report(INFO,fname.c_str())<<" Lambdab pz: "<<pz_M<<std::endl;
1149 report(INFO,fname.c_str())<<" Lambdab E: "<<E_M<<std::endl;
1150 report(INFO,fname.c_str())<<" Lambdab2 px: "<<q_lambdab2.get(1)<<std::endl;
1151 report(INFO,fname.c_str())<<" Lambdab2 py: "<<q_lambdab2.get(2)<<std::endl;
1152 report(INFO,fname.c_str())<<" Lambdab2 pz: "<<q_lambdab2.get(3)<<std::endl;
1153 report(INFO,fname.c_str())<<" Lambdab2 E: "<<q_lambdab2.get(0)<<std::endl;
1154 report(INFO,fname.c_str())<<" Lambdab3 px: "<<q_lambdab3.get(1)<<std::endl;
1155 report(INFO,fname.c_str())<<" Lambdab3 py: "<<q_lambdab3.get(2)<<std::endl;
1156 report(INFO,fname.c_str())<<" Lambdab3 pz: "<<q_lambdab3.get(3)<<std::endl;
1157 report(INFO,fname.c_str())<<" Lambdab3 E: "<<q_lambdab3.get(0)<<std::endl;
1158 report(INFO,fname.c_str())<<" V 0 px: "<<P_V.get(1)<<std::endl;
1159 report(INFO,fname.c_str())<<" V 0 py: "<<P_V.get(2)<<std::endl;
1160 report(INFO,fname.c_str())<<" V 0 pz: "<<P_V.get(3)<<std::endl;
1161 report(INFO,fname.c_str())<<" V 0 E: "<<P_V.get(0)<<std::endl;
1162 report(INFO,fname.c_str())<<" V 1 px: "<<q_V1.get(1)<<std::endl;
1163 report(INFO,fname.c_str())<<" V 1 py: "<<q_V1.get(2)<<std::endl;
1164 report(INFO,fname.c_str())<<" V 1 pz: "<<q_V1.get(3)<<std::endl;
1165 report(INFO,fname.c_str())<<" V 1 E: "<<q_V1.get(0)<<std::endl;
1166 report(INFO,fname.c_str())<<" V 2 px: "<<q_V2.get(1)<<std::endl;
1167 report(INFO,fname.c_str())<<" V 2 py: "<<q_V2.get(2)<<std::endl;
1168 report(INFO,fname.c_str())<<" V 2 pz: "<<q_V2.get(3)<<std::endl;
1169 report(INFO,fname.c_str())<<" V 2 E: "<<q_V2.get(0)<<std::endl;
1170 report(INFO,fname.c_str())<<" V px: "<<px<<std::endl;
1171 report(INFO,fname.c_str())<<" V py: "<<py<<std::endl;
1172 report(INFO,fname.c_str())<<" V pz: "<<pz<<std::endl;
1173 report(INFO,fname.c_str())<<" Vm 1 px: "<<q_Vm1.get(1)<<std::endl;
1174 report(INFO,fname.c_str())<<" Vm 1 py: "<<q_Vm1.get(2)<<std::endl;
1175 report(INFO,fname.c_str())<<" Vm 1 pz: "<<q_Vm1.get(3)<<std::endl;
1176 report(INFO,fname.c_str())<<" Vm 1 E: "<<q_Vm1.get(0)<<std::endl;
1177 report(INFO,fname.c_str())<<" Vm 3 px: "<<q_Vm3.get(1)<<std::endl;
1178 report(INFO,fname.c_str())<<" Vm 3 px: "<<q_Vm3.get(1)<<std::endl;
1179 report(INFO,fname.c_str())<<" Vm 3 py: "<<q_Vm3.get(2)<<std::endl;
1180 report(INFO,fname.c_str())<<" Vm 3 pz: "<<q_Vm3.get(3)<<std::endl;
1181 report(INFO,fname.c_str())<<" Vm 3 E: "<<q_Vm3.get(0)<<std::endl;
1182 report(INFO,fname.c_str())<<" Vm 5 px: "<<q_Vm5.get(1)<<std::endl;
1183 report(INFO,fname.c_str())<<" Vm 5 py: "<<q_Vm5.get(2)<<std::endl;
1184 report(INFO,fname.c_str())<<" Vm 5 pz: "<<q_Vm5.get(3)<<std::endl;
1185 report(INFO,fname.c_str())<<" Vm 5 E: "<<q_Vm5.get(0)<<std::endl;
1186 report(INFO,fname.c_str())<<" Vp 1 px: "<<q_Vp1.get(1)<<std::endl;
1187 report(INFO,fname.c_str())<<" Vp 1 py: "<<q_Vp1.get(2)<<std::endl;
1188 report(INFO,fname.c_str())<<" Vp 1 pz: "<<q_Vp1.get(3)<<std::endl;
1189 report(INFO,fname.c_str())<<" Vp 1 E: "<<q_Vp1.get(0)<<std::endl;
1190 report(INFO,fname.c_str())<<" Vp 3 px: "<<q_Vp3.get(1)<<std::endl;
1191 report(INFO,fname.c_str())<<" Vp 3 py: "<<q_Vp3.get(2)<<std::endl;
1192 report(INFO,fname.c_str())<<" Vp 3 pz: "<<q_Vp3.get(3)<<std::endl;
1193 report(INFO,fname.c_str())<<" Vp 3 E: "<<q_Vp3.get(0)<<std::endl;
1194 report(INFO,fname.c_str())<<" Vp 5 px: "<<q_Vp5.get(1)<<std::endl;
1195 report(INFO,fname.c_str())<<" Vp 5 py: "<<q_Vp5.get(2)<<std::endl;
1196 report(INFO,fname.c_str())<<" Vp 5 pz: "<<q_Vp5.get(3)<<std::endl;
1197 report(INFO,fname.c_str())<<" Vp 5 E: "<<q_Vp5.get(0)<<std::endl;
1198 report(INFO,fname.c_str())<<" Vp px: "<<q_Vp.get(1)<<std::endl;
1199 report(INFO,fname.c_str())<<" Vp py: "<<q_Vp.get(2)<<std::endl;
1200 report(INFO,fname.c_str())<<"Vp pz: "<<q_Vp.get(3)<<std::endl;
1201 report(INFO,fname.c_str())<<" Vm px: "<<q_Vm.get(1)<<std::endl;
1202 report(INFO,fname.c_str())<<" Vm py: "<<q_Vm.get(2)<<std::endl;
1203 report(INFO,fname.c_str())<<" Vm pz: "<<q_Vm.get(3)<<std::endl;
1205 //set quadrivectors to particles
1206 Vp->init(getDaugs()[0],q_Vp);
1207 Vm->init(getDaugs()[1],q_Vm);
1211 if (Vtype==VID::JPSI)
1214 pdf = (1-3*A)*cos(theta)*cos(theta) + (1+A);
1219 pdf = (3*A-1)*cos(theta)*cos(theta) + (1-A);
1222 report(DEBUG,fname.c_str())<<" V decay pdf value : "<<pdf<<std::endl;