]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtSSSCPT.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSSSCPT.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: EvtSSSCPT.cc
12 //
13 // Description: Routine to decay scalar -> 2 scalars (CPT)
14 //
15 // Modification history:
16 //
17 //    SHY       April 28, 1997       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/EvtSSSCPT.hh"
29 #include "EvtGenBase/EvtId.hh"
30 #include <string>
31 #include "EvtGenBase/EvtConst.hh"
32
33 EvtSSSCPT::~EvtSSSCPT() {}
34
35 std::string EvtSSSCPT::getName(){
36
37   return "SSS_CPT";     
38
39 }
40
41
42 EvtDecayBase* EvtSSSCPT::clone(){
43
44   return new EvtSSSCPT;
45
46 }
47
48 void EvtSSSCPT::init(){
49
50   // check that there are 8 arguments
51   checkNArg(8);
52   checkNDaug(2);
53
54 }
55
56
57 void EvtSSSCPT::decay( EvtParticle *p){
58
59   //added by Lange Jan4,2000
60   static EvtId B0=EvtPDL::getId("B0");
61   static EvtId B0B=EvtPDL::getId("anti-B0");
62
63
64   double t;
65   EvtId other_b;
66
67   EvtCPUtil::OtherB(p,t,other_b);
68
69   p->initializePhaseSpace(getNDaug(),getDaugs());
70
71   EvtComplex amp;
72
73   EvtComplex A,Abar;
74   EvtComplex P,Q,D,Im;
75
76   P=EvtComplex(cos(-getArg(0)),sin(-getArg(0)));
77   Q=EvtComplex(cos(getArg(0)),sin(getArg(0)));
78   D=EvtComplex(getArg(6)*cos(getArg(7)),getArg(6)*sin(getArg(7)));
79   Im=EvtComplex(0.0,1.0);
80   
81   A=EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
82   Abar=EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
83   
84   if (other_b==B0B){
85     amp=A*cos(getArg(1)*t/(2*EvtConst::c))+
86       Im*sin(getArg(1)*t/(2*EvtConst::c))*
87       (Q/P*A + 2.0*D*Abar);
88   }
89   if (other_b==B0){
90     amp=Abar*cos(getArg(1)*t/(2*EvtConst::c))+
91       Im*sin(getArg(1)*t/(2*EvtConst::c))*
92       (P/Q*A - 2.0*D*Abar);
93   }
94   
95   vertex(amp);
96   
97   return ;
98 }
99