BOSS 7.0.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtHypWK.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of models developed at BES collaboration
5// based on the EvtGen framework. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/BesCopyright
9// Copyright (A) 2006 Ping Rong-Gang, Pang Cai-Ying@IHEP
10//
11// Module: EvtHypWK.hh
12//
13// Description: To generate octet hyperon weak decays.
14//
15// Modification history:
16//
17// Pang C.-Y., Ping R.-G. Mar, 2007 Module created
18// Ping R.G. Apr. 2007 change to helicity amplitude method
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
23#include <iostream>
24#include <string>
26#include "EvtGenBase/EvtPDL.hh"
32#include "EvtGenBase/EvtId.hh"
35
36using std::cout;
37using std::endl;
38
40
41void EvtHypWK::getName(std::string& model_name){
42
43 model_name="HypWK";
44
45}
46
47
48
50
51 return new EvtHypWK;
52
53}
54
56
57 // check that there are 0 arguments
58 checkNArg(0);
59 checkNDaug(2);
60
61 // checkSpinParent(EvtSpinType::VECTOR);
63
66// checkSpinDaughter(1,EvtSpinType::DIRAC);
67
68}
69
70
72
73 static EvtId PIP=EvtPDL::getId("pi+");
74 static EvtId PIM=EvtPDL::getId("pi-");
75 static EvtId PI0=EvtPDL::getId("pi0");
76 static EvtId PP=EvtPDL::getId("p+");
77 static EvtId PM=EvtPDL::getId("anti-p-");
78 static EvtId NP=EvtPDL::getId("n0");
79 static EvtId NM=EvtPDL::getId("anti-n0");
80
81 static EvtId LP=EvtPDL::getId("Lambda0");
82 static EvtId LM=EvtPDL::getId("anti-Lambda0");
83 static EvtId SPP=EvtPDL::getId("Sigma+");
84 static EvtId SPM=EvtPDL::getId("anti-Sigma-");
85 static EvtId SMP=EvtPDL::getId("Sigma-");
86 static EvtId SMM=EvtPDL::getId("anti-Sigma+");
87
88 static EvtId XP=EvtPDL::getId("Xi-");
89 static EvtId XM=EvtPDL::getId("anti-Xi+");
90 static EvtId X0P=EvtPDL::getId("Xi0");
91 static EvtId X0M=EvtPDL::getId("anti-Xi0");
92
93
94 static int count=0;
95
96// if(count==0) findMaxPro(p); //using the default getProbMax() in EvtGenBase/EvtDecayProb.cc
97 count+=1;
98
100
101 EvtParticle *l1, *l2;
102 l1 = p->getDaug(0);
103 l2 = p->getDaug(1);
104 EvtVector4R DRP4=l1->getP4(); //Dirac Daughter
105 EvtVector4R MEP4=l2->getP4(); //Meson Daughter
106 EvtVector4R PRP4=p->getP4(); //Parent Momentum
107 EvtHelSys angles(PRP4,DRP4); //using helicity sys.angles
108 double tht=angles.getHelAng(1);
109 double ph =angles.getHelAng(2);
110 double gmm=0;
111
112 EvtVector4R pDaug=l1->getP4();
113 double p3=pDaug.d3mag();
114
115
116 double M=p->mass();
117 double M2=M*M;
118 double m=l1->mass();
119 double m2=m*m;
120 double theta,phi,alpha,beta,ga; // the following is the
121
122 EvtId p1,d1,d2;
123 p1=p->getId();
124 d1=l1->getId();
125 d2=l2->getId();
126
127 if(p1==XP){ alpha=-0.46;phi=-2.1; }
128 else if(p1==XM){alpha=0.46;phi=-2.1;}
129 else if(p1==X0P){alpha=-0.41;phi=21.0;}
130 else if(p1==X0M){alpha=0.41;phi=21.0; }
131 else if(p1==LP){alpha=0.64;phi=-6.5; }
132 else if(p1==LM){ alpha=-0.64;phi=-6.5; }
133 else if(p1==SMP){alpha=-0.07;phi=10.0;}
134 else if(p1==SMM){alpha=0.07;phi=10.0; }
135 else if(p1==SPP){
136 if (d1==PP){ alpha=-0.98;phi=36.0; }
137 else if(d1==NP){ alpha=0.07;phi=167.0; }
138 else { cout<<"The decay is not discussed."<<endl; }
139 }
140 else if(p1==SPM){
141 if (d1==PM){ alpha=0.98;phi=36.0; }
142 else if(d1==NM){ alpha=-0.07;phi=167.0; }
143 else { cout<<"The decay is not discussed."<<endl; }
144 }
145 else { cout<<"The decay is not discussed.";
146 }
147
148 double FP=sqrt((1+alpha)/2.);
149 double FM=sqrt((1-alpha)/2.);
150
151 vertex(0,0,Djmn(0.5, 0.5, 0.5,ph,tht,gmm)*FP);
152 vertex(0,1,Djmn(0.5, 0.5,-0.5,ph,tht,gmm)*FM);
153 vertex(1,0,Djmn(0.5,-0.5, 0.5,ph,tht,gmm)*FP);
154 vertex(1,1,Djmn(0.5,-0.5,-0.5,ph,tht,gmm)*FM);
155
156 return;
157
158}
159
160
161
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
DOUBLE_PRECISION count[2]
const double alpha
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
double getHelAng(int i)
Definition: EvtHelSys.cc:54
void init()
Definition: EvtHypWK.cc:55
EvtHypWK()
Definition: EvtHypWK.hh:32
void getName(std::string &name)
Definition: EvtHypWK.cc:41
EvtDecayBase * clone()
Definition: EvtHypWK.cc:49
void decay(EvtParticle *p)
Definition: EvtHypWK.cc:71
virtual ~EvtHypWK()
Definition: EvtHypWK.cc:39
Definition: EvtId.hh:27
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
EvtId getId() const
Definition: EvtParticle.cc:113
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double d3mag() const
Definition: EvtVector4R.cc:186