diff --git a/EvtGenModels/EvtLb2Lll.hh b/EvtGenModels/EvtLb2Lll.hh deleted file mode 100644 index dd0a42f..0000000 --- a/EvtGenModels/EvtLb2Lll.hh +++ /dev/null @@ -1,63 +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 EVTLB2LLL_HH -#define EVTLB2LLL_HH - -#include "EvtGenBase/EvtDecayAmp.hh" -#include "EvtGenBase/EvtDiracSpinor.hh" -#include "EvtGenBase/EvtTensor4C.hh" - -#include "EvtGenModels/EvtWilsonCoefficients.hh" - -// Desription: Routine to implement Lambda_b0 -> Lambda_0 l+ l- decays accroding to -// several models: Chen. Geng. -// Aliev. Ozpineci. Savci. - -class EvtLb2Lll : public EvtDecayAmp { - public: - std::string getName() override; - EvtDecayBase* clone() override; - - void decay( EvtParticle* p ) override; - void init() override; - void initProbMax() override; - void calcAmp( EvtAmp* amp, EvtParticle* parent ); - - EvtTensor4C EvtLeptonTG5Current( const EvtDiracSpinor& d, - const EvtDiracSpinor& dp ); - - private: - double m_polarizationLambdab0; - double m_maxProbability; - double m_poleSize; - long m_noTries; - double m_omega; - - std::string m_decayName; - std::string m_polarizationIntroduction; - std::string m_HEPmodel; - std::string m_FFtype; - std::string m_effectContribution; - - EvtWilsonCoefficients m_WC; -}; - -#endif diff --git a/src/EvtGenModels/EvtLb2Lll.cpp b/src/EvtGenModels/EvtLb2Lll.cpp deleted file mode 100644 index 860a16d..0000000 --- a/src/EvtGenModels/EvtLb2Lll.cpp +++ /dev/null @@ -1,909 +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/EvtLb2Lll.hh" - -#include "EvtGenBase/EvtComplex.hh" -#include "EvtGenBase/EvtDiracParticle.hh" -#include "EvtGenBase/EvtDiracSpinor.hh" -#include "EvtGenBase/EvtGammaMatrix.hh" -#include "EvtGenBase/EvtPDL.hh" -#include "EvtGenBase/EvtParticle.hh" -#include "EvtGenBase/EvtTensor4C.hh" -#include "EvtGenBase/EvtVector4C.hh" -#include "EvtGenBase/EvtVector4R.hh" - -#include -#include - -EvtDecayBase* EvtLb2Lll::clone() -{ - return new EvtLb2Lll; -} - -std::string EvtLb2Lll::getName() -{ - return "Lb2Lll"; -} - -void EvtLb2Lll::init() -{ - if ( getNArg() > 8 ) { // Decay parameters - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll generator expected max. 8 arguments but found: " - << getNArg() << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 1. Lambda_b0 polarization - zero is default" << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 2. Model type - \"SM\" for Standard Model is default" - << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 3. Form-Factors - \"HQET\" is used by default" << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 4. How to set polarization - \"ModifiedSpinors\" is default" - << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 5. Include long distance (LD) effects - \"SD\" (no) is default" - << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 6. NonFactorizable contribution (omega) to b->sg decay at q2=0 " - << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 7. Note on every x-th decay" << std::endl; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " 8. Maximum probability - automatic by default" << std::endl; - ::abort(); - } - - if ( getNDaug() != 3 ) { // Check that there are 3 daughters only - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll generator expected 3 daughters but found: " - << getNDaug() << std::endl; - ::abort(); - } - - EvtId LbID = EvtPDL::getId( std::string( "Lambda_b0" ) ); - EvtId aLbID = EvtPDL::getId( std::string( "anti-Lambda_b0" ) ); - EvtId eID = EvtPDL::getId( std::string( "e-" ) ); - EvtId aeID = EvtPDL::getId( std::string( "e+" ) ); - EvtId muID = EvtPDL::getId( std::string( "mu-" ) ); - EvtId amuID = EvtPDL::getId( std::string( "mu+" ) ); - EvtId tauID = EvtPDL::getId( std::string( "tau-" ) ); - EvtId atauID = EvtPDL::getId( std::string( "tau+" ) ); - - // TODO: better check based on spin and falvour is needed to allow usage of aliases ! - if ( getParentId() == LbID ) { // Check daughters of Lambda_b0 - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found Lambda_b0" << std::endl; - //if(EvtPDL::name(getDaug(0))!="Lambda0"){ - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << " ERROR: EvtLb2Lll generator expected Lambda0 daughter but found: " << EvtPDL::name(getDaug(0)) << std::endl; - // ::abort(); - //} - if ( getDaug( 1 ) == eID && getDaug( 2 ) == aeID ) { - m_decayName = "Lambda_b0 -> Lambda0 e- e+"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 e- e+" - << std::endl; - } else if ( getDaug( 1 ) == muID && getDaug( 2 ) == amuID ) { - m_decayName = "Lambda_b0 -> Lambda0 mu- mu+"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 mu- mu+" - << std::endl; - } else if ( getDaug( 1 ) == tauID && getDaug( 2 ) == atauID ) { - m_decayName = "Lambda_b0 -> Lambda0 tau- tau+"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: Lambda_b0 -> Lambda0 tau- tau+" - << std::endl; - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll generator expected lepton pair daughters but found: " - << EvtPDL::name( getDaug( 1 ) ) << " " - << EvtPDL::name( getDaug( 2 ) ) << std::endl; - ::abort(); - } - //TODO: The model is known not to work correctly for anti-Lambda_b0 (A_FB does not change its sign) - } else if ( getParentId() == aLbID ) { // Check daughters of anti-Lambda_b0 - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found anti-Lambda_b0" << std::endl; - //if(EvtPDL::name(getDaug(0))!="anti-Lambda0"){ - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << " ERROR: EvtLb2Lll generator expected anti-Lambda0 daughter but found: " << EvtPDL::name(getDaug(0)) << std::endl; - // ::abort(); - //} - if ( getDaug( 1 ) == aeID && getDaug( 2 ) == eID ) { - m_decayName = "anti-Lambda_b0 -> anti-Lambda0 e+ e-"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 e+ e-" - << std::endl; - } else if ( getDaug( 1 ) == amuID && getDaug( 2 ) == muID ) { - m_decayName = "anti-Lambda_b0 -> anti-Lambda0 mu+ mu-"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 mu+ mu-" - << std::endl; - } else if ( getDaug( 1 ) == atauID && getDaug( 2 ) == tauID ) { - m_decayName = "anti-Lambda_b0 -> anti-Lambda0 tau+ tau-"; - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll generator found decay: anti-Lambda_b0 -> anti-Lambda0 tau+ tau-" - << std::endl; - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll generator expected lepton pair daughters but found: " - << EvtPDL::name( getDaug( 1 ) ) << " " - << EvtPDL::name( getDaug( 2 ) ) << std::endl; - ::abort(); - } - } else { // This model is not intended for decay of anything else than (anti-)Lambda_b0 - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll generator expected (anti-)Lambda_b0 parent but found: " - << EvtPDL::name( getParentId() ) << std::endl; - ::abort(); - } - - // Read and check all parameters - if ( getNArg() > 0 ) { - if ( getArg( 0 ) > 1. || getArg( 0 ) < -1. ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll expects polarization to be in interval <-1,1>, not " - << getArg( 0 ) << std::endl; - ::abort(); - } - m_polarizationLambdab0 = getArg( 0 ); - } else { - m_polarizationLambdab0 = 0; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll set Lambda_b0 polarization to " << m_polarizationLambdab0 - << std::endl; - - if ( getNArg() > 1 ) { - if ( getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) != "SM" && - getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) != "-C7_SM" && - getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ) != - "SUSY-ChenGeng" ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll doesn't know this physics model: " - << getArgStr( 1 ) << std::endl; - ::abort(); - } - m_HEPmodel = getArgStr( 1 ).substr( 1, getArgStr( 1 ).size() - 2 ); - } else { - m_HEPmodel = "SM"; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll will use this physics model: " << m_HEPmodel << std::endl; - - if ( getNArg() > 2 ) { - if ( getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 ) != "HQET" && - getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 ) != "HQET-noF2" && - getArgStr( 2 ).substr( 1, 11 ) != "HQET-delta=" ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll doesn't know this Form-Factors model: " - << getArgStr( 2 ) << std::endl; - ::abort(); - } - m_FFtype = getArgStr( 2 ).substr( 1, getArgStr( 2 ).size() - 2 ); - } else { - m_FFtype = "HQET"; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll will use this Form-Factors model: " << m_FFtype - << std::endl; - - if ( getNArg() > 3 ) { - if ( getArgStr( 3 ).substr( 1, getArgStr( 3 ).size() - 2 ) != - "Unpolarized" ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll doesn't know kind of introducing polarization: " - << getArgStr( 3 ) << std::endl; - ::abort(); - } - m_polarizationIntroduction = - getArgStr( 3 ).substr( 1, getArgStr( 3 ).size() - 2 ); - } else { - m_polarizationIntroduction = "Unpolarized"; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll will use this kind of introducing polarization: " - << m_polarizationIntroduction << std::endl; - - if ( getNArg() > 4 ) { - if ( getArgStr( 4 ).substr( 1, getArgStr( 4 ).size() - 2 ) != "SD" && - getArgStr( 4 ).substr( 1, getArgStr( 4 ).size() - 2 ) != "LD" ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll didn't find SD or LD parameter: " - << getArgStr( 4 ) << std::endl; - ::abort(); - } - m_effectContribution = getArgStr( 5 ).substr( 1, getArgStr( 4 ).size() - - 2 ); - } else { - m_effectContribution = "SD"; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll will include contribution from these effects: " - << m_effectContribution << std::endl; - - if ( getNArg() > 5 ) { - if ( fabs( getArg( 5 ) ) > 0.15 ) { - EvtGenReport( EVTGEN_WARNING, "EvtGen" ) - << " WARNING: EvtLb2Lll found very high contribution to b->sg decay at q2=0: " - << getArg( 5 ) << std::endl; - } - m_omega = getArg( 5 ); - } else { - m_omega = 0; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll will use this contribution to b->sg decay at q2=0: " - << m_omega << std::endl; - - if ( getNArg() > 6 ) - m_noTries = (long)( getArg( 6 ) ); - else - m_noTries = 0; - - if ( getNArg() > 7 ) { - if ( getArg( 7 ) < 0. ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll expects positive maximum probability not : " - << getArg( 7 ) << std::endl; - ::abort(); - } - m_maxProbability = getArg( 7 ); - } else { - m_maxProbability = 0.; - } - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll maximum probability was set to " << m_maxProbability - << std::endl; - m_poleSize = 0; - - // Initialize Wilson coefficients by Buras and Munz - // TODO: should have common W.C. source for all decays in EvtGen - m_WC.CalculateAllCoefficients(); -} - -void EvtLb2Lll::initProbMax() -{ - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll is finding maximum probability ... " << std::endl; - - if ( m_maxProbability < 1e-10 ) { - EvtDiracParticle* parent = new EvtDiracParticle; - parent->noLifeTime(); - parent->init( getParentId(), - EvtVector4R( EvtPDL::getMass( getParentId() ), 0, 0, 0 ) ); - parent->setDiagonalSpinDensity(); - - EvtAmp amp; - EvtId daughters[3] = { getDaug( 0 ), getDaug( 1 ), getDaug( 2 ) }; - amp.init( getParentId(), 3, daughters ); - parent->makeDaughters( 3, daughters ); - EvtParticle* lambda = parent->getDaug( 0 ); - EvtParticle* lep1 = parent->getDaug( 1 ); - EvtParticle* lep2 = parent->getDaug( 2 ); - lambda->noLifeTime(); - lep1->noLifeTime(); - lep2->noLifeTime(); - - 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 ) ); - - double q2, pstar, elambda, theta; - double q2min = ( m1 + m2 ) * ( m1 + m2 ); - double q2max = ( M0 - mL ) * ( M0 - mL ); - - EvtVector4R p4lambda, p4lep1, p4lep2, boost; - - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll 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 - 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 ) { - 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; - 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 ) ); - if ( i != 100 ) // 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 ); - } - calcAmp( &, 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; - if ( prob > m_maxProbability ) { - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " - probability " << prob << " found at q2 = " << q2 - << " (" << 100 * ( 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; - delete parent; - } - - if ( m_maxProbability < 1e-10 ) { - EvtGenReport( EVTGEN_INFO, "EvtLb2Lll" ) - << "EvtLb2Lll found zero max prob, setting to 1.5e6" << std::endl; - m_maxProbability = 1.5e6; - } - - setProbMax( m_maxProbability ); - EvtGenReport( EVTGEN_INFO, "EvtGen" ) - << " EvtLb2Lll set up maximum probability to " << m_maxProbability - << std::endl; -} - -void EvtLb2Lll::decay( EvtParticle* parent ) -{ - //setWeight(parent->initializePhaseSpace(getNDaug(),getDaugs(),m_poleSize,1,2)); - parent->initializePhaseSpace( getNDaug(), getDaugs() ); - calcAmp( &_amp2, parent ); -} - -void EvtLb2Lll::calcAmp( EvtAmp* amp, EvtParticle* parent ) -{ - static long noTries = 0; - static double delta = 0; - - EvtComplex Matrix[2][2][2][2]; - - EvtComplex i1( 0, 1 ); - - int i, j, spins[4]; - char ch; - - double r, M_L, M_Lb, M_s, M_c, M_b, q2, alpha, M_W, M_t; - double M_psi[2] = { 0, 0 }, Gamma_psi[2] = { 0, 0 }, k_psi[2] = { 0, 0 }; - double F0_1, F0_2, a_F1, a_F2, b_F1, b_F2, F1, F2; - double f_1, f_2, f_3, g_1, g_2, g_3, f_1T, f_2T, f_3T, g_1T, g_2T, g_3T, - f_TV, f_TS, g_TV( 0.0 ), g_TS, f_T, g_T; - EvtComplex A1, A2, A3, B1, B2, B3, D1, D2, D3, E1, E2, E3, N1, N2, H1, H2; - EvtComplex C_SL, C_BR, C_LLtot, C_LRtot, C_LL, C_LR, C_RL, C_RR, C_LRLR, - C_RLLR, C_LRRL, C_RLRL, C_T, C_TE; - EvtComplex Yld, C_7eff, C_9eff; - EvtComplex V_ts, V_tb; - - EvtVector4C lbar_Gmu_l[2][2], lbar_GmuG5_l[2][2], hbar_GmuPlusG5_h[2][2], - hbar_GmuMinusG5_h[2][2], hbar_Gmu_h[2][2]; - EvtComplex lbar_l[2][2], lbar_G5_l[2][2], hbar_1PlusG5_h[2][2], - hbar_1MinusG5_h[2][2], hbar_G5_h[2][2], hbar_h[2][2]; - EvtTensor4C lbar_Smunu_l[2][2], lbar_ESmunu_l[2][2], - hbar_SmunuPlusG5_h[2][2], hbar_SmunuMinusG5_h[2][2], hbar_Smunu_h[2][2]; - EvtVector4R q_mu, P_mu; - - EvtDiracSpinor parent__spParent[2]; - - M_Lb = parent->mass(); - M_L = parent->getDaug( 0 )->mass(); - M_s = 0.13; - M_c = 1.35; - M_b = 4.8; - alpha = 1. / 137.036; - M_W = 80.425; - M_t = 174.3; - M_psi[0] = 3.096916; - M_psi[1] = 3.686093; - if ( m_decayName == "Lambda_b0 -> Lambda0 e- e+" || - m_decayName == "anti-Lambda_b0 -> anti-Lambda0 e+ e-" ) { - Gamma_psi[0] = 5.40; - Gamma_psi[1] = 2.12; - } - if ( m_decayName == "Lambda_b0 -> Lambda0 mu- mu+" || - m_decayName == "anti-Lambda_b0 -> anti-Lambda0 mu+ mu-" ) { - Gamma_psi[0] = 5.35; - Gamma_psi[1] = 2.05; - } - if ( m_decayName == "Lambda_b0 -> Lambda0 tau- tau+" || - m_decayName == "anti-Lambda_b0 -> anti-Lambda0 tau+ tau-" ) { - Gamma_psi[0] = 0.00; - Gamma_psi[1] = 0.79; - } - if ( m_effectContribution == "LD" ) { - k_psi[0] = 1.65; - k_psi[1] = 1.65; - } - //G_F = 1.16637e-5; - //V_tb = sqrt(1-pow(0.0413,2))*sqrt(1-pow(0.0037,2)); - //V_ts = -sqrt(1-pow(0.2243,2))*0.0413-0.2243*sqrt(1-pow(0.0413,2))*0.0037*(cos(60*EvtConst::pi/180)+i1*sin(60*EvtConst::pi/180)); - - P_mu = parent->getP4Restframe() + parent->getDaug( 0 )->getP4(); - q_mu = parent->getP4Restframe() - parent->getDaug( 0 )->getP4(); - q2 = q_mu.mass2(); - - if ( m_noTries > 0 ) - if ( !( ( ++noTries ) % m_noTries ) ) - EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) - << " EvtLb2Lll already finished " << noTries - << " matrix element calculations" << std::endl; - - if ( m_FFtype == "HQET" ) { - r = M_L * M_L / M_Lb / M_Lb; - F0_1 = +0.462; - F0_2 = -0.077; - a_F1 = -0.0182; - a_F2 = -0.0685; - b_F1 = -0.000176; - b_F2 = +0.001460; - F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) * - ( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) ); - F2 = F0_2 / ( 1.0 - ( q2 / M_Lb / M_Lb ) * - ( a_F2 - b_F2 * ( q2 / M_Lb / M_Lb ) ) ); - g_1 = f_1 = f_2T = g_2T = F1 + sqrt( r ) * F2; - //std::cout << " F1: " << F1 << " F2: " << F2 << " r: " << r << " M_L: " << M_L << " M_Lb: " << M_Lb << std::endl; - //std::cout << " sqrt(q2): " << sqrt(q2) << " q2: " << q2 << " M_Lb^2" << M_Lb*M_Lb << std::endl; - g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = F2 / M_Lb; - g_TS = f_TS = 0; - g_1T = f_1T = F2 / M_Lb * q2; - g_3T = +F2 / M_Lb * ( M_Lb + M_L ); - f_3T = -F2 / M_Lb * ( M_Lb - M_L ); - f_T = f_2T - f_TS * q2; - g_T = g_2T - g_TS * q2; - } else if ( strstr( m_FFtype.c_str(), "HQET-delta=" ) == m_FFtype.c_str() ) { - //EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: HQET-delta FF model should be checked for correctness" << std::endl; - if ( delta == 0 ) - sscanf( m_FFtype.c_str(), "%c%c%c%c%c%c%c%c%c%c%c%lf", &ch, &ch, - &ch, &ch, &ch, &ch, &ch, &ch, &ch, &ch, &ch, &delta ); - r = M_L * M_L / M_Lb / M_Lb; - F0_1 = +0.462; - F0_2 = -0.077; - a_F1 = -0.0182; - a_F2 = -0.0685; - b_F1 = -0.000176; - b_F2 = +0.001460; - F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) * - ( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) ); - F2 = F0_2 / ( 1.0 - ( q2 / M_Lb / M_Lb ) * - ( a_F2 - b_F2 * ( q2 / M_Lb / M_Lb ) ) ); - g_1 = f_1 = f_2T = g_2T = F1 + sqrt( r ) * F2; - g_1 += delta * g_1; - f_1 -= delta * f_1; - g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = F2 / M_Lb; - g_TS = f_TS = 0; - g_1T = f_1T = F2 / M_Lb * q2; - g_3T = +F2 / M_Lb * ( M_Lb + M_L ); - f_3T = -F2 / M_Lb * ( M_Lb - M_L ); - f_T = f_2T - f_TS * q2; - g_T = g_2T - g_TS * q2; - } else if ( m_FFtype == "HQET-noF2" ) { - //EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: HQET-noF2 FF model should be checked for correctness" << std::endl; - r = M_L * M_L / M_Lb / M_Lb; - F0_1 = +0.462; - a_F1 = -0.0182; - b_F1 = -0.000176; - F1 = F0_1 / ( 1.0 - ( q2 / M_Lb / M_Lb ) * - ( a_F1 - b_F1 * ( q2 / M_Lb / M_Lb ) ) ); - g_1 = f_1 = f_2T = g_2T = F1; - g_2 = f_2 = g_3 = f_3 = g_TV = f_TV = 0; - g_TS = f_TS = 0; - g_1T = f_1T = 0; - g_3T = 0; - f_3T = 0; - f_T = f_2T - f_TS * q2; - g_T = g_2T - g_TS * q2; - } else { // general relations for Form-Factors - f_1 = f_2 = f_3 = g_1 = g_2 = g_3 = f_3T = g_3T = f_TS = g_TS = f_T = - g_T = f_TV = 0; - f_2T = f_T + f_TS * q2; - f_1T = ( f_TV + f_TS * ( M_L + M_Lb ) ) * q2; - f_1T = -q2 / ( M_Lb - M_L ) * f_3T; - g_2T = g_T + g_TS * q2; - g_1T = ( g_TV - g_TS * ( M_L - M_Lb ) ) * q2; - g_1T = +q2 / ( M_Lb + M_L ) * g_3T; - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll - unknown Form-Factors model: " << m_FFtype - << " - this should never happen !" << std::endl; - ::abort(); - } - - if ( m_HEPmodel == "SM" ) { - C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T = - C_TE = EvtComplex( 0, 0 ); - Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(), - m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(), - m_WC.GetC6(), 1. / alpha ); - C_7eff = m_WC.GetC7eff0() + - m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(), - m_WC.GetC2(), M_t, M_W ) + - m_omega * - ( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld ); - C_9eff = Yld + - m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b, - m_WC.GetStrongCouplingConst(), m_WC.GetC1(), - m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), - m_WC.GetC5(), m_WC.GetC6(), m_WC.GetC9tilda(), - m_WC.GetRenormSchemePar() ); - C_SL = -2 * M_s * C_7eff; - C_BR = -2 * M_b * C_7eff; - C_LLtot = C_9eff - m_WC.GetC10tilda() + C_LL; - C_LRtot = C_9eff + m_WC.GetC10tilda() + C_LR; - //std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl; - } else if ( m_HEPmodel == "-C7_SM" ) { - C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T = - C_TE = EvtComplex( 0, 0 ); - Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(), - m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(), - m_WC.GetC6(), 1. / alpha ); - C_7eff = m_WC.GetC7eff0() + - m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(), - m_WC.GetC2(), M_t, M_W ) + - m_omega * - ( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld ); - C_9eff = Yld + - m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b, - m_WC.GetStrongCouplingConst(), m_WC.GetC1(), - m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), - m_WC.GetC5(), m_WC.GetC6(), m_WC.GetC9tilda(), - m_WC.GetRenormSchemePar() ); - C_SL = +2 * M_s * C_7eff; - C_BR = +2 * M_b * C_7eff; - C_LLtot = C_9eff - m_WC.GetC10tilda() + C_LL; - C_LRtot = C_9eff + m_WC.GetC10tilda() + C_LR; - //std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl; - } else if ( m_HEPmodel == "SUSY-ChenGeng" ) { - //EvtGenReport(EVTGEN_WARNING,"EvtGen") << " WARNING: SUSY-ChenGeng model should be checked for correctness" << std::endl; - C_LL = C_LR = C_RL = C_RR = C_LRLR = C_RLLR = C_LRRL = C_RLRL = C_T = - C_TE = EvtComplex( 0, 0 ); - EvtComplex d_u23LL = 0.1; - EvtComplex d_u33RL = 0.65; - EvtComplex d_d23LR = 0.03 * exp( i1 * EvtConst::pi * 2 / 5 ); - EvtComplex d_u23LR = -0.8 * exp( i1 * EvtConst::pi / 4 ); - EvtComplex C_7susy = -1.75 * d_u23LL - 0.25 * d_u23LR - 10.3 * d_d23LR; - EvtComplex C_9susy = 0.82 * d_u23LR; - EvtComplex C_10susy = -9.37 * d_u23LR + 1.4 * d_u23LR * d_u33RL + - 2.7 * d_u23LL; - Yld = m_WC.Yld( q2, k_psi, Gamma_psi, M_psi, 2, m_WC.GetC1(), - m_WC.GetC2(), m_WC.GetC3(), m_WC.GetC4(), m_WC.GetC5(), - m_WC.GetC6(), 1. / alpha ); - C_7eff = m_WC.GetC7eff0() + C_7susy * pow( m_WC.GetEta(), 16. / 23. ) + - m_WC.C7b2sg( m_WC.GetStrongCouplingConst(), m_WC.GetEta(), - m_WC.GetC2(), M_t, M_W ) + - m_omega * - ( m_WC.hzs( M_c / M_b, q2 / M_b / M_b, M_b, M_b ) + Yld ); - C_9eff = Yld + m_WC.C9efftilda( M_c / M_b, q2 / M_b / M_b, - m_WC.GetStrongCouplingConst(), - m_WC.GetC1(), m_WC.GetC2(), m_WC.GetC3(), - m_WC.GetC4(), m_WC.GetC5(), m_WC.GetC6(), - m_WC.GetC9tilda() + C_9susy, - m_WC.GetRenormSchemePar() ); - C_SL = -2 * M_s * C_7eff; - C_BR = -2 * M_b * C_7eff; - C_LLtot = C_9eff - m_WC.GetC10tilda() - C_10susy + C_LL; - C_LRtot = C_9eff + m_WC.GetC10tilda() + C_10susy + C_LR; - //std::cout << "Yld: " << Yld << " C7eff: " << C_7eff << " C_9eff: " << C_9eff << " Diff7: " << C_7eff-m_WC.GetC7eff0() << " Diff9: " << C_9eff-m_WC.GetC9tilda() << std::endl; - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll - unknown physics model: " << m_HEPmodel - << " - this should never happen !" << std::endl; - ::abort(); - } - - A1 = ( f_1T - g_1T ) * C_SL / q2 + ( f_1T + g_1T ) * C_BR / q2 + - 0.5 * ( f_1 - g_1 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_1 + g_1 ) * ( C_RL + C_RR ); - //std::cout << "f_1T: " << f_1T << " g_1T: " << g_1T << " C_SL: " << C_SL << " C_BR: " << C_BR << " f_1: " << f_1 << " g_1: " << g_1 << " C_LLtot: " << C_LLtot << " C_LRtot: " << C_LRtot << " C_RL: " << C_RL << " C_RR: " << C_RR << std::endl; - A2 = ( f_2T - g_2T ) * C_SL / q2 + ( f_2T + g_2T ) * C_BR / q2 + - 0.5 * ( f_2 - g_2 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_2 + g_2 ) * ( C_RL + C_RR ); - A3 = ( f_3T - g_3T ) * C_SL / q2 + ( f_3T + g_3T ) * C_BR / q2 + - 0.5 * ( f_3 - g_3 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_3 + g_3 ) * ( C_RL + C_RR ); - - B1 = ( f_1T + g_1T ) * C_SL / q2 + ( f_1T - g_1T ) * C_BR / q2 + - 0.5 * ( f_1 + g_1 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_1 - g_1 ) * ( C_RL + C_RR ); - B2 = ( f_2T + g_2T ) * C_SL / q2 + ( f_2T - g_2T ) * C_BR / q2 + - 0.5 * ( f_2 + g_2 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_2 - g_2 ) * ( C_RL + C_RR ); - B3 = ( f_3T + g_3T ) * C_SL / q2 + ( f_3T - g_3T ) * C_BR / q2 + - 0.5 * ( f_3 + g_3 ) * ( C_LLtot + C_LRtot ) + - 0.5 * ( f_3 - g_3 ) * ( C_RL + C_RR ); - - D1 = 0.5 * ( C_RR - C_RL ) * ( f_1 + g_1 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_1 - g_1 ); - D2 = 0.5 * ( C_RR - C_RL ) * ( f_2 + g_2 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_2 - g_2 ); - D3 = 0.5 * ( C_RR - C_RL ) * ( f_3 + g_3 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_3 - g_3 ); - - E1 = 0.5 * ( C_RR - C_RL ) * ( f_1 - g_1 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_1 + g_1 ); - E2 = 0.5 * ( C_RR - C_RL ) * ( f_2 - g_2 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_2 + g_2 ); - E3 = 0.5 * ( C_RR - C_RL ) * ( f_3 - g_3 ) + - 0.5 * ( C_LRtot - C_LLtot ) * ( f_3 + g_3 ); - - N1 = ( f_1 * ( M_Lb - M_L ) + f_3 * q2 ) / M_b * - ( C_LRLR + C_RLLR + C_LRRL + C_RLRL ); // Should be mLb - mL - N2 = ( f_1 * ( M_Lb - M_L ) + f_3 * q2 ) / M_b * - ( C_LRLR + C_RLLR - C_LRRL - C_RLRL ); - - H1 = ( g_1 * ( M_Lb + M_L ) - g_3 * q2 ) / M_b * - ( C_LRLR - C_RLLR + C_LRRL - C_RLRL ); - H2 = ( g_1 * ( M_Lb + M_L ) - g_3 * q2 ) / M_b * - ( C_LRLR - C_RLLR - C_LRRL + C_RLRL ); - - for ( i = 0; i < 4; i++ ) { - lbar_Gmu_l[i / 2][i % 2] = - EvtLeptonVCurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ); - lbar_GmuG5_l[i / 2][i % 2] = - EvtLeptonACurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ); - lbar_l[i / 2][i % 2] = - EvtLeptonSCurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ); - lbar_G5_l[i / 2][i % 2] = - EvtLeptonPCurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ); - lbar_Smunu_l[i / 2][i % 2] = - EvtLeptonTCurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ); - lbar_ESmunu_l[i / 2][i % 2] = dual( - EvtLeptonTCurrent( parent->getDaug( 1 )->spParent( i / 2 ), - parent->getDaug( 2 )->spParent( i % 2 ) ) ); - } - - // TODO: polarization not yet introduced - if ( m_polarizationIntroduction == "SpinDensityMatrix" ) { - //parent->setSpinDensityForward(); - parent__spParent[0] = parent->sp( 0 ); - parent__spParent[1] = parent->sp( 1 ); - } else if ( m_polarizationIntroduction == "ModifiedSpinors" ) { - parent__spParent[0] = parent->sp( 0 ); - parent__spParent[1] = parent->sp( 1 ); - } else if ( m_polarizationIntroduction == "Unpolarized" ) { - parent__spParent[0] = parent->sp( 0 ); - parent__spParent[1] = parent->sp( 1 ); - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << " ERROR: EvtLb2Lll - unknown polarization: " - << m_polarizationIntroduction << " - this should never happen !" - << std::endl; - ::abort(); - } - - for ( i = 0; i < 4; i++ ) { - hbar_GmuPlusG5_h[i / 2][i % 2] = - EvtLeptonVCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ) + - EvtLeptonACurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ); - hbar_GmuMinusG5_h[i / 2][i % 2] = EvtLeptonVACurrent( - parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] ); - hbar_SmunuPlusG5_h[i / 2][i % 2] = - EvtLeptonTCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ) + - EvtLeptonTG5Current( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ); - hbar_SmunuMinusG5_h[i / 2][i % 2] = - EvtLeptonTCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ) - - EvtLeptonTG5Current( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ); - hbar_1PlusG5_h[i / 2][i % 2] = - EvtLeptonSCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ) + - EvtLeptonPCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ); - hbar_1MinusG5_h[i / 2][i % 2] = - EvtLeptonSCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ) - - EvtLeptonPCurrent( parent->getDaug( 0 )->spParent( i / 2 ), - parent__spParent[i % 2] ); - hbar_G5_h[i / 2][i % 2] = EvtLeptonPCurrent( - parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] ); - hbar_h[i / 2][i % 2] = EvtLeptonSCurrent( - parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] ); - hbar_Smunu_h[i / 2][i % 2] = EvtLeptonTCurrent( - parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] ); - hbar_Gmu_h[i / 2][i % 2] = EvtLeptonVCurrent( - parent->getDaug( 0 )->spParent( i / 2 ), parent__spParent[i % 2] ); - } - - for ( i = 0; i < 4; i++ ) - for ( j = 0; j < 4; j++ ) { - //std::cout << "--------------------------------------------------" << std::endl; - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_Gmu_l[i / 2][i % 2] * - ( A1 * hbar_GmuPlusG5_h[j / 2][j % 2] + - B1 * hbar_GmuMinusG5_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - //std::cout << "A1: " << A1 << " B1: " << B1 << " lbar_Gmu_l: " << lbar_Gmu_l[i/2][i%2] << - // " hbar_GmuPlusG5_h: " << hbar_GmuPlusG5_h[j/2][j%2] << " hbar_GmuMinusG5_h: " << hbar_GmuMinusG5_h[j/2][j%2] << - // " sp1: " << parent->getDaug(1)->spParent(i/2) << " sp2: " << parent->getDaug(1)->spParent(i%2) << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_Gmu_l[i / 2][i % 2] * - ( i1 * A2 * ( hbar_SmunuPlusG5_h[j / 2][j % 2].cont2( q_mu ) ) + - B2 * ( hbar_SmunuMinusG5_h[j / 2][j % 2].cont2( q_mu ) ) ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_Gmu_l[i / 2][i % 2] * - ( ( A3 * hbar_1PlusG5_h[j / 2][j % 2] + - B3 * hbar_1MinusG5_h[j / 2][j % 2] ) * - q_mu ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_GmuG5_l[i / 2][i % 2] * - ( D1 * hbar_GmuPlusG5_h[j / 2][j % 2] + - E1 * hbar_GmuMinusG5_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_GmuG5_l[i / 2][i % 2] * - ( i1 * D2 * ( hbar_SmunuPlusG5_h[j / 2][j % 2].cont2( q_mu ) ) + - E2 * ( hbar_SmunuMinusG5_h[j / 2][j % 2].cont2( q_mu ) ) ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_GmuG5_l[i / 2][i % 2] * - ( ( D3 * hbar_1PlusG5_h[j / 2][j % 2] + - E3 * hbar_1MinusG5_h[j / 2][j % 2] ) * - q_mu ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_l[i / 2][i % 2] * - ( N1 * hbar_h[j / 2][j % 2] + H1 * hbar_G5_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - lbar_G5_l[i / 2][i % 2] * - ( N2 * hbar_h[j / 2][j % 2] + H2 * hbar_G5_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - cont( lbar_Smunu_l[i / 2][i % 2], - 4 * C_T * f_T * hbar_Smunu_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += cont( - lbar_Smunu_l[i / 2][i % 2], - -4 * C_T * f_TV * i1 * - ( EvtGenFunctions::directProd( q_mu, hbar_Gmu_h[j / 2][j % 2] ) - - EvtGenFunctions::directProd( hbar_Gmu_h[j / 2][j % 2], - q_mu ) ) ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - cont( lbar_Smunu_l[i / 2][i % 2], - -4 * C_T * f_TS * i1 * - ( EvtGenFunctions::directProd( P_mu, q_mu ) - - EvtGenFunctions::directProd( q_mu, P_mu ) ) * - hbar_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - cont( lbar_ESmunu_l[i / 2][i % 2], - 4 * C_TE * f_T * i1 * hbar_Smunu_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += cont( - lbar_ESmunu_l[i / 2][i % 2], - 4 * C_TE * f_TV * - ( EvtGenFunctions::directProd( q_mu, hbar_Gmu_h[j / 2][j % 2] ) - - EvtGenFunctions::directProd( hbar_Gmu_h[j / 2][j % 2], - q_mu ) ) ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - Matrix[j / 2][j % 2][i / 2][i % 2] += - cont( lbar_ESmunu_l[i / 2][i % 2], - 4 * C_TE * f_TS * - ( EvtGenFunctions::directProd( P_mu, q_mu ) - - EvtGenFunctions::directProd( q_mu, P_mu ) ) * - hbar_h[j / 2][j % 2] ); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - //Matrix[j/2][j%2][i/2][i%2] *= G_F*alpha/4/sqrt(2)/EvtConst::pi*V_tb*conj(V_ts); - //std::cout << "Matrix = " << Matrix[j/2][j%2][i/2][i%2] << std::endl; - //std::cout << "--------------------------------------------------" << std::endl; - spins[0] = j % 2; - spins[1] = j / 2; - spins[2] = i / 2; - spins[3] = i % 2; - amp->vertex( spins, Matrix[j / 2][j % 2][i / 2][i % 2] ); - } - - //std::cout << "==================================================" << std::endl; - //std::cout << "Lambda_b0: " << parent->getP4Restframe() << std::endl; - //std::cout << "Lambda0: " << parent->getDaug(0)->getP4() << std::endl; - //std::cout << "mu-: " << parent->getDaug(1)->getP4() << std::endl; - //std::cout << "mu+: " << parent->getDaug(2)->getP4() << std::endl; - //std::cout << "P_mu: " << P_mu << std::endl; - //std::cout << "q_mu: " << q_mu << std::endl; - //std::cout << "q2: " << q2 << std::endl; - //std::cout << "==================================================" << std::endl; - - return; -} - -EvtTensor4C EvtLb2Lll::EvtLeptonTG5Current( const EvtDiracSpinor& d, - const EvtDiracSpinor& dp ) -{ - // - - EvtTensor4C temp; - temp.zero(); - EvtComplex i2( 0, 0.5 ); - - static EvtGammaMatrix mat01 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g0() * EvtGammaMatrix::g1() - - EvtGammaMatrix::g1() * EvtGammaMatrix::g0() ) * - EvtGammaMatrix::g5(); - static EvtGammaMatrix mat02 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g0() * EvtGammaMatrix::g2() - - EvtGammaMatrix::g2() * EvtGammaMatrix::g0() ) * - EvtGammaMatrix::g5(); - static EvtGammaMatrix mat03 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g0() * EvtGammaMatrix::g3() - - EvtGammaMatrix::g3() * EvtGammaMatrix::g0() ) * - EvtGammaMatrix::g5(); - static EvtGammaMatrix mat12 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g1() * EvtGammaMatrix::g2() - - EvtGammaMatrix::g2() * EvtGammaMatrix::g1() ) * - EvtGammaMatrix::g5(); - static EvtGammaMatrix mat13 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g1() * EvtGammaMatrix::g3() - - EvtGammaMatrix::g3() * EvtGammaMatrix::g1() ) * - EvtGammaMatrix::g5(); - static EvtGammaMatrix mat23 = EvtGammaMatrix::g0() * - ( EvtGammaMatrix::g2() * EvtGammaMatrix::g3() - - EvtGammaMatrix::g3() * EvtGammaMatrix::g2() ) * - EvtGammaMatrix::g5(); - - temp.set( 0, 1, i2 * ( d * ( mat01 * dp ) ) ); - temp.set( 1, 0, -temp.get( 0, 1 ) ); - - temp.set( 0, 2, i2 * ( d * ( mat02 * dp ) ) ); - temp.set( 2, 0, -temp.get( 0, 2 ) ); - - temp.set( 0, 3, i2 * ( d * ( mat03 * dp ) ) ); - temp.set( 3, 0, -temp.get( 0, 3 ) ); - - temp.set( 1, 2, i2 * ( d * ( mat12 * dp ) ) ); - temp.set( 2, 1, -temp.get( 1, 2 ) ); - - temp.set( 1, 3, i2 * ( d * ( mat13 * dp ) ) ); - temp.set( 3, 1, -temp.get( 1, 3 ) ); - - temp.set( 2, 3, i2 * ( d * ( mat23 * dp ) ) ); - temp.set( 3, 2, -temp.get( 2, 3 ) ); - - return temp; -} diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp index 1eeacc3..733f8ee 100644 --- a/src/EvtGenModels/EvtModelReg.cpp +++ b/src/EvtGenModels/EvtModelReg.cpp @@ -1,347 +1,345 @@ /*********************************************************************** * 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/EvtLb2Lll.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 EvtLb2Lll ); 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/Lb2Lll=HELAMP__Lambdab0_Lambda0mumu_ppi.json b/test/jsonFiles/Lb2Lll=HELAMP__Lambdab0_Lambda0mumu_ppi.json deleted file mode 100644 index 433eb43..0000000 --- a/test/jsonFiles/Lb2Lll=HELAMP__Lambdab0_Lambda0mumu_ppi.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent" : "Lambda_b0", - "daughters" : ["Lambda0", "mu-", "mu+"], - "grand_daughters" : [["p+","pi-"], [], []], - "models" : ["Lb2Lll", "HELAMP", ""], - "parameters" : [[], ["0.936", "0.0", "0.351", "0.0"]], - "extras" : ["noPhotos"], - "events" : 10000, - "histograms" : [ - {"variable" : "prob", "title" : "Prob(Lb2Lll)", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0}, - {"variable" : "prob_daug1", "title" : "Prob(HELAMP)", "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" : 1.2}, - {"variable" : "mass", "title" : "m(#Lambda^{0} #mu^{-})", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.0, "xmax" : 6.0}, - {"variable" : "mass", "title" : "m(#Lambda^{0} #mu^{+})", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 6.0}, - {"variable" : "pSumSq", "title" : "q^{2}(#mu^{-} #mu^{+})", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 21.0}, - {"variable" : "cosHel", "title" : "cosHel(p,#Lambda^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "decayangle_daug1", "title" : "decayAngle(#Lambda^{0},p,#pi^{-})", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.0, "xmax" : 180.0} - ], - "outfile" : "Lb2Lll=HELAMP__Lambdab0_Lambda0mumu_ppi.root", - "reference" : "RefLb2Lll=HELAMP__Lambdab0_Lambda0mumu_ppi.root" -}