BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVSSMix.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: EvtVSSMix.cc
12//
13// Description: Routine to decay vector-> scalar scalar
14//
15// Modification history:
16//
17// RYD November 24, 1996 Module created
18//
19//------------------------------------------------------------------------
20//
21#include "EvtVSSMix.hh"
30#include <stdlib.h>
31#include <string>
32
34
35void EvtVSSMix::getName( std::string& model_name ) { model_name = "VSS_MIX"; }
36
38
40
41 // check that there are 1 arguments
42 checkNArg( 1 );
43 checkNDaug( 2 );
44
46
49}
50
52
54
55 // added by Lange Jan4,2000
56 static EvtId B0 = EvtPDL::getId( "B0" );
57 static EvtId B0B = EvtPDL::getId( "anti-B0" );
58
60 EvtParticle *s1, *s2;
61 s1 = p->getDaug( 0 );
62 s2 = p->getDaug( 1 );
63 EvtVector4R s1mom = s1->getP4();
64
65 double t1, t2, dm;
66
67 s1->setLifetime();
68 s2->setLifetime();
69
70 t1 = s1->getLifetime();
71 t2 = s2->getLifetime();
72
73 // dm should probably be a parameter to this model.
74
75 dm = getArg( 0 ) / EvtConst::c;
76
77 EvtId d1, d2;
78
79 d1 = s1->getId();
80 d2 = s2->getId();
81
82 double mix_amp = 0.;
83 if ( d1 == B0 && d2 == B0B ) mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
84 if ( d1 == B0B && d2 == B0 ) mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
85 if ( d1 == B0 && d2 == B0 ) mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
86 if ( d1 == B0B && d2 == B0B ) mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
87
88 double norm = 1.0 / s1mom.d3mag();
89
90 vertex( 0, norm * mix_amp * s1mom * ( p->eps( 0 ) ) );
91 vertex( 1, norm * mix_amp * s1mom * ( p->eps( 1 ) ) );
92 vertex( 2, norm * mix_amp * s1mom * ( p->eps( 2 ) ) );
93
94 return;
95}
static const double c
Definition EvtConst.hh:31
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
double getLifetime()
const EvtVector4R & getP4() const
void setLifetime(double tau)
EvtParticle * getDaug(int i)
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void init()
Definition EvtVSSMix.cc:39
void getName(std::string &name)
Definition EvtVSSMix.cc:35
EvtDecayBase * clone()
Definition EvtVSSMix.cc:37
virtual ~EvtVSSMix()
Definition EvtVSSMix.cc:33
void decay(EvtParticle *p)
Definition EvtVSSMix.cc:53
void initProbMax()
Definition EvtVSSMix.cc:51
double d3mag() const