CGEM BOSS 6.6.5.h
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 {
38 _fafvzero = false;
39}

Referenced by clone().

◆ ~EvtLNuGamma()

EvtLNuGamma::~EvtLNuGamma ( )
virtual

Definition at line 41 of file EvtLNuGamma.cc.

41{}

Member Function Documentation

◆ clone()

EvtDecayBase * EvtLNuGamma::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 50 of file EvtLNuGamma.cc.

50 {
51
52 return new EvtLNuGamma;
53
54}

◆ decay()

void EvtLNuGamma::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 89 of file EvtLNuGamma.cc.

89 {
90
91 static EvtId BM=EvtPDL::getId("B-");
93
94 EvtComplex myI(0,1);
95
96 EvtParticle *lept, *neut,*phot;
97 lept=p->getDaug(0);
98 neut=p->getDaug(1);
99 phot=p->getDaug(2);
100
101 EvtVector4C lept1,lept2,photon1,photon2;
102
103 if (p->getId()==BM) {
104 lept1=EvtLeptonVACurrent(lept->spParent(0),neut->spParentNeutrino());
105 lept2=EvtLeptonVACurrent(lept->spParent(1),neut->spParentNeutrino());
106 }
107 else{
108 lept1=EvtLeptonVACurrent(neut->spParentNeutrino(),lept->spParent(0));
109 lept2=EvtLeptonVACurrent(neut->spParentNeutrino(),lept->spParent(1));
110 }
111
112
113
114 EvtVector4R photp = phot->getP4(); // Photon 4-momentum in parent rest frame
115 double photE = photp.get(0); // Photon energy in parent rest frame
116
117 EvtVector4C photone1 = phot->epsParentPhoton(0).conj();
118 EvtVector4C photone2 = phot->epsParentPhoton(1).conj();
119
120 EvtVector4R parVelocity(1,0,0,0); // Parent velocity in parent rest-frame
121
122 double fv,fa;
123
124 fv = getFormFactor(photE);
125 if (_fafvzero){
126 fa = 0.0;
127 }
128 else if (p->getId()==BM) {
129 fa = - fv;
130 }
131 else{
132 fa = fv;
133 }
134
135 EvtVector4C temp1a = dual(directProd(parVelocity,photp)).cont2(photone1);
136 EvtVector4C temp2a = dual(directProd(parVelocity,photp)).cont2(photone2);
137
138 EvtVector4C temp1b = (photone1)*(parVelocity*photp);
139 EvtVector4C temp1c = (photp)*(photone1*parVelocity);
140
141 EvtVector4C temp2b = (photone2)*(parVelocity*photp);
142 EvtVector4C temp2c = (photp)*(photone2*parVelocity);
143
144 photon1 = (temp1a*fv) + (myI*fa*(temp1b - temp1c));
145 photon2 = (temp2a*fv) + (myI*fa*(temp2b - temp2c));
146
147 vertex(0,0,lept1.cont(photon1));
148 vertex(0,1,lept1.cont(photon2));
149 vertex(1,0,lept2.cont(photon1));
150 vertex(1,1,lept2.cont(photon2));
151
152 return;
153
154}
int fa(63)
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()
Definition EvtId.hh:27
double getFormFactor(double photonEnergy)
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
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 156 of file EvtLNuGamma.cc.

156 {
157 // Arg[0] = photon mass cutoff (GeV)
158 // Arg[1] = R (GeV^(-1))
159 // Arg[2] = m_b (GeV)
160 // Using Korchemsky et al. Phy Rev D 61 (2000) 114510
161 // Up to a constant
162
163 double formFactor = 0;
164 double qu = 2./3.;
165 double qb = -1./3.;
166
167 if (photonEnergy > getArg(0)){
168 formFactor = (1/photonEnergy) * ((qu*getArg(1)) - (qb/getArg(2)));
169 }
170 return formFactor;
171}
double getArg(int j)

Referenced by decay().

◆ getName()

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

Implements EvtDecayBase.

Definition at line 43 of file EvtLNuGamma.cc.

43 {
44
45 model_name="LNUGAMMA";
46
47}

◆ init()

void EvtLNuGamma::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 56 of file EvtLNuGamma.cc.

56 {
57
58 // check that there are 3 or 4 arguments
59 checkNArg(3,4);
60 checkNDaug(3);
61
62 if (getNArg() == 4){
63 // Argv[3] is a flag set to 0 if abs(f_a/f_v) is 1
64 // and not set to 0 if f_a/f_v is set to 0.
65 if (getArg(3) > 0){
66 _fafvzero = true;
67 }
68 else{
69 _fafvzero = false;
70 }
71 }
72 else{
73 _fafvzero = false;
74 }
75
77
81}
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 83 of file EvtLNuGamma.cc.

83 {
84
85 setProbMax(7000.0);
86
87}
void setProbMax(double prbmx)

Member Data Documentation

◆ _fafvzero

bool EvtLNuGamma::_fafvzero

Definition at line 45 of file EvtLNuGamma.hh.

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


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