Pluto
v6.3.0
Loading...
Searching...
No Matches
PScatterCrossSection.cc
Go to the documentation of this file.
1
2
//
3
//
4
// Author: I. Froehlich
6
7
8
using namespace
std;
9
#include <sstream>
10
#include <iostream>
11
#include <iomanip>
12
13
#include "
PScatterCrossSection.h
"
14
#include "
PDynamicData.h
"
15
16
ClassImp
(
PScatterCrossSection
)
17
18
PScatterCrossSection::PScatterCrossSection
() {
19
Fatal(
"PScatterCrossSection"
,
"Wrong ctor called"
);
20
};
21
22
PScatterCrossSection::PScatterCrossSection
(
const
Char_t *
id
,
const
Char_t *de) :
23
PAngularDistribution
(id, de) {
24
25
beam
=
target
= NULL;
26
pf2
= NULL;
27
qmax
= 0.0;
28
qmin
= -1;
29
npx
=
npy
= -1;
30
31
TF1 *dummy =
new
TF1(
"dummy"
,
"1"
, -1, 1);
32
SetAngleFunction
(dummy);
33
34
};
35
36
PDistribution
*
PScatterCrossSection::Clone
(
const
char
*)
const
{
37
return
new
PScatterCrossSection
((
const
PScatterCrossSection
&)*
this
);
38
};
39
40
void
PScatterCrossSection::SetNpx
(Int_t my_npx) {
41
npx
= my_npx;
42
if
(
pf2
)
pf2
->SetNpx(
npx
);
43
};
44
45
void
PScatterCrossSection::SetNpy
(Int_t my_npy) {
46
npy
= my_npy;
47
if
(
pf2
)
pf2
->SetNpy(
npy
);
48
};
49
50
Bool_t
PScatterCrossSection::MakeVars
() {
51
if
(
qmin
< 0) {
52
Error(
"MakeVars"
,
"Range of the c.m. energy not defined"
);
53
return
kFALSE;
54
}
55
if
(!
pf2
) {
56
pf2
=
new
PF2
(
""
, -1., 1.,
qmin
,
qmax
);
57
if
(
npx
> 0)
pf2
->SetNpx(
npx
);
58
if
(
npy
> 0)
pf2
->SetNpy(
npy
);
59
}
60
61
vprimary
=
makeDynamicData
()->
GetBatchParticle
(
"_primary"
);
62
vf
=
makeStaticData
()->
GetBatchValue
(
"_f"
);
63
return
kTRUE;
64
};
65
66
Bool_t
PScatterCrossSection::AddEquation
(
char
*command) {
67
if
(!
MakeVars
())
return
kFALSE;
68
return
pf2
->Add(command);
69
};
70
71
Bool_t
PScatterCrossSection::AddHistogram
(TH1 *
histo
,
char
*command) {
72
if
(!
MakeVars
())
return
kFALSE;
73
return
pf2
->Add(
histo
, command);
74
};
75
76
Bool_t
PScatterCrossSection::AddHistogram
(TH2 *
histo
,
char
*command) {
77
if
(!
MakeVars
())
return
kFALSE;
78
return
pf2
->Add(
histo
, command);
79
};
80
81
Bool_t
PScatterCrossSection::Init
(
void
) {
82
if
(!
PAngularDistribution:: Init
())
return
kFALSE;
83
84
if
(!
beam
|| !
target
) {
85
Warning(
"Init"
,
"beam or target not found"
);
86
return
kFALSE;
87
}
88
89
return
kTRUE;
90
};
91
92
Bool_t
PScatterCrossSection::Prepare
(
void
) {
93
94
PAngularDistribution::Prepare
();
95
96
if
(!
pf2
) {
97
Error(
"Prepare"
,
"Function not defined"
);
98
return
kFALSE;
99
}
100
101
pf2
->GetRandom2(
costheta
,
q
);
102
103
Double_t m_t =
target
->M();
104
Double_t m_b =
beam
->M();
105
106
//momentum fixed target:
107
Double_t mom_b = sqrt( pow( (
q
*
q
-m_b*m_b-m_t*m_t)/(2*m_t) ,2) - m_b*m_b );
108
109
//cout << costheta << ":" << q << ":" << mom_b << endl;
110
111
if
(std::isnan(mom_b)) {
112
return
kFALSE;
113
}
114
115
//return kTRUE;
116
//Make a copy of beam and target:
117
PParticle
my_beam(
beam
);
118
PParticle
my_target(
target
);
119
120
my_beam.Boost(-my_target.BoostVector());
121
my_beam.
SetMom
(mom_b);
122
my_beam.Boost(my_target.BoostVector());
123
124
beam
->SetVect(my_beam.Vect());
125
beam
->SetM(m_b);
126
127
parent
->Reconstruct();
128
129
return
kTRUE;
130
};
131
132
133
134
double
PScatterCrossSection::SamplePolarAngle
(
double
) {
135
return
costheta
;
136
}
PDynamicData.h
makeDynamicData
PDynamicData * makeDynamicData()
ClassImp
ClassImp(PScatterCrossSection) PScatterCrossSection
Definition
PScatterCrossSection.cc:16
PScatterCrossSection.h
makeStaticData
PStaticData * makeStaticData()
PAngularDistribution::Prepare
Bool_t Prepare(void)
PAngularDistribution::Init
Bool_t Init(void)
PAngularDistribution::target
PParticle * target
Definition
PAngularDistribution.h:73
PAngularDistribution::PAngularDistribution
PAngularDistribution()
PAngularDistribution::parent
PParticle * parent
Definition
PAngularDistribution.h:69
PAngularDistribution::beam
PParticle * beam
Definition
PAngularDistribution.h:72
PAngularDistribution::SetAngleFunction
void SetAngleFunction(TF1 *f)
Definition
PAngularDistribution.h:34
PDistribution::PDistribution
PDistribution()
PDynamicData::GetBatchParticle
PParticle * GetBatchParticle(const char *name, Int_t make_val=1)
PF2
Definition
PF2.h:12
PParticle
Definition
PParticle.h:25
PParticle::SetMom
void SetMom(Double_t mom=0.)
PScatterCrossSection
Definition
PScatterCrossSection.h:16
PScatterCrossSection::npy
Int_t npy
Definition
PScatterCrossSection.h:55
PScatterCrossSection::SetNpx
void SetNpx(Int_t my_npx)
Definition
PScatterCrossSection.cc:40
PScatterCrossSection::PScatterCrossSection
PScatterCrossSection()
PScatterCrossSection::pf2
PF2 * pf2
Definition
PScatterCrossSection.h:49
PScatterCrossSection::SetNpy
void SetNpy(Int_t my_npy)
Definition
PScatterCrossSection.cc:45
PScatterCrossSection::MakeVars
Bool_t MakeVars(void)
Definition
PScatterCrossSection.cc:50
PScatterCrossSection::Prepare
Bool_t Prepare(void)
Definition
PScatterCrossSection.cc:92
PScatterCrossSection::vprimary
PParticle * vprimary
Definition
PScatterCrossSection.h:51
PScatterCrossSection::qmin
Double_t qmin
Definition
PScatterCrossSection.h:46
PScatterCrossSection::AddHistogram
Bool_t AddHistogram(TH2 *histo, char *command)
Definition
PScatterCrossSection.cc:76
PScatterCrossSection::SamplePolarAngle
double SamplePolarAngle(double)
Definition
PScatterCrossSection.cc:134
PScatterCrossSection::npx
Int_t npx
Definition
PScatterCrossSection.h:55
PScatterCrossSection::qmax
Double_t qmax
Definition
PScatterCrossSection.h:46
PScatterCrossSection::Clone
PDistribution * Clone(const char *delme=NULL) const
Definition
PScatterCrossSection.cc:36
PScatterCrossSection::q
Double_t q
Definition
PScatterCrossSection.h:47
PScatterCrossSection::costheta
Double_t costheta
Definition
PScatterCrossSection.h:47
PScatterCrossSection::Init
Bool_t Init(void)
Definition
PScatterCrossSection.cc:81
PScatterCrossSection::vf
Double_t * vf
Definition
PScatterCrossSection.h:52
PScatterCrossSection::AddEquation
Bool_t AddEquation(char *command)
Definition
PScatterCrossSection.cc:66
PStaticData::GetBatchValue
Double_t * GetBatchValue(const char *name, Int_t make_val=1)
histo
TH1F * histo
Definition
test_phi2170_ingo.C:16
pluto6
plugins
scatter_mod
src
PScatterCrossSection.cc
Generated by
1.14.0