00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <stdlib.h>
00023 #include "EvtGenBase/EvtParticle.hh"
00024 #include "EvtGenBase/EvtGenKine.hh"
00025 #include "EvtGenBase/EvtPDL.hh"
00026 #include "EvtGenBase/EvtReport.hh"
00027 #include "EvtGenModels/EvtSLBKPole.hh"
00028 #include "EvtGenModels/EvtSLBKPoleFF.hh"
00029 #include "EvtGenBase/EvtSemiLeptonicScalarAmp.hh"
00030 #include "EvtGenBase/EvtSemiLeptonicVectorAmp.hh"
00031 #include "EvtGenBase/EvtSemiLeptonicTensorAmp.hh"
00032 #include <string>
00033
00034 EvtSLBKPole::~EvtSLBKPole() {}
00035
00036 void EvtSLBKPole::getName(std::string& model_name ){
00037
00038 model_name= "SLBKPOLE";
00039
00040 }
00041
00042
00043 EvtDecayBase* EvtSLBKPole::clone(){
00044
00045 return new EvtSLBKPole;
00046
00047 }
00048
00049 void EvtSLBKPole::decay( EvtParticle *p ){
00050
00051 p->initializePhaseSpace(getNDaug(),getDaugs());
00052
00053 calcamp->CalcAmp(p,_amp2,SLBKPoleffmodel);
00054 return;
00055 }
00056
00057 void EvtSLBKPole::initProbMax(){
00058
00059 EvtId parnum,mesnum,lnum,nunum;
00060
00061 parnum = getParentId();
00062 mesnum = getDaug(0);
00063 lnum = getDaug(1);
00064 nunum = getDaug(2);
00065
00066 double mymaxprob = calcamp->CalcMaxProb(parnum,mesnum,
00067 lnum,nunum,SLBKPoleffmodel);
00068
00069 setProbMax(mymaxprob);
00070
00071 }
00072
00073
00074 void EvtSLBKPole::init(){
00075
00076 checkNDaug(3);
00077
00078
00079
00080
00081 checkSpinParent(EvtSpinType::SCALAR);
00082 checkSpinDaughter(1,EvtSpinType::DIRAC);
00083 checkSpinDaughter(2,EvtSpinType::NEUTRINO);
00084
00085 EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
00086
00087 SLBKPoleffmodel = new EvtSLBKPoleFF(getNArg(),getArgs());
00088
00089 if ( mesontype==EvtSpinType::SCALAR ) {
00090 calcamp = new EvtSemiLeptonicScalarAmp;
00091 }
00092 if ( mesontype==EvtSpinType::VECTOR ) {
00093 calcamp = new EvtSemiLeptonicVectorAmp;
00094 }
00095 if ( mesontype==EvtSpinType::TENSOR ) {
00096 calcamp = new EvtSemiLeptonicTensorAmp;
00097 }
00098
00099 }
00100