Line data Source code
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 "EvtGenBase/EvtPatches.hh"
24 : #include <stdlib.h>
25 : #include "EvtGenBase/EvtParticle.hh"
26 : #include "EvtGenBase/EvtGenKine.hh"
27 : #include "EvtGenBase/EvtCPUtil.hh"
28 : #include "EvtGenBase/EvtPDL.hh"
29 : #include "EvtGenModels/EvtSVVHelAmp.hh"
30 : #include "EvtGenBase/EvtReport.hh"
31 : #include "EvtGenModels/EvtSVVCPLH.hh"
32 : #include "EvtGenBase/EvtId.hh"
33 : #include <string>
34 : #include "EvtGenBase/EvtConst.hh"
35 : using std::endl;
36 :
37 0 : EvtSVVCPLH::~EvtSVVCPLH() {}
38 :
39 : std::string EvtSVVCPLH::getName(){
40 :
41 0 : return "SVV_CPLH";
42 :
43 : }
44 :
45 :
46 : EvtDecayBase* EvtSVVCPLH::clone(){
47 :
48 0 : return new EvtSVVCPLH;
49 :
50 0 : }
51 :
52 : void EvtSVVCPLH::init(){
53 :
54 : // check that there are 9 arguments
55 0 : checkNArg(9);
56 0 : checkNDaug(2);
57 :
58 0 : checkSpinParent(EvtSpinType::SCALAR);
59 :
60 0 : checkSpinDaughter(0,EvtSpinType::VECTOR);
61 0 : checkSpinDaughter(1,EvtSpinType::VECTOR);
62 :
63 0 : }
64 :
65 : void EvtSVVCPLH::initProbMax(){
66 :
67 : //This is probably not quite right, but it should do as a start...
68 : //Anders
69 :
70 0 : setProbMax(2*(getArg(3)*getArg(3)+getArg(5)*getArg(5)+getArg(7)*getArg(7)));
71 :
72 0 : }
73 :
74 : void EvtSVVCPLH::decay( EvtParticle *p){
75 :
76 : //added by Lange Jan4,2000
77 0 : static EvtId BS0=EvtPDL::getId("B_s0");
78 0 : static EvtId BSB=EvtPDL::getId("anti-B_s0");
79 :
80 0 : double t;
81 0 : EvtId other_b;
82 :
83 0 : EvtCPUtil::getInstance()->OtherB(p,t,other_b);
84 :
85 0 : EvtComplex G0P,G1P,G1M;
86 :
87 0 : G1P=EvtComplex(getArg(3)*cos(getArg(4)),getArg(3)*sin(getArg(4)));
88 0 : G0P=EvtComplex(getArg(5)*cos(getArg(6)),getArg(5)*sin(getArg(6)));
89 0 : G1M=EvtComplex(getArg(7)*cos(getArg(8)),getArg(7)*sin(getArg(8)));
90 :
91 0 : EvtComplex lambda_km=EvtComplex(cos(2*getArg(0)),sin(2*getArg(0)));
92 :
93 0 : double cdmt=cos(getArg(1)*t/(2*EvtConst::c));
94 0 : double sdmt=sin(getArg(1)*t/(2*EvtConst::c));
95 :
96 0 : EvtComplex cG0P,cG1P,cG1M;
97 :
98 0 : static double ctauL=EvtPDL::getctau(EvtPDL::getId("B_s0L"));
99 0 : static double ctauH=EvtPDL::getctau(EvtPDL::getId("B_s0H"));
100 :
101 : //I'm not sure if the fabs() is right when t can be
102 : //negative as in the case of Bs produced coherently.
103 : double pt=1;
104 0 : double mt=exp(-fabs(t*(ctauL-ctauH)/(ctauL*ctauH)));
105 :
106 0 : if (other_b==BSB){
107 0 : cG0P=pt*G0P*(cdmt+lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
108 0 : cG1P=pt*G1P*(cdmt+lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
109 0 : cG1M=mt*G1M*(cdmt-lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
110 0 : }
111 0 : else if (other_b==BS0){
112 0 : cG0P=pt*G0P*(cdmt+(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
113 0 : cG1P=pt*G1P*(cdmt+(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
114 0 : cG1M=-mt*G1M*(cdmt-(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
115 : }
116 : else{
117 0 : report(Severity::Error,"EvtGen") << "other_b was not BSB or BS0!"<<endl;
118 0 : ::abort();
119 : }
120 :
121 0 : EvtComplex A0,AP,AM;
122 :
123 0 : A0=cG0P/sqrt(2.0);
124 0 : AP=(cG1P+cG1M)/sqrt(2.0);
125 0 : AM=(cG1P-cG1M)/sqrt(2.0);
126 :
127 0 : EvtSVVHelAmp::SVVHel(p,_amp2,getDaug(0),getDaug(1),AP,A0,AM);
128 :
129 : return ;
130 0 : }
131 :
132 :
133 :
|