63 <<
" EvtRareLbToLll expects DIRAC or RARITASWINGER daughter " 73 if ( model ==
"Gutsche" ) {
74 ffmodel_ = std::make_unique<EvtRareLbToLllFFGutsche>();
75 }
else if ( model ==
"LQCD" ) {
76 ffmodel_ = std::make_unique<EvtRareLbToLllFFlQCD>();
77 }
else if ( model ==
"MR" ) {
78 ffmodel_ = std::make_unique<EvtRareLbToLllFF>();
81 <<
" Unknown form-factor model, valid options are MR, LQCD, Gutsche." 85 wcmodel_ = std::make_unique<EvtRareLbToLllWC>();
95 <<
" EvtRareLbToLll is finding maximum probability ... " << std::endl;
104 parent.setDiagonalSpinDensity();
109 parent.makeDaughters( 3, daughters );
118 rho.
setDiag( parent.getSpinStates() );
125 double q2, pstar, elambda, theta;
126 double q2min = ( m1 + m2 ) * ( m1 + m2 );
127 double q2max = ( M0 - mL ) * ( M0 - mL );
132 <<
" EvtRareLbToLll is probing whole phase space ..." << std::endl;
136 for ( i = 0; i <= 100; i++ ) {
137 q2 = q2min + i * ( q2max - q2min ) / 100.;
138 elambda = ( M0 * M0 + mL * mL - q2 ) / 2 / M0;
142 pstar = sqrt( q2 - ( m1 + m2 ) * ( m1 + m2 ) ) *
143 sqrt( q2 - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / sqrt( q2 );
144 boost.
set( M0 - elambda, 0, 0, +sqrt( elambda * elambda - mL * mL ) );
146 p4lambda.
set( elambda, 0, 0,
147 -sqrt( elambda * elambda - mL * mL ) );
149 p4lambda.
set( mL, 0, 0, 0 );
151 for ( j = 0; j <= 45; j++ ) {
153 p4lep1.
set( sqrt( pstar * pstar + m1 * m1 ), 0,
154 +pstar * sin( theta ), +pstar * cos( theta ) );
155 p4lep2.
set( sqrt( pstar * pstar + m2 * m2 ), 0,
156 -pstar * sin( theta ), -pstar * cos( theta ) );
160 p4lep1 =
boostTo( p4lep1, boost );
161 p4lep2 =
boostTo( p4lep2, boost );
172 <<
" - probability " << prob <<
" found at q2 = " << q2
173 <<
" (" << 100 * ( q2 - q2min ) / ( q2max - q2min )
201 static EvtIdSet partlist(
"Lambda_b0" );
212 static EvtIdSet leptons(
"e-",
"mu-",
"tau-" );
228 P.
set( parent->
mass(), 0.0, 0.0, 0.0 );
231 double qsq = q.
mass2();
237 for (
int i = 0; i < 2; ++i ) {
238 for (
int j = 0; j < 2; ++j ) {
272 static const double mb = 5.209;
275 for (
unsigned int i = 0; i < 4; ++i ) {
277 AC[i] = -2. * mb * C7eff * FF.
FT_[i] / qsq + C9eff * FF.
F_[i];
278 BC[i] = -2. * mb * C7eff * FF.
GT_[i] / qsq - C9eff * FF.
G_[i];
279 DC[i] = C10eff * FF.
F_[i];
280 EC[i] = -C10eff * FF.
G_[i];
282 AC[i] = -2. * mb * C7eff * FF.
GT_[i] / qsq - C9eff * FF.
G_[i];
283 BC[i] = -2. * mb * C7eff * FF.
FT_[i] / qsq + C9eff * FF.
F_[i];
284 DC[i] = -C10eff * FF.
G_[i];
285 EC[i] = C10eff * FF.
F_[i];
290 const double cv = ( isparticle > 0 ) ? 1.0 : -1.0 * parity;
291 const double ca = ( isparticle > 0 ) ? 1.0 : +1.0 * parity;
292 const double cs = ( isparticle > 0 ) ? 1.0 : +1.0 * parity;
293 const double cp = ( isparticle > 0 ) ? 1.0 : -1.0 * parity;
301 for (
int i = 0; i < 2; ++i ) {
302 for (
int j = 0; j < 2; ++j ) {
305 H1[i][j] = ( cv *
AC[0] * T[0] + ca *
BC[0] * T[1] +
306 cs *
AC[1] * T[2] + cp *
BC[1] * T[3] +
307 cs *
AC[2] * T[4] + cp *
BC[2] * T[5] );
309 H2[i][j] = ( cv * DC[0] * T[0] + ca * EC[0] * T[1] +
310 cs * DC[1] * T[2] + cp * EC[1] * T[3] +
311 cs * DC[2] * T[4] + cp * EC[2] * T[5] );
318 for (
int i = 0; i < 2; ++i ) {
319 for (
int ip = 0; ip < 2; ++ip ) {
320 for (
int j = 0; j < 2; ++j ) {
321 for (
int jp = 0; jp < 2; ++jp ) {
328 H2[i][ip] * LA[j][jp];
342 for (
int i = 0; i < 2; ++i ) {
343 for (
int j = 0; j < 4; ++j ) {
344 H1[i][j] = ( cv *
AC[0] * T[0] + ca *
BC[0] * T[1] +
345 cs *
AC[1] * T[2] + cp *
BC[1] * T[3] +
346 cs *
AC[2] * T[4] + cp *
BC[2] * T[5] +
347 cs *
AC[3] * T[6] + cp *
BC[3] * T[7] );
348 H2[i][j] = ( cv * DC[0] * T[0] + ca * EC[0] * T[1] +
349 cs * DC[1] * T[2] + cp * EC[1] * T[3] +
350 cs * DC[2] * T[4] + cp * EC[2] * T[5] +
351 cs * DC[3] * T[6] + cp * EC[3] * T[7] );
358 for (
int i = 0; i < 2; ++i ) {
359 for (
int ip = 0; ip < 4; ++ip ) {
360 for (
int j = 0; j < 2; ++j ) {
361 for (
int jp = 0; jp < 2; ++jp ) {
368 H2[i][ip] * LA[j][jp];
377 <<
" EvtRareLbToLll expects DIRAC or RARITASWINGER daughter " 395 P.
set( parent->
mass(), 0.0, 0.0, 0.0 );
397 const double Pm = parent->
mass();
398 const double Lm =
lambda->mass();
434 P.
set( parent->
mass(), 0.0, 0.0, 0.0 );
439 ID.
setdiag( 1.0, 1.0, 1.0, 1.0 );
443 for (
int i = 0; i < 4; i++ ) {
447 const double Pmsq = P.
mass2();
448 const double Pm = parent->
mass();
449 const double PmLm = Pm *
lambda->mass();
453 for (
int i = 0; i < 4; i++ ) {
477 T[6] = ID.
cont2( V1 );
480 T[7] = ID.
cont2( V2 );
void decay(EvtParticle *parent) override
void setdiag(double t00, double t11, double t22, double t33)
virtual EvtDiracSpinor sp(int) const
void HadronicAmp(EvtParticle *parent, EvtParticle *lambda, EvtVector4C *T, const int i, const int j)
std::unique_ptr< EvtRareLbToLllWC > wcmodel_
static EvtSpinType::spintype getSpinType(EvtId i)
std::string getArgStr(int j) const
void set(int, const EvtComplex &)
void HadronicAmpRS(EvtParticle *parent, EvtParticle *lambda, EvtVector4C *T, const int i, const int j)
bool isParticle(EvtParticle *parent) const
EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
void calcAmp(EvtAmp &, EvtParticle *parent)
std::unique_ptr< EvtRareLbToLllFFBase > ffmodel_
EvtVector4C cont2(const EvtVector4C &v4) const
std::string getName() override
void set_spinor(int i, const EvtComplex &sp)
void set(int i, double d)
EvtRaritaSchwinger boostTo(const EvtRaritaSchwinger &rs, const EvtVector4R p4)
EvtSpinDensity getSpinDensity()
virtual EvtDiracSpinor spParent(int) const
void setProbMax(double prbmx)
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void vertex(const EvtComplex &)
EvtId getParentId() const
void initProbMax() override
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtDecayBase * clone() override
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
const EvtVector4R & getP4() const
double lambda(double q, double m1, double m2)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
EvtParticle * getDaug(int i)
EvtVector4C getVector(int i) const
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor getSpinor(int i) const
int contains(const EvtId id)
static double getMass(EvtId i)
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void init(EvtId p, int ndaug, EvtId *daug)
double normalizedProb(const EvtSpinDensity &d)
EvtId getDaug(int i) const