ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
ISF
ISF_FastCaloSim
ISF_FastCaloSimEvent
src
TFCSFlatLateralShapeParametrization.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "CLHEP/Random/RandFlat.h"
6
#include "CLHEP/Random/RandPoisson.h"
7
8
#include "
ISF_FastCaloSimEvent/TFCSFlatLateralShapeParametrization.h
"
9
#include "
ISF_FastCaloSimEvent/FastCaloSim_CaloCell_ID.h
"
10
#include "
ISF_FastCaloSimEvent/TFCSSimulationState.h
"
11
#include "
ISF_FastCaloSimEvent/TFCSExtrapolationState.h
"
12
13
#include "TFile.h"
14
#include "TMath.h"
15
#include "TH2.h"
16
17
//=============================================
18
//======= TFCSFlatLateralShapeParametrization =========
19
//=============================================
20
21
TFCSFlatLateralShapeParametrization::TFCSFlatLateralShapeParametrization
(
22
const
char
*name,
const
char
*title)
23
:
TFCSLateralShapeParametrizationHitBase
(name, title),
m_nhits
(0),
24
m_scale
(1) {}
25
26
TFCSFlatLateralShapeParametrization::~TFCSFlatLateralShapeParametrization
() {}
27
28
int
TFCSFlatLateralShapeParametrization::get_number_of_hits
(
29
TFCSSimulationState
&simulstate,
const
TFCSTruthState
*
/*truth*/
,
30
const
TFCSExtrapolationState
*
/*extrapol*/
)
const
{
31
if
(!simulstate.
randomEngine
()) {
32
return
-1;
33
}
34
35
return
CLHEP::RandPoisson::shoot(simulstate.
randomEngine
(),
m_nhits
);
36
}
37
38
void
TFCSFlatLateralShapeParametrization::set_number_of_hits
(
float
nhits) {
39
m_nhits
= nhits;
40
}
41
42
void
TFCSFlatLateralShapeParametrization::set_dR
(
float
_dR) {
m_dR
= _dR; }
43
44
void
TFCSFlatLateralShapeParametrization::set_scale
(
float
_scale) {
45
m_scale
= _scale;
46
}
47
48
FCSReturnCode
TFCSFlatLateralShapeParametrization::simulate_hit
(
49
Hit
&
hit
,
TFCSSimulationState
&simulstate,
const
TFCSTruthState
*
/*truth*/
,
50
const
TFCSExtrapolationState
*
/*extrapol*/
) {
51
if
(!simulstate.
randomEngine
()) {
52
return
FCSFatal
;
53
}
54
55
const
int
cs =
calosample
();
56
const
double
center_eta =
hit
.center_eta();
57
const
double
center_phi =
hit
.center_phi();
58
const
double
center_r =
hit
.center_r();
59
const
double
center_z =
hit
.center_z();
60
61
if
(TMath::IsNaN(center_r) or TMath::IsNaN(center_z) or
62
TMath::IsNaN(center_eta) or
63
TMath::IsNaN(center_phi)) {
// Check if extrapolation fails
64
return
FCSFatal
;
65
}
66
67
float
alpha,
r
;
68
69
alpha = 2 * TMath::Pi() * CLHEP::RandFlat::shoot(simulstate.
randomEngine
());
70
r
=
m_dR
* CLHEP::RandFlat::shoot(simulstate.
randomEngine
());
71
72
float
delta_eta =
r
* cos(alpha);
73
float
delta_phi =
r
* sin(alpha);
74
75
hit
.setEtaPhiZE(center_eta + delta_eta, center_phi + delta_phi, center_z,
76
hit
.E() *
m_scale
);
77
78
ATH_MSG_DEBUG
(
"HIT: E="
<<
hit
.E() <<
" cs="
<< cs <<
" eta="
<<
hit
.eta()
79
<<
" phi="
<<
hit
.phi() <<
" z="
<<
hit
.z()
80
<<
" r="
<<
r
<<
" alpha="
<< alpha);
81
82
return
FCSSuccess
;
83
}
84
85
void
TFCSFlatLateralShapeParametrization::Print
(Option_t *option)
const
{
86
TString opt(option);
87
bool
shortprint = opt.Index(
"short"
) >= 0;
88
bool
longprint =
msgLvl
(MSG::DEBUG) || (
msgLvl
(MSG::INFO) && !shortprint);
89
TString optprint = opt;
90
optprint.ReplaceAll(
"short"
,
""
);
91
TFCSLateralShapeParametrizationHitBase::Print
(option);
92
93
if
(longprint) {
94
ATH_MSG_INFO
(optprint <<
" dR="
<<
m_dR
<<
" scale factor="
<<
m_scale
95
<<
", #hits="
<<
m_nhits
);
96
}
97
}
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
FastCaloSim_CaloCell_ID.h
hit
bool hit(const Container &ids, int pdgId)
Definition
JetIRCSafeLabelTool.cxx:64
TFCSExtrapolationState.h
TFCSFlatLateralShapeParametrization.h
FCSReturnCode
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
Definition
TFCSParametrizationBase.h:41
FCSFatal
@ FCSFatal
Definition
TFCSParametrizationBase.h:41
FCSSuccess
@ FCSSuccess
Definition
TFCSParametrizationBase.h:41
TFCSSimulationState.h
ISF_FCS::MLogging::msgLvl
bool msgLvl(const MSG::Level lvl) const
Check whether the logging system is active at the provided verbosity level.
Definition
MLogging.h:222
TFCSExtrapolationState
Definition
TFCSExtrapolationState.h:13
TFCSFlatLateralShapeParametrization::simulate_hit
virtual FCSReturnCode simulate_hit(Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) override
simulated one hit position with weight that should be put into simulstate sometime later all hit weig...
Definition
TFCSFlatLateralShapeParametrization.cxx:48
TFCSFlatLateralShapeParametrization::get_number_of_hits
virtual int get_number_of_hits(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const override
default for this class is to simulate poisson(integral histogram) hits
Definition
TFCSFlatLateralShapeParametrization.cxx:28
TFCSFlatLateralShapeParametrization::set_dR
void set_dR(float _dR)
set the radius in which hits should be generated
Definition
TFCSFlatLateralShapeParametrization.cxx:42
TFCSFlatLateralShapeParametrization::m_scale
float m_scale
Definition
TFCSFlatLateralShapeParametrization.h:56
TFCSFlatLateralShapeParametrization::set_number_of_hits
void set_number_of_hits(float nhits)
set the integral of the histogram to the desired number of hits
Definition
TFCSFlatLateralShapeParametrization.cxx:38
TFCSFlatLateralShapeParametrization::TFCSFlatLateralShapeParametrization
TFCSFlatLateralShapeParametrization(const char *name=nullptr, const char *title=nullptr)
Definition
TFCSFlatLateralShapeParametrization.cxx:21
TFCSFlatLateralShapeParametrization::m_nhits
float m_nhits
Definition
TFCSFlatLateralShapeParametrization.h:55
TFCSFlatLateralShapeParametrization::Print
virtual void Print(Option_t *option="") const override
Definition
TFCSFlatLateralShapeParametrization.cxx:85
TFCSFlatLateralShapeParametrization::set_scale
void set_scale(float _scale)
set the radius in which hits should be generated
Definition
TFCSFlatLateralShapeParametrization.cxx:44
TFCSFlatLateralShapeParametrization::~TFCSFlatLateralShapeParametrization
virtual ~TFCSFlatLateralShapeParametrization()
Definition
TFCSFlatLateralShapeParametrization.cxx:26
TFCSFlatLateralShapeParametrization::m_dR
float m_dR
Simulate hits flat in radius dR.
Definition
TFCSFlatLateralShapeParametrization.h:54
TFCSLateralShapeParametrizationHitBase::Hit
Definition
TFCSLateralShapeParametrizationHitBase.h:42
TFCSLateralShapeParametrizationHitBase::TFCSLateralShapeParametrizationHitBase
TFCSLateralShapeParametrizationHitBase(const char *name=nullptr, const char *title=nullptr)
Definition
TFCSLateralShapeParametrizationHitBase.cxx:15
TFCSLateralShapeParametrization::Print
void Print(Option_t *option="") const override
Definition
TFCSLateralShapeParametrization.cxx:53
TFCSLateralShapeParametrization::calosample
int calosample() const
Definition
TFCSLateralShapeParametrization.h:34
TFCSSimulationState
Definition
TFCSSimulationState.h:32
TFCSSimulationState::randomEngine
CLHEP::HepRandomEngine * randomEngine()
Definition
TFCSSimulationState.h:36
TFCSTruthState
Definition
TFCSTruthState.h:13
r
int r
Definition
globals.cxx:22
Generated on
for ATLAS Offline Software by
1.17.0