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

#include <EvtHypNonLepton.hh>

Inheritance diagram for EvtHypNonLepton:

Public Member Functions

 EvtHypNonLepton ()
virtual ~EvtHypNonLepton ()
void getName (std::string &name)
EvtDecayBaseclone ()
void decay (EvtParticle *p)
void init ()
void initProbMax ()
void calcAmp (EvtAmp *amp, EvtParticle *parent)
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 ()

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 21 of file EvtHypNonLepton.hh.

Constructor & Destructor Documentation

◆ EvtHypNonLepton()

EvtHypNonLepton::EvtHypNonLepton ( )
inline

Definition at line 24 of file EvtHypNonLepton.hh.

24{}

Referenced by clone().

◆ ~EvtHypNonLepton()

EvtHypNonLepton::~EvtHypNonLepton ( )
virtual

Definition at line 31 of file EvtHypNonLepton.cc.

31{}

Member Function Documentation

◆ calcAmp()

void EvtHypNonLepton::calcAmp ( EvtAmp * amp,
EvtParticle * parent )

Definition at line 152 of file EvtHypNonLepton.cc.

152 {
153
154 static long noTries = 0;
155 int i;
156 EvtComplex Matrix[2][2], B_to_A;
157
158 // G_F = 1.16637e-5;
159 // M_pi = 0.13957;
160
161 for ( i = 0; i < 4; i++ )
162 {
163 // std::cout << "--------------------------------------------------" << std::endl;
164 Matrix[i / 2][i % 2] =
165 EvtLeptonSCurrent( parent->sp( i / 2 ), parent->getDaug( 0 )->spParent( i % 2 ) );
166 // std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
167 Matrix[i / 2][i % 2] -=
168 m_B_to_A *
169 EvtLeptonPCurrent( parent->sp( i / 2 ), parent->getDaug( 0 )->spParent( i % 2 ) );
170 // std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
171 // Matrix[i/2][i%2] *= G_F*M_pi*M_pi;
172 // std::cout << "Matrix = " << Matrix[i/2][i%2] << std::endl;
173 // std::cout << "--------------------------------------------------" << std::endl;
174 amp->vertex( i / 2, i % 2, Matrix[i / 2][i % 2] );
175 }
176
177 if ( m_noTries > 0 )
178 if ( !( ( ++noTries ) % m_noTries ) )
179 report( DEBUG, "EvtGen" ) << " EvtHypNonLepton already finished " << noTries
180 << " matrix element calculations" << std::endl;
181}
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ DEBUG
Definition EvtReport.hh:53
void vertex(const EvtComplex &amp)
Definition EvtAmp.cc:441
virtual EvtDiracSpinor spParent(int) const
EvtParticle * getDaug(int i)
virtual EvtDiracSpinor sp(int) const

Referenced by decay().

◆ clone()

EvtDecayBase * EvtHypNonLepton::clone ( )
virtual

Implements EvtDecayBase.

Definition at line 33 of file EvtHypNonLepton.cc.

33{ return new EvtHypNonLepton; }

◆ decay()

void EvtHypNonLepton::decay ( EvtParticle * p)
virtual

Implements EvtDecayBase.

Definition at line 146 of file EvtHypNonLepton.cc.

146 {
147
148 parent->initializePhaseSpace( getNDaug(), getDaugs() );
149 calcAmp( &_amp2, parent );
150}
EvtId * getDaugs()
void calcAmp(EvtAmp *amp, EvtParticle *parent)

◆ getName()

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

Implements EvtDecayBase.

Definition at line 35 of file EvtHypNonLepton.cc.

35{ model_name = "HypNonLepton"; }

◆ init()

void EvtHypNonLepton::init ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 37 of file EvtHypNonLepton.cc.

