diff --git a/EvtGenModels/EvtbsToLLLL.hh b/EvtGenModels/EvtbsToLLLL.hh deleted file mode 100644 index 2b15d94..0000000 --- a/EvtGenModels/EvtbsToLLLL.hh +++ /dev/null @@ -1,49 +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 EVTBSTOLLLL_HH -#define EVTBSTOLLLL_HH - -#include "EvtGenBase/EvtDecayAmp.hh" - -class EvtParticle; -class Evtbs2llGammaFF; // my class with ff for rare semileptonic B-decays -class EvtbsToLLLLAmp; // my class with amplitudes for rare four-leptonic B-decays -class EvtbTosllWilsCoeffNLO; // my class with Wilson coefficients in NLO - -class EvtbsToLLLL : public EvtDecayAmp { - public: - EvtbsToLLLL(){}; - virtual ~EvtbsToLLLL(); - - std::string getName() override; - EvtDecayBase* clone() override; - - void init() override; - void initProbMax() override; - void decay( EvtParticle* p ) override; - - private: - Evtbs2llGammaFF* _mntffmodel; - EvtbsToLLLLAmp* _calcamp; - EvtbTosllWilsCoeffNLO* _wilscoeff; -}; - -#endif diff --git a/EvtGenModels/EvtbsToLLLLAmp.hh b/EvtGenModels/EvtbsToLLLLAmp.hh deleted file mode 100644 index bce8f14..0000000 --- a/EvtGenModels/EvtbsToLLLLAmp.hh +++ /dev/null @@ -1,51 +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 EVTBSTOLLLL_AMP_HH -#define EVTBSTOLLLL_AMP_HH - -class EvtId; -class EvtAmp; -class EvtParticle; -class Evtbs2llGammaFF; -class EvtbTosllWilsCoeffNLO; - -class EvtbsToLLLLAmp { - public: - void CalcAmp( EvtParticle* parent, EvtAmp& amp, Evtbs2llGammaFF* formFactors, - EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, int Nf, - int res_swch, int ias, double CKM_A, double CKM_lambda, - double CKM_barrho, double CKM_bareta ); - - double CalcMaxProb( - // EvtId parnum, - // EvtId l1num, EvtId l2num, - // EvtId l3num, EvtId l4num, - // Evtbs2llGammaFF *formFactors, - // EvtbTosllWilsCoeffNLO *WilsCoeff, - // double mu, int Nf, int res_swch, int ias, - // double CKM_A, double CKM_lambda, - // double CKM_barrho, double CKM_bareta - ); - - double lambda( double a, double b, double c ); -}; - -#endif diff --git a/EvtGenModels/EvtbsToLLLLHyperCP.hh b/EvtGenModels/EvtbsToLLLLHyperCP.hh deleted file mode 100644 index 2f434b9..0000000 --- a/EvtGenModels/EvtbsToLLLLHyperCP.hh +++ /dev/null @@ -1,45 +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 EVTBSTOLLLL_HYPERCP_HH -#define EVTBSTOLLLL_HYPERCP_HH - -#include "EvtGenBase/EvtDecayAmp.hh" - -class EvtParticle; -class EvtbsToLLLLHyperCPAmp; // my class with amplitudes for rare four-leptonic B-decays - -class EvtbsToLLLLHyperCP : public EvtDecayAmp { - public: - EvtbsToLLLLHyperCP(){}; - virtual ~EvtbsToLLLLHyperCP(); - - std::string getName() override; - EvtDecayBase* clone() override; - - void init() override; - void initProbMax() override; - void decay( EvtParticle* p ) override; - - private: - EvtbsToLLLLHyperCPAmp* _calcamp; -}; - -#endif diff --git a/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh b/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh deleted file mode 100644 index 70878ca..0000000 --- a/EvtGenModels/EvtbsToLLLLHyperCPAmp.hh +++ /dev/null @@ -1,54 +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 EVTBSTOLLLL_HYPERCPAMP_HH -#define EVTBSTOLLLL_HYPERCPAMP_HH - -class EvtId; -class EvtAmp; -class EvtParticle; - -// Description: Preparation of the decay amplitude for the process: -// B^0_{q}(p,M1) -> ell^+(k1,m) ell^-(k2,m) ell^+(k3,m) ell^-(k4,m) -// in the HyperCP model. -// -// [1] D.S.Gorbunov, Nucl.Phys.B602, pp.213-237 (2001); -// [2] S.V. Demidov, D.S.Gorbunov, hep-ph/1112.5230v2, 17 April 2012. -// -// Note: The code of this module is based on the EvtbsToLLLLAmp.cpp module code. - -class EvtbsToLLLLHyperCPAmp { - public: - void CalcAmp( EvtParticle* parent, EvtAmp& amp, double mS, double mP, - double gammaS, double gammaP, double mLiiLR, double Fc, - double mD23LL, double mD23RR, double mD32LL, double mD32RR, - double mD13LL, double mD13RR, double mD31LL, double mD31RR ); - - double CalcMaxProb( EvtId parnum, EvtId l1num, EvtId l2num, EvtId l3num, - EvtId l4num, double mS, double mP, double gammaS, - double gammaP, double mLiiLR, double Fc, double mD23LL, - double mD23RR, double mD32LL, double mD32RR, - double mD13LL, double mD13RR, double mD31LL, - double mD31RR ); - - double lambda( double a, double b, double c ); -}; - -#endif diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp index c926192..04f60e4 100644 --- a/src/EvtGenModels/EvtModelReg.cpp +++ b/src/EvtGenModels/EvtModelReg.cpp @@ -1,339 +1,335 @@ /*********************************************************************** * 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/EvtLNuGamma.hh" #include "EvtGenModels/EvtLambdaP_BarGamma.hh" #include "EvtGenModels/EvtLambdacPHH.hh" #include "EvtGenModels/EvtLb2Baryonlnu.hh" #include "EvtGenModels/EvtLb2plnuLCSR.hh" #include "EvtGenModels/EvtLb2plnuLQCD.hh" #include "EvtGenModels/EvtMelikhov.hh" #include "EvtGenModels/EvtOmegaDalitz.hh" #include "EvtGenModels/EvtPVVCPLH.hh" #include "EvtGenModels/EvtPartWave.hh" #include "EvtGenModels/EvtPhiDalitz.hh" #include "EvtGenModels/EvtPhsp.hh" #include "EvtGenModels/EvtPhspDecaytimeCut.hh" #include "EvtGenModels/EvtPhspFlatLifetime.hh" #include "EvtGenModels/EvtPi0Dalitz.hh" #include "EvtGenModels/EvtPropSLPole.hh" #include "EvtGenModels/EvtPsi2JpsiPiPi.hh" #include "EvtGenModels/EvtPto3P.hh" #include "EvtGenModels/EvtRareLbToLll.hh" #include "EvtGenModels/EvtSLBKPole.hh" #include "EvtGenModels/EvtSLN.hh" #include "EvtGenModels/EvtSLPole.hh" #include "EvtGenModels/EvtSSDCP.hh" #include "EvtGenModels/EvtSSD_DirectCP.hh" #include "EvtGenModels/EvtSSSCP.hh" #include "EvtGenModels/EvtSSSCPT.hh" #include "EvtGenModels/EvtSSSCPpng.hh" #include "EvtGenModels/EvtSTS.hh" #include "EvtGenModels/EvtSTSCP.hh" #include "EvtGenModels/EvtSVP.hh" #include "EvtGenModels/EvtSVPCP.hh" #include "EvtGenModels/EvtSVPHelAmp.hh" #include "EvtGenModels/EvtSVPHelCPMix.hh" #include "EvtGenModels/EvtSVS.hh" #include "EvtGenModels/EvtSVSCP.hh" #include "EvtGenModels/EvtSVSCPLH.hh" #include "EvtGenModels/EvtSVSCPiso.hh" #include "EvtGenModels/EvtSVSNONCPEIGEN.hh" #include "EvtGenModels/EvtSVVCP.hh" #include "EvtGenModels/EvtSVVCPLH.hh" #include "EvtGenModels/EvtSVVHelAmp.hh" #include "EvtGenModels/EvtSVVHelCPMix.hh" #include "EvtGenModels/EvtSVVNONCPEIGEN.hh" #include "EvtGenModels/EvtSingleParticle.hh" #include "EvtGenModels/EvtSll.hh" #include "EvtGenModels/EvtTSS.hh" #include "EvtGenModels/EvtTVP.hh" #include "EvtGenModels/EvtTVSPwave.hh" #include "EvtGenModels/EvtTauHadnu.hh" #include "EvtGenModels/EvtTauScalarnu.hh" #include "EvtGenModels/EvtTauVectornu.hh" #include "EvtGenModels/EvtTaulnunu.hh" #include "EvtGenModels/EvtThreeBodyPhsp.hh" #include "EvtGenModels/EvtVPHOtoVISRHi.hh" #include "EvtGenModels/EvtVSPPwave.hh" #include "EvtGenModels/EvtVSS.hh" #include "EvtGenModels/EvtVSSBMixCPT.hh" #include "EvtGenModels/EvtVSSMix.hh" #include "EvtGenModels/EvtVVP.hh" #include "EvtGenModels/EvtVVPIPI_WEIGHTED.hh" #include "EvtGenModels/EvtVVSPwave.hh" #include "EvtGenModels/EvtVVpipi.hh" #include "EvtGenModels/EvtVectorIsr.hh" #include "EvtGenModels/EvtVll.hh" #include "EvtGenModels/EvtVtoSll.hh" #include "EvtGenModels/EvtVub.hh" #include "EvtGenModels/EvtVubBLNP.hh" #include "EvtGenModels/EvtVubBLNPHybrid.hh" #include "EvtGenModels/EvtVubHybrid.hh" #include "EvtGenModels/EvtVubNLO.hh" #include "EvtGenModels/EvtXPsiGamma.hh" #include "EvtGenModels/EvtY3SToY1SpipiMoxhay.hh" #include "EvtGenModels/EvtYmSToYnSpipiCLEO.hh" #include "EvtGenModels/EvtbTosllAli.hh" #include "EvtGenModels/EvtbTosllBall.hh" #include "EvtGenModels/EvtbTosllMS.hh" #include "EvtGenModels/EvtbTosllMSExt.hh" #include "EvtGenModels/Evtbs2llGammaISRFSR.hh" #include "EvtGenModels/Evtbs2llGammaMNT.hh" -#include "EvtGenModels/EvtbsToLLLL.hh" -#include "EvtGenModels/EvtbsToLLLLHyperCP.hh" #include #include #include #include #include #include using std::cout; using std::endl; using std::fstream; EvtModelReg::EvtModelReg( const std::list* extraModels ) { EvtModel& modelist = EvtModel::instance(); if ( extraModels ) { for ( std::list::const_iterator it = extraModels->begin(); it != extraModels->end(); ++it ) { modelist.registerModel( *it ); } } modelist.registerModel( new EvtBBScalar ); modelist.registerModel( new EvtLambdaP_BarGamma ); modelist.registerModel( new EvtFlatQ2 ); modelist.registerModel( new EvtTauHadnu ); modelist.registerModel( new EvtTauVectornu ); modelist.registerModel( new EvtVVP ); modelist.registerModel( new EvtSLN ); modelist.registerModel( new EvtISGW2 ); modelist.registerModel( new EvtMelikhov ); modelist.registerModel( new EvtSLPole ); modelist.registerModel( new EvtPropSLPole ); modelist.registerModel( new EvtSLBKPole ); modelist.registerModel( new EvtHQET ); modelist.registerModel( new EvtHQET2 ); modelist.registerModel( new EvtISGW ); modelist.registerModel( new EvtVSS ); modelist.registerModel( new EvtVSSMix ); modelist.registerModel( new EvtVSSBMixCPT ); modelist.registerModel( new EvtVSPPwave ); modelist.registerModel( new EvtGoityRoberts ); modelist.registerModel( new EvtSVS ); modelist.registerModel( new EvtTSS ); modelist.registerModel( new EvtTVSPwave ); modelist.registerModel( new EvtSVVHelAmp ); modelist.registerModel( new EvtSVPHelAmp ); modelist.registerModel( new EvtSVPCP ); modelist.registerModel( new EvtVVSPwave ); modelist.registerModel( new EvtDDalitz ); modelist.registerModel( new EvtOmegaDalitz ); modelist.registerModel( new EvtEtaDalitz ); modelist.registerModel( new EvtPhsp ); modelist.registerModel( new EvtPhspDecaytimeCut ); modelist.registerModel( new EvtBtoXsgamma ); modelist.registerModel( new EvtBtoXsll ); modelist.registerModel( new EvtBtoXsEtap ); modelist.registerModel( new EvtSSSCP ); modelist.registerModel( new EvtSSSCPpng ); modelist.registerModel( new EvtSTSCP ); modelist.registerModel( new EvtSTS ); modelist.registerModel( new EvtSSSCPT ); modelist.registerModel( new EvtSVSCP ); modelist.registerModel( new EvtSSDCP ); modelist.registerModel( new EvtSVSNONCPEIGEN ); modelist.registerModel( new EvtSVVNONCPEIGEN ); modelist.registerModel( new EvtSVVCP ); modelist.registerModel( new EvtSVVCPLH ); modelist.registerModel( new EvtSVSCPLH ); modelist.registerModel( new EvtSll ); modelist.registerModel( new EvtVll ); modelist.registerModel( new EvtTaulnunu ); modelist.registerModel( new EvtTauScalarnu ); modelist.registerModel( new EvtKstarnunu ); modelist.registerModel( new EvtbTosllBall ); modelist.registerModel( new EvtBto2piCPiso ); modelist.registerModel( new EvtBtoKpiCPiso ); modelist.registerModel( new EvtSVSCPiso ); modelist.registerModel( new EvtSingleParticle ); modelist.registerModel( new EvtVectorIsr ); modelist.registerModel( new EvtPi0Dalitz ); modelist.registerModel( new EvtHelAmp ); modelist.registerModel( new EvtPartWave ); modelist.registerModel( new EvtVVpipi ); modelist.registerModel( new EvtY3SToY1SpipiMoxhay ); modelist.registerModel( new EvtYmSToYnSpipiCLEO ); modelist.registerModel( new EvtBsquark ); modelist.registerModel( new EvtPhiDalitz ); modelist.registerModel( new EvtBToPlnuBK ); modelist.registerModel( new EvtBToVlnuBall ); modelist.registerModel( new EvtVVPIPI_WEIGHTED ); modelist.registerModel( new EvtVPHOtoVISRHi ); modelist.registerModel( new EvtBTo4piCP ); modelist.registerModel( new EvtBTo3piCP ); modelist.registerModel( new EvtCBTo3piP00 ); modelist.registerModel( new EvtCBTo3piMPP ); modelist.registerModel( new EvtBToKpipiCP ); modelist.registerModel( new EvtRareLbToLll ); modelist.registerModel( new EvtHypNonLepton ); modelist.registerModel( new EvtSVVHelCPMix ); modelist.registerModel( new EvtSVPHelCPMix ); modelist.registerModel( new EvtLNuGamma ); modelist.registerModel( new 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 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/src/EvtGenModels/EvtbsToLLLL.cpp b/src/EvtGenModels/EvtbsToLLLL.cpp deleted file mode 100644 index ac0e458..0000000 --- a/src/EvtGenModels/EvtbsToLLLL.cpp +++ /dev/null @@ -1,162 +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/EvtbsToLLLL.hh" - -#include "EvtGenBase/EvtGenKine.hh" -#include "EvtGenBase/EvtPDL.hh" -#include "EvtGenBase/EvtParticle.hh" -#include "EvtGenBase/EvtReport.hh" - -#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh" -#include "EvtGenModels/Evtbs2llGammaFFMNT.hh" -#include "EvtGenModels/EvtbsToLLLLAmp.hh" - -#include -#include - -EvtbsToLLLL::~EvtbsToLLLL() -{ - delete _mntffmodel; - if ( _calcamp ) - delete _calcamp; -} - -// The module name specification -std::string EvtbsToLLLL::getName() -{ - return "BQTOLLLL"; -} - -// The implementation of the clone() method -EvtDecayBase* EvtbsToLLLL::clone() -{ - return new EvtbsToLLLL; -} - -// The inicialization of the decay model -// -// Tn the our model we have are following 4 arguments: -// -// mu - the scale parameter, GeV; -// Nf - number of "effective" flavors (for b-quark Nf=5); -// res_swch - resonant switching parametr: -// = 0 the resonant contribution switched OFF, -// = 1 the resonant contribution switched ON; -// ias - switching parametr for \alpha_s(M_Z) value: -// = 0 PDG 1sigma minimal alpha_s(M_Z), -// = 1 PDG average value alpha_s(M_Z), -// = 2 PDG 1sigma maximal alpha_s(M_Z). -// Wolfenstein parameterization for CKM matrix -// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta -// -void EvtbsToLLLL::init() -{ - // check that there are 8 arguments - checkNArg( 8 ); - // check that there are 4 daughteres - checkNDaug( 4 ); - - // We expect that the parent to be a scalar (B-meson) - // and the daughters to be l^+, l^-, l^+ and l^- - checkSpinParent( EvtSpinType::SCALAR ); - - // We expect that the all daughters are the ell+ or ell- == DIRAC - checkSpinDaughter( 0, EvtSpinType::DIRAC ); - checkSpinDaughter( 1, EvtSpinType::DIRAC ); - checkSpinDaughter( 2, EvtSpinType::DIRAC ); - checkSpinDaughter( 3, EvtSpinType::DIRAC ); - - _mntffmodel = new Evtbs2llGammaFFMNT(); - _wilscoeff = new EvtbTosllWilsCoeffNLO(); - _calcamp = new EvtbsToLLLLAmp(); -} - -// Set the maximum probability of the decay -void EvtbsToLLLL::initProbMax() -{ - double mymaxprob = -10.0; // maximum of the probability - - // EvtId parnum, l1num, l2num, l3num, l4num; - - // parnum = getParentId(); - // l1num = getDaug(0); - // l2num = getDaug(1); - // l3num = getDaug(2); - // l4num = getDaug(3); - - // EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0)); - - // double mu = getArg(0); // the scale parameter - // int Nf = (int) getArg(1); // number of "effective" flavors - // int res_swch = (int) getArg(2); // resonant switching parametr - // int ias = (int) getArg(3); // switching parametr for \alpha_s(M_Z) - // double CKM_A = getArg(4); - // double CKM_lambda = getArg(5); - // double CKM_barrho = getArg(6); - // double CKM_bareta = getArg(7); - - mymaxprob = _calcamp->CalcMaxProb( - // parnum, l1num,l2num, l3num,l4num, - // _mntffmodel, _wilscoeff, - // mu, Nf, res_swch, ias, - // CKM_A,CKM_lambda,CKM_barrho,CKM_bareta - ); - - if ( mymaxprob <= 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "The function void EvtbsToLLLL::initProbMax()" - << "\n Unexpected value of the probability maximum!" - << "\n mymaxprob = " << mymaxprob << std::endl; - ::abort(); - } - - setProbMax( mymaxprob ); -} - -void EvtbsToLLLL::decay( EvtParticle* p ) -{ - double mu = getArg( 0 ); // the scale parameter - int Nf = (int)getArg( 1 ); // number of "effective" flavors - int res_swch = (int)getArg( 2 ); // resonant switching parametr - int ias = (int)getArg( 3 ); // switching parametr for \alpha_s(M_Z) - double CKM_A = getArg( 4 ); - double CKM_lambda = getArg( 5 ); - double CKM_barrho = getArg( 6 ); - double CKM_bareta = getArg( 7 ); - - p->initializePhaseSpace( getNDaug(), getDaugs() ); - - _calcamp->CalcAmp( p, _amp2, _mntffmodel, _wilscoeff, mu, Nf, res_swch, ias, - CKM_A, CKM_lambda, CKM_barrho, CKM_bareta ); - - // EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbTosllMSExt::decay(...) passed with arguments:" - // << "\n mu = " << mu << " Nf =" << Nf - // << " res_swch = " << res_swch - // << " ias = " << ias - // << " CKM_A = " << CKM_A - // << " CKM_lambda = " << CKM_lambda - // << " CKM_barrho = " << CKM_barrho - // << " CKM_bareta = " << CKM_bareta - // << " ReA7 = " << ReA7 - // << " ImA7 = " << ImA7 - // << " ReA10 = " << ReA10 - // << " ImA10 = " << ImA10 << std::endl; -} diff --git a/src/EvtGenModels/EvtbsToLLLLAmp.cpp b/src/EvtGenModels/EvtbsToLLLLAmp.cpp deleted file mode 100644 index 9f9b115..0000000 --- a/src/EvtGenModels/EvtbsToLLLLAmp.cpp +++ /dev/null @@ -1,822 +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/EvtbsToLLLLAmp.hh" - -#include "EvtGenBase/EvtAmp.hh" -#include "EvtGenBase/EvtComplex.hh" -#include "EvtGenBase/EvtDiracSpinor.hh" -#include "EvtGenBase/EvtGenKine.hh" -#include "EvtGenBase/EvtId.hh" -#include "EvtGenBase/EvtIdSet.hh" -#include "EvtGenBase/EvtPDL.hh" -#include "EvtGenBase/EvtParticle.hh" -#include "EvtGenBase/EvtPatches.hh" -#include "EvtGenBase/EvtReport.hh" -#include "EvtGenBase/EvtScalarParticle.hh" -#include "EvtGenBase/EvtTensor4C.hh" -#include "EvtGenBase/EvtVector4C.hh" - -#include "EvtGenModels/EvtbTosllWilsCoeffNLO.hh" -#include "EvtGenModels/Evtbs2llGammaFFMNT.hh" - -#include - -// input: *parent - the pointer to the parent particle (B-meson, the -// object of the EvtParticle class); -// *formFactors - the pointer to instance of EvtbTosllGammaFF class object; -// *WilsCoeff - the pointer to the Standart Model Wilson Coefficients class; -// mu - the scale parameter, GeV; -// Nf - number of "effective" flavors (for b-quark Nf=5); -// res_swch - resonant switching parameter: -// = 0 the resonant contribution switched OFF, -// = 1 the resonant contribution switched ON; -// ias - switching parameter for \alpha_s(M_Z) value: -// = 0 PDG 1sigma minimal alpha_s(M_Z), -// = 1 PDG average value alpha_s(M_Z), -// = 2 PDG 1sigma maximal alpha_s(M_Z). -// Wolfenstein parameterization for CKM matrix -// CKM_A, CKM_lambda, CKM_barrho, CKM_bareta - -void EvtbsToLLLLAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp, - Evtbs2llGammaFF* formFactors, - EvtbTosllWilsCoeffNLO* WilsCoeff, double mu, - int Nf, int res_swch, int ias, double CKM_A, - double CKM_lambda, double CKM_barrho, - double CKM_bareta ) -{ - // FILE *mytest; - - int il1 = 0, il2 = 1, il3 = 2, - il4 = 3; // leptons are the first, second, thirds - // and fourth daughter particles - - EvtComplex unit1( 1.0, 0.0 ); // real unit - EvtComplex uniti( 0.0, 1.0 ); // imaginary unit - - double M1 = parent->mass(); // B - meson mass, GeV - double ml = parent->getDaug( il1 )->mass(); // leptonic mass, GeV - double mq = 0.0; // light quark mass from the dispersion QM, GeV - double mc = formFactors->getQuarkMass( - 4 ); // m_c mass from the dispersion QM, GeV - double mb = formFactors->getQuarkMass( - 5 ); // m_b mass from the dispersion QM, GeV - double Mw = 80.403; // GeV W-boson mass, GeV - double mt = 174.2; // GeV t-quark mass, GeV - double fb = 0.0; // leptonic decay constant of B-meson, Gev - - EvtComplex Vtb, Vtq, Vub, Vuq, Vcb, - Vcq; // V_{tb}, V_{tq}, V_{ub}, V_{uq}, V_{cb}, V_{cq} - EvtComplex CKM_factor; // V^*_{tq}*V_{tb}, where q={d,s} - EvtComplex lambda_qu; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb}, where q={d,s} - EvtComplex lambda_qc; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb}, where q={d,s} - double Relambda_qu, Imlambda_qu; - - // - // Setting of the mq and CKM matrix elements for different Bq-mesons tipes - // - EvtId idparent = parent->getId(); // Bq-meson Id - EvtId IdMu1, IdMu2, IdMu3, IdMu4; - - if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) || - idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) { - mq = formFactors->getQuarkMass( 3 ); // m_s mass from the dispersion QM - fb = 0.24; // leptonic decay constant - // V_{ts} - Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) + - pow( CKM_lambda, 2.0 ) * - ( CKM_barrho * unit1 + CKM_bareta * uniti ) / - sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); - Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq; - // V_{us} - Vuq = CKM_lambda * unit1; - // V_{cs} - Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) - - 0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) ); - } - - if ( idparent == EvtPDL::getId( std::string( "B0" ) ) || - idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) { - mq = formFactors->getQuarkMass( 2 ); // m_d mass from the dispersion QM - fb = 0.20; // leptonic decay constant - // V_{td} - Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) * - ( CKM_barrho * unit1 + CKM_bareta * uniti ) / - sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); - Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq; - // V_{ud} - Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) - - 0.125 * pow( CKM_lambda, 4.0 ) ); - // V_{cd} - Vcq = unit1 * - ( -CKM_lambda + - 0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) * - ( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) / - sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) ); - } - - if ( mq < 0.001 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)" - << "\n Error in the mq setting!" - << "\n mq = " << mq << "< 0.001" - << "\n idparent = " << idparent << std::endl; - ::abort(); - } - - Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda, - 2.0 ) ); // V_{tb} - Vub = CKM_A * pow( CKM_lambda, 3.0 ) * - ( CKM_barrho * unit1 - CKM_bareta * uniti ) / - sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); // V_{ub} - Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); // V_{cb} - - CKM_factor = conj( Vtq ) * Vtb; // V^*_{tq}*V_{tb} - - lambda_qu = conj( Vuq ) * Vub / - CKM_factor; // V^*_{uq}*V_{ub}/V^*_{tq}*V_{tb} - Relambda_qu = real( lambda_qu ); - Imlambda_qu = imag( lambda_qu ); - - lambda_qc = conj( Vcq ) * Vcb / - CKM_factor; // V^*_{cq}*V_{cb}/V^*_{tq}*V_{tb} - - // - // Setting the leptonic kinematical properties - // - - // to find charges of ell^+ and ell^- in the B-meson daughters - int charge1 = ( EvtPDL::chg3( parent->getDaug( il1 )->getId() ) ) / 3; - int charge2 = ( EvtPDL::chg3( parent->getDaug( il2 )->getId() ) ) / 3; - int charge3 = ( EvtPDL::chg3( parent->getDaug( il3 )->getId() ) ) / 3; - int charge4 = ( EvtPDL::chg3( parent->getDaug( il4 )->getId() ) ) / 3; - if ( ( abs( charge1 ) != 1 ) || ( abs( charge2 ) != 1 ) || - ( abs( charge3 ) != 1 ) || ( abs( charge4 ) != 1 ) || - ( charge1 + charge2 + charge3 + charge4 != 0 ) ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)" - << "\n Error in the leptonic charge definition!" - << "\n charge1 =" << charge1 - << "\n charge2 =" << charge2 - << "\n charge3 =" << charge3 - << "\n charge4 =" << charge4 - << "\n number of daughters =" << parent->getNDaug() << std::endl; - ::abort(); - } - - EvtParticle* lep1Plus = nullptr; - EvtParticle* lep1Minus = nullptr; - EvtParticle* lep2Plus = nullptr; - EvtParticle* lep2Minus = nullptr; - - EvtVector4R p; // B-meson momentum in the B-rest frame - EvtVector4R q; // first transition 4-momentum in the B-rest frame - EvtVector4R k; // second transition 4-momentum in the B-rest frame - - double q2; // Mandelstam variable s=q^2 - - // Nondimentional 4-momentums - EvtVector4R hatp; - EvtVector4R hatq; - EvtVector4R hatk; - - EvtVector4R qsecond; // first transition 4-momentum in the B-rest frame - EvtVector4R ksecond; // second transition 4-momentum in the B-rest frame - - double q2second; // Mandelstam variable s=q^2 - - // Nondimentional 4-momentums - EvtVector4R hatpsecond; - EvtVector4R hatqsecond; - EvtVector4R hatksecond; - - EvtVector4R k_1; // 4-momentum of ell^+ in the B-rest frame - EvtVector4R k_2; // 4-momentum of ell^- in the B-rest frame - EvtVector4R k_3; // 4-momentum of ell^+ in the B-rest frame - EvtVector4R k_4; // 4-momentum of ell^- in the B-rest frame - - k_1.set( 0.0, 0.0, 0.0, 0.0 ); - k_2.set( 0.0, 0.0, 0.0, 0.0 ); - k_3.set( 0.0, 0.0, 0.0, 0.0 ); - k_4.set( 0.0, 0.0, 0.0, 0.0 ); - - if ( ( charge1 + charge2 == 0 ) && ( charge3 + charge4 == 0 ) ) { - // positive charged lepton 1 - lep1Plus = ( charge1 > charge2 ) ? parent->getDaug( il1 ) - : parent->getDaug( il2 ); - // negative charged lepton 1 - lep1Minus = ( charge1 < charge2 ) ? parent->getDaug( il1 ) - : parent->getDaug( il2 ); - if ( charge1 > charge2 ) { - k_1 = parent->getDaug( il1 )->getP4(); - k_2 = parent->getDaug( il2 )->getP4(); - IdMu1 = parent->getDaug( il1 )->getId(); - IdMu2 = parent->getDaug( il2 )->getId(); - } else { - k_1 = parent->getDaug( il2 )->getP4(); - k_2 = parent->getDaug( il1 )->getP4(); - IdMu1 = parent->getDaug( il2 )->getId(); - IdMu2 = parent->getDaug( il1 )->getId(); - } - // positive charged lepton 2 - lep2Plus = ( charge3 > charge4 ) ? parent->getDaug( il3 ) - : parent->getDaug( il4 ); - // negative charged lepton 2 - lep2Minus = ( charge3 < charge4 ) ? parent->getDaug( il3 ) - : parent->getDaug( il4 ); - if ( charge3 > charge4 ) { - k_3 = parent->getDaug( il3 )->getP4(); - k_4 = parent->getDaug( il4 )->getP4(); - IdMu3 = parent->getDaug( il3 )->getId(); - IdMu4 = parent->getDaug( il4 )->getId(); - } else { - k_3 = parent->getDaug( il4 )->getP4(); - k_4 = parent->getDaug( il3 )->getP4(); - IdMu3 = parent->getDaug( il4 )->getId(); - IdMu4 = parent->getDaug( il3 )->getId(); - } - } - if ( ( charge1 + charge3 == 0 ) && ( charge2 + charge4 == 0 ) ) { - // positive charged lepton 1 - lep1Plus = ( charge1 > charge3 ) ? parent->getDaug( il1 ) - : parent->getDaug( il3 ); - // negative charged lepton 1 - lep1Minus = ( charge1 < charge3 ) ? parent->getDaug( il1 ) - : parent->getDaug( il3 ); - if ( charge1 > charge3 ) { - k_1 = parent->getDaug( il1 )->getP4(); - k_2 = parent->getDaug( il3 )->getP4(); - IdMu1 = parent->getDaug( il1 )->getId(); - IdMu2 = parent->getDaug( il3 )->getId(); - } else { - k_1 = parent->getDaug( il3 )->getP4(); - k_2 = parent->getDaug( il1 )->getP4(); - IdMu1 = parent->getDaug( il3 )->getId(); - IdMu2 = parent->getDaug( il1 )->getId(); - } - // positive charged lepton 2 - lep2Plus = ( charge2 > charge4 ) ? parent->getDaug( il2 ) - : parent->getDaug( il4 ); - // negative charged lepton 2 - lep2Minus = ( charge2 < charge4 ) ? parent->getDaug( il2 ) - : parent->getDaug( il4 ); - if ( charge2 > charge4 ) { - k_3 = parent->getDaug( il2 )->getP4(); - k_4 = parent->getDaug( il4 )->getP4(); - IdMu3 = parent->getDaug( il2 )->getId(); - IdMu4 = parent->getDaug( il4 )->getId(); - } else { - k_3 = parent->getDaug( il4 )->getP4(); - k_4 = parent->getDaug( il2 )->getP4(); - IdMu3 = parent->getDaug( il4 )->getId(); - IdMu4 = parent->getDaug( il2 )->getId(); - } - } - - p = parent->getP4Restframe(); - hatp = p / M1; - - // - // The calculation of the FIRST part of the amplitude - // - - q = k_1 + k_2; - k = k_3 + k_4; - q2 = q.mass2(); // Mandelstam variable s=q^2 - hatq = q / M1; - hatk = k / M1; - - // The Wilson Coefficients preparation according to the paper - // A.J.Buras, M.Munz, Phys.Rev.D52, p.189 (1995) - double c1, c2; - EvtComplex a1, c7gam, c9eff_b2q, c9eff_barb2barq, c10a; - - // Excluded of the J/psi and psi' resonant area - if ( ( res_swch == 1 ) && ( q2 >= 9.199 ) && ( q2 <= 15.333 ) ) { - c1 = 0.0; - c2 = 0.0; - a1 = unit1 * 0.0; - c7gam = unit1 * 0.0; - c9eff_b2q = unit1 * 0.0; - c9eff_barb2barq = unit1 * 0.0; - c10a = unit1 * 0.0; - } else { - c1 = WilsCoeff->C1( mu, Mw, Nf, ias ); - c2 = WilsCoeff->C2( mu, Mw, Nf, ias ); - a1 = unit1 * ( c1 + c2 / 3.0 ); - c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias ); - c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu, - mt, Mw, ml, Relambda_qu, Imlambda_qu ); - c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq, - mc, mu, mt, Mw, ml, Relambda_qu, - Imlambda_qu ); - c10a = WilsCoeff->GetC10Eff( mt, Mw ); - } - - EvtComplex Fv, - Fa; // The change of the sign is included in the amplitudes definition! - EvtComplex Ftv_b2q, Ftv_barb2barq; - EvtComplex Fta_b2q, Fta_barb2barq; - - // Excluded of the J/psi and psi' resonant area - if ( ( res_swch == 1 ) && ( q2 >= 9.199 ) && ( q2 <= 15.333 ) ) { - fb = 0.0; - Fa = unit1 * 0.0; - Fv = unit1 * 0.0; - Fta_b2q = unit1 * 0.0; - Fta_barb2barq = unit1 * 0.0; - Ftv_b2q = unit1 * 0.0; - Ftv_barb2barq = unit1 * 0.0; - } else { - if ( fb < 0.01 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)" - << "\n Leptonic decay constant fb is not uninitialized in this function!" - << " fb = " << fb << std::endl; - ::abort(); - } - - // For \bar B^0_q -> l^+ l^- gamma - formFactors->getPhotonFF( 0, fb, parent->getId(), q2, M1, mb, mq, c7gam, - a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q, - Fta_b2q ); - - // For B^0_q -> l^+ l^- gamma - formFactors->getPhotonFF( 1, fb, parent->getId(), q2, M1, mb, mq, c7gam, - a1, lambda_qu, lambda_qc, Fv, Fa, - Ftv_barb2barq, Fta_barb2barq ); - } - - // The functions for the hadronic matrix element calculation - EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c_b2q, c_barb2barq; - EvtComplex e_b2q, e_barb2barq, f_b2q, f_barb2barq, g_b2q, g_barb2barq; - - a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2; - a_barb2barq = c9eff_barb2barq * Fv + - 2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2; - - b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) * - ( hatp * hatk ); - b_barb2barq = ( c9eff_barb2barq * Fa + - 2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) * - ( hatp * hatk ); - - c_b2q = c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2; - c_barb2barq = c9eff_barb2barq * Fa + - 2.0 * c7gam * Fta_barb2barq * mb * M1 / q2; - - e_b2q = c10a * Fv; - e_barb2barq = e_b2q; - - f_b2q = c10a * Fa * ( hatp * hatk ); - f_barb2barq = f_b2q; - - g_b2q = c10a * Fa; - g_barb2barq = g_b2q; - - // - // The calculation of the SECOND part of the amplitude - // - - qsecond = k_1 + k_4; - ksecond = k_3 + k_2; - q2second = qsecond.mass2(); // Mandelstam variable s=q^2 - hatqsecond = qsecond / M1; - hatksecond = ksecond / M1; - - // Excluded of the J/psi and psi' resonant area - if ( ( res_swch == 1 ) && ( q2second >= 9.199 ) && ( q2second <= 15.333 ) ) { - c1 = 0.0; - c2 = 0.0; - a1 = unit1 * 0.0; - c7gam = unit1 * 0.0; - c9eff_b2q = unit1 * 0.0; - c9eff_barb2barq = unit1 * 0.0; - c10a = unit1 * 0.0; - } else { - c1 = WilsCoeff->C1( mu, Mw, Nf, ias ); - c2 = WilsCoeff->C2( mu, Mw, Nf, ias ); - a1 = unit1 * ( c1 + c2 / 3.0 ); - c7gam = WilsCoeff->GetC7Eff( mu, Mw, mt, Nf, ias ); - c9eff_b2q = WilsCoeff->GetC9Eff( 0, res_swch, ias, Nf, q2second, mb, mq, - mc, mu, mt, Mw, ml, Relambda_qu, - Imlambda_qu ); - c9eff_barb2barq = WilsCoeff->GetC9Eff( 1, res_swch, ias, Nf, q2second, - mb, mq, mc, mu, mt, Mw, ml, - Relambda_qu, Imlambda_qu ); - c10a = WilsCoeff->GetC10Eff( mt, Mw ); - } - - // Excluded of the J/psi and psi' resonant area - if ( ( res_swch == 1 ) && ( q2second >= 9.199 ) && ( q2second <= 15.333 ) ) { - fb = 0.0; - Fa = unit1 * 0.0; - Fv = unit1 * 0.0; - Fta_b2q = unit1 * 0.0; - Fta_barb2barq = unit1 * 0.0; - Ftv_b2q = unit1 * 0.0; - Ftv_barb2barq = unit1 * 0.0; - } else { - if ( fb < 0.01 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)" - << "\n Leptonic decay constant fb is not uninitialized in this function!" - << " fb = " << fb << std::endl; - ::abort(); - } - - // For \bar B^0_q -> l^+ l^- gamma - formFactors->getPhotonFF( 0, fb, parent->getId(), q2second, M1, mb, mq, - c7gam, a1, lambda_qu, lambda_qc, Fv, Fa, - Ftv_b2q, Fta_b2q ); - - // For B^0_q -> l^+ l^- gamma - formFactors->getPhotonFF( 1, fb, parent->getId(), q2second, M1, mb, mq, - c7gam, a1, lambda_qu, lambda_qc, Fv, Fa, - Ftv_barb2barq, Fta_barb2barq ); - } - - // The functions for the hadronic matrix element calculation - EvtComplex a_b2qsecond, a_barb2barqsecond, b_b2qsecond, b_barb2barqsecond, - c_b2qsecond, c_barb2barqsecond; - EvtComplex e_b2qsecond, e_barb2barqsecond, f_b2qsecond, f_barb2barqsecond, - g_b2qsecond, g_barb2barqsecond; - - a_b2qsecond = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2second; - a_barb2barqsecond = c9eff_barb2barq * Fv + - 2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2second; - - b_b2qsecond = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2second ) * - ( hatpsecond * hatksecond ); - b_barb2barqsecond = ( c9eff_barb2barq * Fa + - 2.0 * c7gam * Fta_barb2barq * mb * M1 / q2second ) * - ( hatpsecond * hatksecond ); - - c_b2qsecond = c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2second; - c_barb2barqsecond = c9eff_barb2barq * Fa + - 2.0 * c7gam * Fta_barb2barq * mb * M1 / q2second; - - e_b2qsecond = c10a * Fv; - e_barb2barqsecond = e_b2qsecond; - - f_b2qsecond = c10a * Fa * ( hatpsecond * hatksecond ); - f_barb2barqsecond = f_b2qsecond; - - g_b2qsecond = c10a * Fa; - g_barb2barqsecond = g_b2qsecond; - - EvtTensor4C T1, T2; // Tensor structures for - EvtTensor4C T1second, - T2second; // the hadronic matrix element calculation - - // B - and barB - mesons descriptors - static EvtIdSet bmesons{ "anti-B0", "anti-B_s0" }; - static EvtIdSet bbarmesons{ "B0", "B_s0" }; - - EvtId parentID = parent->getId(); - - if ( bmesons.contains( parentID ) ) { - // The amplitude for the decay barB -> gamma ell^+ ell^- or - // b \bar q -> gamma ell^+ ell^- - - T1 = a_b2q * unit1 * dual( EvtGenFunctions::directProd( hatq, hatk ) ) - - b_b2q * uniti * EvtTensor4C::g() + - c_b2q * uniti * EvtGenFunctions::directProd( hatk, hatq ); - - T2 = e_b2q * unit1 * dual( EvtGenFunctions::directProd( hatp, hatk ) ) - - f_b2q * uniti * EvtTensor4C::g() + - g_b2q * uniti * EvtGenFunctions::directProd( hatk, hatq ); - - T1second = a_b2qsecond * unit1 * - dual( EvtGenFunctions::directProd( hatqsecond, - hatksecond ) ) - - b_b2qsecond * uniti * EvtTensor4C::g() + - c_b2qsecond * uniti * - EvtGenFunctions::directProd( hatksecond, hatqsecond ); - - T2second = e_b2qsecond * unit1 * - dual( EvtGenFunctions::directProd( hatpsecond, - hatksecond ) ) - - f_b2qsecond * uniti * EvtTensor4C::g() + - g_b2qsecond * uniti * - EvtGenFunctions::directProd( hatksecond, hatqsecond ); - - int i1, i2, i3, i4; // leptonic spin structures counters - int leptonicspin[4]; // array for the saving of the leptonic spin configuration - - // Tables for correspondings - // l^+(k_1) && lep1Plus && k_1 && i1 - // l^-(k_2) && lep1Minus && k_2 && i2 - // l^+(k_3) && lep2Plus && k_3 && i3 - // l^-(k_4) && lep2Minus && k_4 && i4 - - for ( i2 = 0; i2 < 2; i2++ ) { - leptonicspin[0] = i2; - for ( i1 = 0; i1 < 2; i1++ ) { - leptonicspin[1] = i1; - for ( i4 = 0; i4 < 2; i4++ ) { - leptonicspin[2] = i4; - for ( i3 = 0; i3 < 2; i3++ ) { - leptonicspin[3] = i3; - EvtVector4C VL2L1, AL2L1, VL4L3; - EvtVector4C E1, E2; - EvtVector4C VL2L1second, AL2L1second, VL4L3second; - EvtVector4C E1second, E2second; - - VL2L1 = EvtLeptonVCurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - AL2L1 = EvtLeptonACurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - VL4L3 = EvtLeptonVCurrent( lep2Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - E1 = T1.cont2( VL4L3 ); - E2 = T2.cont2( VL4L3 ); - - VL2L1second = EvtLeptonVCurrent( - lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) ); - AL2L1second = EvtLeptonACurrent( - lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) ); - VL4L3second = EvtLeptonVCurrent( - lep1Minus->spParent( i4 ), lep2Plus->spParent( i3 ) ); - E1second = T1second.cont2( VL4L3second ); - E2second = T2second.cont2( VL4L3second ); - - amp.vertex( leptonicspin, - CKM_factor * ( VL2L1 * E1 + AL2L1 * E2 + - VL2L1second * E1second + - AL2L1second * E2second ) ); - - // EvtGenReport(EVTGEN_ERROR,"EvtGen") - // << "\n\n ============================================================================" - // << "\n The matrix element (first + second) = " - // << CKM_factor*(VL2L1*E1+AL2L1*E2+VL2L1second*E1second+AL2L1second*E2second) - // << "\n The matrix element (only first) = " - // << CKM_factor*(VL2L1*E1+AL2L1*E2) - // << "============================================================================\n\n" - // << std::endl; - } - } - } - } - - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLAmp::CalcAmp(...) passed with arguments:" - // << "\n ============================================================================" - // << "\n Input parameters:" - // << "\n mu = " << mu - // << "\n Nf =" << Nf - // << "\n res_swch = " << res_swch - // << "\n ias = " << ias - // << "\n CKM_A = " << CKM_A - // << "\n CKM_lambda = " << CKM_lambda - // << "\n CKM_barrho = " << CKM_barrho - // << "\n CKM_bareta = " << CKM_bareta - // << "\n CKM_factor = " << CKM_factor - // << "\n ============================================================================" - // << "\n Kinematics:" - // << "\n k_1 = " << k_1 - // << "\n m_ell_1 =" << parent->getDaug(il1)->mass() - // << "\n k_2 = " << k_2 - // << "\n m_ell_2 =" << parent->getDaug(il2)->mass() - // << "\n k_3 = " << k_3 - // << "\n m_ell_3 =" << parent->getDaug(il3)->mass() - // << "\n k_4 = " << k_4 - // << "\n m_ell_4 =" << parent->getDaug(il4)->mass() - // << "\n p = " << p - // << "\n q = " << q - // << "\n k = " << k - // << "\n ============================================================================" - // << "\n Form-factors" - // << "\n Fv = " << Fv - // << "\n Fa = " << Fa - // << "\n Ftv_b2q = " << Ftv_b2q - // << "\n Fta_b2q = " << Fta_b2q - // << "\n Ftv_barb2barq = " << Ftv_barb2barq - // << "\n Fta_barb2barq = " << Fta_barb2barq - // << "\n fb = " << fb - // << "\n ============================================================================" - // << "\n Wilson Coefficients:" - // << "\n Re(c7gam) = " << real(c7gam) - // << " Im(c7gam) = " << imag(c7gam) - // << "\n Re(c9eff_b2q) = " << real(c9eff_b2q) - // << " Im(c9eff_b2q) = " << imag(c9eff_b2q) - // << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq) - // << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq) - // << "\n Re(c10a) = " << real(c10a) - // << " Im(c10a) = " << imag(c10a) - // << "\n ============================================================================" - // << "\n Functions in the matrix element:" - // << "\n a_b2q = " << a_b2q - // << "\n b_b2q = " << b_b2q - // << "\n c_b2q = " << c_b2q - // << "\n e_b2q = " << e_b2q - // << "\n f_b2q = " << f_b2q - // << "\n g_b2q = " << g_b2q - // << "\n ============================================================================" - // << "\n Partical Properties:" - // << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0")) - // << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n\n\n\n" - // << std::endl; - - } else { - if ( bbarmesons.contains( parentID ) ) { - // The amplitude for the decay B -> gamma ell^+ ell^- or - // q bar b -> gamma ell^+ ell^- - - T1 = -a_barb2barq * unit1 * - dual( EvtGenFunctions::directProd( hatq, hatk ) ) - - b_barb2barq * uniti * EvtTensor4C::g() + - c_barb2barq * uniti * EvtGenFunctions::directProd( hatk, hatq ); - - T2 = -e_barb2barq * unit1 * - dual( EvtGenFunctions::directProd( hatq, hatk ) ) - - f_barb2barq * uniti * EvtTensor4C::g() + - g_barb2barq * uniti * EvtGenFunctions::directProd( hatk, hatq ); - - T1second = -a_barb2barqsecond * unit1 * - dual( EvtGenFunctions::directProd( hatqsecond, - hatksecond ) ) - - b_barb2barqsecond * uniti * EvtTensor4C::g() + - c_barb2barqsecond * uniti * - EvtGenFunctions::directProd( hatksecond, hatqsecond ); - - T2second = -e_barb2barqsecond * unit1 * - dual( EvtGenFunctions::directProd( hatpsecond, - hatksecond ) ) - - f_barb2barqsecond * uniti * EvtTensor4C::g() + - g_barb2barqsecond * uniti * - EvtGenFunctions::directProd( hatksecond, hatqsecond ); - - int i1, i2, i3, i4; // leptonic spin structures counters - int leptonicspin[4]; // array for the saving of the leptonic spin configuration - - // Tables for correspondings - // l^+(k_1) && lep1Plus && k_1 && i1 - // l^-(k_2) && lep1Minus && k_2 && i2 - // l^+(k_3) && lep2Plus && k_3 && i3 - // l^-(k_4) && lep2Minus && k_4 && i4 - - for ( i2 = 1; i2 > -1; i2-- ) { - leptonicspin[0] = i2; - for ( i1 = 1; i1 > -1; i1-- ) { - leptonicspin[1] = i1; - for ( i4 = 1; i4 > -1; i4-- ) { - leptonicspin[2] = i4; - for ( i3 = 1; i3 > -1; i3-- ) { - leptonicspin[3] = i3; - EvtVector4C VL2L1, AL2L1, VL4L3; - EvtVector4C E1, E2; - EvtVector4C VL2L1second, AL2L1second, VL4L3second; - EvtVector4C E1second, E2second; - - VL2L1 = EvtLeptonVCurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - AL2L1 = EvtLeptonACurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - VL4L3 = EvtLeptonVCurrent( lep2Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - E1 = T1.cont2( VL4L3 ); - E2 = T2.cont2( VL4L3 ); - - VL2L1second = - EvtLeptonVCurrent( lep2Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - AL2L1second = - EvtLeptonACurrent( lep2Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - VL4L3second = - EvtLeptonVCurrent( lep1Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - E1second = T1second.cont2( VL4L3second ); - E2second = T2second.cont2( VL4L3second ); - - amp.vertex( leptonicspin, - conj( CKM_factor ) * - ( VL2L1 * E1 + AL2L1 * E2 + - VL2L1second * E1second + - AL2L1second * E2second ) ); - } - } - } - } - - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLAmp::CalcAmp(...) passed with arguments:" - // << "\n ============================================================================" - // << "\n Input parameters:" - // << "\n mu = " << mu - // << "\n Nf =" << Nf - // << "\n res_swch = " << res_swch - // << "\n ias = " << ias - // << "\n CKM_A = " << CKM_A - // << "\n CKM_lambda = " << CKM_lambda - // << "\n CKM_barrho = " << CKM_barrho - // << "\n CKM_bareta = " << CKM_bareta - // << "\n CKM_factor = " << CKM_factor - // << "\n ============================================================================" - // << "\n Kinematics:" - // << "\n k_1 = " << k_1 - // << "\n m_ell_1 =" << parent->getDaug(il1)->mass() - // << "\n k_2 = " << k_2 - // << "\n m_ell_2 =" << parent->getDaug(il2)->mass() - // << "\n k_3 = " << k_3 - // << "\n m_ell_3 =" << parent->getDaug(il3)->mass() - // << "\n k_4 = " << k_4 - // << "\n m_ell_4 =" << parent->getDaug(il4)->mass() - // << "\n p = " << p - // << "\n q = " << q - // << "\n k = " << k - // << "\n ============================================================================" - // << "\n Form-factors" - // << "\n Fv = " << Fv - // << "\n Fa = " << Fa - // << "\n Ftv_b2q = " << Ftv_b2q - // << "\n Fta_b2q = " << Fta_b2q - // << "\n Ftv_barb2barq = " << Ftv_barb2barq - // << "\n Fta_barb2barq = " << Fta_barb2barq - // << "\n fb = " << fb - // << "\n ============================================================================" - // << "\n Wilson Coefficients:" - // << "\n Re(c7gam) = " << real(c7gam) - // << " Im(c7gam) = " << imag(c7gam) - // << "\n Re(c9eff_b2q) = " << real(c9eff_b2q) - // << " Im(c9eff_b2q) = " << imag(c9eff_b2q) - // << "\n Re(c9eff_barb2barq) = " << real(c9eff_barb2barq) - // << " Im(c9eff_barb2barq) = " << imag(c9eff_barb2barq) - // << "\n Re(c10a) = " << real(c10a) - // << " Im(c10a) = " << imag(c10a) - // << "\n ============================================================================" - // << "\n Functions in the matrix element:" - // << "\n a_barb2barq = " << a_barb2barq - // << "\n b_barb2barq = " << b_barb2barq - // << "\n c_barb2barq = " << c_barb2barq - // << "\n e_barb2barq = " << e_barb2barq - // << "\n f_barb2barq = " << f_barb2barq - // << "\n g_barb2barq = " << g_barb2barq - // << "\n ============================================================================" - // << "\n Partical Properties:" - // << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("B_s0")) - // << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n\n\n\n" - // << std::endl; - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLAmp::CalcAmp(...)" - << "\n Wrong Bq-meson number" << std::endl; - ::abort(); - } - } -} - -// -// The decays Bq -> ell^+ ell^- ell^+ ell^- maximum probability calculation -// -double EvtbsToLLLLAmp::CalcMaxProb( - // EvtId parnum, - // EvtId l1num, EvtId l2num, - // EvtId l3num, EvtId l4num, - // Evtbs2llGammaFF *formFactors, - // EvtbTosllWilsCoeffNLO *WilsCoeff, - // double mu, int Nf, - // int res_swch, int ias, - // double CKM_A, double CKM_lambda, - // double CKM_barrho, double CKM_bareta -) -{ - double maxfoundprob = 10.0; // maximum of the probability - - return maxfoundprob; -} - -// Triangular function -double EvtbsToLLLLAmp::lambda( double a, double b, double c ) -{ - double l; - - l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b - - 2.0 * a * c - 2.0 * b * c; - - return l; -} diff --git a/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp b/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp deleted file mode 100644 index 3ae6896..0000000 --- a/src/EvtGenModels/EvtbsToLLLLHyperCP.cpp +++ /dev/null @@ -1,167 +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/EvtbsToLLLLHyperCP.hh" - -#include "EvtGenBase/EvtGenKine.hh" -#include "EvtGenBase/EvtPDL.hh" -#include "EvtGenBase/EvtParticle.hh" -#include "EvtGenBase/EvtReport.hh" - -#include "EvtGenModels/EvtbsToLLLLHyperCPAmp.hh" - -#include -#include - -EvtbsToLLLLHyperCP::~EvtbsToLLLLHyperCP() -{ - if ( _calcamp ) - delete _calcamp; -} - -// The module name specification -std::string EvtbsToLLLLHyperCP::getName() -{ - return "BQTOLLLLHYPERCP"; -} - -// The implementation of the clone() method -EvtDecayBase* EvtbsToLLLLHyperCP::clone() -{ - return new EvtbsToLLLLHyperCP; -} - -// The inicialization of the decay model -// -// Tn the our model we have are following 14 arguments: -// -// mS - the mass of the scalar sgoldstino "S" (GeV); -// mP - the mass of the pseudoscalar sgoldstino "P" (GeV); -// gammaS - the decay width of the scalar sgoldstino "S" (GeV); -// gammaP - the decay width of the pseudoscalar sgoldstino "P" (GeV); -// mLiiLR - -// Fc - coupling constant (GeV); -// mDijLL(RR) - parameters for \bar Bq-decays -// mDjiLL(RR) - parameters for Bq-decays (i <-> j!) -// d==1, s==2, b==3 -// -void EvtbsToLLLLHyperCP::init() -{ - // check that there are 14 arguments - checkNArg( 14 ); - // check that there are 4 daughteres - checkNDaug( 4 ); - - // We expect that the parent to be a scalar (B-meson) - // and the daughters to be l^+, l^-, l^+ and l^- - checkSpinParent( EvtSpinType::SCALAR ); - - // We expect that the all daughters are the ell+ or ell- == DIRAC - checkSpinDaughter( 0, EvtSpinType::DIRAC ); - checkSpinDaughter( 1, EvtSpinType::DIRAC ); - checkSpinDaughter( 2, EvtSpinType::DIRAC ); - checkSpinDaughter( 3, EvtSpinType::DIRAC ); - - _calcamp = new EvtbsToLLLLHyperCPAmp(); -} - -// Set the maximum probability of the decay -void EvtbsToLLLLHyperCP::initProbMax() -{ - double mymaxprob = -10.0; // maximum of the probability - - EvtId parnum, l1num, l2num, l3num, l4num; - - parnum = getParentId(); - l1num = getDaug( 0 ); - l2num = getDaug( 1 ); - l3num = getDaug( 2 ); - l4num = getDaug( 3 ); - - double mS = getArg( 0 ); - double mP = getArg( 1 ); - double gammaS = getArg( 2 ); - double gammaP = getArg( 3 ); - double mLiiLR = getArg( 4 ); - double Fc = getArg( 5 ); - double mD23LL = getArg( 6 ); - double mD23RR = getArg( 7 ); - double mD32LL = getArg( 8 ); - double mD32RR = getArg( 9 ); - double mD13LL = getArg( 10 ); - double mD13RR = getArg( 11 ); - double mD31LL = getArg( 12 ); - double mD31RR = getArg( 13 ); - - mymaxprob = _calcamp->CalcMaxProb( parnum, l1num, l2num, l3num, l4num, mS, - mP, gammaS, gammaP, mLiiLR, Fc, mD23LL, - mD23RR, mD32LL, mD32RR, mD13LL, mD13RR, - mD31LL, mD31RR ); - - if ( mymaxprob <= 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "The function void EvtbsToLLLLHyperCP::initProbMax()" - << "\n Unexpected value of the probability maximum!" - << "\n mymaxprob = " << mymaxprob << std::endl; - ::abort(); - } - - setProbMax( mymaxprob ); -} - -void EvtbsToLLLLHyperCP::decay( EvtParticle* p ) -{ - double mS = getArg( 0 ); - double mP = getArg( 1 ); - double gammaS = getArg( 2 ); - double gammaP = getArg( 3 ); - double mLiiLR = getArg( 4 ); - double Fc = getArg( 5 ); - double mD23LL = getArg( 6 ); - double mD23RR = getArg( 7 ); - double mD32LL = getArg( 8 ); - double mD32RR = getArg( 9 ); - double mD13LL = getArg( 10 ); - double mD13RR = getArg( 11 ); - double mD31LL = getArg( 12 ); - double mD31RR = getArg( 13 ); - - p->initializePhaseSpace( getNDaug(), getDaugs() ); - - _calcamp->CalcAmp( p, _amp2, mS, mP, gammaS, gammaP, mLiiLR, Fc, mD23LL, - mD23RR, mD32LL, mD32RR, mD13LL, mD13RR, mD31LL, mD31RR ); - - // EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n The function EvtbsToLLLLHyperCP::decay(...) passed with arguments:" - // << "\n mS = " << mS - // << "\n mP = " << mP - // << "\n gammaS = " << gammaS - // << "\n gammaP = " << gammaP - // << "\n mLiiLR = " << mLiiLR - // << "\n Fc = " << Fc - // << "\n mD23LL = " << mD23LL - // << "\n mD23RR = " << mD23RR - // << "\n mD32LL = " << mD32LL - // << "\n mD32RR = " << mD32RR - // << "\n mD13LL = " << mD13LL - // << "\n mD13RR = " << mD13RR - // << "\n mD31LL = " << mD31LL - // << "\n mD31RR = " << mD31RR - // << std::endl; -} diff --git a/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp b/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp deleted file mode 100644 index 95977fd..0000000 --- a/src/EvtGenModels/EvtbsToLLLLHyperCPAmp.cpp +++ /dev/null @@ -1,605 +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/EvtbsToLLLLHyperCPAmp.hh" - -#include "EvtGenBase/EvtAmp.hh" -#include "EvtGenBase/EvtComplex.hh" -#include "EvtGenBase/EvtDiracSpinor.hh" -#include "EvtGenBase/EvtGenKine.hh" -#include "EvtGenBase/EvtId.hh" -#include "EvtGenBase/EvtIdSet.hh" -#include "EvtGenBase/EvtPDL.hh" -#include "EvtGenBase/EvtParticle.hh" -#include "EvtGenBase/EvtPatches.hh" -#include "EvtGenBase/EvtReport.hh" -#include "EvtGenBase/EvtScalarParticle.hh" -#include "EvtGenBase/EvtTensor4C.hh" -#include "EvtGenBase/EvtVector4C.hh" - -#include - -// input: *parent - the pointer to the parent particle (B-meson, the -// object of the EvtParticle class); -// mS - the mass of the scalar sgoldstino "S" (GeV); -// mP - the mass of the pseudoscalar sgoldstino "P" (GeV); -// gammaS - the decay width of the scalar sgoldstino "S" (GeV); -// gammaP - the decay width of the pseudoscalar sgoldstino "P" (GeV); -// mLiiLR - -// Fc - coupling constant (GeV^2); -// mDijLL(RR) - parameters for \bar Bq-decays -// mDjiLL(RR) - parameters for Bq-decays (i <-> j!) -// d==1, s==2, b==3 -// -void EvtbsToLLLLHyperCPAmp::CalcAmp( EvtParticle* parent, EvtAmp& amp, - double mS, double mP, double gammaS, - double gammaP, double mLiiLR, double Fc, - double mD23LL, double mD23RR, double mD32LL, - double mD32RR, double mD13LL, double mD13RR, - double mD31LL, double mD31RR ) -{ - // FILE *mytest; - - int il1 = 0, il2 = 1, il3 = 2, - il4 = 3; // leptons are the first, second, thirds - // and fourth daughter particles - - EvtComplex unit1( 1.0, 0.0 ); // real unit - EvtComplex uniti( 0.0, 1.0 ); // imaginary unit - - parent->mass(); // B - meson mass, GeV - double fb = 0.0; // leptonic decay constant of B-meson, GeV - - double Cl = 0.0; // LPL and LSL - vertexes - if ( Fc != 0.0 ) { - Cl = mLiiLR * mLiiLR / ( sqrt( 2 ) * Fc ); - } - if ( Cl == 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)" - << "\n Error in the Cl setting!" - << "\n Cl = " << Cl << "\n mLiiLR = " << mLiiLR - << "\n Fc = " << Fc << std::endl; - ::abort(); - } - - EvtComplex MS = unit1 * mS - - uniti * gammaS / - 2.0; // complex mass of the scalar sgoldstino - EvtComplex MP = unit1 * mP - - uniti * gammaP / - 2.0; // complex mass of the pseudoscalar sgoldstino - - // - // Setting of the different Bq-mesons tipes - // - EvtId idparent = parent->getId(); // Bq-meson Id - EvtId IdMu1, IdMu2, IdMu3, IdMu4; - - double CB = 0.0; - - if ( idparent == EvtPDL::getId( std::string( "B_s0" ) ) ) { - fb = 0.24; // leptonic decay constant - CB = mD32LL * mD32LL + mD32RR * mD32RR; - } - - if ( idparent == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) { - fb = 0.24; // leptonic decay constant - CB = mD23LL * mD23LL + mD23RR * mD23RR; - } - - if ( idparent == EvtPDL::getId( std::string( "B0" ) ) ) { - fb = 0.20; // leptonic decay constant - CB = mD31LL * mD31LL + mD31RR * mD31RR; - } - - if ( idparent == EvtPDL::getId( std::string( "anti-B0" ) ) ) { - fb = 0.20; // leptonic decay constant - CB = mD13LL * mD13LL + mD13RR * mD13RR; - } - - if ( CB == 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)" - << "\n Error in the CB setting!" - << "\n CB = " << CB << "\n mD32LL = " << mD32LL - << "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL - << "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL - << "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL - << "\n mD13RR = " << mD13RR << "\n idparent = " << idparent - << std::endl; - ::abort(); - } - - // - // Setting the leptonic kinematical properties - // - - // to find charges of ell^+ and ell^- in the B-meson daughters - int charge1 = ( EvtPDL::chg3( parent->getDaug( il1 )->getId() ) ) / 3; - int charge2 = ( EvtPDL::chg3( parent->getDaug( il2 )->getId() ) ) / 3; - int charge3 = ( EvtPDL::chg3( parent->getDaug( il3 )->getId() ) ) / 3; - int charge4 = ( EvtPDL::chg3( parent->getDaug( il4 )->getId() ) ) / 3; - if ( ( abs( charge1 ) != 1 ) || ( abs( charge2 ) != 1 ) || - ( abs( charge3 ) != 1 ) || ( abs( charge4 ) != 1 ) || - ( charge1 + charge2 + charge3 + charge4 != 0 ) ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)" - << "\n Error in the leptonic charge definition!" - << "\n charge1 =" << charge1 - << "\n charge2 =" << charge2 - << "\n charge3 =" << charge3 - << "\n charge4 =" << charge4 - << "\n number of daughters =" << parent->getNDaug() << std::endl; - ::abort(); - } - - EvtParticle* lep1Plus = nullptr; - EvtParticle* lep1Minus = nullptr; - EvtParticle* lep2Plus = nullptr; - EvtParticle* lep2Minus = nullptr; - - EvtVector4R p; // B-meson momentum in the B-rest frame - - EvtVector4R q; // first transition 4-momentum in the B-rest frame - EvtVector4R k; // second transition 4-momentum in the B-rest frame - double q2; // Mandelstam variable s=q^2 - double k2; // Mandelstam variable t=k^2 - - EvtVector4R qsecond; // first transition 4-momentum in the B-rest frame - EvtVector4R ksecond; // second transition 4-momentum in the B-rest frame - double q2second; // Mandelstam variable s=q^2 - double k2second; // Mandelstam variable t=k^2 - - EvtVector4R k_1; // 4-momentum of ell^+ in the B-rest frame - EvtVector4R k_2; // 4-momentum of ell^- in the B-rest frame - EvtVector4R k_3; // 4-momentum of ell^+ in the B-rest frame - EvtVector4R k_4; // 4-momentum of ell^- in the B-rest frame - - k_1.set( 0.0, 0.0, 0.0, 0.0 ); - k_2.set( 0.0, 0.0, 0.0, 0.0 ); - k_3.set( 0.0, 0.0, 0.0, 0.0 ); - k_4.set( 0.0, 0.0, 0.0, 0.0 ); - - if ( ( charge1 + charge2 == 0 ) && ( charge3 + charge4 == 0 ) ) { - // positive charged lepton 1 - lep1Plus = ( charge1 > charge2 ) ? parent->getDaug( il1 ) - : parent->getDaug( il2 ); - // negative charged lepton 1 - lep1Minus = ( charge1 < charge2 ) ? parent->getDaug( il1 ) - : parent->getDaug( il2 ); - if ( charge1 > charge2 ) { - k_1 = parent->getDaug( il1 )->getP4(); - k_2 = parent->getDaug( il2 )->getP4(); - IdMu1 = parent->getDaug( il1 )->getId(); - IdMu2 = parent->getDaug( il2 )->getId(); - } else { - k_1 = parent->getDaug( il2 )->getP4(); - k_2 = parent->getDaug( il1 )->getP4(); - IdMu1 = parent->getDaug( il2 )->getId(); - IdMu2 = parent->getDaug( il1 )->getId(); - } - // positive charged lepton 2 - lep2Plus = ( charge3 > charge4 ) ? parent->getDaug( il3 ) - : parent->getDaug( il4 ); - // negative charged lepton 2 - lep2Minus = ( charge3 < charge4 ) ? parent->getDaug( il3 ) - : parent->getDaug( il4 ); - if ( charge3 > charge4 ) { - k_3 = parent->getDaug( il3 )->getP4(); - k_4 = parent->getDaug( il4 )->getP4(); - IdMu3 = parent->getDaug( il3 )->getId(); - IdMu4 = parent->getDaug( il4 )->getId(); - } else { - k_3 = parent->getDaug( il4 )->getP4(); - k_4 = parent->getDaug( il3 )->getP4(); - IdMu3 = parent->getDaug( il4 )->getId(); - IdMu4 = parent->getDaug( il3 )->getId(); - } - } - if ( ( charge1 + charge3 == 0 ) && ( charge2 + charge4 == 0 ) ) { - // positive charged lepton 1 - lep1Plus = ( charge1 > charge3 ) ? parent->getDaug( il1 ) - : parent->getDaug( il3 ); - // negative charged lepton 1 - lep1Minus = ( charge1 < charge3 ) ? parent->getDaug( il1 ) - : parent->getDaug( il3 ); - if ( charge1 > charge3 ) { - k_1 = parent->getDaug( il1 )->getP4(); - k_2 = parent->getDaug( il3 )->getP4(); - IdMu1 = parent->getDaug( il1 )->getId(); - IdMu2 = parent->getDaug( il3 )->getId(); - } else { - k_1 = parent->getDaug( il3 )->getP4(); - k_2 = parent->getDaug( il1 )->getP4(); - IdMu1 = parent->getDaug( il3 )->getId(); - IdMu2 = parent->getDaug( il1 )->getId(); - } - // positive charged lepton 2 - lep2Plus = ( charge2 > charge4 ) ? parent->getDaug( il2 ) - : parent->getDaug( il4 ); - // negative charged lepton 2 - lep2Minus = ( charge2 < charge4 ) ? parent->getDaug( il2 ) - : parent->getDaug( il4 ); - if ( charge2 > charge4 ) { - k_3 = parent->getDaug( il2 )->getP4(); - k_4 = parent->getDaug( il4 )->getP4(); - IdMu3 = parent->getDaug( il2 )->getId(); - IdMu4 = parent->getDaug( il4 )->getId(); - } else { - k_3 = parent->getDaug( il4 )->getP4(); - k_4 = parent->getDaug( il2 )->getP4(); - IdMu3 = parent->getDaug( il4 )->getId(); - IdMu4 = parent->getDaug( il2 )->getId(); - } - } - - p = parent->getP4Restframe(); - - // - // The calculation of the FIRST part of the amplitude - // - - q = k_1 + k_2; - k = k_3 + k_4; - q2 = q.mass2(); // Mandelstam variable s=q^2 - k2 = k.mass2(); // Mandelstam variable t=k^2 - - // - // The calculation of the SECOND part of the amplitude - // - - qsecond = k_1 + k_4; - ksecond = k_3 + k_2; - q2second = qsecond.mass2(); // Mandelstam variable s=q^2 - k2second = ksecond.mass2(); // Mandelstam variable t=k^2 - - // B - and barB - mesons descriptors - static EvtIdSet bmesons{ "anti-B0", "anti-B_s0" }; - static EvtIdSet bbarmesons{ "B0", "B_s0" }; - - EvtId parentID = parent->getId(); - - if ( bmesons.contains( parentID ) ) { - // The amplitude for the decay barB -> ell^+ ell^- ell^+ ell^- or - // b \bar q -> ell^+ ell^- ell^+ ell^- - - int i1, i2, i3, i4; // leptonic spin structures counters - int leptonicspin[4]; // array for the saving of the leptonic spin configuration - - // Tables for correspondings - // l^+(k_1) && lep1Plus && k_1 && i1 - // l^-(k_2) && lep1Minus && k_2 && i2 - // l^+(k_3) && lep2Plus && k_3 && i3 - // l^-(k_4) && lep2Minus && k_4 && i4 - - for ( i2 = 0; i2 < 2; i2++ ) { - leptonicspin[0] = i2; - for ( i1 = 0; i1 < 2; i1++ ) { - leptonicspin[1] = i1; - for ( i4 = 0; i4 < 2; i4++ ) { - leptonicspin[2] = i4; - for ( i3 = 0; i3 < 2; i3++ ) { - leptonicspin[3] = i3; - - EvtComplex SL2L1, PL4L3; - EvtComplex SL2L1second, PL4L3second; - - SL2L1 = EvtLeptonSCurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - PL4L3 = EvtLeptonPCurrent( lep2Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - - SL2L1second = EvtLeptonSCurrent( - lep2Minus->spParent( i2 ), lep1Plus->spParent( i1 ) ); - PL4L3second = EvtLeptonPCurrent( - lep1Minus->spParent( i4 ), lep2Plus->spParent( i3 ) ); - - amp.vertex( - leptonicspin, - Cl * Cl * CB * fb * - ( SL2L1 * PL4L3 * ( q2 - k2 ) / - ( ( q2 - MS * MS ) * ( k2 - MP * MP ) ) - - SL2L1second * PL4L3second * - ( q2second - k2second ) / - ( ( q2second - MS * MS ) * - ( k2second - MP * MP ) ) ) / - ( 4.0 * Fc * Fc ) ); - } - } - } - } - - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...) passed with arguments:" - // << "\n ============================================================================" - // << "\n Input parameters:" - // << "\n mS = " << mS - // << "\n mP = " << mP - // << "\n gammaS = " << gammaS - // << "\n gammaP = " << gammaP - // << "\n mLiiLR = " << mLiiLR - // << "\n Fc = " << Fc - // << "\n mD23LL = " << mD23LL - // << "\n mD23RR = " << mD23RR - // << "\n mD32LL = " << mD32LL - // << "\n mD32RR = " << mD32RR - // << "\n mD13LL = " << mD13LL - // << "\n mD13RR = " << mD13RR - // << "\n mD31LL = " << mD31LL - // << "\n mD31RR = " << mD31RR - // << "\n ============================================================================" - // << "\n Kinematics:" - // << "\n k_1 = " << k_1 - // << "\n m_ell_1 =" << parent->getDaug(il1)->mass() - // << "\n k_2 = " << k_2 - // << "\n m_ell_2 =" << parent->getDaug(il2)->mass() - // << "\n k_3 = " << k_3 - // << "\n m_ell_3 =" << parent->getDaug(il3)->mass() - // << "\n k_4 = " << k_4 - // << "\n m_ell_4 =" << parent->getDaug(il4)->mass() - // << "\n p = " << p - // << "\n q = " << q - // << "\n k = " << k - // << "\n qsecond = " << qsecond - // << "\n ksecond = " << ksecond - // << "\n ============================================================================" - // << "\n Form-factors" - // << "\n fb = " << fb - // << "\n ============================================================================" - // << "\n Coefficients:" - // << "\n Cl = " << Cl - // << "\n CB = " << CB - // << "\n ============================================================================" - // << "\n Partical Properties:" - // << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0")) - // << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n\n\n\n" - // << std::endl; - - } else { - if ( bbarmesons.contains( parentID ) ) { - // The amplitude for the decay B -> ell^+ ell^- ell^+ ell^- or - // q bar b -> ell^+ ell^- ell^+ ell^- - - int i1, i2, i3, i4; // leptonic spin structures counters - int leptonicspin[4]; // array for the saving of the leptonic spin configuration - - // Tables for correspondings - // l^+(k_1) && lep1Plus && k_1 && i1 - // l^-(k_2) && lep1Minus && k_2 && i2 - // l^+(k_3) && lep2Plus && k_3 && i3 - // l^-(k_4) && lep2Minus && k_4 && i4 - - for ( i2 = 1; i2 > -1; i2-- ) { - leptonicspin[0] = i2; - for ( i1 = 1; i1 > -1; i1-- ) { - leptonicspin[1] = i1; - for ( i4 = 1; i4 > -1; i4-- ) { - leptonicspin[2] = i4; - for ( i3 = 1; i3 > -1; i3-- ) { - leptonicspin[3] = i3; - - EvtComplex SL2L1, PL4L3; - EvtComplex SL2L1second, PL4L3second; - - SL2L1 = EvtLeptonSCurrent( lep1Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - PL4L3 = EvtLeptonPCurrent( lep2Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - - SL2L1second = - EvtLeptonSCurrent( lep2Minus->spParent( i2 ), - lep1Plus->spParent( i1 ) ); - PL4L3second = - EvtLeptonPCurrent( lep1Minus->spParent( i4 ), - lep2Plus->spParent( i3 ) ); - - amp.vertex( leptonicspin, - Cl * Cl * CB * fb * - ( SL2L1 * PL4L3 * ( q2 - k2 ) / - ( ( q2 - MS * MS ) * - ( k2 - MP * MP ) ) - - SL2L1second * PL4L3second * - ( q2second - k2second ) / - ( ( q2second - MS * MS ) * - ( k2second - MP * MP ) ) ) / - ( 4.0 * Fc * Fc ) ); - } - } - } - } - - // EvtGenReport(EVTGEN_ERROR,"EvtGen") << "\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...) passed with arguments:" - // << "\n ============================================================================" - // << "\n Input parameters:" - // << "\n mS = " << mS - // << "\n mP = " << mP - // << "\n gammaS = " << gammaS - // << "\n gammaP = " << gammaP - // << "\n mLiiLR = " << mLiiLR - // << "\n Fc = " << Fc - // << "\n mD23LL = " << mD23LL - // << "\n mD23RR = " << mD23RR - // << "\n mD32LL = " << mD32LL - // << "\n mD32RR = " << mD32RR - // << "\n mD13LL = " << mD13LL - // << "\n mD13RR = " << mD13RR - // << "\n mD31LL = " << mD31LL - // << "\n mD31RR = " << mD31RR - // << "\n ============================================================================" - // << "\n Kinematics:" - // << "\n k_1 = " << k_1 - // << "\n m_ell_1 =" << parent->getDaug(il1)->mass() - // << "\n k_2 = " << k_2 - // << "\n m_ell_2 =" << parent->getDaug(il2)->mass() - // << "\n k_3 = " << k_3 - // << "\n m_ell_3 =" << parent->getDaug(il3)->mass() - // << "\n k_4 = " << k_4 - // << "\n m_ell_4 =" << parent->getDaug(il4)->mass() - // << "\n p = " << p - // << "\n q = " << q - // << "\n k = " << k - // << "\n qsecond = " << qsecond - // << "\n ksecond = " << ksecond - // << "\n ============================================================================" - // << "\n Form-factors" - // << "\n fb = " << fb - // << "\n ============================================================================" - // << "\n Coefficients:" - // << "\n Cl = " << Cl - // << "\n CB = " << CB - // << "\n ============================================================================" - // << "\n Partical Properties:" - // << "\n IdB = " << idparent << " == " << EvtPDL::getId(std::string("anti-B_s0")) - // << "\n IdMu1 = " << IdMu1 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu2 = " << IdMu2 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n IdMu3 = " << IdMu3 << " == " << EvtPDL::getId(std::string("mu+")) - // << "\n IdMu4 = " << IdMu4 << " == " << EvtPDL::getId(std::string("mu-")) - // << "\n\n\n\n" - // << std::endl; - - } else { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcAmp(...)" - << "\n Wrong Bq-meson number" << std::endl; - ::abort(); - } - } -} - -// -// The decays Bq -> ell^+ ell^- ell^+ ell^- maximum probability calculation -// -double EvtbsToLLLLHyperCPAmp::CalcMaxProb( - EvtId parnum, EvtId l1num, EvtId /*l2num*/, EvtId /*l3num*/, - EvtId /*l4num*/, double mS, double mP, double gammaS, double gammaP, - double mLiiLR, double Fc, double mD23LL, double mD23RR, double mD32LL, - double mD32RR, double mD13LL, double mD13RR, double mD31LL, double mD31RR ) -{ - if ( Fc == 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb" - << "\n Error in the Fc setting!" - << "\n Fc = " << Fc << "\n mD32LL = " << mD32LL - << "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL - << "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL - << "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL - << "\n mD13RR = " << mD13RR << "\n parnum = " << parnum - << std::endl; - ::abort(); - } - - double Cl = 0.0; // LPL and LSL - vertexes - if ( Fc != 0.0 ) { - Cl = mLiiLR * mLiiLR / ( sqrt( 2 ) * Fc ); - } - if ( Cl == 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb" - << "\n Error in the Cl setting!" - << "\n Cl = " << Cl << "\n mLiiLR = " << mLiiLR - << "\n Fc = " << Fc << std::endl; - ::abort(); - } - - // - // Setting of the different Bq-mesons tipes - // - - double fb = 0.0; - double CB = 0.0; - - if ( parnum == EvtPDL::getId( std::string( "B_s0" ) ) ) { - fb = 0.24; // leptonic decay constant - CB = mD32LL * mD32LL + mD32RR * mD32RR; - } - - if ( parnum == EvtPDL::getId( std::string( "anti-B_s0" ) ) ) { - fb = 0.24; // leptonic decay constant - CB = mD23LL * mD23LL + mD23RR * mD23RR; - } - - if ( parnum == EvtPDL::getId( std::string( "B0" ) ) ) { - fb = 0.20; // leptonic decay constant - CB = mD31LL * mD31LL + mD31RR * mD31RR; - } - - if ( parnum == EvtPDL::getId( std::string( "anti-B0" ) ) ) { - fb = 0.20; // leptonic decay constant - CB = mD13LL * mD13LL + mD13RR * mD13RR; - } - - if ( CB == 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n The function EvtbsToLLLLHyperCPAmp::CalcMaxProb" - << "\n Error in the CB setting!" - << "\n CB = " << CB << "\n mD32LL = " << mD32LL - << "\n mD32RR = " << mD32RR << "\n mD23LL = " << mD23LL - << "\n mD23RR = " << mD23RR << "\n mD31LL = " << mD31LL - << "\n mD31RR = " << mD31RR << "\n mD13LL = " << mD13LL - << "\n mD13RR = " << mD13RR << "\n parnum = " << parnum - << std::endl; - ::abort(); - } - - double M1 = EvtPDL::getMeanMass( parnum ); // B - meson mass - EvtPDL::getMeanMass( l1num ); // leptonic mass - - // We find the maximum amplitude probability - double maxfoundprob = Cl * Cl * CB * fb * - fabs( mS * mS + mP * mP + M1 * M1 ) * 10000000.0 / - ( 4.0 * Fc * Fc * mS * gammaS * mP * gammaP ); - - if ( maxfoundprob <= 0.0 ) { - EvtGenReport( EVTGEN_ERROR, "EvtGen" ) - << "\n\n In the function EvtbsToLLLLHyperCPAmp::CalcMaxProb" - << "\n maxfoundprob = " << maxfoundprob << " < 0 or =0!" - << "\n mS = " << mS << "\n mP = " << mP - << "\n gammaS = " << gammaS << "\n gammaP = " << gammaP - << "\n mLiiLR = " << mLiiLR << "\n Fc = " << Fc - << "\n mD32LL = " << mD32LL << "\n mD32RR = " << mD32RR - << "\n mD23LL = " << mD23LL << "\n mD23RR = " << mD23RR - << "\n mD31LL = " << mD31LL << "\n mD31RR = " << mD31RR - << "\n mD13LL = " << mD13LL << "\n mD13RR = " << mD13RR - << "\n parnum = " << parnum << std::endl; - ::abort(); - } - - EvtGenReport( EVTGEN_NOTICE, "EvtGen" ) - << "\n maxfoundprob (...) = " << maxfoundprob << std::endl; - - maxfoundprob *= 1.01; - - return maxfoundprob; -} - -// Triangular function -double EvtbsToLLLLHyperCPAmp::lambda( double a, double b, double c ) -{ - double l; - - l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b - - 2.0 * a * c - 2.0 * b * c; - - return l; -} diff --git a/test/jsonFiles/BQTOLLLLHYPERCP__Bd_mumumumu.json b/test/jsonFiles/BQTOLLLLHYPERCP__Bd_mumumumu.json deleted file mode 100644 index 43fa99e..0000000 --- a/test/jsonFiles/BQTOLLLLHYPERCP__Bd_mumumumu.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "parent" : "anti-B0", - "daughters" : ["mu+", "mu-", "mu+", "mu-"], - "models" : ["BQTOLLLLHYPERCP"], - "parameters" : [["2.5", "0.214", "0.01", "0.01", "1.0", "1.0", "450.0", "0.0", "450.0", "0.0", "380.0", "0.0", "380.0", "0.0"]], - "extras" : ["Define dm_incohMix_B0 0", "noPhotos"], - "events" : 10000, - "histograms" : [ - {"variable" : "prob", "title" : "Prob", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 100.0}, - {"variable" : "mass", "title" : "m(mu1+mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.1, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu1+mu2+)", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu1- mu2+)", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu2+ mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "pSumSq", "title" : "qSq(mu1+mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.0, "xmax" : 25.0}, - {"variable" : "pSumSq", "title" : "qSq(mu2+mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : 0.0, "xmax" : 25.0}, - {"variable" : "p", "title" : "p(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1+,mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu2+,mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1-,mu2+)", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1+,mu2+)", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "phi", "title" : "phi(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180} - ], - "outfile" : "BQTOLLLLHYPERCP__Bd_mumumumu.root", - "reference" : "RefBQTOLLLLHYPERCP__Bd_mumumumu.root" -} diff --git a/test/jsonFiles/BQTOLLLL__Bs_mumumumu.json b/test/jsonFiles/BQTOLLLL__Bs_mumumumu.json deleted file mode 100644 index 66ad2af..0000000 --- a/test/jsonFiles/BQTOLLLL__Bs_mumumumu.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent" : "anti-B_s0", - "daughters" : ["mu+", "mu-", "mu+", "mu-"], - "models" : ["BQTOLLLL"], - "parameters" : [["5.0", "5", "0", "1", "0.88", "0.227", "0.22", "0.34"]], - "do_conjugate_decay" : [true], - "extras" : ["Define dm_incohMix_B_s0 0", "noPhotos"], - "events" : 10000, - "histograms" : [ - {"variable" : "prob", "title" : "Prob", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 10.0}, - {"variable" : "mass", "title" : "m(mu1+mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.1, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu1+mu2+)", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu1- mu2+)", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "mass", "title" : "m(mu2+ mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : 0.0, "xmax" : 5.0}, - {"variable" : "pSumSq", "title" : "qSq(mu1+mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.0, "xmax" : 25.0}, - {"variable" : "pSumSq", "title" : "qSq(mu2+mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : 0.0, "xmax" : 25.0}, - {"variable" : "p", "title" : "p(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "p", "title" : "p(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 3.0}, - {"variable" : "pz", "title" : "pz(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -3.0, "xmax" : 3.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1+,mu1-)", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu2+,mu2-)", "d1" : 3, "d2" : 4, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1-,mu2+)", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosHel", "title" : "cosHel(mu1+,mu2+)", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "cosTheta", "title" : "cosTheta(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0}, - {"variable" : "phi", "title" : "phi(mu1+)", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu1-)", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu2+)", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180}, - {"variable" : "phi", "title" : "phi(mu2-)", "d1" : 4, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180} - ], - "outfile" : "BQTOLLLL__Bs_mumumumu.root", - "reference" : "RefBQTOLLLL__Bs_mumumumu.root" -}