|
EvtGen
2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
|
Go to the documentation of this file. 46 fname = "EvtGen.EvtLambdaB2LambdaV"; 54 return "LAMBDAB2LAMBDAV"; 71 double Max = 1 + fabs( A * B ); 73 << " PDF max value : " << Max << std::endl; 82 bool antiparticle = false; 86 << "*************************************************" << std::endl; 88 << "* Event Model Class : EvtLambdaB2LambdaV *" << std::endl; 90 << "*************************************************" << std::endl; 104 antiparticle = false; 105 } else if ( Id_mother == EvtPDL::getId( "anti-Lambda_b0" ) ) { 109 << " Mother is not a Lambda_b0 or an anti-Lambda_b0, but a " 115 if ( !( Id_daug1 == EvtPDL::getId( "Lambda0" ) && !antiparticle ) && 116 !( Id_daug1 == EvtPDL::getId( "anti-Lambda0" ) && antiparticle ) ) { 117 if ( !antiparticle ) { 119 << " Daughter1 is not a Lambda0, but a " 123 << " Daughter1 is not an anti-Lambda0, but a " 132 else if ( getArg( 1 ) == 2 ) 134 else if ( getArg( 1 ) == 3 ) 136 else if ( getArg( 1 ) == 4 ) 140 << " Vtype " << getArg( 1 ) << " is unknown" << std::endl; 148 << " Decay mode successfully initialized : Lambda_b0 -> Lambda J/psi" 152 << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda J/psi" 157 << " Decay mode successfully initialized : Lambda_b0 -> Lambda rho0" 161 << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda rho0" 166 << " Decay mode successfully initialized : Lambda_b0 -> Lambda omega" 170 << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda omega" 177 << " Decay mode successfully initialized : " 178 << "Lambda_b0 -> Lambda rho-omega-mixing" << std::endl; 181 << " Decay mode successfully initialized : " 182 << "anti-Lambda_b0 -> anti-Lambda rho-omega-mixing" << std::endl; 187 << " Daughter2 is not a J/psi, phi or rho0 but a " 194 C = EvtComplex( ( sqrt( 2. ) / 2. ), ( sqrt( 2. ) / 2. ) ); 209 << " LambdaB decay parameters : " << std::endl; 211 << " - lambda asymmetry A = " << A << std::endl; 213 << " - lambdab polarisation B = " << B << std::endl; 215 << " - lambdab density matrix rho+- C = " << C << std::endl; 233 double MASS_LAMBDAB = lambdab-> mass(); 235 double MASS_V = getVMass( MASS_LAMBDAB, MASS_LAMBDA ); 241 << " Angular angles : theta = " << theta << " ; phi = " << phi 244 double E_lambda = ( MASS_LAMBDAB * MASS_LAMBDAB + 245 MASS_LAMBDA * MASS_LAMBDA - MASS_V * MASS_V ) / 246 ( 2 * MASS_LAMBDAB ); 247 double E_V = ( MASS_LAMBDAB * MASS_LAMBDAB + MASS_V * MASS_V - 248 MASS_LAMBDA * MASS_LAMBDA ) / 249 ( 2 * MASS_LAMBDAB ); 250 double P = sqrt( E_lambda * E_lambda - lambda->mass() * lambda->mass() ); 254 double px = P_lambdab. get( 1 ); 255 double py = P_lambdab.get( 2 ); 256 double pz = P_lambdab.get( 3 ); 257 double E = P_lambdab.get( 0 ); 259 << "E of lambdab: " << P_lambdab.get( 0 ) << std::endl; 261 << "E of lambdab: " << E << std::endl; 264 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 265 ( ( px * ( px ) ) + ( py * ( py ) ) ) ), 266 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 267 ( -( ( py ) * ( px ) ) + ( px * ( py ) ) ) ), 270 EvtVector4R q_lambdab3( E, q_lambdab2.get( 3 ), q_lambdab2.get( 1 ), 271 q_lambdab2.get( 2 ) ); 273 EvtVector4R q_lambda0( E_lambda, P * sin( theta ) * cos( phi ), 274 P * sin( theta ) * sin( phi ), P * cos( theta ) ); 276 EvtVector4R q_V0( E_V, -P * sin( theta ) * cos( phi ), 277 -P * sin( theta ) * sin( phi ), -P * cos( theta ) ); 279 EvtVector4R q_lambda1( E_lambda, q_lambda0.get( 2 ), q_lambda0.get( 3 ), 280 q_lambda0.get( 1 ) ); 286 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 287 ( ( px * ( q_lambda1.get( 1 ) ) ) - ( py * ( q_lambda1.get( 2 ) ) ) ) ), 288 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 289 ( ( py * ( q_lambda1.get( 1 ) ) ) + ( px * ( q_lambda1.get( 2 ) ) ) ) ), 290 ( q_lambda1.get( 3 ) ) ); 294 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 295 ( ( px * ( q_V1.get( 1 ) ) ) - ( py * ( q_V1.get( 2 ) ) ) ) ), 296 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 297 ( ( py * ( q_V1.get( 1 ) ) ) + ( px * ( q_V1.get( 2 ) ) ) ) ), 303 << " LambdaB px: " << px << std::endl; 305 << " LambdaB py: " << py << std::endl; 307 << " LambdaB pz: " << pz << std::endl; 309 << " LambdaB E: " << E << std::endl; 312 << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl; 314 << " Lambda 0 px: " << q_lambda0.get( 1 ) << std::endl; 316 << " Lambda 0 py: " << q_lambda0.get( 2 ) << std::endl; 318 << " Lambda 0 pz: " << q_lambda0.get( 3 ) << std::endl; 320 << " Lambda 0 E: " << q_lambda0.get( 0 ) << std::endl; 322 << " Lambda 1 px: " << q_lambda1.get( 1 ) << std::endl; 324 << " Lambda 1 py: " << q_lambda1.get( 2 ) << std::endl; 326 << " Lambda 1 pz: " << q_lambda1.get( 3 ) << std::endl; 328 << " Lambda 1 E: " << q_lambda1.get( 0 ) << std::endl; 330 << " Lambda px: " << q_lambda.get( 1 ) << std::endl; 332 << " Lambda py: " << q_lambda.get( 2 ) << std::endl; 334 << " Lambda pz: " << q_lambda.get( 3 ) << std::endl; 336 << " Lambda E: " << q_lambda0.get( 3 ) << std::endl; 338 << " V 0 px: " << q_V0. get( 1 ) << std::endl; 340 << " V 0 py: " << q_V0. get( 2 ) << std::endl; 342 << " V 0 pz: " << q_V0. get( 3 ) << std::endl; 344 << " V 0 E: " << q_V0. get( 0 ) << std::endl; 346 << " V 1 px: " << q_V1.get( 1 ) << std::endl; 348 << " V 1 py: " << q_V1.get( 2 ) << std::endl; 350 << " V 1 pz: " << q_V1.get( 3 ) << std::endl; 352 << " V 1 E: " << q_V1.get( 0 ) << std::endl; 354 << " V px: " << q_V. get( 1 ) << std::endl; 356 << " V py: " << q_V. get( 2 ) << std::endl; 358 << " V pz: " << q_V. get( 3 ) << std::endl; 360 << " V E: " << q_V0. get( 3 ) << std::endl; 366 double pdf = 1 + A * B * cos( theta ) + 371 << " LambdaB decay pdf value : " << pdf << std::endl; 383 double a = ( _m0 * _g0 ) * ( _m0 * _g0 ); 384 double b = ( m * m - _m0 * _m0 ) * ( m * m - _m0 * _m0 ); 385 return a / ( b + a ); 392 double _mo, double _go ) 394 double a = m * m - _mr * _mr; 395 double b = m * m - _mo * _mo; 396 double c = _gr * _mr; 397 double d = _go * _mo; 398 double re_pi = -3500e-6; 399 double im_pi = -300e-6; 400 double va_pi = re_pi + im_pi; 403 double f = 1 / ( a * a + c * c ) * 404 ( 1 + ( va_pi * va_pi + 2 * b * re_pi + 2 * d * im_pi ) / 409 b = _mr * _mr - _mo * _mo; 411 double maxi = 1 / ( a * a + c * c ) * 412 ( 1 + ( va_pi * va_pi + 2 * b * re_pi + 2 * d * im_pi ) / 436 double _max = MASS_LAMBDAB - MASS_LAMBDA; 437 double _min = 2 * MASS_PION; 459 MASS_OMEGA, WIDTH_OMEGA ); 469 } while ( ntimes && !test ); 474 << "Tried accept/reject:10000" 475 << " times, and rejected all the times!" << std::endl; 477 << "Is therefore accepting the last event!" << std::endl; 497 fname = "EvtGen.EvtLambda2PPiForLambdaB2LambdaV"; 505 return "LAMBDA2PPIFORLAMBDAB2LAMBDAV"; 525 else if ( C == 0 || real( D ) == 0 ) 526 Max = 1 + fabs( A * B ); 531 double max1 = 1 + fabs( A * B * cos( theta_max ) - 534 double max2 = 1 + fabs( A * B ); 541 << " PDF max value : " << Max << std::endl; 550 bool antiparticle = false; 554 << " ***********************************************************" 557 << " * Event Model Class : EvtLambda2PPiForLambdaB2LambdaV *" 560 << " ***********************************************************" 575 antiparticle = false; 580 << " Mother is not a Lambda0 or an anti-Lambda0, but a " 586 if ( !( Id_daug1 == EvtPDL::getId( "p+" ) && !antiparticle ) && 587 !( Id_daug1 == EvtPDL::getId( "anti-p-" ) && antiparticle ) ) { 588 if ( !antiparticle ) { 590 << " Daughter1 is not a p+, but a " << EvtPDL::name( Id_daug1 ) 594 << " Daughter1 is not an anti-p-, but a " 601 if ( !( Id_daug2 == EvtPDL::getId( "pi-" ) && !antiparticle ) && 603 if ( !antiparticle ) { 605 << " Daughter2 is not a p-, but a " << EvtPDL::name( Id_daug1 ) 609 << " Daughter2 is not an p+, but a " << EvtPDL::name( Id_daug1 ) 616 << " Decay mode successfully initialized : Lambda0 -> p+ pi-" 620 << " Decay mode successfully initialized : Anti-Lambda0 -> anti-p- pi+" 628 << " From : Lambda_b0 -> Lambda J/psi" << std::endl; 631 << " From : anti-Lambda_b0 -> anti-Lambda J/psi" << std::endl; 632 } else if ( getArg( 1 ) == 2 ) { 636 << " From : Lambda_b0 -> Lambda rho0" << std::endl; 639 << " From : anti-Lambda_b0 -> anti-Lambda rho0" << std::endl; 640 } else if ( getArg( 1 ) == 3 ) { 644 << " From : Lambda_b0 -> Lambda omega" << std::endl; 647 << " From : anti-Lambda_b0 -> anti-Lambda omega" << std::endl; 648 } else if ( getArg( 1 ) == 4 ) { 652 << " Vtype " << getArg( 1 ) << " is unknown" << std::endl; 653 if ( !antiparticle ) { 655 << " From : Lambda_b0 -> Lambda rho-omega-mixing" << std::endl; 658 << " From : anti-Lambda_b0 -> anti-Lambda rho-omega-mixing" 685 << " Lambda decay parameters : " << std::endl; 687 << " - proton asymmetry A = " << A << std::endl; 689 << " - lambda polarisation B = " << B << std::endl; 691 << " - lambdaB polarisation C = " << C << std::endl; 693 << " - lambda density matrix rho+- D = " << D << std::endl; 710 double MASS_LAMBDA = lambda->mass(); 718 << " Angular angles : theta = " << theta << " ; phi = " << phi 722 double E_proton = ( MASS_LAMBDA * MASS_LAMBDA + MASS_PROTON * MASS_PROTON - 723 MASS_PION * MASS_PION ) / 725 double E_pion = ( MASS_LAMBDA * MASS_LAMBDA + MASS_PION * MASS_PION - 726 MASS_PROTON * MASS_PROTON ) / 728 double P = sqrt( E_proton * E_proton - proton-> mass() * proton-> mass() ); 734 double E_lambda = P_lambda. get( 0 ); 735 double px_M = lambdab. get( 1 ); 736 double py_M = lambdab. get( 2 ); 737 double pz_M = lambdab. get( 3 ); 738 double E_M = lambdab. get( 0 ); 742 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 743 ( ( px_M * ( px_M ) ) + ( py_M * ( py_M ) ) ) ), 744 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 745 ( -( ( py_M ) * ( px_M ) ) + ( px_M * ( py_M ) ) ) ), 749 q_lambdab2. get( 2 ) ); 752 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 753 ( ( px_M * ( P_lambda.get( 1 ) ) ) + 754 ( py_M * ( P_lambda.get( 2 ) ) ) ) ), 755 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 756 ( -( py_M * ( P_lambda.get( 1 ) ) ) + 757 ( px_M * ( P_lambda.get( 2 ) ) ) ) ), 760 EvtVector4R q_lambda2( E_lambda, q_lambda1.get( 3 ), q_lambda1.get( 1 ), 761 q_lambda1.get( 2 ) ); 763 double px = q_lambda2. get( 1 ); 764 double py = q_lambda2.get( 2 ); 765 double pz = q_lambda2.get( 3 ); 769 ( ( 1 / ( sqrt( pow( q_lambda2.get( 1 ), 2 ) + pow( q_lambda2.get( 2 ), 2 ) + 770 pow( q_lambda2.get( 3 ), 2 ) ) ) ) * 771 ( 1 / ( sqrt( pow( q_lambda2.get( 1 ), 2 ) + 772 pow( q_lambda2.get( 2 ), 2 ) ) ) ) * 773 ( ( q_lambda2.get( 1 ) ) * ( q_lambda2.get( 1 ) ) * 774 ( q_lambda2.get( 3 ) ) + 775 ( ( q_lambda2.get( 2 ) ) * ( q_lambda2.get( 2 ) ) * 776 ( q_lambda2.get( 3 ) ) ) - 777 ( ( q_lambda2.get( 3 ) ) * ( pow( q_lambda2.get( 1 ), 2 ) + 778 pow( q_lambda2.get( 2 ), 2 ) ) ) ) ), 779 ( ( ( ( q_lambda2.get( 2 ) ) * ( q_lambda2.get( 1 ) ) ) - 780 ( ( q_lambda2.get( 1 ) ) * ( q_lambda2.get( 2 ) ) ) ) / 781 ( sqrt( pow( q_lambda2.get( 1 ), 2 ) + pow( q_lambda2.get( 2 ), 2 ) ) ) ), 782 ( ( ( 1 / sqrt( pow( q_lambda2.get( 1 ), 2 ) + pow( q_lambda2.get( 2 ), 2 ) + 783 pow( q_lambda2.get( 3 ), 2 ) ) ) * 784 ( ( ( q_lambda2.get( 1 ) ) * ( q_lambda2.get( 1 ) ) ) + 785 ( ( q_lambda2.get( 2 ) ) * ( q_lambda2.get( 2 ) ) ) + 786 ( ( q_lambda2.get( 3 ) ) * ( q_lambda2.get( 3 ) ) ) ) ) ) ); 788 EvtVector4R q_proton1( E_proton, P * sin( theta ) * cos( phi ), 789 P * sin( theta ) * sin( phi ), P * cos( theta ) ); 790 EvtVector4R q_pion1( E_pion, -P * sin( theta ) * cos( phi ), 791 -P * sin( theta ) * sin( phi ), -P * cos( theta ) ); 795 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 796 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 797 ( ( q_proton1. get( 1 ) ) * ( px ) * ( pz ) - 798 ( ( q_proton1. get( 2 ) ) * ( py ) * 799 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) + 800 ( ( ( q_proton1. get( 3 ) ) ) * 801 ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * ( px ) ) ) ), 802 ( ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) * 803 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 804 ( ( ( q_proton1. get( 1 ) ) ) * ( py ) * ( pz ) + 805 ( ( q_proton1. get( 2 ) ) * ( px ) * 806 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) + 807 ( ( ( q_proton1. get( 3 ) ) ) * 808 ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * ( py ) ) ) ), 809 ( ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) * 810 ( ( -( q_proton1. get( 1 ) ) ) * 811 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) + 812 ( ( q_proton1. get( 3 ) ) * ( pz ) ) ) ) ); 816 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 817 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 818 ( ( q_pion1. get( 1 ) ) * ( px ) * ( pz ) - 819 ( ( q_pion1. get( 2 ) ) * ( py ) * 820 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) + 821 ( ( ( q_pion1. get( 3 ) ) ) * 822 ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * ( px ) ) ) ), 823 ( ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) * 824 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 825 ( ( q_pion1. get( 1 ) ) * ( py ) * ( pz ) + 826 ( ( q_pion1. get( 2 ) ) * ( px ) * 827 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) + 828 ( ( ( q_pion1. get( 3 ) ) ) * 829 ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * ( py ) ) ) ), 830 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 831 ( ( -( q_pion1. get( 1 ) ) ) * ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) + 832 ( ( q_pion1. get( 3 ) ) * ( pz ) ) ) ) ); 835 ( q_proton3. get( 3 ) ), ( q_proton3. get( 1 ) ) ); 838 ( q_pion3. get( 3 ) ), ( q_pion3. get( 1 ) ) ); 841 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 842 ( ( px_M * ( q_proton5. get( 1 ) ) ) - 843 ( py_M * ( q_proton5. get( 2 ) ) ) ) ), 844 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 845 ( ( py_M * ( q_proton5. get( 1 ) ) ) + 846 ( px_M * ( q_proton5. get( 2 ) ) ) ) ), 847 ( q_proton5. get( 3 ) ) ); 851 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 852 ( ( px_M * ( q_pion5. get( 1 ) ) ) - ( py_M * ( q_pion5. get( 2 ) ) ) ) ), 853 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 854 ( ( py_M * ( q_pion5. get( 1 ) ) ) + ( px_M * ( q_pion5. get( 2 ) ) ) ) ), 855 ( q_pion5. get( 3 ) ) ); 858 << " Lambdab px: " << px_M << std::endl; 860 << " Lambdab py: " << py_M << std::endl; 862 << " Lambdab pz: " << pz_M << std::endl; 864 << " Lambdab E: " << E_M << std::endl; 866 << " Lambdab2 px: " << q_lambdab2. get( 1 ) << std::endl; 868 << " Lambdab2 py: " << q_lambdab2. get( 2 ) << std::endl; 870 << " Lambdab2 pz: " << q_lambdab2. get( 3 ) << std::endl; 872 << " Lambdab2 E: " << q_lambdab2. get( 0 ) << std::endl; 874 << " Lambdab3 px: " << q_lambdab3.get( 1 ) << std::endl; 876 << " Lambdab3 py: " << q_lambdab3.get( 2 ) << std::endl; 878 << " Lambdab3 pz: " << q_lambdab3.get( 3 ) << std::endl; 880 << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl; 882 << " Lambda 0 px: " << P_lambda.get( 1 ) << std::endl; 884 << " Lambda 0 py: " << P_lambda.get( 2 ) << std::endl; 886 << " Lambda 0 pz: " << P_lambda.get( 3 ) << std::endl; 888 << " Lambda 0 E: " << P_lambda.get( 0 ) << std::endl; 890 << " Lambda 1 px: " << q_lambda1.get( 1 ) << std::endl; 892 << " Lambda 1 py: " << q_lambda1.get( 2 ) << std::endl; 894 << " Lambda 1 pz: " << q_lambda1.get( 3 ) << std::endl; 896 << " Lambda 1 E: " << q_lambda1.get( 0 ) << std::endl; 898 << " Lambda 2 px: " << q_lambda2.get( 1 ) << std::endl; 900 << " Lambda 2 py: " << q_lambda2.get( 2 ) << std::endl; 902 << " Lambda 2 pz: " << q_lambda2.get( 3 ) << std::endl; 904 << " Lambda 2 E: " << q_lambda2.get( 0 ) << std::endl; 907 << " Lambda px: " << px << std::endl; 909 << " Lambda py: " << py << std::endl; 911 << " Lambda pz: " << pz << std::endl; 914 << " pion 1 px: " << q_pion1. get( 1 ) << std::endl; 916 << " pion 1 py: " << q_pion1. get( 2 ) << std::endl; 918 << " pion 1 pz: " << q_pion1. get( 3 ) << std::endl; 920 << " pion 1 E: " << q_pion1. get( 0 ) << std::endl; 923 << " pion 3 px: " << q_pion3. get( 1 ) << std::endl; 925 << " pion 3 px: " << q_pion3. get( 1 ) << std::endl; 927 << " pion 3 py: " << q_pion3. get( 2 ) << std::endl; 929 << " pion 3 pz: " << q_pion3. get( 3 ) << std::endl; 931 << " pion 3 E: " << q_pion3. get( 0 ) << std::endl; 934 << " pion 5 px: " << q_pion5. get( 1 ) << std::endl; 936 << " pion 5 py: " << q_pion5. get( 2 ) << std::endl; 938 << " pion 5 pz: " << q_pion5. get( 3 ) << std::endl; 940 << " pion 5 E: " << q_pion5. get( 0 ) << std::endl; 943 << " proton 1 px: " << q_proton1. get( 1 ) << std::endl; 945 << " proton 1 py: " << q_proton1. get( 2 ) << std::endl; 947 << " proton 1 pz: " << q_proton1. get( 3 ) << std::endl; 949 << " proton 1 E: " << q_proton1. get( 0 ) << std::endl; 952 << " proton 3 px: " << q_proton3. get( 1 ) << std::endl; 954 << " proton 3 py: " << q_proton3. get( 2 ) << std::endl; 956 << " proton 3 pz: " << q_proton3. get( 3 ) << std::endl; 958 << " proton 3 E: " << q_proton3. get( 0 ) << std::endl; 961 << " proton 5 px: " << q_proton5. get( 1 ) << std::endl; 963 << " proton 5 py: " << q_proton5. get( 2 ) << std::endl; 965 << " proton 5 pz: " << q_proton5. get( 3 ) << std::endl; 967 << " proton 5 E: " << q_proton5. get( 0 ) << std::endl; 970 << " proton px: " << q_proton. get( 1 ) << std::endl; 972 << " proton py: " << q_proton. get( 2 ) << std::endl; 974 << "proton pz: " << q_proton. get( 3 ) << std::endl; 976 << " pion px: " << q_pion. get( 1 ) << std::endl; 978 << " pion py: " << q_pion. get( 2 ) << std::endl; 980 << " pion pz: " << q_pion. get( 3 ) << std::endl; 992 double pdf = 1 + A * B * cos( theta ) + 996 << " Lambda decay pdf value : " << pdf << std::endl; 1015 fname = "EvtGen.EvtV2VpVmForLambdaB2LambdaV"; 1023 return "V2VPVMFORLAMBDAB2LAMBDAV"; 1042 if ( ( 1 - 3 * A ) > 0 ) 1043 Max = 2 * ( 1 - A ); 1047 if ( ( 3 * A - 1 ) >= 0 ) 1054 << " PDF max value : " << Max << std::endl; 1065 << " ***********************************************************" 1068 << " * Event Model Class : EvtV2VpVmForLambdaB2LambdaV *" 1071 << " ***********************************************************" 1087 else if ( getArg( 1 ) == 2 ) 1089 else if ( getArg( 1 ) == 3 ) 1091 else if ( getArg( 1 ) == 4 ) 1095 << " Vtype " << getArg( 1 ) << " is unknown" << std::endl; 1108 << " Mother is not a J/psi, phi or rho0 but a " 1118 << " Daughter1 is not a mu+, but a " 1124 << " Daughter2 is not a mu-, but a " 1129 << " Decay mode successfully initialized : J/psi -> mu+ mu-" 1138 << " Daughter1 is not a pi+, but a " 1144 << " Daughter2 is not a pi-, but a " 1150 << " Decay mode successfully initialized : rho0 -> pi+ pi-" 1154 << " Decay mode successfully initialized : omega -> pi+ pi-" 1158 << " Decay mode successfully initialized : rho-omega mixing -> pi+ pi-" 1164 << "No decay mode chosen ! " << std::endl; 1185 << " V decay parameters : " << std::endl; 1187 << " - V density matrix rho00 A = " << A << std::endl; 1204 double MASS_V = V-> mass(); 1219 double MASS_VP = MASS_VM; 1225 << " Angular angles : theta = " << theta << " ; phi = " << phi 1229 double E_Vp = ( MASS_V * MASS_V + MASS_VP * MASS_VP - MASS_VM * MASS_VM ) / 1231 double E_Vm = ( MASS_V * MASS_V + MASS_VM * MASS_VM - MASS_VP * MASS_VP ) / 1233 double P = sqrt( E_Vp * E_Vp - Vp-> mass() * Vp-> mass() ); 1239 double E_V = ( P_V.get( 0 ) ); 1240 double px_M = lambdab. get( 1 ); 1241 double py_M = lambdab. get( 2 ); 1242 double pz_M = lambdab. get( 3 ); 1243 double E_M = lambdab. get( 0 ); 1247 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1248 ( ( px_M * ( px_M ) ) + ( py_M * ( py_M ) ) ) ), 1249 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1250 ( -( ( py_M ) * ( px_M ) ) + ( px_M * ( py_M ) ) ) ), 1254 q_lambdab2. get( 2 ) ); 1258 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1259 ( ( px_M * ( P_V.get( 1 ) ) ) + ( py_M * ( P_V.get( 2 ) ) ) ) ), 1260 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1261 ( -( py_M * ( P_V.get( 1 ) ) ) + ( px_M * ( P_V.get( 2 ) ) ) ) ), 1264 EvtVector4R q_V2( E_V, q_V1.get( 3 ), q_V1.get( 1 ), q_V1.get( 2 ) ); 1266 double px = -( q_V2.get( 1 ) ); 1267 double py = -( q_V2.get( 2 ) ); 1268 double pz = -( q_V2.get( 3 ) ); 1272 ( ( 1 / ( sqrt( pow( q_V2.get( 1 ), 2 ) + pow( q_V2.get( 2 ), 2 ) + 1273 pow( q_V2.get( 3 ), 2 ) ) ) ) * 1274 ( 1 / ( sqrt( pow( q_V2.get( 1 ), 2 ) + pow( q_V2.get( 2 ), 2 ) ) ) ) * 1275 ( ( q_V2.get( 1 ) ) * ( q_V2.get( 1 ) ) * ( q_V2.get( 3 ) ) + 1276 ( ( q_V2.get( 2 ) ) * ( q_V2.get( 2 ) ) * ( q_V2.get( 3 ) ) ) - 1277 ( ( q_V2.get( 3 ) ) * 1278 ( pow( q_V2.get( 1 ), 2 ) + pow( q_V2.get( 2 ), 2 ) ) ) ) ), 1279 ( ( ( ( q_V2.get( 2 ) ) * ( q_V2.get( 1 ) ) ) - 1280 ( ( q_V2.get( 1 ) ) * ( q_V2.get( 2 ) ) ) ) / 1281 ( sqrt( pow( q_V2.get( 1 ), 2 ) + pow( q_V2.get( 2 ), 2 ) ) ) ), 1282 ( ( ( 1 / sqrt( pow( q_V2.get( 1 ), 2 ) + pow( q_V2.get( 2 ), 2 ) + 1283 pow( q_V2.get( 3 ), 2 ) ) ) * 1284 ( ( ( q_V2.get( 1 ) ) * ( q_V2.get( 1 ) ) ) + 1285 ( ( q_V2.get( 2 ) ) * ( q_V2.get( 2 ) ) ) + 1286 ( ( q_V2.get( 3 ) ) * ( q_V2.get( 3 ) ) ) ) ) ) ); 1288 EvtVector4R q_Vp1( E_Vp, P * sin( theta ) * cos( phi ), 1289 P * sin( theta ) * sin( phi ), P * cos( theta ) ); 1290 EvtVector4R q_Vm1( E_Vm, -P * sin( theta ) * cos( phi ), 1291 -P * sin( theta ) * sin( phi ), -P * cos( theta ) ); 1295 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 1296 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 1297 ( ( q_Vp1. get( 1 ) ) * ( px ) * ( pz ) + 1298 ( ( q_Vp1. get( 2 ) ) * ( py ) * 1299 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) - 1300 ( ( ( q_Vp1. get( 3 ) ) ) * ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * 1302 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 1303 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 1304 ( ( ( q_Vp1. get( 1 ) ) ) * ( py ) * ( pz ) - 1305 ( ( q_Vp1. get( 2 ) ) * ( px ) * 1306 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) - 1307 ( ( ( q_Vp1. get( 3 ) ) ) * ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * 1309 ( ( -( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) * 1310 ( ( q_Vp1. get( 1 ) ) * ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) + 1311 ( ( q_Vp1. get( 3 ) ) * ( pz ) ) ) ) ); 1315 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 1316 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 1317 ( ( q_Vm1. get( 1 ) ) * ( px ) * ( pz ) + 1318 ( ( q_Vm1. get( 2 ) ) * ( py ) * 1319 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) - 1320 ( ( ( q_Vm1. get( 3 ) ) ) * ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * 1322 ( ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) * 1323 ( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) * 1324 ( ( ( q_Vm1. get( 1 ) ) ) * ( py ) * ( pz ) - 1325 ( ( q_Vm1. get( 2 ) ) * ( px ) * 1326 ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) - 1327 ( ( ( q_Vm1. get( 3 ) ) ) * ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) * 1329 ( ( -( 1 / ( sqrt( pow( px, 2 ) + pow( py, 2 ) + pow( pz, 2 ) ) ) ) ) * 1330 ( ( q_Vm1. get( 1 ) ) * ( ( sqrt( pow( px, 2 ) + pow( py, 2 ) ) ) ) + 1331 ( ( q_Vm1. get( 3 ) ) * ( pz ) ) ) ) ); 1334 ( q_Vp3. get( 1 ) ) ); 1337 ( q_Vm3. get( 1 ) ) ); 1341 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1342 ( ( px_M * ( q_Vp5. get( 1 ) ) ) - ( py_M * ( q_Vp5. get( 2 ) ) ) ) ), 1343 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1344 ( ( py_M * ( q_Vp5. get( 1 ) ) ) + ( px_M * ( q_Vp5. get( 2 ) ) ) ) ), 1345 ( q_Vp5. get( 3 ) ) ); 1349 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1350 ( ( px_M * ( q_Vm5. get( 1 ) ) ) - ( py_M * ( q_Vm5. get( 2 ) ) ) ) ), 1351 ( ( 1 / ( sqrt( pow( px_M, 2 ) + pow( py_M, 2 ) ) ) ) * 1352 ( ( py_M * ( q_Vm5. get( 1 ) ) ) + ( px_M * ( q_Vm5. get( 2 ) ) ) ) ), 1353 ( q_Vm5. get( 3 ) ) ); 1356 << " Lambdab px: " << px_M << std::endl; 1358 << " Lambdab py: " << py_M << std::endl; 1360 << " Lambdab pz: " << pz_M << std::endl; 1362 << " Lambdab E: " << E_M << std::endl; 1364 << " Lambdab2 px: " << q_lambdab2. get( 1 ) << std::endl; 1366 << " Lambdab2 py: " << q_lambdab2. get( 2 ) << std::endl; 1368 << " Lambdab2 pz: " << q_lambdab2. get( 3 ) << std::endl; 1370 << " Lambdab2 E: " << q_lambdab2. get( 0 ) << std::endl; 1372 << " Lambdab3 px: " << q_lambdab3.get( 1 ) << std::endl; 1374 << " Lambdab3 py: " << q_lambdab3.get( 2 ) << std::endl; 1376 << " Lambdab3 pz: " << q_lambdab3.get( 3 ) << std::endl; 1378 << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl; 1380 << " V 0 px: " << P_V.get( 1 ) << std::endl; 1382 << " V 0 py: " << P_V.get( 2 ) << std::endl; 1384 << " V 0 pz: " << P_V.get( 3 ) << std::endl; 1386 << " V 0 E: " << P_V.get( 0 ) << std::endl; 1388 << " V 1 px: " << q_V1.get( 1 ) << std::endl; 1390 << " V 1 py: " << q_V1.get( 2 ) << std::endl; 1392 << " V 1 pz: " << q_V1.get( 3 ) << std::endl; 1394 << " V 1 E: " << q_V1.get( 0 ) << std::endl; 1396 << " V 2 px: " << q_V2.get( 1 ) << std::endl; 1398 << " V 2 py: " << q_V2.get( 2 ) << std::endl; 1400 << " V 2 pz: " << q_V2.get( 3 ) << std::endl; 1402 << " V 2 E: " << q_V2.get( 0 ) << std::endl; 1407 << " Vm 1 px: " << q_Vm1. get( 1 ) << std::endl; 1409 << " Vm 1 py: " << q_Vm1. get( 2 ) << std::endl; 1411 << " Vm 1 pz: " << q_Vm1. get( 3 ) << std::endl; 1413 << " Vm 1 E: " << q_Vm1. get( 0 ) << std::endl; 1415 << " Vm 3 px: " << q_Vm3. get( 1 ) << std::endl; 1417 << " Vm 3 px: " << q_Vm3. get( 1 ) << std::endl; 1419 << " Vm 3 py: " << q_Vm3. get( 2 ) << std::endl; 1421 << " Vm 3 pz: " << q_Vm3. get( 3 ) << std::endl; 1423 << " Vm 3 E: " << q_Vm3. get( 0 ) << std::endl; 1425 << " Vm 5 px: " << q_Vm5. get( 1 ) << std::endl; 1427 << " Vm 5 py: " << q_Vm5. get( 2 ) << std::endl; 1429 << " Vm 5 pz: " << q_Vm5. get( 3 ) << std::endl; 1431 << " Vm 5 E: " << q_Vm5. get( 0 ) << std::endl; 1433 << " Vp 1 px: " << q_Vp1. get( 1 ) << std::endl; 1435 << " Vp 1 py: " << q_Vp1. get( 2 ) << std::endl; 1437 << " Vp 1 pz: " << q_Vp1. get( 3 ) << std::endl; 1439 << " Vp 1 E: " << q_Vp1. get( 0 ) << std::endl; 1441 << " Vp 3 px: " << q_Vp3. get( 1 ) << std::endl; 1443 << " Vp 3 py: " << q_Vp3. get( 2 ) << std::endl; 1445 << " Vp 3 pz: " << q_Vp3. get( 3 ) << std::endl; 1447 << " Vp 3 E: " << q_Vp3. get( 0 ) << std::endl; 1449 << " Vp 5 px: " << q_Vp5. get( 1 ) << std::endl; 1451 << " Vp 5 py: " << q_Vp5. get( 2 ) << std::endl; 1453 << " Vp 5 pz: " << q_Vp5. get( 3 ) << std::endl; 1455 << " Vp 5 E: " << q_Vp5. get( 0 ) << std::endl; 1457 << " Vp px: " << q_Vp. get( 1 ) << std::endl; 1459 << " Vp py: " << q_Vp. get( 2 ) << std::endl; 1461 << "Vp pz: " << q_Vp. get( 3 ) << std::endl; 1463 << " Vm px: " << q_Vm. get( 1 ) << std::endl; 1465 << " Vm py: " << q_Vm. get( 2 ) << std::endl; 1467 << " Vm pz: " << q_Vm. get( 3 ) << std::endl; 1477 pdf = ( 1 - 3 * A ) * cos( theta ) * cos( theta ) + ( 1 + A ); 1480 pdf = ( 3 * A - 1 ) * cos( theta ) * cos( theta ) + ( 1 - A ); 1483 << " V decay pdf value : " << pdf << std::endl; EvtLambda2PPiForLambdaB2LambdaV()
void setProb(double prob)
void decay(EvtParticle *V) override
static std::string name(EvtId i)
EvtParticle * getParent() const
std::string getName() override
double getArg(unsigned int j)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
double BreitWignerRelPDF(double m, double _m0, double _g0)
static double getMeanMass(EvtId i)
void makeDaughters(unsigned int ndaug, EvtId *id)
double RhoOmegaMixingPDF(double m, double _mr, double _gr, double _mo, double _go)
VID::VectorMesonType Vtype
void setProbMax(double prbmx)
void decay(EvtParticle *lambda) override
EvtId getParentId() const
void checkNDaug(int d1, int d2=-1)
double getVMass(double MASS_LAMBDAB, double MASS_LAMBDA)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
std::string getName() override
EvtDecayBase * clone() override
static EvtId getId(const std::string &name)
const EvtVector4R & getP4() const
EvtDecayBase * clone() override
EvtV2VpVmForLambdaB2LambdaV()
VID::VectorMesonType Vtype
double lambda(double q, double m1, double m2)
static double getWidth(EvtId i)
void decay(EvtParticle *lambdab) override
std::string getName() override
void initProbMax() override
VID::VectorMesonType Vtype
void initProbMax() override
EvtParticle * getDaug(int i)
static double getMass(EvtId i)
void initProbMax() override
double real(const EvtComplex &c)
EvtDecayBase * clone() override
EvtId getDaug(int i) const
|