BOSS
6.6.4.p03
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDecayProb.cc
Go to the documentation of this file.
1
//--------------------------------------------------------------------------
2
//
3
// Environment:
4
// This software is part of the EvtGen package developed jointly
5
// for the BaBar and CLEO collaborations. If you use all or part
6
// of it, please give an appropriate acknowledgement.
7
//
8
// Copyright Information: See EvtGen/COPYRIGHT
9
// Copyright (C) 1998 Caltech, UCSB
10
//
11
// Module: EvtGen/EvtDecayProb.cc
12
//
13
// Description:
14
//
15
// Modification history:
16
//
17
// DJL/RYD August 11, 1998 Module created
18
//
19
//------------------------------------------------------------------------
20
#include "
EvtGenBase/EvtPatches.hh
"
21
22
#include "
EvtGenBase/EvtDecayBase.hh
"
23
#include "
EvtGenBase/EvtDecayProb.hh
"
24
#include "
EvtGenBase/EvtParticle.hh
"
25
#include "
EvtGenBase/EvtRadCorr.hh
"
26
#include "
EvtGenBase/EvtRandom.hh
"
27
#include "
EvtGenBase/EvtPDL.hh
"
28
#include "
EvtGenBase/EvtReport.hh
"
29
using
std::endl;
30
31
void
EvtDecayProb::makeDecay
(
EvtParticle
* p){
32
33
int
ntimes=10000;
34
35
double
dummy;
36
37
do
{
38
_weight=1.0;
39
_daugsDecayedByParentModel
=
false
;
40
41
decay
(p);
42
//report(INFO,"EvtGen") << _weight << endl;
43
ntimes--;
44
45
_prob = _prob/_weight;
46
47
dummy=
getProbMax
(_prob)*
EvtRandom::Flat
();
48
p->
setDecayProb
(_prob/
getProbMax
(_prob));
49
// report(INFO,"EvtGen") << _prob <<" "<<dummy<<" "<<ntimes<<endl;
50
}
while
(ntimes&&(_prob<dummy));
51
//report(INFO,"EvtGen") << ntimes <<endl;
52
if
(ntimes==0){
53
report
(
DEBUG
,
"EvtGen"
) <<
"Tried accept/reject:10000"
54
<<
" times, and rejected all the times!"
<<endl;
55
report
(
DEBUG
,
"EvtGen"
) <<
"Is therefore accepting the last event!"
<<endl;
56
report
(
DEBUG
,
"EvtGen"
) <<
"Decay of particle:"
<<
57
EvtPDL::name
(p->
getId
()).c_str()<<
"(channel:"
<<
58
p->
getChannel
()<<
") with mass "
<<p->
mass
()<<endl;
59
60
int
ii;
61
for
(ii=0;ii<p->
getNDaug
();ii++){
62
report
(
DEBUG
,
"EvtGen"
) <<
"Daughter "
<<ii<<
":"
<<
63
EvtPDL::name
(p->
getDaug
(ii)->
getId
()).c_str()<<
" with mass "
<<
64
p->
getDaug
(ii)->
mass
()<<endl;
65
}
66
}
67
68
69
EvtSpinDensity
rho;
70
rho.
SetDiag
(p->
getSpinStates
());
71
p->
setSpinDensityBackward
(rho);
72
if
(
getPHOTOS
() ||
EvtRadCorr::alwaysRadCorr
()) {
73
EvtRadCorr::doRadCorr
(p);
74
}
75
76
77
//Now decay the daughters.
78
if
( !
daugsDecayedByParentModel
()) {
79
int
i;
80
for
(i=0;i<p->
getNDaug
();i++){
81
//Need to set the spin density of the daughters to be
82
//diagonal.
83
rho.
SetDiag
(p->
getDaug
(i)->
getSpinStates
());
84
p->
getDaug
(i)->
setSpinDensityForward
(rho);
85
86
//Now decay the daughter. Really!
87
p->
getDaug
(i)->
decay
();
88
}
89
}
90
91
}
92
93
94
95
EvtDecayBase.hh
EvtDecayProb.hh
EvtPDL.hh
EvtParticle.hh
EvtPatches.hh
EvtRadCorr.hh
EvtRandom.hh
report
ostream & report(Severity severity, const char *facility)
Definition:
EvtReport.cc:36
EvtReport.hh
DEBUG
@ DEBUG
Definition:
EvtReport.hh:53
EvtDecayBase::getPHOTOS
int getPHOTOS()
Definition:
EvtDecayBase.hh:68
EvtDecayBase::decay
virtual void decay(EvtParticle *p)=0
EvtDecayBase::getProbMax
double getProbMax(double prob)
Definition:
EvtDecayBase.cc:67
EvtDecayBase::daugsDecayedByParentModel
bool daugsDecayedByParentModel()
Definition:
EvtDecayBase.hh:110
EvtDecayBase::_daugsDecayedByParentModel
bool _daugsDecayedByParentModel
Definition:
EvtDecayBase.hh:109
EvtDecayProb::makeDecay
void makeDecay(EvtParticle *p)
Definition:
EvtDecayProb.cc:31
EvtPDL::name
static std::string name(EvtId i)
Definition:
EvtPDL.hh:64
EvtParticle
Definition:
EvtParticle.hh:42
EvtParticle::setSpinDensityBackward
void setSpinDensityBackward(const EvtSpinDensity &rho)
Definition:
EvtParticle.hh:338
EvtParticle::setSpinDensityForward
void setSpinDensityForward(const EvtSpinDensity &rho)
Definition:
EvtParticle.hh:307
EvtParticle::setDecayProb
void setDecayProb(double p)
Definition:
EvtParticle.cc:1202
EvtParticle::decay
void decay()
Definition:
EvtParticle.cc:404
EvtParticle::getId
EvtId getId() const
Definition:
EvtParticle.cc:113
EvtParticle::getSpinStates
int getSpinStates() const
Definition:
EvtParticle.cc:118
EvtParticle::getNDaug
int getNDaug() const
Definition:
EvtParticle.cc:125
EvtParticle::getDaug
EvtParticle * getDaug(int i)
Definition:
EvtParticle.cc:85
EvtParticle::mass
double mass() const
Definition:
EvtParticle.cc:127
EvtParticle::getChannel
int getChannel() const
Definition:
EvtParticle.cc:123
EvtRadCorr::alwaysRadCorr
static bool alwaysRadCorr()
Definition:
EvtRadCorr.cc:65
EvtRadCorr::doRadCorr
static void doRadCorr(EvtParticle *p)
Definition:
EvtRadCorr.cc:52
EvtRandom::Flat
static double Flat()
Definition:
EvtRandom.cc:73
EvtSpinDensity
Definition:
EvtSpinDensity.hh:27
EvtSpinDensity::SetDiag
void SetDiag(int n)
Definition:
EvtSpinDensity.cc:109
source
Generator
BesEvtGen
BesEvtGen-00-01-94
src
EvtGen
EvtGenBase
EvtDecayProb.cc
Generated by
1.9.6