Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F19275438
D84.1759141467.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
33 KB
Referenced Files
None
Subscribers
None
D84.1759141467.diff
View Options
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,8 @@
/**
* Get pointer the the i:th daugther.
*/
- EvtParticle* getDaug( int i );
+ const EvtParticle* getDaug( const int i ) const { return _daug[i]; }
+ EvtParticle* getDaug( const int i ) { return _daug[i]; }
/**
* 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<EvtRareLbToLllFFBase> ffmodel_;
std::unique_ptr<EvtRareLbToLllWC> 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<std::unique_ptr<EvtRareLbToLllFF::FormFactorSet>, 2> FF_;
std::map<int, EvtRareLbToLllFF::FormFactorSet*> 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,11 +88,6 @@
_channel = i;
}
-EvtParticle* EvtParticle::getDaug( int i )
-{
- return _daug[i];
-}
-
EvtParticle* EvtParticle::getParent() const
{
return _parent;
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<EvtRareLbToLllFFGutsche>();
@@ -117,45 +125,44 @@
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;
EvtGenReport( EVTGEN_INFO, "EvtGen" )
<< " EvtRareLbToLll is probing whole phase space ..." << std::endl;
- int i, j;
double prob = 0;
- for ( i = 0; i <= 100; i++ ) {
- q2 = q2min + i * ( q2max - q2min ) / 100.;
- elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0;
- if ( i == 0 )
- pstar = 0;
- else
+ const int nsteps = 5000;
+ for ( int i = 0; i <= nsteps; i++ ) {
+ const double q2 = q2min + i * ( q2max - q2min ) / nsteps;
+ const double elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0;
+ double pstar{0};
+ if ( i != 0 ) {
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 {
p4lambda.set( mL, 0, 0, 0 );
}
- for ( j = 0; j <= 45; j++ ) {
- theta = j * EvtConst::pi / 45;
+ for ( int j = 0; j <= 45; j++ ) {
+ const double theta = j * EvtConst::pi / 45;
p4lep1.set( sqrt( pstar * pstar + m1 * m1 ), 0,
+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 +170,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 +199,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 );
+ const 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;
+ const EvtParticle* lp = 0;
+ const 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 +265,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,12 +277,12 @@
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() );
- static const double mb = 5.209;
+ const double mb = 5.209;
// Eq. 48 + 49
for ( unsigned int i = 0; i < 4; ++i ) {
@@ -300,7 +313,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 +354,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 +397,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 +439,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 +461,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,25 +97,26 @@
//=============================================================================
-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();
+ p4parent.set( parent.mass(), 0, 0, 0 );
+ const 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;
- double q2Diff = q2 - massDiffSq;
+ 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;
+ const double q2Diff = q2 - massDiffSq;
double f[3];
double g[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 );
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Sep 29, 11:24 AM (21 h, 23 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6568451
Default Alt Text
D84.1759141467.diff (33 KB)
Attached To
Mode
D84: Improve handling of phase-space generation for cases of decays having e+e- pair to make RareLbToLll model.
Attached
Detach File
Event Timeline
Log In to Comment