BOSS
7.0.4
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
//debugging
44
45
ntimes--;
46
47
_prob = _prob/_weight;
48
49
dummy=
getProbMax
(_prob)*
EvtRandom::Flat
();
50
p->
setDecayProb
(_prob/
getProbMax
(_prob));
51
// report(INFO,"EvtGen") << _prob <<" "<<dummy<<" "<<ntimes<<endl;
52
}
while
(ntimes&&(_prob<dummy));
53
//report(INFO,"EvtGen") << ntimes <<endl;
54
if
(ntimes==0){
55
report
(
DEBUG
,
"EvtGen"
) <<
"Tried accept/reject:10000"
56
<<
" times, and rejected all the times!"
<<endl;
57
report
(
DEBUG
,
"EvtGen"
) <<
"Is therefore accepting the last event!"
<<endl;
58
report
(
DEBUG
,
"EvtGen"
) <<
"Decay of particle:"
<<
59
EvtPDL::name
(p->
getId
()).c_str()<<
"(channel:"
<<
60
p->
getChannel
()<<
") with mass "
<<p->
mass
()<<endl;
61
62
int
ii;
63
for
(ii=0;ii<p->
getNDaug
();ii++){
64
report
(
DEBUG
,
"EvtGen"
) <<
"Daughter "
<<ii<<
":"
<<
65
EvtPDL::name
(p->
getDaug
(ii)->
getId
()).c_str()<<
" with mass "
<<
66
p->
getDaug
(ii)->
mass
()<<endl;
67
}
68
}
69
70
71
EvtSpinDensity
rho;
72
rho.
SetDiag
(p->
getSpinStates
());
73
p->
setSpinDensityBackward
(rho);
74
if
(
getPHOTOS
() ||
EvtRadCorr::alwaysRadCorr
()) {
75
EvtRadCorr::doRadCorr
(p);
76
}
77
78
79
//Now decay the daughters.
80
if
( !
daugsDecayedByParentModel
()) {
81
int
i;
82
for
(i=0;i<p->
getNDaug
();i++){
83
//Need to set the spin density of the daughters to be
84
//diagonal.
85
rho.
SetDiag
(p->
getDaug
(i)->
getSpinStates
());
86
p->
getDaug
(i)->
setSpinDensityForward
(rho);
87
88
//Now decay the daughter. Really!
89
p->
getDaug
(i)->
decay
();
90
}
91
}
92
93
}
94
95
96
97
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:352
EvtParticle::setSpinDensityForward
void setSpinDensityForward(const EvtSpinDensity &rho)
Definition:
EvtParticle.hh:321
EvtParticle::setDecayProb
void setDecayProb(double p)
Definition:
EvtParticle.cc:1204
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:74
EvtSpinDensity
Definition:
EvtSpinDensity.hh:27
EvtSpinDensity::SetDiag
void SetDiag(int n)
Definition:
EvtSpinDensity.cc:109
source
Generator
BesEvtGen
BesEvtGen-00-03-98
src
EvtGen
EvtGenBase
EvtDecayProb.cc
Generated by
1.9.6