BOSS 8.0.0
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//
22#include "EvtTauGamMu.hh"
33#include <iostream>
34#include <stdlib.h>
35#include <string>
36
37using std::cout;
38using std::endl;
39
41
42void EvtTauGamMu::getName( std::string& model_name ) { model_name = "TauGamMu"; }
43
45
47
48 // check that there are 0 arguments
49 checkNArg( 4 );
50 checkNDaug( 2 );
51
53
56
57 for ( int i = 0; i <= 1; i++ )
58 {
59 for ( int j = 0; j <= 2; j++ )
60 {
61 for ( int k = 0; k <= 1; k++ ) { vertex( i, j, k, 0 ); }
62 }
63 }
64
65 //---
66}
67
69
71
72 EvtParticle *l1, *l2;
73 l1 = p->getDaug( 0 );
74 l2 = p->getDaug( 1 );
75 EvtVector4R DRP4 = l1->getP4(); // photon
76 EvtVector4R MEP4 = l2->getP4(); // Mu
77 EvtVector4R PRP4 = p->getP4(); // Parent Momentum
78 EvtHelSys angles( PRP4, DRP4 ); // using helicity sys.angles
79 double tht = angles.getHelAng( 1 );
80 double ph = angles.getHelAng( 2 );
81 double gmm = 0;
82
83 double H00 = getArg( 0 ); // H(1,1/2) for photon , mu
84 double A00 = getArg( 1 ); // phase angle for H00
85 double H11 = getArg( 2 ); // H(-1,-1/2)
86 double A11 = getArg( 3 ); // phase angle H11
87
88 EvtComplex A000 = Djmn( 0.5, 0.5, 0.5, ph, tht, gmm ) * H00 * exp( A00 ); // for 1/2 -> 1 1/2
89 EvtComplex A100 =
90 Djmn( 0.5, -0.5, 0.5, ph, tht, gmm ) * H00 * exp( A00 ); // for -1/2 -> 1 1/2
91 EvtComplex A021 = Djmn( 0.5, 0.5, -0.5, ph, tht, gmm ) * H11 * exp( A11 ); // 1/2->-1,-1/2
92 EvtComplex A121 = Djmn( 0.5, -0.5, -0.5, ph, tht, gmm ) * H11 * exp( A11 ); // -1/2->-1,-1/2
93
94 vertex( 0, 0, 0, A000 );
95 vertex( 0, 1, 1, A021 );
96 vertex( 1, 0, 0, A100 );
97 vertex( 1, 1, 1, A121 );
98
99 return;
100}
EvtComplex exp(const EvtComplex &c)
EvtComplex Djmn(int j, int m, int n, double phi, double theta, double gamma)
Definition EvtHelSys.cc:165
void vertex(const EvtComplex &amp)
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()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
double getHelAng(int i)
Definition EvtHelSys.cc:52
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual ~EvtTauGamMu()
EvtDecayBase * clone()
void getName(std::string &name)
void decay(EvtParticle *p)