Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8318756
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
38 KB
Subscribers
None
View Options
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
Details
Attached
Mime Type
application/vnd.ms-fontobject
Expires
Sun, Dec 22, 10:30 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4027913
Default Alt Text
(38 KB)
Attached To
rEVTGEN evtgen
Event Timeline
Log In to Comment