Page MenuHomeHEPForge

No OneTemporary

diff --git a/EvtGenModels/EvtPropSLPole.hh b/EvtGenModels/EvtPropSLPole.hh
deleted file mode 100644
index d26a1fb..0000000
--- a/EvtGenModels/EvtPropSLPole.hh
+++ /dev/null
@@ -1,67 +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 <https://www.gnu.org/licenses/>. *
-***********************************************************************/
-
-#ifndef EVTPROPSLPOLE_HH
-#define EVTPROPSLPOLE_HH
-
-#include "EvtGenBase/EvtDecayAmp.hh"
-#include "EvtGenBase/EvtPoint1D.hh"
-#include "EvtGenBase/EvtSemiLeptonicAmp.hh"
-#include "EvtGenBase/EvtSemiLeptonicFF.hh"
-
-#include <memory>
-
-class Evtparticle;
-
-// Description:Semileptonic decays with pole form form factors
-
-class EvtPropSLPole : public EvtDecayAmp {
- public:
- std::string getName() override;
- EvtDecayBase* clone() override;
-
- void decay( EvtParticle* p ) override;
- void initProbMax() override;
- void init() override;
-
- double calBreitWigner( EvtParticle* pmeson, EvtPoint1D point );
- double calBreitWignerBasic( double maxMass );
-
- double calcMaxProb( EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug,
- EvtSemiLeptonicFF* FormFactors );
-
- private:
- bool _includeDecayFact;
- bool _includeBirthFact;
- double _mass;
- double _massMin;
- double _massMax;
- double _width;
- double _maxRange;
- EvtSpinType::spintype _spin;
-
- double _blatt;
- bool _isProbMaxSet;
-
- std::unique_ptr<EvtSemiLeptonicFF> SLPoleffmodel;
- std::unique_ptr<EvtSemiLeptonicAmp> calcamp;
-};
-
-#endif
diff --git a/src/EvtGenModels/EvtModelReg.cpp b/src/EvtGenModels/EvtModelReg.cpp
index 04f60e4..220f2aa 100644
--- a/src/EvtGenModels/EvtModelReg.cpp
+++ b/src/EvtGenModels/EvtModelReg.cpp
@@ -1,335 +1,333 @@
/***********************************************************************
* 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 <https://www.gnu.org/licenses/>. *
***********************************************************************/
#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 <assert.h>
#include <ctype.h>
#include <fstream>
#include <iomanip>
#include <iostream>
#include <stdlib.h>
using std::cout;
using std::endl;
using std::fstream;
EvtModelReg::EvtModelReg( const std::list<EvtDecayBase*>* extraModels )
{
EvtModel& modelist = EvtModel::instance();
if ( extraModels ) {
for ( std::list<EvtDecayBase*>::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 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/EvtPropSLPole.cpp b/src/EvtGenModels/EvtPropSLPole.cpp
deleted file mode 100644
index 571061d..0000000
--- a/src/EvtGenModels/EvtPropSLPole.cpp
+++ /dev/null
@@ -1,551 +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 <https://www.gnu.org/licenses/>. *
-***********************************************************************/
-
-#include "EvtGenModels/EvtPropSLPole.hh"
-
-#include "EvtGenBase/EvtAmpPdf.hh"
-#include "EvtGenBase/EvtDecayTable.hh"
-#include "EvtGenBase/EvtGenKine.hh"
-#include "EvtGenBase/EvtIntervalFlatPdf.hh"
-#include "EvtGenBase/EvtMassAmp.hh"
-#include "EvtGenBase/EvtPDL.hh"
-#include "EvtGenBase/EvtParticle.hh"
-#include "EvtGenBase/EvtPatches.hh"
-#include "EvtGenBase/EvtPropBreitWignerRel.hh"
-#include "EvtGenBase/EvtReport.hh"
-#include "EvtGenBase/EvtScalarParticle.hh"
-#include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
-#include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
-#include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
-#include "EvtGenBase/EvtSpinType.hh"
-#include "EvtGenBase/EvtTensorParticle.hh"
-#include "EvtGenBase/EvtTwoBodyVertex.hh"
-#include "EvtGenBase/EvtVectorParticle.hh"
-
-#include "EvtGenModels/EvtSLPoleFF.hh"
-
-#include <stdlib.h>
-#include <string>
-
-std::string EvtPropSLPole::getName()
-{
- return "PROPSLPOLE";
-}
-
-EvtDecayBase* EvtPropSLPole::clone()
-{
- return new EvtPropSLPole;
-}
-
-void EvtPropSLPole::decay( EvtParticle* p )
-{
- if ( !_isProbMaxSet ) {
- EvtId parnum, mesnum, lnum, nunum;
-
- parnum = getParentId();
- mesnum = getDaug( 0 );
- lnum = getDaug( 1 );
- nunum = getDaug( 2 );
-
- double mymaxprob = calcMaxProb( parnum, mesnum, lnum, nunum,
- SLPoleffmodel.get() );
-
- setProbMax( mymaxprob );
-
- _isProbMaxSet = true;
- }
-
- double minKstMass = EvtPDL::getMinMass( p->getDaug( 0 )->getId() );
- double maxKstMass = EvtPDL::getMaxMass( p->getDaug( 0 )->getId() );
-
- EvtIntervalFlatPdf flat( minKstMass, maxKstMass );
- EvtPdfGen<EvtPoint1D> gen( flat );
- EvtPoint1D point = gen();
-
- double massKst = point.value();
-
- p->getDaug( 0 )->setMass( massKst );
- p->initializePhaseSpace( getNDaug(), getDaugs() );
-
- // EvtVector4R p4meson = p->getDaug(0)->getP4();
-
- calcamp->CalcAmp( p, _amp2, SLPoleffmodel.get() );
-
- EvtParticle* mesonPart = p->getDaug( 0 );
-
- double meson_BWAmp = calBreitWigner( mesonPart, point );
-
- int list[2];
- list[0] = 0;
- list[1] = 0;
- _amp2.vertex( 0, 0, _amp2.getAmp( list ) * meson_BWAmp );
- list[0] = 0;
- list[1] = 1;
- _amp2.vertex( 0, 1, _amp2.getAmp( list ) * meson_BWAmp );
-
- list[0] = 1;
- list[1] = 0;
- _amp2.vertex( 1, 0, _amp2.getAmp( list ) * meson_BWAmp );
- list[0] = 1;
- list[1] = 1;
- _amp2.vertex( 1, 1, _amp2.getAmp( list ) * meson_BWAmp );
-
- list[0] = 2;
- list[1] = 0;
- _amp2.vertex( 2, 0, _amp2.getAmp( list ) * meson_BWAmp );
- list[0] = 2;
- list[1] = 1;
- _amp2.vertex( 2, 1, _amp2.getAmp( list ) * meson_BWAmp );
-
- return;
-}
-
-void EvtPropSLPole::initProbMax()
-{
- _isProbMaxSet = false;
-
- return;
-}
-
-void EvtPropSLPole::init()
-{
- checkNDaug( 3 );
-
- //We expect the parent to be a scalar
- //and the daughters to be X lepton neutrino
-
- checkSpinParent( EvtSpinType::SCALAR );
- checkSpinDaughter( 1, EvtSpinType::DIRAC );
- checkSpinDaughter( 2, EvtSpinType::NEUTRINO );
-
- EvtSpinType::spintype mesontype = EvtPDL::getSpinType( getDaug( 0 ) );
-
- SLPoleffmodel = std::make_unique<EvtSLPoleFF>( getNArg(), getArgs() );
-
- switch ( mesontype ) {
- case EvtSpinType::SCALAR:
- calcamp = std::make_unique<EvtSemiLeptonicScalarAmp>();
- break;
- case EvtSpinType::VECTOR:
- calcamp = std::make_unique<EvtSemiLeptonicVectorAmp>();
- break;
- case EvtSpinType::TENSOR:
- calcamp = std::make_unique<EvtSemiLeptonicTensorAmp>();
- break;
- default:;
- }
-}
-
-double EvtPropSLPole::calBreitWignerBasic( double maxMass )
-{
- if ( _width < 0.0001 )
- return 1.0;
- //its not flat - but generated according to a BW
-
- double mMin = _massMin;
- double mMax = _massMax;
- if ( maxMass > -0.5 && maxMass < mMax )
- mMax = maxMass;
-
- double massGood = EvtRandom::Flat( mMin, mMax );
-
- double ampVal = sqrt(
- 1.0 / ( pow( massGood - _mass, 2.0 ) + pow( _width, 2.0 ) / 4.0 ) );
-
- return ampVal;
-}
-
-double EvtPropSLPole::calBreitWigner( EvtParticle* pmeson, EvtPoint1D point )
-{
- EvtId mesnum = pmeson->getId();
- _mass = EvtPDL::getMeanMass( mesnum );
- _width = EvtPDL::getWidth( mesnum );
- _maxRange = EvtPDL::getMaxRange( mesnum );
- EvtSpinType::spintype mesontype = EvtPDL::getSpinType( mesnum );
- _includeDecayFact = true;
- _includeBirthFact = true;
- _spin = mesontype;
- _blatt = 3.0;
-
- double maxdelta = 15.0 * _width;
-
- if ( _maxRange > 0.00001 ) {
- _massMax = _mass + maxdelta;
- _massMin = _mass - _maxRange;
- } else {
- _massMax = _mass + maxdelta;
- _massMin = _mass - 15.0 * _width;
- }
-
- _massMax = _mass + maxdelta;
- if ( _massMin < 0. )
- _massMin = 0.;
-
- EvtParticle* par = pmeson->getParent();
- double maxMass = -1.;
- if ( par != nullptr ) {
- if ( par->hasValidP4() )
- maxMass = par->mass();
- for ( std::size_t i = 0; i < par->getNDaug(); i++ ) {
- EvtParticle* tDaug = par->getDaug( i );
- if ( pmeson != tDaug )
- maxMass -= EvtPDL::getMinMass( tDaug->getId() );
- }
- }
-
- std::vector<EvtId> dauId;
- std::vector<double> dauMasses;
- const std::size_t nDaug{ pmeson->getNDaug() };
- if ( nDaug > 0 ) {
- dauId.resize( nDaug );
- dauMasses.resize( nDaug );
- for ( std::size_t j = 0; j < nDaug; j++ ) {
- dauId[j] = pmeson->getDaug( j )->getId();
- dauMasses[j] = pmeson->getDaug( j )->mass();
- }
- }
- EvtId parId;
- EvtId othDaugId;
- EvtParticle* tempPar = pmeson->getParent();
- if ( tempPar ) {
- parId = tempPar->getId();
- if ( tempPar->getNDaug() == 2 ) {
- if ( tempPar->getDaug( 0 ) == pmeson ) {
- othDaugId = tempPar->getDaug( 1 )->getId();
- } else {
- othDaugId = tempPar->getDaug( 0 )->getId();
- }
- }
- }
-
- if ( nDaug != 2 )
- return calBreitWignerBasic( maxMass );
-
- if ( _width < 0.00001 )
- return 1.0;
-
- //first figure out L - take the lowest allowed.
-
- EvtSpinType::spintype spinD1 = EvtPDL::getSpinType( dauId[0] );
- EvtSpinType::spintype spinD2 = EvtPDL::getSpinType( dauId[1] );
-
- int t1 = EvtSpinType::getSpin2( spinD1 );
- int t2 = EvtSpinType::getSpin2( spinD2 );
- int t3 = EvtSpinType::getSpin2( _spin );
-
- int Lmin = -10;
-
- // allow for special cases.
- if ( Lmin < -1 ) {
- //There are some things I don't know how to deal with
- if ( t3 > 4 )
- return calBreitWignerBasic( maxMass );
- if ( t1 > 4 )
- return calBreitWignerBasic( maxMass );
- if ( t2 > 4 )
- return calBreitWignerBasic( maxMass );
-
- //figure the min and max allowwed "spins" for the daughters state
- Lmin = std::max( t3 - t2 - t1, std::max( t2 - t3 - t1, t1 - t3 - t2 ) );
- if ( Lmin < 0 )
- Lmin = 0;
- assert( Lmin == 0 || Lmin == 2 || Lmin == 4 );
- }
-
- //double massD1=EvtPDL::getMeanMass(dauId[0]);
- //double massD2=EvtPDL::getMeanMass(dauId[1]);
- double massD1 = dauMasses[0];
- double massD2 = dauMasses[1];
-
- // I'm not sure how to define the vertex factor here - so retreat to nonRel code.
- if ( ( massD1 + massD2 ) > _mass )
- return calBreitWignerBasic( maxMass );
-
- //parent vertex factor not yet implemented
- double massOthD = -10.;
- double massParent = -10.;
- int birthl = -10;
- if ( othDaugId != EvtId{} ) {
- EvtSpinType::spintype spinOth = EvtPDL::getSpinType( othDaugId );
- EvtSpinType::spintype spinPar = EvtPDL::getSpinType( parId );
-
- int tt1 = EvtSpinType::getSpin2( spinOth );
- int tt2 = EvtSpinType::getSpin2( spinPar );
- int tt3 = EvtSpinType::getSpin2( _spin );
-
- //figure the min and max allowwed "spins" for the daughters state
- if ( ( tt1 <= 4 ) && ( tt2 <= 4 ) ) {
- birthl = std::max( tt3 - tt2 - tt1,
- std::max( tt2 - tt3 - tt1, tt1 - tt3 - tt2 ) );
- if ( birthl < 0 )
- birthl = 0;
-
- massOthD = EvtPDL::getMeanMass( othDaugId );
- massParent = EvtPDL::getMeanMass( parId );
- }
- }
- double massM = _massMax;
- if ( ( maxMass > -0.5 ) && ( maxMass < massM ) )
- massM = maxMass;
-
- //special case... if the parent mass is _fixed_ we can do a little better
- //and only for a two body decay as that seems to be where we have problems
-
- // Define relativistic propagator amplitude
-
- EvtTwoBodyVertex vd( massD1, massD2, _mass, Lmin / 2 );
- vd.set_f( _blatt );
- EvtPropBreitWignerRel bw( _mass, _width );
- EvtMassAmp amp( bw, vd );
- // if ( _fixMassForMax) amp.fixUpMassForMax();
- // else std::cout << "problem problem\n";
- if ( _includeDecayFact ) {
- amp.addDeathFact();
- amp.addDeathFactFF();
- }
- if ( massParent > -1. ) {
- if ( _includeBirthFact ) {
- EvtTwoBodyVertex vb( _mass, massOthD, massParent, birthl / 2 );
- amp.setBirthVtx( vb );
- amp.addBirthFact();
- amp.addBirthFactFF();
- }
- }
-
- EvtAmpPdf<EvtPoint1D> pdf( amp );
-
- double ampVal = sqrt( pdf.evaluate( point ) );
-
- return ampVal;
-}
-
-double EvtPropSLPole::calcMaxProb( EvtId parent, EvtId meson, EvtId lepton,
- EvtId nudaug, EvtSemiLeptonicFF* FormFactors )
-{
- //This routine takes the arguements parent, meson, and lepton
- //number, and a form factor model, and returns a maximum
- //probability for this semileptonic form factor model. A
- //brute force method is used. The 2D cos theta lepton and
- //q2 phase space is probed.
-
- //Start by declaring a particle at rest.
-
- //It only makes sense to have a scalar parent. For now.
- //This should be generalized later.
-
- EvtScalarParticle* scalar_part;
- EvtParticle* root_part;
-
- scalar_part = new EvtScalarParticle;
-
- //cludge to avoid generating random numbers!
- scalar_part->noLifeTime();
-
- EvtVector4R p_init;
-
- p_init.set( EvtPDL::getMass( parent ), 0.0, 0.0, 0.0 );
- scalar_part->init( parent, p_init );
- root_part = scalar_part;
- // root_part->set_type(EvtSpinType::SCALAR);
- root_part->setDiagonalSpinDensity();
-
- EvtParticle *daughter, *lep, *trino;
-
- EvtAmp amp;
-
- EvtId listdaug[3];
- listdaug[0] = meson;
- listdaug[1] = lepton;
- listdaug[2] = nudaug;
-
- amp.init( parent, 3, listdaug );
-
- root_part->makeDaughters( 3, listdaug );
- daughter = root_part->getDaug( 0 );
- lep = root_part->getDaug( 1 );
- trino = root_part->getDaug( 2 );
-
- EvtDecayBase* decayer;
- decayer = EvtDecayTable::getInstance()->getDecayFunc( daughter );
- if ( decayer ) {
- daughter->makeDaughters( decayer->nRealDaughters(), decayer->getDaugs() );
- for ( int ii = 0; ii < decayer->nRealDaughters(); ii++ ) {
- daughter->getDaug( ii )->setMass(
- EvtPDL::getMeanMass( daughter->getDaug( ii )->getId() ) );
- }
- }
-
- //cludge to avoid generating random numbers!
- daughter->noLifeTime();
- lep->noLifeTime();
- trino->noLifeTime();
-
- //Initial particle is unpolarized, well it is a scalar so it is
- //trivial
- EvtSpinDensity rho;
- rho.setDiag( root_part->getSpinStates() );
-
- double mass[3];
-
- double m = root_part->mass();
-
- EvtVector4R p4meson, p4lepton, p4nu, p4w;
- double q2max;
-
- double q2, elepton, plepton;
- int i, j;
- double erho, prho, costl;
-
- double maxfoundprob = 0.0;
- double prob = -10.0;
- int massiter;
-
- for ( massiter = 0; massiter < 3; massiter++ ) {
- mass[0] = EvtPDL::getMeanMass( meson );
- mass[1] = EvtPDL::getMeanMass( lepton );
- mass[2] = EvtPDL::getMeanMass( nudaug );
- if ( massiter == 1 ) {
- mass[0] = EvtPDL::getMinMass( meson );
- }
- if ( massiter == 2 ) {
- mass[0] = EvtPDL::getMaxMass( meson );
- if ( ( mass[0] + mass[1] + mass[2] ) > m )
- mass[0] = m - mass[1] - mass[2] - 0.00001;
- }
-
- q2max = ( m - mass[0] ) * ( m - mass[0] );
-
- //loop over q2
-
- for ( i = 0; i < 25; i++ ) {
- q2 = ( ( i + 0.5 ) * q2max ) / 25.0;
-
- erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
-
- prho = sqrt( erho * erho - mass[0] * mass[0] );
-
- p4meson.set( erho, 0.0, 0.0, -1.0 * prho );
- p4w.set( m - erho, 0.0, 0.0, prho );
-
- //This is in the W rest frame
- elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
- plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
-
- double probctl[3];
-
- for ( j = 0; j < 3; j++ ) {
- costl = 0.99 * ( j - 1.0 );
-
- //These are in the W rest frame. Need to boost out into
- //the B frame.
- p4lepton.set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ),
- plepton * costl );
- p4nu.set( plepton, 0.0,
- -1.0 * plepton * sqrt( 1.0 - costl * costl ),
- -1.0 * plepton * costl );
-
- EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
- p4lepton = boostTo( p4lepton, boost );
- p4nu = boostTo( p4nu, boost );
-
- //Now initialize the daughters...
-
- daughter->init( meson, p4meson );
- lep->init( lepton, p4lepton );
- trino->init( nudaug, p4nu );
-
- calcamp->CalcAmp( root_part, amp, FormFactors );
-
- EvtPoint1D point( mass[0] );
-
- double meson_BWAmp = calBreitWigner( daughter, point );
-
- int list[2];
- list[0] = 0;
- list[1] = 0;
- amp.vertex( 0, 0, amp.getAmp( list ) * meson_BWAmp );
- list[0] = 0;
- list[1] = 1;
- amp.vertex( 0, 1, amp.getAmp( list ) * meson_BWAmp );
-
- list[0] = 1;
- list[1] = 0;
- amp.vertex( 1, 0, amp.getAmp( list ) * meson_BWAmp );
- list[0] = 1;
- list[1] = 1;
- amp.vertex( 1, 1, amp.getAmp( list ) * meson_BWAmp );
-
- list[0] = 2;
- list[1] = 0;
- amp.vertex( 2, 0, amp.getAmp( list ) * meson_BWAmp );
- list[0] = 2;
- list[1] = 1;
- amp.vertex( 2, 1, amp.getAmp( list ) * meson_BWAmp );
-
- //Now find the probability at this q2 and cos theta lepton point
- //and compare to maxfoundprob.
-
- //Do a little magic to get the probability!!
- prob = rho.normalizedProb( amp.getSpinDensity() );
-
- probctl[j] = prob;
- }
-
- //probclt contains prob at ctl=-1,0,1.
- //prob=a+b*ctl+c*ctl^2
-
- double a = probctl[1];
- double b = 0.5 * ( probctl[2] - probctl[0] );
- double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
-
- prob = probctl[0];
- if ( probctl[1] > prob )
- prob = probctl[1];
- if ( probctl[2] > prob )
- prob = probctl[2];
-
- if ( fabs( c ) > 1e-20 ) {
- double ctlx = -0.5 * b / c;
- if ( fabs( ctlx ) < 1.0 ) {
- double probtmp = a + b * ctlx + c * ctlx * ctlx;
- if ( probtmp > prob )
- prob = probtmp;
- }
- }
-
- //EvtGenReport(EVTGEN_DEBUG,"EvtGen") << "prob,probctl:"<<prob<<" "
- // << probctl[0]<<" "
- // << probctl[1]<<" "
- // << probctl[2]<<endl;
-
- if ( prob > maxfoundprob ) {
- maxfoundprob = prob;
- }
- }
- if ( EvtPDL::getWidth( meson ) <= 0.0 ) {
- //if the particle is narrow dont bother with changing the mass.
- massiter = 4;
- }
- }
- root_part->deleteTree();
-
- maxfoundprob *= 1.1;
- return maxfoundprob;
-}
diff --git a/test/jsonFiles/PROPSLPOLE=VSS__D+_Kst0enu_Kpi.json b/test/jsonFiles/PROPSLPOLE=VSS__D+_Kst0enu_Kpi.json
deleted file mode 100644
index 21cc652..0000000
--- a/test/jsonFiles/PROPSLPOLE=VSS__D+_Kst0enu_Kpi.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "parent" : "D+",
- "daughters" : ["anti-K*0", "e+", "nu_e"],
- "grand_daughters" : [["K-", "pi+"], [], []],
- "models" : ["PROPSLPOLE", "VSS", ""],
- "parameters" : [["1.00", "-0.558", "0.0", "1.0", "0.85", "-0.558", "0.0", "1.0", "1.50", "-0.790", "0.0", "1.0", "0.00", "-0.558", "0.0", "1.0"], [], []],
- "extras" : ["noPhotos"],
- "events" : 10000,
- "histograms" : [
- {"variable" : "prob", "title" : "Prob", "d1" : 0, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "mass", "title" : "M(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.6, "xmax" : 1.4},
- {"variable" : "mass", "title" : "M(#it{K}*^{0}#it{e})", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0.5, "xmax" : 2.0},
- {"variable" : "mass", "title" : "M(#it{K}*^{0}#it{#nu})", "d1" : 1, "d2" : 3, "nbins" : 100, "xmin" : 0.5, "xmax" : 2.0},
- {"variable" : "mass", "title" : "M(#it{e}#it{#nu})", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 2.0},
- {"variable" : "pSumSq", "title" : "q^{2}(#it{e}#it{#nu})", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.5},
- {"variable" : "p", "title" : "p(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "pSq", "title" : "p^{2}(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "pz", "title" : "pz(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -2.5, "xmax" : 1.0},
- {"variable" : "cosHel", "title" : "cosHel(#it{K}*^{0},#it{e})", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "cosHel", "title" : "cosHel(#it{e}#it{#nu})", "d1" : 2, "d2" : 3, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "cosHel", "title" : "cosHel(#it{K})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "cosAcoplanarityAngle", "title" : "cosAcopl", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "acoplanarityAngle", "title" : "acopl", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0, "xmax" : 180.0},
- {"variable" : "decayangle", "title" : "#theta(#it{K}*^{0},#it{e})", "d1" : 1, "d2" : 2, "nbins" : 100, "xmin" : 0, "xmax" : 200.0},
- {"variable" : "cosTheta", "title" : "cosTheta(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "cosTheta", "title" : "cosTheta(#it{e})", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "cosTheta", "title" : "cosTheta(#it{#nu})", "d1" : 3, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "phi", "title" : "phi(#it{K}*^{0})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180.0},
- {"variable" : "pLab_daug1", "title" : "pLab(#it{K})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "pLab_daug1", "title" : "pLab(#it{#pi})", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : 0.0, "xmax" : 1.0},
- {"variable" : "cosTheta_daug1", "title" : "cosTheta(#it{K})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "phi_daug1", "title" : "phi(#it{K})", "d1" : 1, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180.0},
- {"variable" : "cosTheta_daug1", "title" : "cosTheta(#it{#pi})", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -1.0, "xmax" : 1.0},
- {"variable" : "phi_daug1", "title" : "phi(#it{#pi})", "d1" : 2, "d2" : 0, "nbins" : 100, "xmin" : -180.0, "xmax" : 180.0}
- ],
- "outfile" : "PROPSLPOLE=VSS__D+_Kst0enu_Kpi.root",
- "reference" : "RefPROPSLPOLE=VSS__D+_Kst0enu_Kpi.root"
-}

File Metadata

Mime Type
application/vnd.ms-fontobject
Expires
Sat, May 18, 7:43 AM (1 d, 23 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2164319
Default Alt Text
(38 KB)

Event Timeline