BOSS 7.0.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTauGamMu.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) 2014 Ping Rong-Gang
10//
11// Module: EvtHypWK.hh
12//
13// Description: To generate decay tau->gamma mu with uses' helicity amplitudes, it can be used
14// for the decay Fermion -> photon Fermion .
15//
16// Modification history:
17//
18// Pang C.-Y., Ping R.-G. Mar, 2007 Module created
19// Ping R.G. Apr. 2007 change to helicity amplitude method
20//------------------------------------------------------------------------
21//
23#include <stdlib.h>
24#include <iostream>
25#include <string>
27#include "EvtGenBase/EvtPDL.hh"
33#include "EvtGenBase/EvtId.hh"
36
37using std::cout;
38using std::endl;
39
41
42void EvtTauGamMu::getName(std::string& model_name){
43
44 model_name="TauGamMu";
45
46}
47
48
49
51
52 return new EvtTauGamMu;
53
54}
55
57
58 // check that there are 0 arguments
59 checkNArg(4);
60 checkNDaug(2);
61
62
64
67
68
69 for(int i=0;i<=1;i++){
70 for(int j=0;j<=2;j++){
71 for(int k=0;k<=1;k++){
72 vertex(i,j,k,0);
73 }
74 }
75 }
76
77 //---
78}
79
80
82
83
85
86 EvtParticle *l1, *l2;
87 l1 = p->getDaug(0);
88 l2 = p->getDaug(1);
89 EvtVector4R DRP4=l1->getP4(); //photon
90 EvtVector4R MEP4=l2->getP4(); //Mu
91 EvtVector4R PRP4=p->getP4(); //Parent Momentum
92 EvtHelSys angles(PRP4,DRP4); //using helicity sys.angles
93 double tht=angles.getHelAng(1);
94 double ph =angles.getHelAng(2);
95 double gmm=0;
96
97 double H00=getArg(0); //H(1,1/2) for photon , mu
98 double A00=getArg(1); //phase angle for H00
99 double H11=getArg(2); //H(-1,-1/2)
100 double A11=getArg(3); //phase angle H11
101
102 EvtComplex A000 = Djmn(0.5, 0.5, 0.5,ph,tht,gmm)*H00*exp(A00); //for 1/2 -> 1 1/2
103 EvtComplex A100 = Djmn(0.5,-0.5, 0.5,ph,tht,gmm)*H00*exp(A00); //for -1/2 -> 1 1/2
104 EvtComplex A021 = Djmn(0.5, 0.5,-0.5,ph,tht,gmm)*H11*exp(A11); // 1/2->-1,-1/2
105 EvtComplex A121 = Djmn(0.5,-0.5,-0.5,ph,tht,gmm)*H11*exp(A11); // -1/2->-1,-1/2
106
107
108 vertex(0,0,0,A000);
109 vertex(0,1,1,A021);
110 vertex(1,0,0,A100);
111 vertex(1,1,1,A121);
112
113 return;
114
115}
116
117
118
EvtComplex exp(const EvtComplex &c)
Definition: EvtComplex.hh:252
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition: EvtHelSys.cc:151
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
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
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual ~EvtTauGamMu()
Definition: EvtTauGamMu.cc:40
EvtDecayBase * clone()
Definition: EvtTauGamMu.cc:50
void init()
Definition: EvtTauGamMu.cc:56
void getName(std::string &name)
Definition: EvtTauGamMu.cc:42
void decay(EvtParticle *p)
Definition: EvtTauGamMu.cc:81