BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSVVCP.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: EvtSVVCP.cc
12//
13// Description: The decay of a scalar to two vector particles are
14// performed with CP violation. E.g. B->J/psi K*.
15//
16// Modification history:
17//
18// RYD January 19, 1997 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtSVVCP.hh"
31#include "EvtSVVHelAmp.hh"
32#include <stdlib.h>
33#include <string>
34
36
37void EvtSVVCP::getName( std::string& model_name ) { model_name = "SVV_CP"; }
38
40
42
43 // check that there are 9 arguments
44 checkNArg( 9 );
45 checkNDaug( 2 );
46
48
51}
52
54
55 // This is probably not quite right, but it should do as a start...
56 // Anders
57
58 setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) +
59 getArg( 7 ) * getArg( 7 ) ) );
60}
61
63
64 // added by Lange Jan4,2000
65 static EvtId B0 = EvtPDL::getId( "B0" );
66 static EvtId B0B = EvtPDL::getId( "anti-B0" );
67
68 double t;
69 EvtId other_b;
70
71 EvtCPUtil::OtherB( p, t, other_b );
72
73 EvtComplex G0P, G1P, G1M;
74
75 G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ), getArg( 3 ) * sin( getArg( 4 ) ) );
76 G0P = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ), getArg( 5 ) * sin( getArg( 6 ) ) );
77 G1M = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ), getArg( 7 ) * sin( getArg( 8 ) ) );
78
79 EvtComplex lambda_km = EvtComplex( cos( -2 * getArg( 0 ) ), sin( -2 * getArg( 0 ) ) );
80
81 double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
82 double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
83
84 EvtComplex cG0P, cG1P, cG1M;
85
86 if ( other_b == B0B )
87 {
88 cG0P = G0P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
89 cG1P = G1P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
90 cG1M = G1M * ( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
91 }
92 if ( other_b == B0 )
93 {
94 cG0P = G0P * ( cdmt + ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
95 cG1P = G1P * ( cdmt + ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
96 cG1M = -G1M * ( cdmt - ( 1.0 / lambda_km ) * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
97 }
98
99 EvtComplex A0, AP, AM;
100
101 A0 = cG0P / sqrt( 2.0 );
102 AP = ( cG1P + cG1M ) / sqrt( 2.0 );
103 AM = ( cG1P - cG1M ) / sqrt( 2.0 );
104
105 EvtSVVHelAmp::SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
106
107 return;
108}
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
void initProbMax()
Definition EvtSVVCP.cc:53
virtual ~EvtSVVCP()
Definition EvtSVVCP.cc:35
void decay(EvtParticle *p)
Definition EvtSVVCP.cc:62
EvtDecayBase * clone()
Definition EvtSVVCP.cc:39
void init()
Definition EvtSVVCP.cc:41
void getName(std::string &name)
Definition EvtSVVCP.cc:37
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