ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
ISF
ISF_FastCaloSim
ISF_FastCaloSimParametrization
ISF_FastCaloSimParametrization
CaloGeometryLookup.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef ISF_FASTCALOSIMPARAMETRIZATION_CALOGEOMETRYLOOKUP_H
6
#define ISF_FASTCALOSIMPARAMETRIZATION_CALOGEOMETRYLOOKUP_H
7
8
#include <TMath.h>
9
10
#include <vector>
11
#include <map>
12
#include <iostream>
13
14
#include "
ISF_FastCaloSimParametrization/MeanAndRMS.h
"
15
#include "
ISF_FastCaloSimParametrization/FSmap.h
"
16
17
class
CaloDetDescrElement
;
18
class
TCanvas;
19
class
TGraphErrors;
20
21
typedef
std::map< Identifier , const CaloDetDescrElement* >
t_cellmap
;
22
typedef
std::map< double , const CaloDetDescrElement* >
t_eta_cellmap
;
23
24
class
CaloGeometryLookup
{
25
public
:
26
CaloGeometryLookup
(
int
ind=0);
27
virtual
~CaloGeometryLookup
();
28
29
bool
IsCompatible
(
const
CaloDetDescrElement
* cell);
30
void
add
(
const
CaloDetDescrElement
* cell);
31
t_cellmap::size_type
size
()
const
{
return
m_cells
.size();};
32
int
index
()
const
{
return
m_index
;};
33
void
set_index
(
int
ind) {
m_index
=ind;};
34
void
post_process
();
35
bool
has_overlap
(
CaloGeometryLookup
*
ref
);
36
void
merge_into_ref
(
CaloGeometryLookup
*
ref
);
37
//void CalculateTransformation();
38
39
float
mineta
()
const
{
return
m_mineta
;};
40
float
maxeta
()
const
{
return
m_maxeta
;};
41
float
minphi
()
const
{
return
m_minphi
;};
42
float
maxphi
()
const
{
return
m_maxphi
;};
43
44
float
mineta_raw
()
const
{
return
m_mineta_raw
;};
45
float
maxeta_raw
()
const
{
return
m_maxeta_raw
;};
46
float
minphi_raw
()
const
{
return
m_minphi_raw
;};
47
float
maxphi_raw
()
const
{
return
m_maxphi_raw
;};
48
49
#ifdef USE_GPU
50
//the geometry for GPU EDM are constructed with following functions
51
float
mineta_correction()
const
{
return
m_mineta_correction
;};
52
float
maxeta_correction()
const
{
return
m_maxeta_correction
;};
53
float
minphi_correction()
const
{
return
m_minphi_correction
;};
54
float
maxphi_correction()
const
{
return
m_maxphi_correction
;};
55
#endif
56
57
float
minx
()
const
{
return
m_mineta
;};
58
float
maxx
()
const
{
return
m_maxeta
;};
59
float
miny
()
const
{
return
m_minphi
;};
60
float
maxy
()
const
{
return
m_maxphi
;};
61
62
float
minx_raw
()
const
{
return
m_mineta_raw
;};
63
float
maxx_raw
()
const
{
return
m_maxeta_raw
;};
64
float
miny_raw
()
const
{
return
m_minphi_raw
;};
65
float
maxy_raw
()
const
{
return
m_maxphi_raw
;};
66
67
const
MeanAndRMS
&
deta
() {
return
m_deta
;};
68
const
MeanAndRMS
&
dphi
() {
return
m_dphi
;};
69
float
mindeta
() {
return
m_mindeta
;};
70
float
mindphi
() {
return
m_mindphi
;};
71
const
MeanAndRMS
&
dx
() {
return
m_deta
;};
72
const
MeanAndRMS
&
dy
() {
return
m_dphi
;};
73
float
mindx
() {
return
m_mindeta
;};
74
float
mindy
() {
return
m_mindphi
;};
75
76
const
MeanAndRMS
&
eta_correction
() {
return
m_eta_correction
;};
77
const
MeanAndRMS
&
phi_correction
() {
return
m_phi_correction
;};
78
const
MeanAndRMS
&
x_correction
() {
return
m_eta_correction
;};
79
const
MeanAndRMS
&
y_correction
() {
return
m_phi_correction
;};
80
81
int
cell_grid_eta
()
const
{
return
m_cell_grid_eta
;};
82
int
cell_grid_phi
()
const
{
return
m_cell_grid_phi
;};
83
void
set_xy_grid_adjustment_factor
(
float
factor) {
m_xy_grid_adjustment_factor
=factor;};
84
85
virtual
const
CaloDetDescrElement
*
getDDE
(
float
eta
,
float
phi
,
float
* distance=0,
int
* steps=0);
86
87
#ifdef USE_GPU
88
//used by FCS-GPU
89
float
xy_grid_adjustment_factor()
const
{
return
m_xy_grid_adjustment_factor
;};
90
float
deta_double()
const
{
return
m_deta_double
;};
91
float
dphi_double()
const
{
return
m_dphi_double
;};
92
const
std::vector< std::vector< const CaloDetDescrElement* > > * cell_grid(){
return
&
m_cell_grid
; } ;
93
#endif
94
95
protected
:
96
float
neta_double
() {
97
if
(
auto
m =
deta
().
mean
();m!=0.)[[
likely
]]{
98
return
(
maxeta_raw
()-
mineta_raw
())/m;
99
}
100
return
0.f;
101
}
102
103
float
nphi_double
() {
104
if
(
auto
m =
dphi
().
mean
(); m!=0.)[[
likely
]]{
105
return
(
maxphi_raw
()-
minphi_raw
())/m;
106
}
107
return
0.f;
108
}
109
110
Int_t
neta
() {
return
TMath::Nint(
neta_double
() );};
111
Int_t
nphi
() {
return
TMath::Nint(
nphi_double
() );};
112
113
//FCal is not sufficiently regular to use submaps with regular mapping
114
float
nx_double
() {
return
(
maxx_raw
()-
minx_raw
())/
mindx
();};
115
float
ny_double
() {
return
(
maxy_raw
()-
miny_raw
())/
mindy
();};
116
Int_t
nx
() {
return
TMath::Nint(TMath::Ceil(
nx_double
() ));};
117
Int_t
ny
() {
return
TMath::Nint(TMath::Ceil(
ny_double
() ));};
118
119
float
m_xy_grid_adjustment_factor
;
120
121
int
raw_eta_position_to_index
(
float
eta_raw)
const
{
return
TMath::Floor((eta_raw-
mineta_raw
())/
m_deta_double
);};
122
int
raw_phi_position_to_index
(
float
phi_raw)
const
{
return
TMath::Floor((phi_raw-
minphi_raw
())/
m_dphi_double
);};
123
bool
index_range_adjust
(
int
& ieta,
int
& iphi)
const
;
124
float
calculate_distance_eta_phi
(
const
CaloDetDescrElement
* DDE,
float
eta
,
float
phi
,
float
& dist_eta0,
float
& dist_phi0)
const
;
125
126
int
m_index
;
127
t_cellmap
m_cells
;
128
std::vector< std::vector< const CaloDetDescrElement* > >
m_cell_grid
;
129
int
m_cell_grid_eta
,
m_cell_grid_phi
;
130
float
m_mineta
,
m_maxeta
,
m_minphi
,
m_maxphi
;
131
float
m_mineta_raw
,
m_maxeta_raw
,
m_minphi_raw
,
m_maxphi_raw
;
132
float
m_mineta_correction
,
m_maxeta_correction
,
m_minphi_correction
,
m_maxphi_correction
;
133
134
MeanAndRMS
m_deta
,
m_dphi
,
m_eta_correction
,
m_phi_correction
;
135
float
m_mindeta
,
m_mindphi
;
136
float
m_deta_double
,
m_dphi_double
;
137
};
138
#endif
139
140
ref
const std::regex ref(r_ef)
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
t_cellmap
std::map< Identifier, const CaloDetDescrElement * > t_cellmap
Definition
CaloGeometryLookup.h:21
t_eta_cellmap
std::map< double, const CaloDetDescrElement * > t_eta_cellmap
Definition
CaloGeometryLookup.h:22
FSmap.h
MeanAndRMS.h
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell.
Definition
Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloGeometryLookup
Definition
CaloGeometryLookup.h:24
CaloGeometryLookup::maxy
float maxy() const
Definition
CaloGeometryLookup.h:60
CaloGeometryLookup::maxeta
float maxeta() const
Definition
CaloGeometryLookup.h:40
CaloGeometryLookup::m_cells
t_cellmap m_cells
Definition
CaloGeometryLookup.h:127
CaloGeometryLookup::minphi
float minphi() const
Definition
CaloGeometryLookup.h:41
CaloGeometryLookup::cell_grid_eta
int cell_grid_eta() const
Definition
CaloGeometryLookup.h:81
CaloGeometryLookup::maxeta_raw
float maxeta_raw() const
Definition
CaloGeometryLookup.h:45
CaloGeometryLookup::deta
const MeanAndRMS & deta()
Definition
CaloGeometryLookup.h:67
CaloGeometryLookup::m_minphi_correction
float m_minphi_correction
Definition
CaloGeometryLookup.h:132
CaloGeometryLookup::m_maxphi_correction
float m_maxphi_correction
Definition
CaloGeometryLookup.h:132
CaloGeometryLookup::m_mineta
float m_mineta
Definition
CaloGeometryLookup.h:130
CaloGeometryLookup::set_index
void set_index(int ind)
Definition
CaloGeometryLookup.h:33
CaloGeometryLookup::neta
Int_t neta()
Definition
CaloGeometryLookup.h:110
CaloGeometryLookup::m_cell_grid
std::vector< std::vector< const CaloDetDescrElement * > > m_cell_grid
Definition
CaloGeometryLookup.h:128
CaloGeometryLookup::dphi
const MeanAndRMS & dphi()
Definition
CaloGeometryLookup.h:68
CaloGeometryLookup::m_dphi
MeanAndRMS m_dphi
Definition
CaloGeometryLookup.h:134
CaloGeometryLookup::IsCompatible
bool IsCompatible(const CaloDetDescrElement *cell)
Definition
CaloGeometryLookup.cxx:72
CaloGeometryLookup::m_dphi_double
float m_dphi_double
Definition
CaloGeometryLookup.h:136
CaloGeometryLookup::post_process
void post_process()
Definition
CaloGeometryLookup.cxx:187
CaloGeometryLookup::m_phi_correction
MeanAndRMS m_phi_correction
Definition
CaloGeometryLookup.h:134
CaloGeometryLookup::raw_phi_position_to_index
int raw_phi_position_to_index(float phi_raw) const
Definition
CaloGeometryLookup.h:122
CaloGeometryLookup::size
t_cellmap::size_type size() const
Definition
CaloGeometryLookup.h:31
CaloGeometryLookup::mindx
float mindx()
Definition
CaloGeometryLookup.h:73
CaloGeometryLookup::add
void add(const CaloDetDescrElement *cell)
Definition
CaloGeometryLookup.cxx:122
CaloGeometryLookup::getDDE
virtual const CaloDetDescrElement * getDDE(float eta, float phi, float *distance=0, int *steps=0)
Definition
CaloGeometryLookup.cxx:258
CaloGeometryLookup::index_range_adjust
bool index_range_adjust(int &ieta, int &iphi) const
Definition
CaloGeometryLookup.cxx:172
CaloGeometryLookup::m_maxphi_raw
float m_maxphi_raw
Definition
CaloGeometryLookup.h:131
CaloGeometryLookup::neta_double
float neta_double()
Definition
CaloGeometryLookup.h:96
CaloGeometryLookup::has_overlap
bool has_overlap(CaloGeometryLookup *ref)
Definition
CaloGeometryLookup.cxx:53
CaloGeometryLookup::maxy_raw
float maxy_raw() const
Definition
CaloGeometryLookup.h:65
CaloGeometryLookup::m_mineta_raw
float m_mineta_raw
Definition
CaloGeometryLookup.h:131
CaloGeometryLookup::minphi_raw
float minphi_raw() const
Definition
CaloGeometryLookup.h:46
CaloGeometryLookup::mindy
float mindy()
Definition
CaloGeometryLookup.h:74
CaloGeometryLookup::m_index
int m_index
Definition
CaloGeometryLookup.h:126
CaloGeometryLookup::x_correction
const MeanAndRMS & x_correction()
Definition
CaloGeometryLookup.h:78
CaloGeometryLookup::miny_raw
float miny_raw() const
Definition
CaloGeometryLookup.h:64
CaloGeometryLookup::mineta
float mineta() const
Definition
CaloGeometryLookup.h:39
CaloGeometryLookup::nphi
Int_t nphi()
Definition
CaloGeometryLookup.h:111
CaloGeometryLookup::m_eta_correction
MeanAndRMS m_eta_correction
Definition
CaloGeometryLookup.h:134
CaloGeometryLookup::dy
const MeanAndRMS & dy()
Definition
CaloGeometryLookup.h:72
CaloGeometryLookup::nphi_double
float nphi_double()
Definition
CaloGeometryLookup.h:103
CaloGeometryLookup::mindeta
float mindeta()
Definition
CaloGeometryLookup.h:69
CaloGeometryLookup::m_mindphi
float m_mindphi
Definition
CaloGeometryLookup.h:135
CaloGeometryLookup::eta_correction
const MeanAndRMS & eta_correction()
Definition
CaloGeometryLookup.h:76
CaloGeometryLookup::y_correction
const MeanAndRMS & y_correction()
Definition
CaloGeometryLookup.h:79
CaloGeometryLookup::m_cell_grid_eta
int m_cell_grid_eta
Definition
CaloGeometryLookup.h:129
CaloGeometryLookup::phi_correction
const MeanAndRMS & phi_correction()
Definition
CaloGeometryLookup.h:77
CaloGeometryLookup::m_maxeta_correction
float m_maxeta_correction
Definition
CaloGeometryLookup.h:132
CaloGeometryLookup::minx
float minx() const
Definition
CaloGeometryLookup.h:57
CaloGeometryLookup::m_xy_grid_adjustment_factor
float m_xy_grid_adjustment_factor
Definition
CaloGeometryLookup.h:119
CaloGeometryLookup::maxphi
float maxphi() const
Definition
CaloGeometryLookup.h:42
CaloGeometryLookup::raw_eta_position_to_index
int raw_eta_position_to_index(float eta_raw) const
Definition
CaloGeometryLookup.h:121
CaloGeometryLookup::calculate_distance_eta_phi
float calculate_distance_eta_phi(const CaloDetDescrElement *DDE, float eta, float phi, float &dist_eta0, float &dist_phi0) const
Definition
CaloGeometryLookup.cxx:249
CaloGeometryLookup::~CaloGeometryLookup
virtual ~CaloGeometryLookup()
CaloGeometryLookup::ny_double
float ny_double()
Definition
CaloGeometryLookup.h:115
CaloGeometryLookup::m_mindeta
float m_mindeta
Definition
CaloGeometryLookup.h:135
CaloGeometryLookup::dx
const MeanAndRMS & dx()
Definition
CaloGeometryLookup.h:71
CaloGeometryLookup::mindphi
float mindphi()
Definition
CaloGeometryLookup.h:70
CaloGeometryLookup::merge_into_ref
void merge_into_ref(CaloGeometryLookup *ref)
Definition
CaloGeometryLookup.cxx:63
CaloGeometryLookup::set_xy_grid_adjustment_factor
void set_xy_grid_adjustment_factor(float factor)
Definition
CaloGeometryLookup.h:83
CaloGeometryLookup::index
int index() const
Definition
CaloGeometryLookup.h:32
CaloGeometryLookup::m_maxeta
float m_maxeta
Definition
CaloGeometryLookup.h:130
CaloGeometryLookup::mineta_raw
float mineta_raw() const
Definition
CaloGeometryLookup.h:44
CaloGeometryLookup::nx
Int_t nx()
Definition
CaloGeometryLookup.h:116
CaloGeometryLookup::maxx
float maxx() const
Definition
CaloGeometryLookup.h:58
CaloGeometryLookup::minx_raw
float minx_raw() const
Definition
CaloGeometryLookup.h:62
CaloGeometryLookup::m_minphi_raw
float m_minphi_raw
Definition
CaloGeometryLookup.h:131
CaloGeometryLookup::m_deta_double
float m_deta_double
Definition
CaloGeometryLookup.h:136
CaloGeometryLookup::CaloGeometryLookup
CaloGeometryLookup(int ind=0)
Definition
CaloGeometryLookup.cxx:24
CaloGeometryLookup::cell_grid_phi
int cell_grid_phi() const
Definition
CaloGeometryLookup.h:82
CaloGeometryLookup::m_minphi
float m_minphi
Definition
CaloGeometryLookup.h:130
CaloGeometryLookup::m_mineta_correction
float m_mineta_correction
Definition
CaloGeometryLookup.h:132
CaloGeometryLookup::m_cell_grid_phi
int m_cell_grid_phi
Definition
CaloGeometryLookup.h:129
CaloGeometryLookup::m_maxeta_raw
float m_maxeta_raw
Definition
CaloGeometryLookup.h:131
CaloGeometryLookup::nx_double
float nx_double()
Definition
CaloGeometryLookup.h:114
CaloGeometryLookup::maxx_raw
float maxx_raw() const
Definition
CaloGeometryLookup.h:63
CaloGeometryLookup::ny
Int_t ny()
Definition
CaloGeometryLookup.h:117
CaloGeometryLookup::m_deta
MeanAndRMS m_deta
Definition
CaloGeometryLookup.h:134
CaloGeometryLookup::maxphi_raw
float maxphi_raw() const
Definition
CaloGeometryLookup.h:47
CaloGeometryLookup::m_maxphi
float m_maxphi
Definition
CaloGeometryLookup.h:130
CaloGeometryLookup::miny
float miny() const
Definition
CaloGeometryLookup.h:59
MeanAndRMS
Definition
MeanAndRMS.h:10
mean
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Definition
dependence.cxx:254
likely
#define likely(x)
Definition
pythonic_coracool.cxx:8
Generated on
for ATLAS Offline Software by
1.17.0