BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtLNuGamma Class Reference

#include <EvtLNuGamma.hh>

Inheritance diagram for EvtLNuGamma:

Public Member Functions

 EvtLNuGamma ()
virtual ~EvtLNuGamma ()
void getName (std::string &name)
EvtDecayBaseclone ()
void decay (EvtParticle *p)
void init ()
void initProbMax ()
double getFormFactor (double photonEnergy)
Public Member Functions inherited from EvtDecayAmp
void makeDecay (EvtParticle *p)
void setWeight (double weight)
void vertex (const EvtComplex &amp)
void vertex (int i1, const EvtComplex &amp)
void vertex (int i1, int i2, const EvtComplex &amp)
void vertex (int i1, int i2, int i3, const EvtComplex &amp)
void vertex (int *i1, const EvtComplex &amp)
virtual ~EvtDecayAmp ()
Public Member Functions inherited from EvtDecayBase
virtual std::string commandName ()
virtual void command (std::string cmd)
double getProbMax (double prob)
double resetProbMax (double prob)
 EvtDecayBase ()
virtual ~EvtDecayBase ()
virtual bool matchingDecay (const EvtDecayBase &other) const
EvtId getParentId ()
double getBranchingFraction ()
void disableCheckQ ()
void checkQ ()
int getNDaug ()
EvtIdgetDaugs ()
EvtId getDaug (int i)
int getNArg ()
int getPHOTOS ()
void setPHOTOS ()
void setVerbose ()
void setSummary ()
double * getArgs ()
std::string * getArgsStr ()
double getArg (int j)
std::string getArgStr (int j)
std::string getModelName ()
int getDSum ()
int summary ()
int verbose ()
void saveDecayInfo (EvtId ipar, int ndaug, EvtId *daug, int narg, std::vector< std::string > &args, std::string name, double brfr)
void printSummary ()
void setProbMax (double prbmx)
void noProbMax ()
void checkNArg (int a1, int a2=-1, int a3=-1, int a4=-1)
void checkNDaug (int d1, int d2=-1)
void checkSpinParent (EvtSpinType::spintype sp)
void checkSpinDaughter (int d1, EvtSpinType::spintype sp)
virtual int nRealDaughters ()

Public Attributes

bool _fafvzero

Additional Inherited Members

Static Public Member Functions inherited from EvtDecayBase
static void findMasses (EvtParticle *p, int ndaugs, EvtId daugs[10], double masses[10])
static void findMass (EvtParticle *p)
static double findMaxMass (EvtParticle *p)
Protected Member Functions inherited from EvtDecayBase
bool daugsDecayedByParentModel ()
Protected Attributes inherited from EvtDecayAmp
EvtAmp _amp2
Protected Attributes inherited from EvtDecayBase
bool _daugsDecayedByParentModel

Detailed Description

Definition at line 30 of file EvtLNuGamma.hh.

Constructor & Destructor Documentation

◆ EvtLNuGamma()

EvtLNuGamma::EvtLNuGamma ( )

Definition at line 37 of file EvtLNuGamma.cc.

37{ _fafvzero = false; }

Referenced by clone().

◆ ~EvtLNuGamma()

EvtLNuGamma::~EvtLNuGamma ( )
virtual

Definition at line 39 of file EvtLNuGamma.cc.

