BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSVVCPLH.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) 1999 Caltech, UCSB
10//
11// Module: EvtSVVCPLH.cc
12//
13// Description: The decay of a scalar to two vector particles are
14// performed with CP violation and different widths for
15// the cpe even and od states. E.g. Bs->J/psi phi.
16//
17// Modification history:
18//
19// RYD November 5, 1999 Module created
20//
21//------------------------------------------------------------------------
22//
23#include "EvtSVVCPLH.hh"
32#include "EvtSVVHelAmp.hh"
33#include <stdlib.h>
34#include <string>
35using std::endl;
36
38
39void EvtSVVCPLH::getName( std::string& model_name ) { model_name = "SVV_CPLH"; }
40
42
44
45 // check that there are 9 arguments
46 checkNArg( 9 );
47 checkNDaug( 2 );
48
50
53}
54
56
57 // This is probably not quite right, but it should do as a start...
58 // Anders
59
60 setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) +
61 getArg( 7 ) * getArg( 7 ) ) );
62}
63
65
66 // added by Lange Jan4,2000
67 static EvtId BS0 = EvtPDL::getId( "B_s0" );
68 static EvtId BSB = EvtPDL::getId( "anti-B_s0" );
69
70 double t;
71 EvtId other_b;
72
73 EvtCPUtil::OtherB( p, t, other_b );
74
75 EvtComplex G0P, G1P, G1M;
76
77 G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ), getArg( 3 ) * sin( getArg( 4 ) ) );
78 G0P = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ), getArg( 5 ) * sin( getArg( 6 ) ) );
79 G1M = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ), getArg( 7 ) * sin( getArg( 8 ) ) );
80
81 EvtComplex lambda_km = EvtComplex( cos( 2 * getArg( 0 ) ), sin( 2 * getArg( 0 ) ) );
82
83 double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
84 double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
85
86 EvtComplex cG0P, cG1P, cG1M;
87
88 static double ctauL = EvtPDL::getctau( EvtPDL::getId( "B_s0L" ) );
89 static double ctauH = EvtPDL::getctau( EvtPDL::getId( "B_s0H" ) );
90 static double ctau = ctauL < ctauH ? ctauH : ctauL;
91
92 // I'm not sure if the fabs() is right when t can be
93 // negative as in the case of Bs produced coherently.
94 double pt = 1;
95 double mt = exp( -fabs( t * ( ctauL - ctauH ) / ( ctauL * ctauH ) ) );
96
97 if ( other_b == BSB )
98 {
99 cG0P = pt * G0P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
100 cG1P = pt * G1P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
101 cG1M = mt * G1M * ( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
102 }
103 else if ( other_b == BS0 )
104 {
105 cG0P = pt * G0P * ( cdmt + ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
106 cG1P = pt * G1P * ( cdmt + ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
107 cG1M = -mt * G1M * ( cdmt - ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
108 }
109 else
110 {
111 report( ERROR, "EvtGen" ) << "other_b was not BSB or BS0!" << endl;
112 ::abort();
113 }
114
115 EvtComplex A0, AP, AM;
116
117 A0 = cG0P / sqrt( 2.0 );
118 AP = ( cG1P + cG1M ) / sqrt( 2.0 );
119 AM = ( cG1P - cG1M ) / sqrt( 2.0 );
120
121 EvtSVVHelAmp::SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
122
123 return;
124}
EvtComplex exp(const EvtComplex &c)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
static void OtherB(EvtParticle *p, double &t, EvtId &otherb)
Definition EvtCPUtil.cc:225
static const double c
Definition EvtConst.hh:31
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)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
static double getctau(EvtId i)
Definition EvtPDL.hh:60
void getName(std::string &name)
Definition EvtSVVCPLH.cc:39
void init()
Definition EvtSVVCPLH.cc:43
void decay(EvtParticle *p)
Definition EvtSVVCPLH.cc:64
void initProbMax()
Definition EvtSVVCPLH.cc:55
virtual ~EvtSVVCPLH()
Definition EvtSVVCPLH.cc:37
EvtDecayBase * clone()
Definition EvtSVVCPLH.cc:41
static void SVVHel(EvtParticle *parent, EvtAmp &amp, EvtId n_v1, EvtId n_v2, const EvtComplex &hp, const EvtComplex &h0, const EvtComplex &hm)
int t()
Definition t.c:1