Changeset View
Changeset View
Standalone View
Standalone View
src/EvtGenModels/EvtRareLbToLllFFlQCD.cpp
/*********************************************************************** | /*********************************************************************** | ||||
* 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. * | * This file is part of EvtGen. * | ||||
* * | * * | ||||
* EvtGen is free software: you can redistribute it and/or modify * | * EvtGen is free software: you can redistribute it and/or modify * | ||||
* it under the terms of the GNU General Public License as published by * | * it under the terms of the GNU General Public License as published by * | ||||
* the Free Software Foundation, either version 3 of the License, or * | * the Free Software Foundation, either version 3 of the License, or * | ||||
* (at your option) any later version. * | * (at your option) any later version. * | ||||
* * | * * | ||||
Show All 22 Lines | |||||
// Implementation file for class : EvtRareLbToLllFFlQCD | // Implementation file for class : EvtRareLbToLllFFlQCD | ||||
// | // | ||||
// 2016-04-19 : Michal Kreps | // 2016-04-19 : Michal Kreps | ||||
// 2014-10-22 : Michal Kreps | // 2014-10-22 : Michal Kreps | ||||
//----------------------------------------------------------------------------- | //----------------------------------------------------------------------------- | ||||
void EvtRareLbToLllFFlQCD::init() | void EvtRareLbToLllFFlQCD::init() | ||||
{ | { | ||||
EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) ); | const EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) ); | ||||
EvtId LID = EvtPDL::getId( std::string( "Lambda0" ) ); | const EvtId LID = EvtPDL::getId( std::string( "Lambda0" ) ); | ||||
EvtId BID = EvtPDL::getId( std::string( "B+" ) ); | const EvtId BID = EvtPDL::getId( std::string( "B+" ) ); | ||||
EvtId KID = EvtPDL::getId( std::string( "K-" ) ); | const EvtId KID = EvtPDL::getId( std::string( "K-" ) ); | ||||
double m1 = EvtPDL::getMass( LbID ); | const double m1 = EvtPDL::getMass( LbID ); | ||||
double m2 = EvtPDL::getMass( LID ); | const double m2 = EvtPDL::getMass( LID ); | ||||
double mB = EvtPDL::getMass( BID ); | const double mB = EvtPDL::getMass( BID ); | ||||
double mK = EvtPDL::getMass( KID ); | const double mK = EvtPDL::getMass( KID ); | ||||
t0 = ( m1 - m2 ) * ( m1 - m2 ); | t0 = ( m1 - m2 ) * ( m1 - m2 ); | ||||
tplus = ( mB + mK ) * ( mB + mK ); | tplus = ( mB + mK ) * ( mB + mK ); | ||||
fconsts[0][0] = 0.4221; | fconsts[0][0] = 0.4221; | ||||
fconsts[0][1] = -1.1386; | fconsts[0][1] = -1.1386; | ||||
fconsts[0][2] = 5.416; | fconsts[0][2] = 5.416; | ||||
fconsts[1][0] = 0.5182; | fconsts[1][0] = 0.5182; | ||||
fconsts[1][1] = -1.3495; | fconsts[1][1] = -1.3495; | ||||
Show All 34 Lines | void EvtRareLbToLllFFlQCD::init() | ||||
EvtGenReport( EVTGEN_INFO, "EvtGen" ) | EvtGenReport( EVTGEN_INFO, "EvtGen" ) | ||||
<< " EvtRareLbToLll is using form factors from arXiv:1602.01399 " | << " EvtRareLbToLll is using form factors from arXiv:1602.01399 " | ||||
<< std::endl; | << std::endl; | ||||
} | } | ||||
//============================================================================= | //============================================================================= | ||||
void EvtRareLbToLllFFlQCD::getFF( EvtParticle* parent, EvtParticle* lambda, | void EvtRareLbToLllFFlQCD::getFF( const EvtParticle& parent, | ||||
EvtRareLbToLllFFBase::FormFactors& FF ) | const EvtParticle& lambda, | ||||
EvtRareLbToLllFFBase::FormFactors& FF ) const | |||||
{ | { | ||||
// Find the FF information for this particle, start by setting all to zero | // Find the FF information for this particle, start by setting all to zero | ||||
FF.areZero(); | FF.areZero(); | ||||
double m1 = parent->getP4().mass(); | const double m1 = parent.getP4().mass(); | ||||
double m2 = lambda->getP4().mass(); | const double m2 = lambda.getP4().mass(); | ||||
// double m21=m2/m1; | // double m21=m2/m1; | ||||
EvtVector4R p4parent; | EvtVector4R p4parent; | ||||
p4parent.set( parent->mass(), 0, 0, 0 ); | p4parent.set( parent.mass(), 0, 0, 0 ); | ||||
double q2 = ( p4parent - lambda->getP4() ).mass2(); | const double q2 = ( p4parent - lambda.getP4() ).mass2(); | ||||
double massSum = m1 + m2; | const double massSum = m1 + m2; | ||||
double massDiff = m1 - m2; | const double massDiff = m1 - m2; | ||||
double massSumSq = massSum * massSum; | const double massSumSq = massSum * massSum; | ||||
double massDiffSq = massDiff * massDiff; | const double massDiffSq = massDiff * massDiff; | ||||
double q2Sum = q2 - massSumSq; | const double q2Sum = q2 - massSumSq; | ||||
double q2Diff = q2 - massDiffSq; | double q2Diff = q2 - massDiffSq; | ||||
jback: This could be const as well. | |||||
double f[3]; | double f[3]; | ||||
double g[3]; | double g[3]; | ||||
double h[2]; | double h[2]; | ||||
double htilda[2]; | double htilda[2]; | ||||
for ( int i = 0; i <= 2; ++i ) { | for ( int i = 0; i <= 2; ++i ) { | ||||
f[i] = formFactorParametrization( q2, fconsts[i][0], fconsts[i][1], | f[i] = formFactorParametrization( q2, fconsts[i][0], fconsts[i][1], | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | FF.GT_[1] = m1 / q2Diff * | ||||
htilda[0] * ( q2 - massSum * massDiff ) ); | htilda[0] * ( q2 - massSum * massDiff ) ); | ||||
FF.GT_[2] = m2 / q2Diff * | FF.GT_[2] = m2 / q2Diff * | ||||
( -2 * htilda[1] * massDiff * m1 + | ( -2 * htilda[1] * massDiff * m1 + | ||||
htilda[0] * ( q2 + massSum * massDiff ) ); | htilda[0] * ( q2 + massSum * massDiff ) ); | ||||
return; | return; | ||||
} | } | ||||
double EvtRareLbToLllFFlQCD::formFactorParametrization( double q2, double a0, | double EvtRareLbToLllFFlQCD::formFactorParametrization( const double q2, | ||||
double a1, double pole ) | 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 ); | 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 ); | const double a = std::sqrt( tplus - q2 ); | ||||
double b = std::sqrt( tplus - t0 ); | const double b = std::sqrt( tplus - t0 ); | ||||
return ( a - b ) / ( a + b ); | return ( a - b ) / ( a + b ); | ||||
} | } |
This could be const as well.