BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtHQET2.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtHQET2.cc
12//
13// Description: Routine to implement semileptonic B->D*lnu & B->Dlnu
14// decays according to the model HQET
15//
16// Lange Nov9/01 adding Dlnu and possible (w-1)^2 term
17//
18//
19// Modification history:
20//
21// Marco Bomben March 10, 2003 Module created
22//
23//------------------------------------------------------------------------
24//
25#include "EvtHQET2.hh"
33#include "EvtHQET2FF.hh"
34#include <assert.h>
35#include <stdlib.h>
36#include <string>
37using std::endl;
38
39EvtHQET2::EvtHQET2() : hqetffmodel( 0 ), calcamp( 0 ) {}
40
42 delete hqetffmodel;
43 hqetffmodel = 0;
44 delete calcamp;
45 calcamp = 0;
46}
47
48void EvtHQET2::getName( std::string& model_name ) { model_name = "HQET2"; }
49
51
53
55 calcamp->CalcAmp( p, _amp2, hqetffmodel );
56}
57
59
60 EvtId parnum, mesnum, lnum, nunum;
61
62 parnum = getParentId();
63 mesnum = getDaug( 0 );
64 lnum = getDaug( 1 );
65 nunum = getDaug( 2 );
66
67 double mymaxprob = calcamp->CalcMaxProb( parnum, mesnum, lnum, nunum, hqetffmodel );
68
69 setProbMax( mymaxprob );
70}
71
73
74 checkNDaug( 3 );
75
76 // We expect the parent to be a scalar
77 // and the daughters to be X lepton neutrino
79
82
84 if ( d1type == EvtSpinType::SCALAR )
85 {
86 if ( getNArg() == 2 )
87 {
88 hqetffmodel = new EvtHQET2FF( getArg( 0 ), getArg( 1 ) );
89 calcamp = new EvtSemiLeptonicScalarAmp;
90 }
91 else
92 {
93 report( ERROR, "EvtGen" )
94 << "HQET2 model for scalar meson daughters needs 2 arguments. Sorry." << endl;
95 ::abort();
96 }
97 }
98 else if ( d1type == EvtSpinType::VECTOR )
99 {
100 if ( getNArg() == 4 )
101 {
102 hqetffmodel = new EvtHQET2FF( getArg( 0 ), getArg( 1 ), getArg( 2 ), getArg( 3 ) );
103 calcamp = new EvtSemiLeptonicVectorAmp;
104 }
105 else
106 {
107 report( ERROR, "EvtGen" )
108 << "HQET2 model for vector meson daughtersneeds 4 arguments. Sorry." << endl;
109 ::abort();
110 }
111 }
112 else
113 {
114 report( ERROR, "EvtGen" )
115 << "HQET2 model handles only scalar and vector meson daughters. Sorry." << endl;
116 ::abort();
117 }
118}
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
EvtId getDaug(int i)
void decay(EvtParticle *p)
Definition EvtHQET2.cc:52
EvtDecayBase * clone()
Definition EvtHQET2.cc:50
void getName(std::string &name)
Definition EvtHQET2.cc:48
void init()
Definition EvtHQET2.cc:72
virtual ~EvtHQET2()
Definition EvtHQET2.cc:41
void initProbMax()
Definition EvtHQET2.cc:58
Definition EvtId.hh:27
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:66
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)