BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtEDM.cc
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4//
5// Module: EvtEDM.cc
6//
7// Description: tau pair production with EDM, see PRD55, 1643
8// L = tau_bar sigma^{mu,nu} gamma_5 tau
9//
10// Modification history:
11//
12// Ping RG Dec 23, 2013 Module created
13//
14//------------------------------------------------------------------------
15//
16#include "EvtEDM.hh"
25#include <iostream>
26#include <stdlib.h>
27#include <string>
28
30
31void EvtEDM::getName( std::string& model_name ) { model_name = "EDM"; }
32
34
36
37 // check that there are 0 arguments
38 checkNArg( 4 ); // mag(d_tau) arg(d_tau) mag(g_e) arg(g_e)
39 checkNDaug( 2 );
40
42
45}
46
48
50
52
53 EvtParticle *l1, *l2;
54 l1 = p->getDaug( 0 );
55 l2 = p->getDaug( 1 );
56
57 double magtau = getArg( 0 );
58 double phstau = getArg( 1 );
59 double mage = getArg( 2 );
60 double phse = getArg( 3 );
61 EvtComplex ctau( magtau * cos( phstau ), magtau * sin( phstau ) );
62 EvtComplex ce( mage * cos( phse ), mage * sin( phse ) );
63
64 EvtTensor4C l11, l12, l21, l22;
65 l11 = EvtLeptonTg5Current( l1->spParent( 0 ), l2->spParent( 0 ) );
66 l12 = EvtLeptonTg5Current( l1->spParent( 0 ), l2->spParent( 1 ) );
67 l21 = EvtLeptonTg5Current( l1->spParent( 1 ), l2->spParent( 0 ) );
68 l22 = EvtLeptonTg5Current( l1->spParent( 1 ), l2->spParent( 1 ) );
69
70 EvtVector4C eps0 = p->eps( 0 );
71 EvtVector4C eps1 = p->eps( 1 );
72 EvtVector4C eps2 = p->eps( 2 );
73 EvtVector4R parp4 = p->getP4();
74
75 EvtTensor4C p4eps0 = directProd( eps0, parp4 );
76 EvtTensor4C p4eps1 = directProd( eps1, parp4 );
77 EvtTensor4C p4eps2 = directProd( eps2, parp4 );
78
79 double M2 = p->mass();
80 M2 *= M2;
81 double m2 = l1->mass();
82 m2 *= m2;
83
84 double norm = 1.0 / sqrt( 2 * M2 + 4 * m2 - 4 * m2 * m2 / M2 );
85 EvtComplex norm_edm = norm * ctau;
86 EvtComplex norm_e = norm * ce;
87
88 // for ee->gamma* ->ll pair without EDM contributions
89 EvtVector4C L11, L12, L21, L22;
90 L11 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 0 ) );
91 L12 = EvtLeptonVCurrent( l1->spParent( 0 ), l2->spParent( 1 ) );
92 L21 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 0 ) );
93 L22 = EvtLeptonVCurrent( l1->spParent( 1 ), l2->spParent( 1 ) );
94
95 EvtComplex A000, A001, A010, A011, A100, A101, A110, A111, A200, A201, A210, A211;
96 A000 = norm_e * ( eps0 * L11 );
97 A001 = norm_e * ( eps0 * L12 );
98 A010 = norm_e * ( eps0 * L21 );
99 A011 = norm_e * ( eps0 * L22 );
100
101 A100 = norm_e * ( eps1 * L11 );
102 A101 = norm_e * ( eps1 * L12 );
103 A110 = norm_e * ( eps1 * L21 );
104 A111 = norm_e * ( eps1 * L22 );
105
106 A200 = norm_e * ( eps2 * L11 );
107 A201 = norm_e * ( eps2 * L12 );
108 A210 = norm_e * ( eps2 * L21 );
109 A211 = norm_e * ( eps2 * L22 );
110
111 vertex( 0, 0, 0, norm_edm * cont( p4eps0, l11 ) + A000 );
112 vertex( 0, 0, 1, norm_edm * cont( p4eps0, l12 ) + A001 );
113 vertex( 0, 1, 0, norm_edm * cont( p4eps0, l21 ) + A010 );
114 vertex( 0, 1, 1, norm_edm * cont( p4eps0, l22 ) + A011 );
115
116 vertex( 1, 0, 0, norm_edm * cont( p4eps1, l11 ) + A100 );
117 vertex( 1, 0, 1, norm_edm * cont( p4eps1, l12 ) + A101 );
118 vertex( 1, 1, 0, norm_edm * cont( p4eps1, l21 ) + A110 );
119 vertex( 1, 1, 1, norm_edm * cont( p4eps1, l22 ) + A111 );
120
121 vertex( 2, 0, 0, norm_edm * cont( p4eps2, l11 ) + A200 );
122 vertex( 2, 0, 1, norm_edm * cont( p4eps2, l12 ) + A201 );
123 vertex( 2, 1, 0, norm_edm * cont( p4eps2, l21 ) + A210 );
124 vertex( 2, 1, 1, norm_edm * cont( p4eps2, l22 ) + A211 );
125
126 return;
127}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtTensor4C EvtLeptonTg5Current(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void initProbMax()
Definition EvtEDM.cc:47
void init()
Definition EvtEDM.cc:35
void decay(EvtParticle *p)
Definition EvtEDM.cc:49
virtual ~EvtEDM()
Definition EvtEDM.cc:29
void getName(std::string &name)
Definition EvtEDM.cc:31
EvtEDM()
Definition EvtEDM.hh:25
EvtDecayBase * clone()
Definition EvtEDM.cc:33
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double mass() const
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double double * m2
Definition qcdloop1.h:83