39{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtLNuGamma::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 43 of file EvtLNuGamma.cc.

43{ return new EvtLNuGamma; }

◆ decay()

void EvtLNuGamma::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 69 of file EvtLNuGamma.cc.

69 {
70
71 static EvtId BM = EvtPDL::getId( "B-" );
73
74 EvtComplex myI( 0, 1 );
75
76 EvtParticle *lept, *neut, *phot;
77 lept = p->getDaug( 0 );
78 neut = p->getDaug( 1 );
79 phot = p->getDaug( 2 );
80
81 EvtVector4C lept1, lept2, photon1, photon2;
82
83 if ( p->getId() == BM )
84 {
85 lept1 = EvtLeptonVACurrent( lept->spParent( 0 ), neut->spParentNeutrino() );
86 lept2 = EvtLeptonVACurrent( lept->spParent( 1 ), neut->spParentNeutrino() );
87 }
88 else
89 {
90 lept1 = EvtLeptonVACurrent( neut->spParentNeutrino(), lept->spParent( 0 ) );
91 lept2 = EvtLeptonVACurrent( neut->spParentNeutrino(), lept->spParent( 1 ) );
92 }
93
94 EvtVector4R photp = phot->getP4(); // Photon 4-momentum in parent rest frame
95 double photE = photp.get( 0 ); // Photon energy in parent rest frame
96
97 EvtVector4C photone1 = phot->epsParentPhoton( 0 ).conj();
98 EvtVector4C photone2 = phot->epsParentPhoton( 1 ).conj();
99
100 EvtVector4R parVelocity( 1, 0, 0, 0 ); // Parent velocity in parent rest-frame
101
102 double fv, fa;
103
104 fv = getFormFactor( photE );
105 if ( _fafvzero ) { fa = 0.0; }
106 else if ( p->getId() == BM ) { fa = -fv; }
107 else { fa = fv; }
108
109 EvtVector4C temp1a = dual( directProd( parVelocity, photp ) ).cont2( photone1 );
110 EvtVector4C temp2a = dual( directProd( parVelocity, photp ) ).cont2( photone2 );
111
112 EvtVector4C temp1b = ( photone1 ) * ( parVelocity * photp );
113 EvtVector4C temp1c = ( photp ) * ( photone1 * parVelocity );
114
115 EvtVector4C temp2b = ( photone2 ) * ( parVelocity * photp );
116 EvtVector4C temp2c = ( photp ) * ( photone2 * parVelocity );
117
118 photon1 = ( temp1a * fv ) + ( myI * fa * ( temp1b - temp1c ) );
119 photon2 = ( temp2a * fv ) + ( myI * fa * ( temp2b - temp2c ) );
120
121 vertex( 0, 0, lept1.cont( photon1 ) );
122 vertex( 0, 1, lept1.cont( photon2 ) );
123 vertex( 1, 0, lept2.cont( photon1 ) );
124 vertex( 1, 1, lept2.cont( photon2 ) );
125
126 return;
127}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C dual(const EvtTensor4C &t2)
void vertex(const EvtComplex &amp)
EvtId * getDaugs()
double getFormFactor(double photonEnergy)
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
virtual EvtVector4C epsParentPhoton(int i)
EvtId getId() const
virtual EvtDiracSpinor spParentNeutrino() const
virtual EvtDiracSpinor spParent(int) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtVector4C cont2(const EvtVector4C &v4) const
EvtVector4C conj() const
EvtComplex cont(const EvtVector4C &v4) const
double get(int i) const

◆ getFormFactor()

double EvtLNuGamma::getFormFactor ( double photonEnergy)

Definition at line 129 of file EvtLNuGamma.cc.

129 {
130 // Arg[0] = photon mass cutoff (GeV)
131 // Arg[1] = R (GeV^(-1))
132 // Arg[2] = m_b (GeV)
133 // Using Korchemsky et al. Phy Rev D 61 (2000) 114510
134 // Up to a constant
135
136 double formFactor = 0;
137 double qu = 2. / 3.;
138 double qb = -1. / 3.;
139
140 if ( photonEnergy > getArg( 0 ) )
141 { formFactor = ( 1 / photonEnergy ) * ( ( qu * getArg( 1 ) ) - ( qb / getArg( 2 ) ) ); }
142 return formFactor;
143}
double getArg(int j)

Referenced by decay().

◆ getName()

void EvtLNuGamma::getName ( std::string & name)
virtual

Implements EvtDecayBase.

Definition at line 41 of file EvtLNuGamma.cc.

41{ model_name = "LNUGAMMA"; }

◆ init()

void EvtLNuGamma::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 45 of file EvtLNuGamma.cc.

45 {
46
47 // check that there are 3 or 4 arguments
48 checkNArg( 3, 4 );
49 checkNDaug( 3 );
50
51 if ( getNArg() == 4 )
52 {
53 // Argv[3] is a flag set to 0 if abs(f_a/f_v) is 1
54 // and not set to 0 if f_a/f_v is set to 0.
55 if ( getArg( 3 ) > 0 ) { _fafvzero = true; }
56 else { _fafvzero = false; }
57 }
58 else { _fafvzero = false; }
59
61
65}
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)

◆ initProbMax()

void EvtLNuGamma::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 67 of file EvtLNuGamma.cc.

67{ setProbMax( 7000.0 ); }
void setProbMax(double prbmx)

Member Data Documentation

◆ _fafvzero

bool EvtLNuGamma::_fafvzero

Definition at line 44 of file EvtLNuGamma.hh.

Referenced by decay(), EvtLNuGamma(), and init().


The documentation for this class was generated from the following files: