diff --git a/EvtGenBase/EvtIdSet.hh b/EvtGenBase/EvtIdSet.hh --- a/EvtGenBase/EvtIdSet.hh +++ b/EvtGenBase/EvtIdSet.hh @@ -131,8 +131,8 @@ EvtIdSet( const EvtIdSet& set1 ); EvtIdSet( const EvtIdSet& set1, const EvtIdSet& set2 ); - int contains( const EvtId id ); - int contains( const std::string id ); + int contains( const EvtId id ) const; + int contains( const std::string id ) const; void append( const EvtIdSet set1 ); int sizeOfSet() const; diff --git a/EvtGenBase/EvtParticle.hh b/EvtGenBase/EvtParticle.hh --- a/EvtGenBase/EvtParticle.hh +++ b/EvtGenBase/EvtParticle.hh @@ -171,7 +171,7 @@ /** * Get pointer the the i:th daugther. */ - EvtParticle* getDaug( int i ); + EvtParticle* getDaug( const int i ) const; /** * Iterates over the particles in a decay chain. diff --git a/EvtGenModels/EvtRareLbToLll.hh b/EvtGenModels/EvtRareLbToLll.hh --- a/EvtGenModels/EvtRareLbToLll.hh +++ b/EvtGenModels/EvtRareLbToLll.hh @@ -47,18 +47,20 @@ void decay( EvtParticle* parent ) override; protected: - void calcAmp( EvtAmp& amp, EvtParticle* parent ); + void calcAmp( EvtAmp& amp, const EvtParticle& parent ); - void HadronicAmp( EvtParticle* parent, EvtParticle* lambda, EvtVector4C* T, - const int i, const int j ); + void HadronicAmp( const EvtParticle& parent, const EvtParticle& lambda, + EvtVector4C* T, const int i, const int j ); - void HadronicAmpRS( EvtParticle* parent, EvtParticle* lambda, + void HadronicAmpRS( const EvtParticle& parent, const EvtParticle& lambda, EvtVector4C* T, const int i, const int j ); - bool isParticle( EvtParticle* parent ) const; + bool isParticle( const EvtParticle& parent ) const; private: double m_maxProbability; + double m_poleSize{ 0.00005 }; + bool m_electronMode{false}; std::unique_ptr ffmodel_; std::unique_ptr wcmodel_; diff --git a/EvtGenModels/EvtRareLbToLllFF.hh b/EvtGenModels/EvtRareLbToLllFF.hh --- a/EvtGenModels/EvtRareLbToLllFF.hh +++ b/EvtGenModels/EvtRareLbToLllFF.hh @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -93,22 +93,23 @@ void init() override; - void getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) override; + void getFF( const EvtParticle& parent, const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const override; private: - double func( const double p, EvtRareLbToLllFF::FormFactorDependence& dep ); + double func( const double p, + const EvtRareLbToLllFF::FormFactorDependence& dep ) const; std::array, 2> FF_; std::map FFMap_; - void DiracFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFF::FormFactorSet& FFset, - EvtRareLbToLllFF::FormFactors& FF ); + void DiracFF( const EvtParticle& parent, const EvtParticle& lambda, + const EvtRareLbToLllFF::FormFactorSet& FFset, + EvtRareLbToLllFF::FormFactors& FF ) const; - void RaritaSchwingerFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFF::FormFactorSet& FFset, - EvtRareLbToLllFF::FormFactors& FF ); + void RaritaSchwingerFF( const EvtParticle& parent, const EvtParticle& lambda, + const EvtRareLbToLllFF::FormFactorSet& FFset, + EvtRareLbToLllFF::FormFactors& FF ) const; }; #endif // EVTRARELBTOLLLFF_HH diff --git a/EvtGenModels/EvtRareLbToLllFFBase.hh b/EvtGenModels/EvtRareLbToLllFFBase.hh --- a/EvtGenModels/EvtRareLbToLllFFBase.hh +++ b/EvtGenModels/EvtRareLbToLllFFBase.hh @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -54,17 +54,17 @@ virtual void init() = 0; - virtual void getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) = 0; + virtual void getFF( const EvtParticle& parent, const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const = 0; - bool isNatural( EvtParticle* lambda ); + bool isNatural( const EvtParticle& lambda ) const; EvtRareLbToLllFFBase(); virtual ~EvtRareLbToLllFFBase(){}; protected: - double calculateVdotV( EvtParticle* parent, EvtParticle* lambda ) const; - double calculateVdotV( EvtParticle*, EvtParticle*, double qsq ) const; + double calculateVdotV( const EvtParticle& parent, const EvtParticle& lambda ) const; + double calculateVdotV( const EvtParticle&, const EvtParticle&, double qsq ) const; EvtIdSet natural_; }; diff --git a/EvtGenModels/EvtRareLbToLllFFGutsche.hh b/EvtGenModels/EvtRareLbToLllFFGutsche.hh --- a/EvtGenModels/EvtRareLbToLllFFGutsche.hh +++ b/EvtGenModels/EvtRareLbToLllFFGutsche.hh @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -42,19 +42,20 @@ public: void init() override; - void getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) override; + void getFF( const EvtParticle& parent, const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const override; private: - double formFactorParametrization( double s, double f0, double a, double b ); + double formFactorParametrization( const double s, const double f0, + const double a, const double b ) const; double fVconsts[3][3]; double fAconsts[3][3]; double fTVconsts[3][3]; double fTAconsts[3][3]; - static EvtIdSet fParents; - static EvtIdSet fDaughters; + const EvtIdSet fParents{ "Lambda_b0", "anti-Lambda_b0" }; + const EvtIdSet fDaughters{ "Lambda0", "anti-Lambda0" }; }; #endif // EVTRARELBTOLLLFF_HH diff --git a/EvtGenModels/EvtRareLbToLllFFlQCD.hh b/EvtGenModels/EvtRareLbToLllFFlQCD.hh --- a/EvtGenModels/EvtRareLbToLllFFlQCD.hh +++ b/EvtGenModels/EvtRareLbToLllFFlQCD.hh @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -46,13 +46,13 @@ void init() override; - void getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) override; + void getFF( const EvtParticle& parent, const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const override; private: - double formFactorParametrization( double q2, double a0, double a1, - double pole ); - double zvar( double q2 ); + double formFactorParametrization( const double q2, const double a0, + const double a1, const double pole ) const; + double zvar( const double q2 ) const; double fconsts[3][3]; double gconsts[3][3]; diff --git a/History.md b/History.md --- a/History.md +++ b/History.md @@ -8,6 +8,12 @@ https://phab.hepforge.org/Dxyz +=== +## R02-02-0X + +9 June 2022 Michal Kreps +* D84: Improve efficiency of RareLbToLll decay model for final states with e+e- pair. + === ## R02-02-00 diff --git a/src/EvtGenBase/EvtIdSet.cpp b/src/EvtGenBase/EvtIdSet.cpp --- a/src/EvtGenBase/EvtIdSet.cpp +++ b/src/EvtGenBase/EvtIdSet.cpp @@ -419,7 +419,7 @@ this->append( set2 ); } -int EvtIdSet::contains( const EvtId id ) +int EvtIdSet::contains( const EvtId id ) const { int i; for ( i = 0; i < _numInList; i++ ) { @@ -430,7 +430,7 @@ return 0; } -int EvtIdSet::contains( const std::string nm ) +int EvtIdSet::contains( const std::string nm ) const { int i; for ( i = 0; i < _numInList; i++ ) { diff --git a/src/EvtGenBase/EvtParticle.cpp b/src/EvtGenBase/EvtParticle.cpp --- a/src/EvtGenBase/EvtParticle.cpp +++ b/src/EvtGenBase/EvtParticle.cpp @@ -88,7 +88,7 @@ _channel = i; } -EvtParticle* EvtParticle::getDaug( int i ) +EvtParticle* EvtParticle::getDaug( const int i ) const { return _daug[i]; } diff --git a/src/EvtGenModels/EvtRareLbToLll.cpp b/src/EvtGenModels/EvtRareLbToLll.cpp --- a/src/EvtGenModels/EvtRareLbToLll.cpp +++ b/src/EvtGenModels/EvtRareLbToLll.cpp @@ -69,6 +69,14 @@ checkSpinDaughter( 1, EvtSpinType::DIRAC ); checkSpinDaughter( 2, EvtSpinType::DIRAC ); + // Work out whether we have electron mode + const EvtIdSet leptons{ "e-", "e+" }; + if ( leptons.contains( getDaug( 1 ) ) ) { + m_electronMode = true; + EvtGenReport( EVTGEN_ERROR, "EvtGen" ) + << " EvtRareLbToLll has dielectron final state" << std::endl; + } + std::string model = getArgStr( 0 ); if ( model == "Gutsche" ) { ffmodel_ = std::make_unique(); @@ -117,14 +125,14 @@ EvtSpinDensity rho; rho.setDiag( parent.getSpinStates() ); - double M0 = EvtPDL::getMass( getParentId() ); - double mL = EvtPDL::getMass( getDaug( 0 ) ); - double m1 = EvtPDL::getMass( getDaug( 1 ) ); - double m2 = EvtPDL::getMass( getDaug( 2 ) ); + const double M0 = EvtPDL::getMass( getParentId() ); + const double mL = EvtPDL::getMass( getDaug( 0 ) ); + const double m1 = EvtPDL::getMass( getDaug( 1 ) ); + const double m2 = EvtPDL::getMass( getDaug( 2 ) ); double q2, pstar, elambda, theta; - double q2min = ( m1 + m2 ) * ( m1 + m2 ); - double q2max = ( M0 - mL ) * ( M0 - mL ); + const double q2min = ( m1 + m2 ) * ( m1 + m2 ); + const double q2max = ( M0 - mL ) * ( M0 - mL ); EvtVector4R p4lambda, p4lep1, p4lep2, boost; @@ -133,8 +141,9 @@ int i, j; double prob = 0; - for ( i = 0; i <= 100; i++ ) { - q2 = q2min + i * ( q2max - q2min ) / 100.; + const int nsteps = 5000; + for ( i = 0; i <= nsteps; i++ ) { + q2 = q2min + i * ( q2max - q2min ) / nsteps; elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0; if ( i == 0 ) pstar = 0; @@ -142,7 +151,7 @@ pstar = sqrt( q2 - ( m1 + m2 ) * ( m1 + m2 ) ) * sqrt( q2 - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / sqrt( q2 ); boost.set( M0 - elambda, 0, 0, +sqrt( elambda * elambda - mL * mL ) ); - if ( i != 100 ) { + if ( i != nsteps ) { p4lambda.set( elambda, 0, 0, -sqrt( elambda * elambda - mL * mL ) ); } else { @@ -154,8 +163,8 @@ +pstar * sin( theta ), +pstar * cos( theta ) ); p4lep2.set( sqrt( pstar * pstar + m2 * m2 ), 0, -pstar * sin( theta ), -pstar * cos( theta ) ); - //std::cout << "p1: " << p4lep1 << " p2: " << p4lep2 << " pstar: " << pstar << std::endl; - if ( i != 100 ) // At maximal q2 we are already in correct frame as Lambda and W/Zvirtual are at rest + + if ( i != nsteps) // At maximal q2 we are already in correct frame as Lambda and W/Zvirtual are at rest { p4lep1 = boostTo( p4lep1, boost ); p4lep2 = boostTo( p4lep2, boost ); @@ -163,24 +172,25 @@ lambda->init( getDaug( 0 ), p4lambda ); lep1->init( getDaug( 1 ), p4lep1 ); lep2->init( getDaug( 2 ), p4lep2 ); - calcAmp( amp, &parent ); + calcAmp( amp, parent ); prob = rho.normalizedProb( amp.getSpinDensity() ); - //std::cout << "q2: " << q2 << " \t theta: " << theta << " \t prob: " << prob << std::endl; - //std::cout << "p1: " << p4lep1 << " p2: " << p4lep2 << " q2-q2min: " << q2-(m1+m2)*(m1+m2) << std::endl; + // In case of electron mode add pole + if ( m_electronMode ) { + prob /= 1.0 + m_poleSize / ( q2*q2 ); + } + if ( prob > m_maxProbability ) { EvtGenReport( EVTGEN_INFO, "EvtGen" ) << " - probability " << prob << " found at q2 = " << q2 - << " (" << 100 * ( q2 - q2min ) / ( q2max - q2min ) + << " (" << nsteps * ( q2 - q2min ) / ( q2max - q2min ) << " %) and theta = " << theta * 180 / EvtConst::pi << std::endl; m_maxProbability = prob; } } - //::abort(); } - //m_poleSize = 0.04*q2min; - m_maxProbability *= 1.2; + m_maxProbability *= 1.05; } setProbMax( m_maxProbability ); @@ -191,44 +201,49 @@ void EvtRareLbToLll::decay( EvtParticle* parent ) { - parent->initializePhaseSpace( getNDaug(), getDaugs() ); - - calcAmp( _amp2, parent ); + // Phase space initialization depends on what leptons are + if ( m_electronMode ) { + setWeight( parent->initializePhaseSpace( getNDaug(), getDaugs(), false, + m_poleSize, 1, 2 ) ); + } else { + parent->initializePhaseSpace( getNDaug(), getDaugs() ); + } + calcAmp( _amp2, *parent ); } -bool EvtRareLbToLll::isParticle( EvtParticle* parent ) const +bool EvtRareLbToLll::isParticle( const EvtParticle& parent ) const { - static EvtIdSet partlist( "Lambda_b0" ); + const EvtIdSet partlist{ "Lambda_b0" }; - return partlist.contains( parent->getId() ); + return partlist.contains( parent.getId() ); } -void EvtRareLbToLll::calcAmp( EvtAmp& amp, EvtParticle* parent ) +void EvtRareLbToLll::calcAmp( EvtAmp& amp, const EvtParticle& parent ) { //parent->setDiagonalSpinDensity(); - EvtParticle* lambda = parent->getDaug( 0 ); + EvtParticle* lambda = parent.getDaug( 0 ); - static EvtIdSet leptons( "e-", "mu-", "tau-" ); + const EvtIdSet leptons{ "e-", "mu-", "tau-" }; const bool isparticle = isParticle( parent ); EvtParticle* lp = 0; EvtParticle* lm = 0; - if ( leptons.contains( parent->getDaug( 1 )->getId() ) ) { - lp = parent->getDaug( 1 ); - lm = parent->getDaug( 2 ); + if ( leptons.contains( parent.getDaug( 1 )->getId() ) ) { + lp = parent.getDaug( 1 ); + lm = parent.getDaug( 2 ); } else { - lp = parent->getDaug( 2 ); - lm = parent->getDaug( 1 ); + lp = parent.getDaug( 2 ); + lm = parent.getDaug( 1 ); } EvtVector4R P; - P.set( parent->mass(), 0.0, 0.0, 0.0 ); + P.set( parent.mass(), 0.0, 0.0, 0.0 ); EvtVector4R q = lp->getP4() + lm->getP4(); - double qsq = q.mass2(); + const double qsq = q.mass2(); // Leptonic currents EvtVector4C LV[2][2]; // \bar{\ell} \gamma^{\mu} \ell @@ -252,7 +267,7 @@ EvtRareLbToLllFF::FormFactors FF; //F, G, FT and GT - ffmodel_->getFF( parent, lambda, FF ); + ffmodel_->getFF( parent, *lambda, FF ); EvtComplex C7eff = wcmodel_->GetC7Eff( qsq ); EvtComplex C9eff = wcmodel_->GetC9Eff( qsq ); @@ -264,7 +279,7 @@ EvtComplex EC[4]; // check to see if particle is same or opposite parity to Lb - const int parity = ffmodel_->isNatural( lambda ) ? 1 : -1; + const int parity = ffmodel_->isNatural( *lambda ) ? 1 : -1; // Lambda spin type const EvtSpinType::spintype spin = EvtPDL::getSpinType( lambda->getId() ); @@ -300,7 +315,7 @@ // Hadronic currents for ( int i = 0; i < 2; ++i ) { for ( int j = 0; j < 2; ++j ) { - HadronicAmp( parent, lambda, T, i, j ); + HadronicAmp( parent, *lambda, T, i, j ); H1[i][j] = ( cv * AC[0] * T[0] + ca * BC[0] * T[1] + cs * AC[1] * T[2] + cp * BC[1] * T[3] + @@ -341,6 +356,7 @@ // Build hadronic amplitude for ( int i = 0; i < 2; ++i ) { for ( int j = 0; j < 4; ++j ) { + HadronicAmpRS( parent, *lambda, T, i, j ); H1[i][j] = ( cv * AC[0] * T[0] + ca * BC[0] * T[1] + cs * AC[1] * T[2] + cp * BC[1] * T[3] + cs * AC[2] * T[4] + cp * BC[2] * T[5] + @@ -383,19 +399,20 @@ // spin 1/2 daughters -void EvtRareLbToLll::HadronicAmp( EvtParticle* parent, EvtParticle* lambda, - EvtVector4C* T, const int i, const int j ) +void EvtRareLbToLll::HadronicAmp( const EvtParticle& parent, + const EvtParticle& lambda, EvtVector4C* T, + const int i, const int j ) { - const EvtDiracSpinor Sfinal = lambda->spParent( j ); - const EvtDiracSpinor Sinit = parent->sp( i ); + const EvtDiracSpinor Sfinal = lambda.spParent( j ); + const EvtDiracSpinor Sinit = parent.sp( i ); - const EvtVector4R L = lambda->getP4(); + const EvtVector4R L = lambda.getP4(); EvtVector4R P; - P.set( parent->mass(), 0.0, 0.0, 0.0 ); + P.set( parent.mass(), 0.0, 0.0, 0.0 ); - const double Pm = parent->mass(); - const double Lm = lambda->mass(); + const double Pm = parent.mass(); + const double Lm = lambda.mass(); // \bar{u} \gamma^{\mu} u T[0] = EvtLeptonVCurrent( Sfinal, Sinit ); @@ -424,16 +441,17 @@ // spin 3/2 daughters -void EvtRareLbToLll::HadronicAmpRS( EvtParticle* parent, EvtParticle* lambda, - EvtVector4C* T, const int i, const int j ) +void EvtRareLbToLll::HadronicAmpRS( const EvtParticle& parent, + const EvtParticle& lambda, EvtVector4C* T, + const int i, const int j ) { - const EvtRaritaSchwinger Sfinal = lambda->spRSParent( j ); - const EvtDiracSpinor Sinit = parent->sp( i ); + const EvtRaritaSchwinger Sfinal = lambda.spRSParent( j ); + const EvtDiracSpinor Sinit = parent.sp( i ); EvtVector4R P; - P.set( parent->mass(), 0.0, 0.0, 0.0 ); + P.set( parent.mass(), 0.0, 0.0, 0.0 ); - const EvtVector4R L = lambda->getP4(); + const EvtVector4R L = lambda.getP4(); EvtTensor4C ID; ID.setdiag( 1.0, 1.0, 1.0, 1.0 ); @@ -445,8 +463,8 @@ } const double Pmsq = P.mass2(); - const double Pm = parent->mass(); - const double PmLm = Pm * lambda->mass(); + const double Pm = parent.mass(); + const double PmLm = Pm * lambda.mass(); EvtVector4C V1, V2; diff --git a/src/EvtGenModels/EvtRareLbToLllFF.cpp b/src/EvtGenModels/EvtRareLbToLllFF.cpp --- a/src/EvtGenModels/EvtRareLbToLllFF.cpp +++ b/src/EvtGenModels/EvtRareLbToLllFF.cpp @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -163,8 +163,8 @@ //============================================================================= -double EvtRareLbToLllFF::func( const double p, - EvtRareLbToLllFF::FormFactorDependence& dep ) +double EvtRareLbToLllFF::func( + const double p, const EvtRareLbToLllFF::FormFactorDependence& dep ) const { static const double mq = 0.2848; static const double mtilde = 1.122; @@ -176,15 +176,16 @@ exp( -( 3. * mq * mq * psq ) / ( 2. * mtilde * mtilde * asq ) ); } -void EvtRareLbToLllFF::DiracFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFF::FormFactorSet& dep, - EvtRareLbToLllFF::FormFactors& FF ) +void EvtRareLbToLllFF::DiracFF( const EvtParticle& parent, + const EvtParticle& lambda, + const EvtRareLbToLllFF::FormFactorSet& dep, + EvtRareLbToLllFF::FormFactors& FF ) const { - const double M = lambda->mass(); - const double MB = parent->mass(); + const double M = lambda.mass(); + const double MB = parent.mass(); const double vdotv = calculateVdotV( parent, lambda ); - const double p = lambda->getP4().d3mag(); + const double p = lambda.getP4().d3mag(); FF.F_[0] = func( p, dep.F1 ); FF.F_[1] = func( p, dep.F2 ); @@ -222,16 +223,16 @@ } } -void EvtRareLbToLllFF::RaritaSchwingerFF( EvtParticle* parent, - EvtParticle* lambda, - EvtRareLbToLllFF::FormFactorSet& FFset, - EvtRareLbToLllFF::FormFactors& FF ) +void EvtRareLbToLllFF::RaritaSchwingerFF( + const EvtParticle& parent, const EvtParticle& lambda, + const EvtRareLbToLllFF::FormFactorSet& FFset, + EvtRareLbToLllFF::FormFactors& FF ) const { - const double M = lambda->mass(); - const double MB = parent->mass(); + const double M = lambda.mass(); + const double MB = parent.mass(); const double vdotv = calculateVdotV( parent, lambda ); - const double p = lambda->getP4().d3mag(); + const double p = lambda.getP4().d3mag(); FF.F_[0] = func( p, FFset.F1 ); FF.F_[1] = func( p, FFset.F2 ); @@ -277,24 +278,24 @@ } } -void EvtRareLbToLllFF::getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFF::FormFactors& FF ) +void EvtRareLbToLllFF::getFF( const EvtParticle& parent, const EvtParticle& lambda, + EvtRareLbToLllFF::FormFactors& FF ) const { // Find the FF information for this particle, start by setting all to zero FF.areZero(); // Are the FF's for the particle known? - auto it = FFMap_.find( lambda->getId().getId() ); + auto it = FFMap_.find( lambda.getId().getId() ); if ( it == FFMap_.end() ) { EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " EvtRareLbToLll does not contain FF for " << lambda->getId() + << " EvtRareLbToLll does not contain FF for " << lambda.getId() << std::endl; return; } // Split by spin 1/2, spin 3/2 - const int spin = EvtPDL::getSpinType( lambda->getId() ); + const int spin = EvtPDL::getSpinType( lambda.getId() ); if ( EvtSpinType::DIRAC == spin ) { DiracFF( parent, lambda, *( it->second ), FF ); diff --git a/src/EvtGenModels/EvtRareLbToLllFFBase.cpp b/src/EvtGenModels/EvtRareLbToLllFFBase.cpp --- a/src/EvtGenModels/EvtRareLbToLllFFBase.cpp +++ b/src/EvtGenModels/EvtRareLbToLllFFBase.cpp @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -41,33 +41,33 @@ { } -bool EvtRareLbToLllFFBase::isNatural( EvtParticle* lambda ) +bool EvtRareLbToLllFFBase::isNatural( const EvtParticle& lambda ) const { - return natural_.contains( lambda->getId() ); + return natural_.contains( lambda.getId() ); } -double EvtRareLbToLllFFBase::calculateVdotV( EvtParticle* parent, - EvtParticle* lambda ) const +double EvtRareLbToLllFFBase::calculateVdotV( const EvtParticle& parent, + const EvtParticle& lambda ) const { EvtVector4R p4parent; - p4parent.set( parent->mass(), 0, 0, 0 ); + p4parent.set( parent.mass(), 0, 0, 0 ); - EvtVector4R p4lambda = lambda->getP4(); + EvtVector4R p4lambda = lambda.getP4(); - double M = lambda->mass(); - double MB = parent->mass(); + const double M = lambda.mass(); + const double MB = parent.mass(); return p4parent.cont( p4lambda ) / ( MB * M ); // return E_Lambda/M_Lambda } -double EvtRareLbToLllFFBase::calculateVdotV( EvtParticle* parent, - EvtParticle* lambda, +double EvtRareLbToLllFFBase::calculateVdotV( const EvtParticle& parent, + const EvtParticle& lambda, const double qsq ) const { - double M = lambda->mass(); - double MB = parent->mass(); + const double M = lambda.mass(); + const double MB = parent.mass(); double E = ( MB * MB - M * M - qsq ) / ( 2. * MB ); diff --git a/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp b/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp --- a/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp +++ b/src/EvtGenModels/EvtRareLbToLllFFGutsche.cpp @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -34,9 +34,6 @@ // Standard constructor, initializes variables //============================================================================= -EvtIdSet EvtRareLbToLllFFGutsche::fParents( "Lambda_b0", "anti-Lambda_b0" ); -EvtIdSet EvtRareLbToLllFFGutsche::fDaughters( "Lambda0", "anti-Lambda0" ); - void EvtRareLbToLllFFGutsche::init() { fVconsts[0][0] = 0.107; @@ -86,8 +83,9 @@ //============================================================================= -void EvtRareLbToLllFFGutsche::getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) +void EvtRareLbToLllFFGutsche::getFF( const EvtParticle& parent, + const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const { // Find the FF information for this particle, start by setting all to zero FF.areZero(); @@ -101,13 +99,13 @@ } */ - double m1 = parent->getP4().mass(); - double m2 = lambda->getP4().mass(); + const double m1 = parent.getP4().mass(); + const double m2 = lambda.getP4().mass(); EvtVector4R p4parent; - p4parent.set( parent->mass(), 0, 0, 0 ); - double q2 = ( p4parent - lambda->getP4() ).mass2(); - double m21 = m2 / m1; - double shat = q2 / m1 / m1; + p4parent.set( parent.mass(), 0, 0, 0 ); + const double q2 = ( p4parent - lambda.getP4() ).mass2(); + const double m21 = m2 / m1; + const double shat = q2 / m1 / m1; double fV[3]; double fA[3]; @@ -146,8 +144,10 @@ return; } -double EvtRareLbToLllFFGutsche::formFactorParametrization( double s, double f0, - double a, double b ) +double EvtRareLbToLllFFGutsche::formFactorParametrization( const double s, + const double f0, + const double a, + const double b ) const { return f0 / ( 1 - a * s + b * s * s ); } diff --git a/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp b/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp --- a/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp +++ b/src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp @@ -1,6 +1,6 @@ /*********************************************************************** -* Copyright 1998-2020 CERN for the benefit of the EvtGen authors * +* Copyright 1998-2022 CERN for the benefit of the EvtGen authors * * * * This file is part of EvtGen. * * * @@ -39,14 +39,14 @@ void EvtRareLbToLllFFlQCD::init() { - EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) ); - EvtId LID = EvtPDL::getId( std::string( "Lambda0" ) ); - EvtId BID = EvtPDL::getId( std::string( "B+" ) ); - EvtId KID = EvtPDL::getId( std::string( "K-" ) ); - double m1 = EvtPDL::getMass( LbID ); - double m2 = EvtPDL::getMass( LID ); - double mB = EvtPDL::getMass( BID ); - double mK = EvtPDL::getMass( KID ); + const EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) ); + const EvtId LID = EvtPDL::getId( std::string( "Lambda0" ) ); + const EvtId BID = EvtPDL::getId( std::string( "B+" ) ); + const EvtId KID = EvtPDL::getId( std::string( "K-" ) ); + const double m1 = EvtPDL::getMass( LbID ); + const double m2 = EvtPDL::getMass( LID ); + const double mB = EvtPDL::getMass( BID ); + const double mK = EvtPDL::getMass( KID ); t0 = ( m1 - m2 ) * ( m1 - m2 ); tplus = ( mB + mK ) * ( mB + mK ); @@ -97,24 +97,25 @@ //============================================================================= -void EvtRareLbToLllFFlQCD::getFF( EvtParticle* parent, EvtParticle* lambda, - EvtRareLbToLllFFBase::FormFactors& FF ) +void EvtRareLbToLllFFlQCD::getFF( const EvtParticle& parent, + const EvtParticle& lambda, + EvtRareLbToLllFFBase::FormFactors& FF ) const { // Find the FF information for this particle, start by setting all to zero FF.areZero(); - double m1 = parent->getP4().mass(); - double m2 = lambda->getP4().mass(); + const double m1 = parent.getP4().mass(); + const double m2 = lambda.getP4().mass(); // double m21=m2/m1; EvtVector4R p4parent; - p4parent.set( parent->mass(), 0, 0, 0 ); - double q2 = ( p4parent - lambda->getP4() ).mass2(); - - double massSum = m1 + m2; - double massDiff = m1 - m2; - double massSumSq = massSum * massSum; - double massDiffSq = massDiff * massDiff; - double q2Sum = q2 - massSumSq; + p4parent.set( parent.mass(), 0, 0, 0 ); + const double q2 = ( p4parent - lambda.getP4() ).mass2(); + + const double massSum = m1 + m2; + const double massDiff = m1 - m2; + const double massSumSq = massSum * massSum; + const double massDiffSq = massDiff * massDiff; + const double q2Sum = q2 - massSumSq; double q2Diff = q2 - massDiffSq; double f[3]; @@ -182,17 +183,19 @@ return; } -double EvtRareLbToLllFFlQCD::formFactorParametrization( double q2, double a0, - double a1, double pole ) +double EvtRareLbToLllFFlQCD::formFactorParametrization( const double q2, + const double a0, + const double a1, + const double pole ) const { - double z = zvar( q2 ); + const double z = zvar( q2 ); return 1. / ( 1. - q2 / ( pole * pole ) ) * ( a0 + a1 * z ); } -double EvtRareLbToLllFFlQCD::zvar( double q2 ) +double EvtRareLbToLllFFlQCD::zvar( const double q2 ) const { - double a = std::sqrt( tplus - q2 ); - double b = std::sqrt( tplus - t0 ); + const double a = std::sqrt( tplus - q2 ); + const double b = std::sqrt( tplus - t0 ); return ( a - b ) / ( a + b ); }