]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtSSSCP.cxx
Not needed.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSSSCP.cxx
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: EvtSSSCP.cc
12 //
13 // Description: Routine to decay scalar -> 2 scalars
14 //
15 // Modification history:
16 //
17 //    RYD       November 24, 1996       Module created
18 //
19 //------------------------------------------------------------------------
20 // 
21 #include "EvtGenBase/EvtPatches.hh"
22 #include <stdlib.h>
23 #include "EvtGenBase/EvtParticle.hh"
24 #include "EvtGenBase/EvtGenKine.hh"
25 #include "EvtGenBase/EvtCPUtil.hh"
26 #include "EvtGenBase/EvtPDL.hh"
27 #include "EvtGenBase/EvtReport.hh"
28 #include "EvtGenModels/EvtSSSCP.hh"
29 #include <string>
30 #include "EvtGenBase/EvtConst.hh"
31
32 EvtSSSCP::~EvtSSSCP() {}
33
34 std::string EvtSSSCP::getName(){
35
36   return "SSS_CP";     
37
38 }
39
40
41 EvtDecayBase* EvtSSSCP::clone(){
42
43   return new EvtSSSCP;
44
45 }
46
47 void EvtSSSCP::init(){
48
49   // check that there are 7 arguments
50   checkNArg(7);
51   checkNDaug(2);
52   checkSpinParent(EvtSpinType::SCALAR);
53
54   checkSpinDaughter(0,EvtSpinType::SCALAR);
55   checkSpinDaughter(1,EvtSpinType::SCALAR);
56
57 }
58
59 void EvtSSSCP::initProbMax(){
60
61   //This is probably not quite right, but it should do as a start...
62   //Anders
63
64   setProbMax(2*(getArg(3)*getArg(3)+getArg(5)*getArg(5)));
65
66 }
67
68 void EvtSSSCP::decay( EvtParticle *p ){
69
70   //added by Lange Jan4,2000
71   static EvtId B0=EvtPDL::getId("B0");
72   static EvtId B0B=EvtPDL::getId("anti-B0");
73
74   double t;
75   EvtId other_b;
76
77   EvtCPUtil::OtherB(p,t,other_b);
78
79   p->initializePhaseSpace(getNDaug(),getDaugs());
80
81
82   EvtComplex amp;
83
84   EvtComplex A,Abar;
85   
86   A=EvtComplex(getArg(3)*cos(getArg(4)),getArg(3)*sin(getArg(4)));
87   Abar=EvtComplex(getArg(5)*cos(getArg(6)),getArg(5)*sin(getArg(6)));
88    
89   if (other_b==B0B){
90     amp=A*cos(getArg(1)*t/(2*EvtConst::c))+
91       EvtComplex(cos(-2.0*getArg(0)),sin(-2.0*getArg(0)))*
92       getArg(2)*EvtComplex(0.0,1.0)*Abar*sin(getArg(1)*t/(2*EvtConst::c));
93   }
94   if (other_b==B0){
95     amp=A*EvtComplex(cos(2.0*getArg(0)),sin(2.0*getArg(0)))*
96       EvtComplex(0.0,1.0)*sin(getArg(1)*t/(2*EvtConst::c))+       
97       getArg(2)*Abar*cos(getArg(1)*t/(2*EvtConst::c));
98   }
99   
100   vertex(amp);
101   
102   return ;
103 }
104