37 {
38
39 if ( getNArg() < 2 || getNArg() > 3 )
40 { // alpha phi gamma delta
41 report( ERROR, "EvtGen" )
42 << " ERROR: EvtHypNonLepton generator expected 2 or 3 arguments but found: "
43 << getNArg() << std::endl;
44 report( INFO, "EvtGen" ) << " 1. Decay asymmetry parameter - alpha" << std::endl;
45 report( INFO, "EvtGen" ) << " 2. Parameter phi - in degrees (not radians)" << std::endl;
46 report( INFO, "EvtGen" ) << " 3. Note on every x-th decay" << std::endl;
47 ::abort();
48 }
49
50 if ( getNDaug() != 2 )
51 { // Check that there are 2 daughters only
52 report( ERROR, "EvtGen" )
53 << " ERROR: EvtHypNonLepton generator expected 2 daughters but found: " << getNDaug()
54 << std::endl;
55 ::abort();
56 }
57
58 // Check particles spins
60 {
61 report( ERROR, "EvtGen" )
62 << " ERROR: EvtHypNonLepton generator expected dirac parent particle, but found "
64 << " spin degrees of freedom" << std::endl;
65 ::abort();
66 }
68 {
69 report( ERROR, "EvtGen" ) << " ERROR: EvtHypNonLepton generator expected the first child "
70 "to be dirac particle, but found "
72 << " spin degrees of freedom" << std::endl;
73 ::abort();
74 }
76 {
77 report( ERROR, "EvtGen" ) << " ERROR: EvtHypNonLepton generator expected the second child "
78 "to be scalar particle, but found "
80 << " spin degrees of freedom" << std::endl;
81 ::abort();
82 }
83
84 // Read all parameters
85 m_alpha = getArg( 0 );
86 m_phi = getArg( 1 ) * EvtConst::pi / 180;
87 if ( getNArg() == 3 ) m_noTries = static_cast<long>( getArg( 2 ) );
88 else m_noTries = 0;
89
90 // calculate additional parameters
91 double p, M, m1, m2;
92 double p_to_s, beta, delta, gamma;
93
95 m1 = EvtPDL::getMass( getDaug( 0 ) );
96 m2 = EvtPDL::getMass( getDaug( 1 ) );
97
98 if ( m1 + m2 >= M )
99 {
100 report( ERROR, "EvtGen" ) << " ERROR: EvtHypNonLepton found impossible decay: " << M
101 << " --> " << m1 << " + " << m2 << " GeV\n"
102 << std::endl;
103 ::abort();
104 }
105
106 p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) * sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) /
107 2. / M;
108
109 beta = sqrt( 1. - m_alpha * m_alpha ) * sin( m_phi );
110 delta = -atan2( beta, m_alpha );
111 gamma = sqrt( 1. - m_alpha * m_alpha - beta * beta );
112 p_to_s = sqrt( ( 1. - gamma ) / ( 1. + gamma ) );
113
114 m_B_to_A =
115 p_to_s * ( m1 + sqrt( p * p + m1 * m1 ) ) / p * EvtComplex( cos( delta ), sin( delta ) );
116}
@ ERROR
Definition EvtReport.hh:49
@ INFO
Definition EvtReport.hh:52
static const double pi
Definition EvtConst.hh:27
double getArg(int j)
EvtId getParentId()
EvtId getDaug(int i)
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:66
static double getMass(EvtId i)
Definition EvtPDL.hh:44
static int getSpin2(spintype stype)
double double * m2
Definition qcdloop1.h:83
double * m1
Definition qcdloop1.h:83

◆ initProbMax()

void EvtHypNonLepton::initProbMax ( )
virtual

Reimplemented from EvtDecayBase.

Definition at line 118 of file EvtHypNonLepton.cc.

118 {
119
120 double maxProb, m1, m2, M, p;
121
123 m1 = EvtPDL::getMass( getDaug( 0 ) );
124 m2 = EvtPDL::getMass( getDaug( 1 ) );
125
126 if ( m1 + m2 >= M )
127 {
128 report( ERROR, "EvtGen" ) << " ERROR: EvtHypNonLepton found impossible decay: " << M
129 << " --> " << m1 << " + " << m2 << " GeV\n"
130 << std::endl;
131 ::abort();
132 }
133
134 p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) * sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) /
135 2 / M;
136 maxProb = 16 * M *
137 ( sqrt( p * p + m1 * m1 ) + m1 +
138 abs( m_B_to_A ) * abs( m_B_to_A ) * ( sqrt( p * p + m1 * m1 ) - m1 ) );
139 // maxProb *= G_F*M_pi*M_pi;
140
141 setProbMax( maxProb );
142 report( INFO, "EvtGen" ) << " EvtHypNonLepton set up maximum probability to " << maxProb
143 << std::endl;
144}
void setProbMax(double prbmx)

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