diff --git a/EvtGenModels/EvtLambdaB2LambdaV.hh b/EvtGenModels/EvtLambdaB2LambdaV.hh
deleted file mode 100644
index 3b2044f..0000000
--- a/EvtGenModels/EvtLambdaB2LambdaV.hh
+++ /dev/null
@@ -1,180 +0,0 @@
-
-/***********************************************************************
-* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
-* *
-* This file is part of EvtGen. *
-* *
-* EvtGen is free software: you can redistribute it and/or modify *
-* it under the terms of the GNU General Public License as published by *
-* the Free Software Foundation, either version 3 of the License, or *
-* (at your option) any later version. *
-* *
-* EvtGen is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with EvtGen. If not, see . *
-***********************************************************************/
-
-#ifndef EVTLAMBDAB2LAMBDAV_HH
-#define EVTLAMBDAB2LAMBDAV_HH
-
-#include "EvtGenBase/EvtDecayProb.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtParticle.hh"
-
-#include
-#include
-
-namespace VID {
- enum VectorMesonType
- {
- JPSI,
- OMEGA,
- RHO,
- RHO_OMEGA_MIXING
- };
-}
-
-// Description:
-// Class to generate LambdaB -> Lambda(p pi) V(Vp Vm) decays
-// with V a vector meson such as J/psi (mu+mu-)
-// Rho (pi+pi-)
-// Omega (pi+pi-)
-// Rho-omega mixing (pi+pi-)
-//
-// DECAY : LambdaB -> Lambda + vector meson
-//
-// d(Sigma)
-// -------- = 1 + A*B*cos(theta) + 2*A*Re(C*exp(i*phi))*sin(theta)
-// d(Omega)
-//
-// with A (real) : lambdaB helicity asymmetry parameter
-// B (real) : lambdaB polarisation
-// C (complex) : lambdaB density matrix element rho+-
-//
-// cf : O. Leitner, Z.J Ajaltouni, E. Conte,
-// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
-
-class EvtLambdaB2LambdaV : public EvtDecayProb {
- public:
- EvtLambdaB2LambdaV();
-
- EvtDecayBase* clone() override;
-
- std::string getName() override;
- void init() override;
- void initProbMax() override;
- void decay( EvtParticle* lambdab ) override;
-
- private:
- //class name for report method
- std::string fname;
-
- //meson vector identity
- VID::VectorMesonType Vtype;
-
- //decay dynamics parameters
- double A;
- double B;
- EvtComplex C;
-
- //V mass generator method
- double getVMass( double MASS_LAMBDAB, double MASS_LAMBDA );
-
- //PDF generator method
- double BreitWignerRelPDF( double m, double _m0, double _g0 );
- double RhoOmegaMixingPDF( double m, double _mr, double _gr, double _mo,
- double _go );
-};
-
-//*******************************************************************
-//* *
-//* Class EvtLambda2PPiForLambdaB2LambdaV *
-//* *
-//*******************************************************************
-//
-// DECAY : Lambda -> p + pi-
-//
-// d(Sigma)
-// -------- = 1 + A*B*cos(theta) + 2*A*Re(D*exp(i*phi))*sin(theta)
-// d(Omega)
-//
-// with A (real) : lambda asymmetry parameter
-// B (real) : lambda polarisation
-// C (real) : lambdaB polarisation
-// D (complex) : lambda density matrix element rho+-
-//
-// cf : O. Leitner, Z.J Ajaltouni, E. Conte
-// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
-
-class EvtLambda2PPiForLambdaB2LambdaV : public EvtDecayProb {
- public:
- EvtLambda2PPiForLambdaB2LambdaV();
- EvtDecayBase* clone() override;
-
- std::string getName() override;
- void init() override;
- void initProbMax() override;
- void decay( EvtParticle* lambda ) override;
-
- private:
- //class name for report method
- std::string fname;
-
- //meson vector identity
- VID::VectorMesonType Vtype;
-
- //decay dynamics parameters
- double A;
- double B;
- double C;
- EvtComplex D;
-};
-
-//*******************************************************************
-//* *
-//* Class EvtV2VpVmForLambdaB2LambdaV *
-//* *
-//*******************************************************************
-//
-// DECAY : vector meson V -> Vp + Vm
-//
-// d(Sigma)
-// -------- = (1-3A)*cos(theta)^2 + (1+A) //leptonic decays
-// d(Omega)
-//
-// d(Sigma)
-// -------- = (3A-1)*cos(theta)^2 + (1-A) //hadronic decays
-// d(Omega)
-//
-// with A (real) : V density matrix element indicating the
-// probability to be longitudinally polarized
-//
-// cf : O. Leitner, Z.J Ajaltouni, E. Conte
-// PCCF RI 0601, ECT-05-15, LPNHE/2006-01, hep-ph/0602043
-
-class EvtV2VpVmForLambdaB2LambdaV : public EvtDecayProb {
- public:
- EvtV2VpVmForLambdaB2LambdaV();
-
- EvtDecayBase* clone() override;
-
- std::string getName() override;
- void init() override;
- void initProbMax() override;
- void decay( EvtParticle* V ) override;
-
- private:
- //class name for report method
- std::string fname;
-
- //meson vector identity
- VID::VectorMesonType Vtype;
- //decay dynamics parameters
- double A;
-};
-
-#endif
diff --git a/src/EvtGenModels/EvtLambdaB2LambdaV.cpp b/src/EvtGenModels/EvtLambdaB2LambdaV.cpp
deleted file mode 100644
index f541960..0000000
--- a/src/EvtGenModels/EvtLambdaB2LambdaV.cpp
+++ /dev/null
@@ -1,1409 +0,0 @@
-
-/***********************************************************************
-* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
-* *
-* This file is part of EvtGen. *
-* *
-* EvtGen is free software: you can redistribute it and/or modify *
-* it under the terms of the GNU General Public License as published by *
-* the Free Software Foundation, either version 3 of the License, or *
-* (at your option) any later version. *
-* *
-* EvtGen is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with EvtGen. If not, see . *
-***********************************************************************/
-
-#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
-
-#include "EvtGenBase/EvtGenKine.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtRandom.hh"
-#include "EvtGenBase/EvtReport.hh"
-
-#include
-#include
-#include
-#include
-
-using std::fstream;
-//************************************************************************
-//* *
-//* Class EvtLambdaB2LambdaV *
-//* *
-//************************************************************************
-//DECLARE_COMPONENT( EvtLambdaB2LambdaV );
-
-EvtLambdaB2LambdaV::EvtLambdaB2LambdaV()
-{
- //set facility name
- fname = "EvtGen.EvtLambdaB2LambdaV";
-}
-
-//------------------------------------------------------------------------
-// Method 'getName'
-//------------------------------------------------------------------------
-std::string EvtLambdaB2LambdaV::getName()
-{
- return "LAMBDAB2LAMBDAV";
-}
-
-//------------------------------------------------------------------------
-// Method 'clone'
-//------------------------------------------------------------------------
-EvtDecayBase* EvtLambdaB2LambdaV::clone()
-{
- return new EvtLambdaB2LambdaV;
-}
-
-//------------------------------------------------------------------------
-// Method 'initProbMax'
-//------------------------------------------------------------------------
-void EvtLambdaB2LambdaV::initProbMax()
-{
- //maximum (case where C=0)
- double Max = 1.0 + fabs( A * B ) + 2.0 * fabs( A * abs( C ) );
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " PDF max value : " << Max << std::endl;
- }
- setProbMax( Max );
-}
-
-//------------------------------------------------------------------------
-// Method 'init'
-//------------------------------------------------------------------------
-void EvtLambdaB2LambdaV::init()
-{
- bool antiparticle = false;
-
- //introduction
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << "*************************************************" << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << "* Event Model Class : EvtLambdaB2LambdaV *" << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << "*************************************************" << std::endl;
- }
-
- //check the number of arguments
- checkNArg( 2 );
-
- //check the number of daughters
- checkNDaug( 2 );
-
- const EvtId Id_mother = getParentId();
- const EvtId Id_daug1 = getDaug( 0 );
- const EvtId Id_daug2 = getDaug( 1 );
-
- //lambdab identification
- if ( Id_mother == EvtPDL::getId( "Lambda_b0" ) ) {
- antiparticle = false;
- } else if ( Id_mother == EvtPDL::getId( "anti-Lambda_b0" ) ) {
- antiparticle = true;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Mother is not a Lambda_b0 or an anti-Lambda_b0, but a "
- << EvtPDL::name( Id_mother ) << std::endl;
- abort();
- }
-
- //lambda
- if ( !( Id_daug1 == EvtPDL::getId( "Lambda0" ) && !antiparticle ) &&
- !( Id_daug1 == EvtPDL::getId( "anti-Lambda0" ) && antiparticle ) ) {
- if ( !antiparticle ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not a Lambda0, but a "
- << EvtPDL::name( Id_daug1 ) << std::endl;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not an anti-Lambda0, but a "
- << EvtPDL::name( Id_daug1 ) << std::endl;
- }
- abort();
- }
-
- //identification meson V
- if ( getArg( 1 ) == 1 )
- Vtype = VID::JPSI;
- else if ( getArg( 1 ) == 2 )
- Vtype = VID::RHO;
- else if ( getArg( 1 ) == 3 )
- Vtype = VID::OMEGA;
- else if ( getArg( 1 ) == 4 )
- Vtype = VID::RHO_OMEGA_MIXING;
- else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Vtype " << getArg( 1 ) << " is unknown" << std::endl;
- abort();
- }
-
- //check vector meson V
- if ( Id_daug2 == EvtPDL::getId( "J/psi" ) && Vtype == VID::JPSI ) {
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : Lambda_b0 -> Lambda J/psi"
- << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda J/psi"
- << std::endl;
- } else if ( Id_daug2 == EvtPDL::getId( "rho0" ) && Vtype == VID::RHO ) {
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : Lambda_b0 -> Lambda rho0"
- << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda rho0"
- << std::endl;
- } else if ( Id_daug2 == EvtPDL::getId( "omega" ) && Vtype == VID::OMEGA ) {
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : Lambda_b0 -> Lambda omega"
- << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : anti-Lambda_b0 -> anti-Lambda omega"
- << std::endl;
- } else if ( ( Id_daug2 == EvtPDL::getId( "omega" ) ||
- Id_daug2 == EvtPDL::getId( "rho0" ) ) &&
- Vtype == VID::RHO_OMEGA_MIXING ) {
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : "
- << "Lambda_b0 -> Lambda rho-omega-mixing" << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : "
- << "anti-Lambda_b0 -> anti-Lambda rho-omega-mixing" << std::endl;
- }
-
- else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter2 is not a J/psi, phi or rho0 but a "
- << EvtPDL::name( Id_daug2 ) << std::endl;
- abort();
- }
-
- //fix dynamics parameters
- B = (double)getArg( 0 );
- C = EvtComplex( ( sqrt( 2. ) / 2. ), ( sqrt( 2. ) / 2. ) );
- switch ( Vtype ) {
- case VID::JPSI:
- A = 0.490;
- break;
- case VID::RHO:
- case VID::OMEGA:
- case VID::RHO_OMEGA_MIXING:
- A = 0.194;
- break;
- default:
- A = 0;
- break;
- }
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " LambdaB decay parameters : " << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambda asymmetry A = " << A << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambdab polarisation B = " << B << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambdab density matrix rho+- C = " << C << std::endl;
- }
-}
-
-//------------------------------------------------------------------------
-// Method 'decay'
-//------------------------------------------------------------------------
-void EvtLambdaB2LambdaV::decay( EvtParticle* lambdab )
-{
- // Using formulae from hep-ph/0602043
-
- lambdab->makeDaughters( getNDaug(), getDaugs() );
-
- //get lambda and V particles
- EvtParticle* lambda = lambdab->getDaug( 0 );
- EvtParticle* V = lambdab->getDaug( 1 );
-
- //get resonance masses
- // - LAMBDAB -> mass given by the preceding class
- // - LAMBDA -> nominal mass
- // - V -> getVmass method
- double MASS_LAMBDAB = lambdab->mass();
- double MASS_LAMBDA = EvtPDL::getMeanMass( EvtPDL::getId( "Lambda0" ) );
- double MASS_V = getVMass( MASS_LAMBDAB, MASS_LAMBDA );
-
- //generate random angles
- double phi = EvtRandom::Flat( 0, 2 * EvtConst::pi );
- double theta = acos( EvtRandom::Flat( -1, +1 ) );
-
- // Get 4-vectors
- double E_lambda = ( MASS_LAMBDAB * MASS_LAMBDAB +
- MASS_LAMBDA * MASS_LAMBDA - MASS_V * MASS_V ) /
- ( 2 * MASS_LAMBDAB );
- double E_V = ( MASS_LAMBDAB * MASS_LAMBDAB + MASS_V * MASS_V -
- MASS_LAMBDA * MASS_LAMBDA ) /
- ( 2 * MASS_LAMBDAB );
- double P = sqrt( E_lambda * E_lambda - lambda->mass() * lambda->mass() );
-
- EvtVector4R P_lambdab = lambdab->getP4();
-
- double px = P_lambdab.get( 1 );
- double py = P_lambdab.get( 2 );
- double pz = P_lambdab.get( 3 );
- double E = P_lambdab.get( 0 );
-
- const double pxSq = px * px;
- const double pySq = py * py;
- const double pT = sqrt( pxSq + pySq );
- const double invPT = pT > 0.0 ? 1.0 / pT : 0.0;
- EvtVector4R q_lambdab2( E, pT, 0.0, pz );
-
- EvtVector4R q_lambdab3( E, q_lambdab2.get( 3 ), q_lambdab2.get( 1 ),
- q_lambdab2.get( 2 ) );
-
- EvtVector4R q_lambda0( E_lambda, P * sin( theta ) * cos( phi ),
- P * sin( theta ) * sin( phi ), P * cos( theta ) );
-
- EvtVector4R q_V0( E_V, -P * sin( theta ) * cos( phi ),
- -P * sin( theta ) * sin( phi ), -P * cos( theta ) );
-
- EvtVector4R q_lambda1( E_lambda, q_lambda0.get( 2 ), q_lambda0.get( 3 ),
- q_lambda0.get( 1 ) );
-
- EvtVector4R q_V1( E_V, q_V0.get( 2 ), q_V0.get( 3 ), q_V0.get( 1 ) );
-
- EvtVector4R q_lambda(
- E_lambda, invPT * ( px * q_lambda1.get( 1 ) - py * q_lambda1.get( 2 ) ),
- invPT * ( py * q_lambda1.get( 1 ) + px * q_lambda1.get( 2 ) ),
- q_lambda1.get( 3 ) );
-
- EvtVector4R q_V( E_V, invPT * ( px * q_V1.get( 1 ) - py * q_V1.get( 2 ) ),
- invPT * ( py * q_V1.get( 1 ) + px * q_V1.get( 2 ) ),
- q_V1.get( 3 ) );
-
- // Set particle 4-vectors
- lambda->init( getDaugs()[0], q_lambda );
- V->init( getDaugs()[1], q_V );
-
- // Find pdf (eq 11 in paper)
- double pdf = 1.0 + A * B * cos( theta ) +
- 2.0 * A * real( C * EvtComplex( cos( phi ), sin( phi ) ) ) *
- sin( theta );
-
- //set probability
- setProb( pdf );
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Angular angles : theta = " << theta << " ; phi = " << phi
- << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "E of lambdab: " << P_lambdab.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "E of lambdab: " << E << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " LambdaB px: " << px << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " LambdaB py: " << py << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " LambdaB pz: " << pz << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " LambdaB E: " << E << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 px: " << q_lambda0.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 py: " << q_lambda0.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 pz: " << q_lambda0.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 E: " << q_lambda0.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 px: " << q_lambda1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 py: " << q_lambda1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 pz: " << q_lambda1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 E: " << q_lambda1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda px: " << q_lambda.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda py: " << q_lambda.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda pz: " << q_lambda.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda E: " << q_lambda0.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 px: " << q_V0.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 py: " << q_V0.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 pz: " << q_V0.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 E: " << q_V0.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 px: " << q_V1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 py: " << q_V1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 pz: " << q_V1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 E: " << q_V1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V px: " << q_V.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V py: " << q_V.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V pz: " << q_V.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V E: " << q_V0.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " LambdaB decay pdf value : " << pdf << std::endl;
- }
-}
-
-//------------------------------------------------------------------------
-// Method 'BreitWignerRelPDF'
-//------------------------------------------------------------------------
-double EvtLambdaB2LambdaV::BreitWignerRelPDF( double m, double _m0, double _g0 )
-{
- double a = ( _m0 * _g0 ) * ( _m0 * _g0 );
- double b = ( m * m - _m0 * _m0 ) * ( m * m - _m0 * _m0 );
- return a / ( b + a );
-}
-
-//------------------------------------------------------------------------
-// Method 'RhoOmegaMixingPDF'
-//------------------------------------------------------------------------
-double EvtLambdaB2LambdaV::RhoOmegaMixingPDF( double m, double _mr, double _gr,
- double _mo, double _go )
-{
- double a = m * m - _mr * _mr;
- double b = m * m - _mo * _mo;
- double c = _gr * _mr;
- double d = _go * _mo;
- double re_pi = -3500e-6; //GeV^2
- double im_pi = -300e-6; //GeV^2
- double va_pi = re_pi + im_pi;
-
- //compute pdf value
- double f = 1 / ( a * a + c * c ) *
- ( 1 + ( va_pi * va_pi + 2 * b * re_pi + 2 * d * im_pi ) /
- ( b * b + d * d ) );
-
- //compute pdf max value
- a = 0;
- b = _mr * _mr - _mo * _mo;
-
- double maxi = 1 / ( a * a + c * c ) *
- ( 1 + ( va_pi * va_pi + 2 * b * re_pi + 2 * d * im_pi ) /
- ( b * b + d * d ) );
-
- return f / maxi;
-}
-
-//------------------------------------------------------------------------
-// Method 'getVMass'
-//------------------------------------------------------------------------
-double EvtLambdaB2LambdaV::getVMass( double MASS_LAMBDAB, double MASS_LAMBDA )
-{
- //JPSI case
- if ( Vtype == VID::JPSI ) {
- return EvtPDL::getMass( EvtPDL::getId( "J/psi" ) );
- }
-
- //RHO,OMEGA,MIXING case
- else {
- //parameters
- double MASS_RHO = EvtPDL::getMeanMass( EvtPDL::getId( "rho0" ) );
- double MASS_OMEGA = EvtPDL::getMeanMass( EvtPDL::getId( "omega" ) );
- double WIDTH_RHO = EvtPDL::getWidth( EvtPDL::getId( "rho0" ) );
- double WIDTH_OMEGA = EvtPDL::getWidth( EvtPDL::getId( "omega" ) );
- double MASS_PION = EvtPDL::getMeanMass( EvtPDL::getId( "pi-" ) );
- double _max = MASS_LAMBDAB - MASS_LAMBDA;
- double _min = 2 * MASS_PION;
-
- double mass = 0;
- bool test = false;
- int ntimes = 10000;
- do {
- double y = EvtRandom::Flat( 0, 1 );
-
- //generate mass
- mass = ( _max - _min ) * EvtRandom::Flat( 0, 1 ) + _min;
-
- //pdf calculate
- double f = 0;
- switch ( Vtype ) {
- case VID::RHO:
- f = BreitWignerRelPDF( mass, MASS_RHO, WIDTH_RHO );
- break;
- case VID::OMEGA:
- f = BreitWignerRelPDF( mass, MASS_OMEGA, WIDTH_OMEGA );
- break;
- case VID::RHO_OMEGA_MIXING:
- f = RhoOmegaMixingPDF( mass, MASS_RHO, WIDTH_RHO,
- MASS_OMEGA, WIDTH_OMEGA );
- break;
- default:
- f = 1;
- break;
- }
-
- ntimes--;
- if ( y < f )
- test = true;
- } while ( ntimes && !test );
-
- //looping 10000 times
- if ( ntimes == 0 ) {
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "Tried accept/reject:10000"
- << " times, and rejected all the times!" << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "Is therefore accepting the last event!" << std::endl;
- }
-
- //return V particle mass
- return mass;
- }
-}
-
-//************************************************************************
-//* *
-//* Class EvtLambda2PPiForLambdaB2LambdaV *
-//* *
-//************************************************************************
-
-//------------------------------------------------------------------------
-// Constructor
-//------------------------------------------------------------------------
-EvtLambda2PPiForLambdaB2LambdaV::EvtLambda2PPiForLambdaB2LambdaV()
-{
- //set facility name
- fname = "EvtGen.EvtLambda2PPiForLambdaB2LambdaV";
-}
-
-//------------------------------------------------------------------------
-// Method 'getName'
-//------------------------------------------------------------------------
-std::string EvtLambda2PPiForLambdaB2LambdaV::getName()
-{
- return "LAMBDA2PPIFORLAMBDAB2LAMBDAV";
-}
-
-//------------------------------------------------------------------------
-// Method 'clone'
-//------------------------------------------------------------------------
-EvtDecayBase* EvtLambda2PPiForLambdaB2LambdaV::clone()
-{
- return new EvtLambda2PPiForLambdaB2LambdaV;
-}
-
-//------------------------------------------------------------------------
-// Method 'initProbMax'
-//------------------------------------------------------------------------
-void EvtLambda2PPiForLambdaB2LambdaV::initProbMax()
-{
- double Max = 1.0 + fabs( A * B ) + 2.0 * fabs( A * abs( D ) );
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " PDF max value : " << Max << std::endl;
- }
- setProbMax( Max );
-}
-
-//------------------------------------------------------------------------
-// Method 'init'
-//------------------------------------------------------------------------
-void EvtLambda2PPiForLambdaB2LambdaV::init()
-{
- bool antiparticle = false;
-
- if ( verbose() ) {
- //introduction
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " ***********************************************************"
- << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " * Event Model Class : EvtLambda2PPiForLambdaB2LambdaV *"
- << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " ***********************************************************"
- << std::endl;
- }
-
- //check the number of arguments
- checkNArg( 2 );
-
- //check the number of daughters
- checkNDaug( 2 );
-
- const EvtId Id_mother = getParentId();
- const EvtId Id_daug1 = getDaug( 0 );
- const EvtId Id_daug2 = getDaug( 1 );
-
- //lambda identification
- if ( Id_mother == EvtPDL::getId( "Lambda0" ) ) {
- antiparticle = false;
- } else if ( Id_mother == EvtPDL::getId( "anti-Lambda0" ) ) {
- antiparticle = true;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Mother is not a Lambda0 or an anti-Lambda0, but a "
- << EvtPDL::name( Id_mother ) << std::endl;
- abort();
- }
-
- //proton identification
- if ( !( Id_daug1 == EvtPDL::getId( "p+" ) && !antiparticle ) &&
- !( Id_daug1 == EvtPDL::getId( "anti-p-" ) && antiparticle ) ) {
- if ( !antiparticle ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not a p+, but a " << EvtPDL::name( Id_daug1 )
- << std::endl;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not an anti-p-, but a "
- << EvtPDL::name( Id_daug1 ) << std::endl;
- }
- abort();
- }
-
- //pion identification
- if ( !( Id_daug2 == EvtPDL::getId( "pi-" ) && !antiparticle ) &&
- !( Id_daug2 == EvtPDL::getId( "pi+" ) && antiparticle ) ) {
- if ( !antiparticle ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter2 is not a p-, but a " << EvtPDL::name( Id_daug1 )
- << std::endl;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter2 is not an p+, but a " << EvtPDL::name( Id_daug1 )
- << std::endl;
- }
- abort();
- }
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : Lambda0 -> p+ pi-"
- << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : Anti-Lambda0 -> anti-p- pi+"
- << std::endl;
-
- //identification meson V
- if ( getArg( 1 ) == 1 ) {
- Vtype = VID::JPSI;
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : Lambda_b0 -> Lambda J/psi" << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : anti-Lambda_b0 -> anti-Lambda J/psi" << std::endl;
- } else if ( getArg( 1 ) == 2 ) {
- Vtype = VID::RHO;
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : Lambda_b0 -> Lambda rho0" << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : anti-Lambda_b0 -> anti-Lambda rho0" << std::endl;
- } else if ( getArg( 1 ) == 3 ) {
- Vtype = VID::OMEGA;
- if ( !antiparticle )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : Lambda_b0 -> Lambda omega" << std::endl;
- else
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : anti-Lambda_b0 -> anti-Lambda omega" << std::endl;
- } else if ( getArg( 1 ) == 4 ) {
- Vtype = VID::RHO_OMEGA_MIXING;
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Vtype " << getArg( 1 ) << " is unknown" << std::endl;
- if ( !antiparticle ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : Lambda_b0 -> Lambda rho-omega-mixing" << std::endl;
- } else {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " From : anti-Lambda_b0 -> anti-Lambda rho-omega-mixing"
- << std::endl;
- }
- abort();
- }
-
- //constants
- A = 0.642;
- C = (double)getArg( 0 );
- switch ( Vtype ) {
- case VID::JPSI:
- B = -0.167;
- D = EvtComplex( 0.25, 0.0 );
- break;
- case VID::RHO:
- case VID::OMEGA:
- case VID::RHO_OMEGA_MIXING:
- B = -0.21;
- D = EvtComplex( 0.31, 0.0 );
- break;
- default:
- B = 0;
- D = EvtComplex( 0, 0 );
- break;
- }
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Lambda decay parameters : " << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - proton asymmetry A = " << A << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambda polarisation B = " << B << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambdaB polarisation C = " << C << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - lambda density matrix rho+- D = " << D << std::endl;
- }
-
- // Update max prob
- initProbMax();
-}
-
-//------------------------------------------------------------------------
-// Method 'decay'
-//------------------------------------------------------------------------
-void EvtLambda2PPiForLambdaB2LambdaV::decay( EvtParticle* lambda )
-{
- lambda->makeDaughters( getNDaug(), getDaugs() );
-
- //get proton and pion particles
- EvtParticle* proton = lambda->getDaug( 0 );
- EvtParticle* pion = lambda->getDaug( 1 );
-
- //get resonance masses
- // - LAMBDA -> mass given by EvtLambdaB2LambdaV class
- // - PROTON & PION -> nominal mass
- double MASS_LAMBDA = lambda->mass();
- double MASS_PROTON = EvtPDL::getMeanMass( EvtPDL::getId( "p+" ) );
- double MASS_PION = EvtPDL::getMeanMass( EvtPDL::getId( "pi-" ) );
-
- //generate random angles
- double phi = EvtRandom::Flat( 0.0, 2.0 * EvtConst::pi );
- double theta = acos( EvtRandom::Flat( -1.0, 1.0 ) );
-
- // Find 4-vectors
- double E_proton = ( MASS_LAMBDA * MASS_LAMBDA + MASS_PROTON * MASS_PROTON -
- MASS_PION * MASS_PION ) /
- ( 2 * MASS_LAMBDA );
- double E_pion = ( MASS_LAMBDA * MASS_LAMBDA + MASS_PION * MASS_PION -
- MASS_PROTON * MASS_PROTON ) /
- ( 2 * MASS_LAMBDA );
- double P = sqrt( E_proton * E_proton - proton->mass() * proton->mass() );
-
- EvtVector4R P_lambda = lambda->getP4();
- EvtParticle* Mother_lambda = lambda->getParent();
- EvtVector4R lambdab = Mother_lambda->getP4();
-
- double E_lambda = P_lambda.get( 0 );
- double px_M = lambdab.get( 1 );
- double py_M = lambdab.get( 2 );
- double pz_M = lambdab.get( 3 );
- double E_M = lambdab.get( 0 );
-
- const double px_MSq = px_M * px_M;
- const double py_MSq = py_M * py_M;
- const double pT_M = sqrt( px_MSq + py_MSq );
- const double invPT_M = pT_M > 0.0 ? 1.0 / pT_M : 0.0;
-
- EvtVector4R q_lambdab2( E_M, pT_M, 0.0, pz_M );
-
- EvtVector4R q_lambdab3( E_M, q_lambdab2.get( 3 ), q_lambdab2.get( 1 ),
- q_lambdab2.get( 2 ) );
-
- EvtVector4R q_lambda1(
- E_lambda,
- invPT_M * ( px_M * P_lambda.get( 1 ) + py_M * P_lambda.get( 2 ) ),
- invPT_M * ( -py_M * P_lambda.get( 1 ) + px_M * P_lambda.get( 2 ) ),
- P_lambda.get( 3 ) );
-
- EvtVector4R q_lambda2( E_lambda, q_lambda1.get( 3 ), q_lambda1.get( 1 ),
- q_lambda1.get( 2 ) );
-
- const double E = q_lambda2.get( 0 );
- const double px = q_lambda2.get( 1 );
- const double py = q_lambda2.get( 2 );
- const double pz = q_lambda2.get( 3 );
- const double pxSq = px * px;
- const double pySq = py * py;
- const double pzSq = pz * pz;
- const double pTSq = pxSq + pySq;
- const double p = sqrt( pTSq + pzSq );
- const double invP = p > 0.0 ? 1.0 / p : 0.0;
- const double invPSq = invP * invP;
- const double pT = sqrt( pTSq );
-
- //EvtVector4R q_lambda4( E, 0.0, 0.0, p );
- EvtVector4R q_lambda4( E, pT, 0.0, pz );
-
- EvtVector4R q_proton1( E_proton, P * sin( theta ) * cos( phi ),
- P * sin( theta ) * sin( phi ), P * cos( theta ) );
- EvtVector4R q_pion1( E_pion, -P * sin( theta ) * cos( phi ),
- -P * sin( theta ) * sin( phi ), -P * cos( theta ) );
-
- const double qx_proton1 = q_proton1.get( 1 );
- const double qy_proton1 = q_proton1.get( 2 );
- const double qz_proton1 = q_proton1.get( 3 );
-
- EvtVector4R q_proton3( E_proton,
- invPSq * ( qx_proton1 * px * pz - qy_proton1 * py * p +
- qz_proton1 * pT * px ),
- invPSq * ( qx_proton1 * py * pz + qy_proton1 * px * p +
- qz_proton1 * pT * py ),
- invP * ( -qx_proton1 * pT + qz_proton1 * pz ) );
-
- const double qx_pion1 = q_pion1.get( 1 );
- const double qy_pion1 = q_pion1.get( 2 );
- const double qz_pion1 = q_pion1.get( 3 );
-
- EvtVector4R q_pion3(
- E_pion,
- invPSq * ( qx_pion1 * px * pz - qy_pion1 * py * p + qz_pion1 * pT * px ),
- invPSq * ( qx_pion1 * py * pz + qy_pion1 * px * p + qz_pion1 * pT * py ),
- invP * ( -qx_pion1 * pT + qz_pion1 * pz ) );
-
- EvtVector4R q_proton5( q_proton3.get( 0 ), q_proton3.get( 2 ),
- q_proton3.get( 3 ), q_proton3.get( 1 ) );
-
- EvtVector4R q_pion5( q_pion3.get( 0 ), q_pion3.get( 2 ), q_pion3.get( 3 ),
- q_pion3.get( 1 ) );
-
- EvtVector4R q_proton(
- q_proton5.get( 0 ),
- invPT_M * ( px_M * q_proton5.get( 1 ) - py_M * q_proton5.get( 2 ) ),
- invPT_M * ( py_M * q_proton5.get( 1 ) + px_M * q_proton5.get( 2 ) ),
- q_proton5.get( 3 ) );
-
- EvtVector4R q_pion(
- q_pion5.get( 0 ),
- invPT_M * ( px_M * q_pion5.get( 1 ) - py_M * q_pion5.get( 2 ) ),
- invPT_M * ( py_M * q_pion5.get( 1 ) + px_M * q_pion5.get( 2 ) ),
- q_pion5.get( 3 ) );
-
- // Set particle 4 vectors
- proton->init( getDaugs()[0], q_proton );
- pion->init( getDaugs()[1], q_pion );
-
- //compute pdf
- double pdf = 1.0 + A * B * cos( theta ) +
- 2.0 * A * real( D * EvtComplex( cos( phi ), sin( phi ) ) ) *
- sin( theta );
- //set probability
- setProb( pdf );
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Angular angles : theta = " << theta << " ; phi = " << phi
- << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab px: " << px_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab py: " << py_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab pz: " << pz_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab E: " << E_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 px: " << q_lambdab2.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 py: " << q_lambdab2.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 pz: " << q_lambdab2.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 E: " << q_lambdab2.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 px: " << q_lambdab3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 py: " << q_lambdab3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 pz: " << q_lambdab3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 px: " << P_lambda.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 py: " << P_lambda.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 pz: " << P_lambda.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 0 E: " << P_lambda.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 px: " << q_lambda1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 py: " << q_lambda1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 pz: " << q_lambda1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 1 E: " << q_lambda1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 2 px: " << q_lambda2.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 2 py: " << q_lambda2.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 2 pz: " << q_lambda2.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda 2 E: " << q_lambda2.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda px: " << px << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda py: " << py << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambda pz: " << pz << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 1 px: " << q_pion1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 1 py: " << q_pion1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 1 pz: " << q_pion1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 1 E: " << q_pion1.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 3 px: " << q_pion3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 3 px: " << q_pion3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 3 py: " << q_pion3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 3 pz: " << q_pion3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 3 E: " << q_pion3.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 5 px: " << q_pion5.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 5 py: " << q_pion5.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 5 pz: " << q_pion5.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion 5 E: " << q_pion5.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 1 px: " << q_proton1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 1 py: " << q_proton1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 1 pz: " << q_proton1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 1 E: " << q_proton1.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 3 px: " << q_proton3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 3 py: " << q_proton3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 3 pz: " << q_proton3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 3 E: " << q_proton3.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 5 px: " << q_proton5.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 5 py: " << q_proton5.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 5 pz: " << q_proton5.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton 5 E: " << q_proton5.get( 0 ) << std::endl;
-
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton px: " << q_proton.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " proton py: " << q_proton.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "proton pz: " << q_proton.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion px: " << q_pion.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion py: " << q_pion.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " pion pz: " << q_pion.get( 3 ) << std::endl;
-
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Lambda decay pdf value : " << pdf << std::endl;
- }
-}
-
-//************************************************************************
-//* *
-//* Class EvtV2VpVmForLambdaB2LambdaV *
-//* *
-//************************************************************************
-
-//------------------------------------------------------------------------
-// Constructor
-//------------------------------------------------------------------------
-EvtV2VpVmForLambdaB2LambdaV::EvtV2VpVmForLambdaB2LambdaV()
-{
- //set facility name
- fname = "EvtGen.EvtV2VpVmForLambdaB2LambdaV";
-}
-
-//------------------------------------------------------------------------
-// Method 'getName'
-//------------------------------------------------------------------------
-std::string EvtV2VpVmForLambdaB2LambdaV::getName()
-{
- return "V2VPVMFORLAMBDAB2LAMBDAV";
-}
-
-//------------------------------------------------------------------------
-// Method 'clone'
-//------------------------------------------------------------------------
-EvtDecayBase* EvtV2VpVmForLambdaB2LambdaV::clone()
-{
- return new EvtV2VpVmForLambdaB2LambdaV;
-}
-
-//------------------------------------------------------------------------
-// Method 'initProbMax'
-//------------------------------------------------------------------------
-void EvtV2VpVmForLambdaB2LambdaV::initProbMax()
-{
- //maximum
- double Max = 0.0;
- if ( Vtype == VID::JPSI ) {
- if ( ( 1.0 - 3.0 * A ) > 0.0 )
- Max = 2.0 * ( 1.0 - A );
- else
- Max = 1.0 + A;
- } else {
- if ( ( 3.0 * A - 1.0 ) >= 0.0 )
- Max = 2.0 * A;
- else
- Max = 1.0 - A;
- }
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " PDF max value : " << Max << std::endl;
- }
- setProbMax( Max );
-}
-
-//------------------------------------------------------------------------
-// Method 'init'
-//------------------------------------------------------------------------
-void EvtV2VpVmForLambdaB2LambdaV::init()
-{
- if ( verbose() ) {
- //introduction
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " ***********************************************************"
- << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " * Event Model Class : EvtV2VpVmForLambdaB2LambdaV *"
- << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " ***********************************************************"
- << std::endl;
- }
-
- //check the number of arguments
- checkNArg( 2 );
-
- //check the number of daughters
- checkNDaug( 2 );
-
- const EvtId Id_mother = getParentId();
- const EvtId Id_daug1 = getDaug( 0 );
- const EvtId Id_daug2 = getDaug( 1 );
-
- //identification meson V
- if ( getArg( 1 ) == 1 )
- Vtype = VID::JPSI;
- else if ( getArg( 1 ) == 2 )
- Vtype = VID::RHO;
- else if ( getArg( 1 ) == 3 )
- Vtype = VID::OMEGA;
- else if ( getArg( 1 ) == 4 )
- Vtype = VID::RHO_OMEGA_MIXING;
- else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Vtype " << getArg( 1 ) << " is unknown" << std::endl;
- abort();
- }
-
- //vector meson V
- if ( Id_mother == EvtPDL::getId( "J/psi" ) && Vtype == VID::JPSI ) {
- } else if ( Id_mother == EvtPDL::getId( "omega" ) && Vtype == VID::OMEGA ) {
- } else if ( Id_mother == EvtPDL::getId( "rho0" ) && Vtype == VID::RHO ) {
- } else if ( ( Id_mother == EvtPDL::getId( "rho0" ) ||
- Id_mother == EvtPDL::getId( "omega" ) ) &&
- Vtype == VID::RHO_OMEGA_MIXING ) {
- } else {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Mother is not a J/psi, phi or rho0 but a "
- << EvtPDL::name( Id_mother ) << std::endl;
- abort();
- }
-
- //daughters for each V possibility
- switch ( Vtype ) {
- case VID::JPSI:
- if ( Id_daug1 != EvtPDL::getId( "mu+" ) ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not a mu+, but a "
- << EvtPDL::name( Id_daug1 ) << std::endl;
- abort();
- }
- if ( Id_daug2 != EvtPDL::getId( "mu-" ) ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter2 is not a mu-, but a "
- << EvtPDL::name( Id_daug2 ) << std::endl;
- abort();
- }
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : J/psi -> mu+ mu-"
- << std::endl;
- break;
-
- case VID::RHO:
- case VID::OMEGA:
- case VID::RHO_OMEGA_MIXING:
- if ( Id_daug1 != EvtPDL::getId( "pi+" ) ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter1 is not a pi+, but a "
- << EvtPDL::name( Id_daug1 ) << std::endl;
- abort();
- }
- if ( Id_daug2 != EvtPDL::getId( "pi-" ) ) {
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << " Daughter2 is not a pi-, but a "
- << EvtPDL::name( Id_daug2 ) << std::endl;
- abort();
- }
- if ( Vtype == VID::RHO )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : rho0 -> pi+ pi-"
- << std::endl;
- if ( Vtype == VID::OMEGA )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : omega -> pi+ pi-"
- << std::endl;
- if ( Vtype == VID::RHO_OMEGA_MIXING )
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Decay mode successfully initialized : rho-omega mixing -> pi+ pi-"
- << std::endl;
- break;
-
- default:
- EvtGenReport( EVTGEN_ERROR, fname.c_str() )
- << "No decay mode chosen ! " << std::endl;
- abort();
- break;
- }
-
- //fix dynamics parameters
- switch ( Vtype ) {
- case VID::JPSI:
- A = 0.66;
- break;
- case VID::RHO:
- case VID::OMEGA:
- case VID::RHO_OMEGA_MIXING:
- A = 0.79;
- break;
- default:
- A = 0;
- break;
- }
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " V decay parameters : " << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " - V density matrix rho00 A = " << A << std::endl;
- }
-}
-
-//------------------------------------------------------------------------
-// Method 'decay'
-//------------------------------------------------------------------------
-void EvtV2VpVmForLambdaB2LambdaV::decay( EvtParticle* V )
-{
- V->makeDaughters( getNDaug(), getDaugs() );
-
- //get Vp and Vm particles
- EvtParticle* Vp = V->getDaug( 0 );
- EvtParticle* Vm = V->getDaug( 1 );
-
- //get resonance masses
- // - V -> mass given by EvtLambdaB2LambdaV class
- // - Vp & Vm -> nominal mass
- double MASS_V = V->mass();
- double MASS_VM = 0;
- switch ( Vtype ) {
- case VID::JPSI:
- MASS_VM = EvtPDL::getMeanMass( EvtPDL::getId( "mu-" ) );
- break;
- case VID::RHO:
- case VID::OMEGA:
- case VID::RHO_OMEGA_MIXING:
- MASS_VM = EvtPDL::getMeanMass( EvtPDL::getId( "pi-" ) );
- break;
- default:
- MASS_VM = 0;
- break;
- }
- double MASS_VP = MASS_VM;
-
- //generate random angles
- double phi = EvtRandom::Flat( 0, 2 * EvtConst::pi );
- double theta = acos( EvtRandom::Flat( -1, +1 ) );
-
- // Get resonance 4-vectors
- double E_Vp = ( MASS_V * MASS_V + MASS_VP * MASS_VP - MASS_VM * MASS_VM ) /
- ( 2 * MASS_V );
- double E_Vm = ( MASS_V * MASS_V + MASS_VM * MASS_VM - MASS_VP * MASS_VP ) /
- ( 2 * MASS_V );
- double P = sqrt( E_Vp * E_Vp - Vp->mass() * Vp->mass() );
-
- EvtVector4R P_V = V->getP4();
- EvtParticle* Mother_V = V->getParent();
- EvtVector4R lambdab = Mother_V->getP4();
-
- const double E_V = ( P_V.get( 0 ) );
- const double px_M = lambdab.get( 1 );
- const double py_M = lambdab.get( 2 );
- const double pz_M = lambdab.get( 3 );
- const double E_M = lambdab.get( 0 );
- const double px_MSq = px_M * px_M;
- const double py_MSq = py_M * py_M;
- const double pT_MSq = px_MSq + py_MSq;
- const double pT_M = sqrt( pT_MSq );
- const double invPT_M = pT_M > 0.0 ? 1.0 / pT_M : 0.0;
-
- EvtVector4R q_lambdab2( E_M, pT_M, 0.0, pz_M );
-
- EvtVector4R q_lambdab3( E_M, q_lambdab2.get( 3 ), q_lambdab2.get( 1 ),
- q_lambdab2.get( 2 ) );
-
- EvtVector4R q_V1( E_V,
- invPT_M * ( px_M * P_V.get( 1 ) + py_M * P_V.get( 2 ) ),
- invPT_M * ( -py_M * P_V.get( 1 ) + px_M * P_V.get( 2 ) ),
- P_V.get( 3 ) );
-
- EvtVector4R q_V2( E_V, q_V1.get( 3 ), q_V1.get( 1 ), q_V1.get( 2 ) );
-
- const double px = -q_V2.get( 1 );
- const double py = -q_V2.get( 2 );
- const double pz = -q_V2.get( 3 );
- const double pxSq = px * px;
- const double pySq = py * py;
- const double pzSq = pz * pz;
- const double pTSq = pxSq + pySq;
- const double pSq = pTSq + pzSq;
- const double p = sqrt( pSq );
- const double invP = p > 0.0 ? 1.0 / p : 0.0;
- const double pT = sqrt( pTSq );
- const double invPT = pT > 0.0 ? 1.0 / pT : 0.0;
-
- EvtVector4R q_V4( q_V2.get( 0 ), 0.0, pT, p );
-
- EvtVector4R q_Vp1( E_Vp, P * sin( theta ) * cos( phi ),
- P * sin( theta ) * sin( phi ), P * cos( theta ) );
- EvtVector4R q_Vm1( E_Vm, -P * sin( theta ) * cos( phi ),
- -P * sin( theta ) * sin( phi ), -P * cos( theta ) );
-
- EvtVector4R q_Vp3( q_Vp1.get( 0 ),
- invP * invPT *
- ( q_Vp1.get( 1 ) * px * pz + q_Vp1.get( 2 ) * py * p -
- q_Vp1.get( 3 ) * pT * px ),
- invP * invPT *
- ( q_Vp1.get( 1 ) * py * pz - q_Vp1.get( 2 ) * px * p -
- q_Vp1.get( 3 ) * pT * py ),
- -invP * ( q_Vp1.get( 1 ) * pT + q_Vp1.get( 3 ) * pz ) );
-
- EvtVector4R q_Vm3( q_Vm1.get( 0 ),
- invP * invPT *
- ( q_Vm1.get( 1 ) * px * pz + q_Vm1.get( 2 ) * py * p -
- q_Vm1.get( 3 ) * pT * px ),
- invP * invPT *
- ( q_Vm1.get( 1 ) * py * pz - q_Vm1.get( 2 ) * px * p -
- q_Vm1.get( 3 ) * pT * py ),
- -invP * ( q_Vm1.get( 1 ) * pT + q_Vm1.get( 3 ) * pz ) );
-
- EvtVector4R q_Vp5( q_Vp3.get( 0 ), q_Vp3.get( 2 ), q_Vp3.get( 3 ),
- q_Vp3.get( 1 ) );
-
- EvtVector4R q_Vm5( q_Vm3.get( 0 ), q_Vm3.get( 2 ), q_Vm3.get( 3 ),
- q_Vm3.get( 1 ) );
-
- EvtVector4R q_Vp( q_Vp5.get( 0 ),
- invPT_M * ( px_M * q_Vp5.get( 1 ) - py_M * q_Vp5.get( 2 ) ),
- invPT_M * ( py_M * q_Vp5.get( 1 ) + px_M * q_Vp5.get( 2 ) ),
- q_Vp5.get( 3 ) );
-
- EvtVector4R q_Vm( q_Vm5.get( 0 ),
- invPT_M * ( px_M * q_Vm5.get( 1 ) - py_M * q_Vm5.get( 2 ) ),
- invPT_M * ( py_M * q_Vm5.get( 1 ) + px_M * q_Vm5.get( 2 ) ),
- q_Vm5.get( 3 ) );
-
- // Set particle 4-momenta
- Vp->init( getDaugs()[0], q_Vp );
- Vm->init( getDaugs()[1], q_Vm );
-
- //compute pdf
- double pdf = 0.0;
- if ( Vtype == VID::JPSI ) {
- //leptonic case
- pdf = ( 1.0 - 3.0 * A ) * cos( theta ) * cos( theta ) + ( 1.0 + A );
- } else {
- //hadronic case
- pdf = ( 3.0 * A - 1.0 ) * cos( theta ) * cos( theta ) + ( 1.0 - A );
- }
-
- //set probability
- setProb( pdf );
-
- if ( verbose() ) {
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " Angular angles : theta = " << theta << " ; phi = " << phi
- << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab px: " << px_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab py: " << py_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab pz: " << pz_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab E: " << E_M << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 px: " << q_lambdab2.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 py: " << q_lambdab2.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 pz: " << q_lambdab2.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab2 E: " << q_lambdab2.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 px: " << q_lambdab3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 py: " << q_lambdab3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 pz: " << q_lambdab3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Lambdab3 E: " << q_lambdab3.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 px: " << P_V.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 py: " << P_V.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 pz: " << P_V.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 0 E: " << P_V.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 px: " << q_V1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 py: " << q_V1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 pz: " << q_V1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 1 E: " << q_V1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 2 px: " << q_V2.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 2 py: " << q_V2.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 2 pz: " << q_V2.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V 2 E: " << q_V2.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V px: " << px << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V py: " << py << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " V pz: " << pz << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 1 px: " << q_Vm1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 1 py: " << q_Vm1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 1 pz: " << q_Vm1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 1 E: " << q_Vm1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 3 px: " << q_Vm3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 3 px: " << q_Vm3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 3 py: " << q_Vm3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 3 pz: " << q_Vm3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 3 E: " << q_Vm3.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 5 px: " << q_Vm5.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 5 py: " << q_Vm5.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 5 pz: " << q_Vm5.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm 5 E: " << q_Vm5.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 1 px: " << q_Vp1.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 1 py: " << q_Vp1.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 1 pz: " << q_Vp1.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 1 E: " << q_Vp1.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 3 px: " << q_Vp3.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 3 py: " << q_Vp3.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 3 pz: " << q_Vp3.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 3 E: " << q_Vp3.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 5 px: " << q_Vp5.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 5 py: " << q_Vp5.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 5 pz: " << q_Vp5.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp 5 E: " << q_Vp5.get( 0 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp px: " << q_Vp.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vp py: " << q_Vp.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << "Vp pz: " << q_Vp.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm px: " << q_Vm.get( 1 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm py: " << q_Vm.get( 2 ) << std::endl;
- EvtGenReport( EVTGEN_INFO, fname.c_str() )
- << " Vm pz: " << q_Vm.get( 3 ) << std::endl;
- EvtGenReport( EVTGEN_DEBUG, fname.c_str() )
- << " V decay pdf value : " << pdf << std::endl;
- }
-}
diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp
index 733f8ee..de25699 100644
--- a/src/EvtGenModels/EvtModelReg.cpp
+++ b/src/EvtGenModels/EvtModelReg.cpp
@@ -1,345 +1,341 @@
/***********************************************************************
* Copyright 1998-2021 CERN for the benefit of the EvtGen authors *
* *
* This file is part of EvtGen. *
* *
* EvtGen is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* EvtGen is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with EvtGen. If not, see . *
***********************************************************************/
#include "EvtGenModels/EvtModelReg.hh"
#include "EvtGenBase/EvtModel.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtPatches.hh"
#include "EvtGenModels/EvtBBScalar.hh"
#include "EvtGenModels/EvtBLLNuL.hh"
#include "EvtGenModels/EvtBTo3piCP.hh"
#include "EvtGenModels/EvtBTo4piCP.hh"
#include "EvtGenModels/EvtBToDDalitzCPK.hh"
#include "EvtGenModels/EvtBToDiBaryonlnupQCD.hh"
#include "EvtGenModels/EvtBToKpipiCP.hh"
#include "EvtGenModels/EvtBToPlnuBK.hh"
#include "EvtGenModels/EvtBToVlnuBall.hh"
#include "EvtGenModels/EvtBToXElNu.hh"
#include "EvtGenModels/EvtBaryonPCR.hh"
#include "EvtGenModels/EvtBcBsNPi.hh"
#include "EvtGenModels/EvtBcBsStarNPi.hh"
#include "EvtGenModels/EvtBcPsiNPi.hh"
#include "EvtGenModels/EvtBcSMuNu.hh"
#include "EvtGenModels/EvtBcTMuNu.hh"
#include "EvtGenModels/EvtBcToNPi.hh"
#include "EvtGenModels/EvtBcVHad.hh"
#include "EvtGenModels/EvtBcVMuNu.hh"
#include "EvtGenModels/EvtBcVNpi.hh"
#include "EvtGenModels/EvtBcVPPHad.hh"
#include "EvtGenModels/EvtBsMuMuKK.hh"
#include "EvtGenModels/EvtBsquark.hh"
#include "EvtGenModels/EvtBto2piCPiso.hh"
#include "EvtGenModels/EvtBtoKD3P.hh"
#include "EvtGenModels/EvtBtoKpiCPiso.hh"
#include "EvtGenModels/EvtBtoXsEtap.hh"
#include "EvtGenModels/EvtBtoXsgamma.hh"
#include "EvtGenModels/EvtBtoXsll.hh"
#include "EvtGenModels/EvtCBTo3piMPP.hh"
#include "EvtGenModels/EvtCBTo3piP00.hh"
#include "EvtGenModels/EvtD0gammaDalitz.hh"
#include "EvtGenModels/EvtD0mixDalitz.hh"
#include "EvtGenModels/EvtDDalitz.hh"
#include "EvtGenModels/EvtDMix.hh"
#include "EvtGenModels/EvtDToKpienu.hh"
#include "EvtGenModels/EvtEtaDalitz.hh"
#include "EvtGenModels/EvtEtaLLPiPi.hh"
#include "EvtGenModels/EvtFlatQ2.hh"
#include "EvtGenModels/EvtFlatSqDalitz.hh"
#include "EvtGenModels/EvtFourBodyPhsp.hh"
#include "EvtGenModels/EvtGenericDalitz.hh"
#include "EvtGenModels/EvtGoityRoberts.hh"
#include "EvtGenModels/EvtHQET.hh"
#include "EvtGenModels/EvtHQET2.hh"
#include "EvtGenModels/EvtHelAmp.hh"
#include "EvtGenModels/EvtHypNonLepton.hh"
#include "EvtGenModels/EvtISGW.hh"
#include "EvtGenModels/EvtISGW2.hh"
#include "EvtGenModels/EvtKKLambdaC.hh"
#include "EvtGenModels/EvtKStopizmumu.hh"
#include "EvtGenModels/EvtKstarnunu.hh"
#include "EvtGenModels/EvtKstarstargamma.hh"
#include "EvtGenModels/EvtLNuGamma.hh"
-#include "EvtGenModels/EvtLambdaB2LambdaV.hh"
#include "EvtGenModels/EvtLambdaP_BarGamma.hh"
#include "EvtGenModels/EvtLambdacPHH.hh"
#include "EvtGenModels/EvtLb2Baryonlnu.hh"
#include "EvtGenModels/EvtLb2plnuLCSR.hh"
#include "EvtGenModels/EvtLb2plnuLQCD.hh"
#include "EvtGenModels/EvtMelikhov.hh"
#include "EvtGenModels/EvtOmegaDalitz.hh"
#include "EvtGenModels/EvtPVVCPLH.hh"
#include "EvtGenModels/EvtPartWave.hh"
#include "EvtGenModels/EvtPhiDalitz.hh"
#include "EvtGenModels/EvtPhsp.hh"
#include "EvtGenModels/EvtPhspDecaytimeCut.hh"
#include "EvtGenModels/EvtPhspFlatLifetime.hh"
#include "EvtGenModels/EvtPi0Dalitz.hh"
#include "EvtGenModels/EvtPropSLPole.hh"
#include "EvtGenModels/EvtPsi2JpsiPiPi.hh"
#include "EvtGenModels/EvtPto3P.hh"
#include "EvtGenModels/EvtRareLbToLll.hh"
#include "EvtGenModels/EvtSLBKPole.hh"
#include "EvtGenModels/EvtSLN.hh"
#include "EvtGenModels/EvtSLPole.hh"
#include "EvtGenModels/EvtSSDCP.hh"
#include "EvtGenModels/EvtSSD_DirectCP.hh"
#include "EvtGenModels/EvtSSSCP.hh"
#include "EvtGenModels/EvtSSSCPT.hh"
#include "EvtGenModels/EvtSSSCPpng.hh"
#include "EvtGenModels/EvtSTS.hh"
#include "EvtGenModels/EvtSTSCP.hh"
#include "EvtGenModels/EvtSVP.hh"
#include "EvtGenModels/EvtSVPCP.hh"
#include "EvtGenModels/EvtSVPHelAmp.hh"
#include "EvtGenModels/EvtSVPHelCPMix.hh"
#include "EvtGenModels/EvtSVS.hh"
#include "EvtGenModels/EvtSVSCP.hh"
#include "EvtGenModels/EvtSVSCPLH.hh"
#include "EvtGenModels/EvtSVSCPiso.hh"
#include "EvtGenModels/EvtSVSNONCPEIGEN.hh"
#include "EvtGenModels/EvtSVVCP.hh"
#include "EvtGenModels/EvtSVVCPLH.hh"
#include "EvtGenModels/EvtSVVHelAmp.hh"
#include "EvtGenModels/EvtSVVHelCPMix.hh"
#include "EvtGenModels/EvtSVVNONCPEIGEN.hh"
#include "EvtGenModels/EvtSingleParticle.hh"
#include "EvtGenModels/EvtSll.hh"
#include "EvtGenModels/EvtTSS.hh"
#include "EvtGenModels/EvtTVP.hh"
#include "EvtGenModels/EvtTVSPwave.hh"
#include "EvtGenModels/EvtTauHadnu.hh"
#include "EvtGenModels/EvtTauScalarnu.hh"
#include "EvtGenModels/EvtTauVectornu.hh"
#include "EvtGenModels/EvtTaulnunu.hh"
#include "EvtGenModels/EvtThreeBodyPhsp.hh"
#include "EvtGenModels/EvtVPHOtoVISRHi.hh"
#include "EvtGenModels/EvtVSPPwave.hh"
#include "EvtGenModels/EvtVSS.hh"
#include "EvtGenModels/EvtVSSBMixCPT.hh"
#include "EvtGenModels/EvtVSSMix.hh"
#include "EvtGenModels/EvtVVP.hh"
#include "EvtGenModels/EvtVVPIPI_WEIGHTED.hh"
#include "EvtGenModels/EvtVVSPwave.hh"
#include "EvtGenModels/EvtVVpipi.hh"
#include "EvtGenModels/EvtVectorIsr.hh"
#include "EvtGenModels/EvtVll.hh"
#include "EvtGenModels/EvtVtoSll.hh"
#include "EvtGenModels/EvtVub.hh"
#include "EvtGenModels/EvtVubBLNP.hh"
#include "EvtGenModels/EvtVubBLNPHybrid.hh"
#include "EvtGenModels/EvtVubHybrid.hh"
#include "EvtGenModels/EvtVubNLO.hh"
#include "EvtGenModels/EvtXPsiGamma.hh"
#include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh"
#include "EvtGenModels/EvtYmSToYnSpipiCLEO.hh"
#include "EvtGenModels/EvtbTosllAli.hh"
#include "EvtGenModels/EvtbTosllBall.hh"
#include "EvtGenModels/EvtbTosllMS.hh"
#include "EvtGenModels/EvtbTosllMSExt.hh"
#include "EvtGenModels/Evtbs2llGammaISRFSR.hh"
#include "EvtGenModels/Evtbs2llGammaMNT.hh"
#include "EvtGenModels/EvtbsToLLLL.hh"
#include "EvtGenModels/EvtbsToLLLLHyperCP.hh"
#include
#include
#include
#include
#include
#include
using std::cout;
using std::endl;
using std::fstream;
EvtModelReg::EvtModelReg( const std::list* extraModels )
{
EvtModel& modelist = EvtModel::instance();
if ( extraModels ) {
for ( std::list::const_iterator it = extraModels->begin();
it != extraModels->end(); ++it ) {
modelist.registerModel( *it );
}
}
modelist.registerModel( new EvtBBScalar );
modelist.registerModel( new EvtLambdaP_BarGamma );
modelist.registerModel( new EvtFlatQ2 );
modelist.registerModel( new EvtTauHadnu );
modelist.registerModel( new EvtTauVectornu );
modelist.registerModel( new EvtVVP );
modelist.registerModel( new EvtSLN );
modelist.registerModel( new EvtISGW2 );
modelist.registerModel( new EvtMelikhov );
modelist.registerModel( new EvtSLPole );
modelist.registerModel( new EvtPropSLPole );
modelist.registerModel( new EvtSLBKPole );
modelist.registerModel( new EvtHQET );
modelist.registerModel( new EvtHQET2 );
modelist.registerModel( new EvtISGW );
modelist.registerModel( new EvtVSS );
modelist.registerModel( new EvtVSSMix );
modelist.registerModel( new EvtVSSBMixCPT );
modelist.registerModel( new EvtVSPPwave );
modelist.registerModel( new EvtGoityRoberts );
modelist.registerModel( new EvtSVS );
modelist.registerModel( new EvtTSS );
modelist.registerModel( new EvtTVSPwave );
modelist.registerModel( new EvtSVVHelAmp );
modelist.registerModel( new EvtSVPHelAmp );
modelist.registerModel( new EvtSVPCP );
modelist.registerModel( new EvtVVSPwave );
modelist.registerModel( new EvtDDalitz );
modelist.registerModel( new EvtOmegaDalitz );
modelist.registerModel( new EvtEtaDalitz );
modelist.registerModel( new EvtPhsp );
modelist.registerModel( new EvtPhspDecaytimeCut );
modelist.registerModel( new EvtBtoXsgamma );
modelist.registerModel( new EvtBtoXsll );
modelist.registerModel( new EvtBtoXsEtap );
modelist.registerModel( new EvtSSSCP );
modelist.registerModel( new EvtSSSCPpng );
modelist.registerModel( new EvtSTSCP );
modelist.registerModel( new EvtSTS );
modelist.registerModel( new EvtSSSCPT );
modelist.registerModel( new EvtSVSCP );
modelist.registerModel( new EvtSSDCP );
modelist.registerModel( new EvtSVSNONCPEIGEN );
modelist.registerModel( new EvtSVVNONCPEIGEN );
modelist.registerModel( new EvtSVVCP );
modelist.registerModel( new EvtSVVCPLH );
modelist.registerModel( new EvtSVSCPLH );
modelist.registerModel( new EvtSll );
modelist.registerModel( new EvtVll );
modelist.registerModel( new EvtTaulnunu );
modelist.registerModel( new EvtTauScalarnu );
modelist.registerModel( new EvtKstarnunu );
modelist.registerModel( new EvtbTosllBall );
modelist.registerModel( new EvtBto2piCPiso );
modelist.registerModel( new EvtBtoKpiCPiso );
modelist.registerModel( new EvtSVSCPiso );
modelist.registerModel( new EvtSingleParticle );
modelist.registerModel( new EvtVectorIsr );
modelist.registerModel( new EvtPi0Dalitz );
modelist.registerModel( new EvtHelAmp );
modelist.registerModel( new EvtPartWave );
modelist.registerModel( new EvtVVpipi );
modelist.registerModel( new EvtY3SToY1SpipiMoxhay );
modelist.registerModel( new EvtYmSToYnSpipiCLEO );
modelist.registerModel( new EvtBsquark );
modelist.registerModel( new EvtPhiDalitz );
modelist.registerModel( new EvtBToPlnuBK );
modelist.registerModel( new EvtBToVlnuBall );
modelist.registerModel( new EvtVVPIPI_WEIGHTED );
modelist.registerModel( new EvtVPHOtoVISRHi );
modelist.registerModel( new EvtBTo4piCP );
modelist.registerModel( new EvtBTo3piCP );
modelist.registerModel( new EvtCBTo3piP00 );
modelist.registerModel( new EvtCBTo3piMPP );
modelist.registerModel( new EvtBToKpipiCP );
modelist.registerModel( new EvtRareLbToLll );
modelist.registerModel( new EvtHypNonLepton );
modelist.registerModel( new EvtSVVHelCPMix );
modelist.registerModel( new EvtSVPHelCPMix );
modelist.registerModel( new EvtLNuGamma );
modelist.registerModel( new EvtKstarstargamma );
modelist.registerModel( new EvtVub );
modelist.registerModel( new EvtVubHybrid );
modelist.registerModel( new EvtVubNLO );
modelist.registerModel( new EvtVubBLNP );
modelist.registerModel( new EvtVubBLNPHybrid );
modelist.registerModel( new EvtPto3P );
modelist.registerModel( new EvtBtoKD3P );
modelist.registerModel( new EvtKKLambdaC );
modelist.registerModel( new EvtDMix );
modelist.registerModel( new EvtD0mixDalitz );
modelist.registerModel( new EvtD0gammaDalitz );
modelist.registerModel( new EvtbTosllAli );
modelist.registerModel( new EvtBaryonPCR );
modelist.registerModel( new EvtBToDDalitzCPK );
- modelist.registerModel( new EvtLambdaB2LambdaV );
- modelist.registerModel( new EvtLambda2PPiForLambdaB2LambdaV );
- modelist.registerModel( new EvtV2VpVmForLambdaB2LambdaV );
modelist.registerModel( new EvtPVVCPLH );
modelist.registerModel( new EvtSSD_DirectCP );
modelist.registerModel( new EvtBcToNPi );
modelist.registerModel( new EvtBcPsiNPi );
modelist.registerModel( new EvtBcBsNPi );
modelist.registerModel( new EvtBcBsStarNPi );
modelist.registerModel( new EvtBcSMuNu );
modelist.registerModel( new EvtBcVMuNu );
modelist.registerModel( new EvtBcTMuNu );
modelist.registerModel( new EvtBcVNpi );
modelist.registerModel( new EvtSVP );
modelist.registerModel( new EvtTVP );
modelist.registerModel( new EvtXPsiGamma );
modelist.registerModel( new EvtbsToLLLL );
modelist.registerModel( new EvtbsToLLLLHyperCP );
modelist.registerModel( new EvtBLLNuL );
modelist.registerModel( new EvtKStopizmumu );
modelist.registerModel( new EvtVtoSll );
modelist.registerModel( new EvtBsMuMuKK );
modelist.registerModel( new EvtGenericDalitz );
modelist.registerModel( new EvtBcVHad );
modelist.registerModel( new EvtBcVPPHad );
modelist.registerModel( new Evtbs2llGammaMNT );
modelist.registerModel( new Evtbs2llGammaISRFSR );
modelist.registerModel( new EvtbTosllMS );
modelist.registerModel( new EvtbTosllMSExt );
modelist.registerModel( new EvtLb2plnuLQCD );
modelist.registerModel( new EvtLb2plnuLCSR );
modelist.registerModel( new EvtLb2Baryonlnu );
modelist.registerModel( new EvtBToDiBaryonlnupQCD );
modelist.registerModel( new EvtFlatSqDalitz );
modelist.registerModel( new EvtPhspFlatLifetime );
modelist.registerModel( new EvtLambdacPHH );
modelist.registerModel( new EvtDToKpienu );
modelist.registerModel( new EvtPsi2JpsiPiPi );
modelist.registerModel( new EvtThreeBodyPhsp );
modelist.registerModel( new EvtFourBodyPhsp );
modelist.registerModel( new EvtEtaLLPiPi );
modelist.registerModel( new EvtBToXElNu );
}
diff --git a/test/jsonFiles/LAMBDAB2LAMBDAV=LAMBDA2PPIFORLAMBDAB2LAMBDAV=V2VPVMFORLAMBDAB2LAMBDAV__Lambdab0_Lambda0Jpsi_ppi,mumu.json b/test/jsonFiles/LAMBDAB2LAMBDAV=LAMBDA2PPIFORLAMBDAB2LAMBDAV=V2VPVMFORLAMBDAB2LAMBDAV__Lambdab0_Lambda0Jpsi_ppi,mumu.json
deleted file mode 100644
index 851772a..0000000
--- a/test/jsonFiles/LAMBDAB2LAMBDAV=LAMBDA2PPIFORLAMBDAB2LAMBDAV=V2VPVMFORLAMBDAB2LAMBDAV__Lambdab0_Lambda0Jpsi_ppi,mumu.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "parent" : "Lambda_b0",
- "daughters" : ["Lambda0", "J/psi"],
- "grand_daughters" : [["p+", "pi-"], ["mu+", "mu-"]],
- "models" : ["LAMBDAB2LAMBDAV", "LAMBDA2PPIFORLAMBDAB2LAMBDAV", "V2VPVMFORLAMBDAB2LAMBDAV"],
- "parameters" : [["0.5", "1"], ["0.5", "1"], ["0.5", "1"]],
- "extras" : ["noPhotos"],
- "events" : 10000,
- "histograms" : [
- {"variable" : "prob", "title" : "Prob(LAMBDAB2LAMBDAV)", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "prob_daug1", "title" : "Prob(LAMBDA2PPIFORLAMBDAB2LAMBDAV)", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "prob_daug2", "title" : "Prob(V2VPVMFORLAMBDAB2LAMBDAV)", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "parMass", "title" : "m(#Lambda^{0}_{b})", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 5.0, "xmax" : 6.0},
- {"variable" : "mass", "title" : "m(#Lambda^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 1.0, "xmax" : 2.5},
- {"variable" : "mass", "title" : "m(J/#psi)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : 3.0, "xmax" : 4.0},
- {"variable" : "cosTheta", "title" : "cosTheta(#Lambda^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "phi", "title" : "phi(#Lambda^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 180.0},
- {"variable" : "cosHel", "title" : "cosHel(p,#Lambda^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 180.0},
- {"variable" : "cosHel", "title" : "cosHel(#mu^{_},J/#psi)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 180.0}
- ],
- "outfile" : "LAMBDAB2LAMBDAV=LAMBDA2PPIFORLAMBDAB2LAMBDAV=V2VPVMFORLAMBDAB2LAMBDAV__Lambdab0_Lambda0Jpsi_ppi,mumu.root",
- "reference" : "RefLAMBDAB2LAMBDAV=LAMBDA2PPIFORLAMBDAB2LAMBDAV=V2VPVMFORLAMBDAB2LAMBDAV__Lambdab0_Lambda0Jpsi_ppi,mumu.root"
-}