ATLAS Offline Software
Loading...
Searching...
No Matches
CaloGeometryLookup Class Reference

#include <CaloGeometryLookup.h>

Collaboration diagram for CaloGeometryLookup:

Public Member Functions

 CaloGeometryLookup (int ind=0)
virtual ~CaloGeometryLookup ()
bool IsCompatible (const CaloDetDescrElement *cell)
void add (const CaloDetDescrElement *cell)
t_cellmap::size_type size () const
int index () const
void set_index (int ind)
void post_process ()
bool has_overlap (CaloGeometryLookup *ref)
void merge_into_ref (CaloGeometryLookup *ref)
float mineta () const
float maxeta () const
float minphi () const
float maxphi () const
float mineta_raw () const
float maxeta_raw () const
float minphi_raw () const
float maxphi_raw () const
float minx () const
float maxx () const
float miny () const
float maxy () const
float minx_raw () const
float maxx_raw () const
float miny_raw () const
float maxy_raw () const
const MeanAndRMSdeta ()
const MeanAndRMSdphi ()
float mindeta ()
float mindphi ()
const MeanAndRMSdx ()
const MeanAndRMSdy ()
float mindx ()
float mindy ()
const MeanAndRMSeta_correction ()
const MeanAndRMSphi_correction ()
const MeanAndRMSx_correction ()
const MeanAndRMSy_correction ()
int cell_grid_eta () const
int cell_grid_phi () const
void set_xy_grid_adjustment_factor (float factor)
virtual const CaloDetDescrElementgetDDE (float eta, float phi, float *distance=0, int *steps=0)

Protected Member Functions

float neta_double ()
float nphi_double ()
Int_t neta ()
Int_t nphi ()
float nx_double ()
float ny_double ()
Int_t nx ()
Int_t ny ()
int raw_eta_position_to_index (float eta_raw) const
int raw_phi_position_to_index (float phi_raw) const
bool index_range_adjust (int &ieta, int &iphi) const
float calculate_distance_eta_phi (const CaloDetDescrElement *DDE, float eta, float phi, float &dist_eta0, float &dist_phi0) const

Protected Attributes

float m_xy_grid_adjustment_factor
int m_index
t_cellmap m_cells
std::vector< std::vector< const CaloDetDescrElement * > > m_cell_grid
int m_cell_grid_eta
int m_cell_grid_phi
float m_mineta
float m_maxeta
float m_minphi
float m_maxphi
float m_mineta_raw
float m_maxeta_raw
float m_minphi_raw
float m_maxphi_raw
float m_mineta_correction
float m_maxeta_correction
float m_minphi_correction
float m_maxphi_correction
MeanAndRMS m_deta
MeanAndRMS m_dphi
MeanAndRMS m_eta_correction
MeanAndRMS m_phi_correction
float m_mindeta
float m_mindphi
float m_deta_double
float m_dphi_double

Detailed Description

Definition at line 25 of file CaloGeometryLookup.h.

Constructor & Destructor Documentation

◆ CaloGeometryLookup()

CaloGeometryLookup::CaloGeometryLookup ( int ind = 0)

Definition at line 24 of file CaloGeometryLookup.cxx.

25{
26 m_mineta=+10000;
27 m_maxeta=-10000;
28 m_minphi=+10000;
29 m_maxphi=-10000;
30
31 m_mineta_raw=+10000;
32 m_maxeta_raw=-10000;
33 m_minphi_raw=+10000;
34 m_maxphi_raw=-10000;
35
36 m_mindeta=10000;
37 m_mindphi=10000;
38
43
46 m_deta_double =0.;
47 m_dphi_double =0.;
48}

◆ ~CaloGeometryLookup()

CaloGeometryLookup::~CaloGeometryLookup ( )
virtualdefault

Member Function Documentation

◆ add()

void CaloGeometryLookup::add ( const CaloDetDescrElement * cell)

Definition at line 122 of file CaloGeometryLookup.cxx.

123{
124 if(cell->getSampling()<21) {
125 m_deta.add(cell->deta());
126 m_dphi.add(cell->dphi());
127 m_mindeta=TMath::Min(cell->deta(),m_mindeta);
128 m_mindphi=TMath::Min(cell->dphi(),m_mindphi);
129
130 m_eta_correction.add(cell->eta_raw()-cell->eta());
131 m_phi_correction.add(cell->phi_raw()-cell->phi());
132 m_mineta_correction=TMath::Min(cell->eta_raw()-cell->eta() , m_mineta_correction);
133 m_maxeta_correction=TMath::Max(cell->eta_raw()-cell->eta() , m_maxeta_correction);
134 m_minphi_correction=TMath::Min(cell->phi_raw()-cell->phi() , m_minphi_correction);
135 m_maxphi_correction=TMath::Max(cell->phi_raw()-cell->phi() , m_maxphi_correction);
136
137 m_mineta=TMath::Min(cell->eta()-cell->deta()/2,m_mineta);
138 m_maxeta=TMath::Max(cell->eta()+cell->deta()/2,m_maxeta);
139 m_minphi=TMath::Min(cell->phi()-cell->dphi()/2,m_minphi);
140 m_maxphi=TMath::Max(cell->phi()+cell->dphi()/2,m_maxphi);
141
142 m_mineta_raw=TMath::Min(cell->eta_raw()-cell->deta()/2,m_mineta_raw);
143 m_maxeta_raw=TMath::Max(cell->eta_raw()+cell->deta()/2,m_maxeta_raw);
144 m_minphi_raw=TMath::Min(cell->phi_raw()-cell->dphi()/2,m_minphi_raw);
145 m_maxphi_raw=TMath::Max(cell->phi_raw()+cell->dphi()/2,m_maxphi_raw);
146 } else {
147 m_deta.add(cell->dx());
148 m_dphi.add(cell->dy());
149 m_mindeta=TMath::Min(cell->dx(),m_mindeta);
150 m_mindphi=TMath::Min(cell->dy(),m_mindphi);
151
152 m_eta_correction.add(cell->x_raw()-cell->x());
153 m_phi_correction.add(cell->y_raw()-cell->y());
154 m_mineta_correction=TMath::Min(cell->x_raw()-cell->x() , m_mineta_correction);
155 m_maxeta_correction=TMath::Max(cell->x_raw()-cell->x() , m_maxeta_correction);
156 m_minphi_correction=TMath::Min(cell->y_raw()-cell->y() , m_minphi_correction);
157 m_maxphi_correction=TMath::Max(cell->y_raw()-cell->y() , m_maxphi_correction);
158
159 m_mineta=TMath::Min(cell->x()-cell->dx()/2,m_mineta);
160 m_maxeta=TMath::Max(cell->x()+cell->dx()/2,m_maxeta);
161 m_minphi=TMath::Min(cell->y()-cell->dy()/2,m_minphi);
162 m_maxphi=TMath::Max(cell->y()+cell->dy()/2,m_maxphi);
163
164 m_mineta_raw=TMath::Min(cell->x_raw()-cell->dx()/2,m_mineta_raw);
165 m_maxeta_raw=TMath::Max(cell->x_raw()+cell->dx()/2,m_maxeta_raw);
166 m_minphi_raw=TMath::Min(cell->y_raw()-cell->dy()/2,m_minphi_raw);
167 m_maxphi_raw=TMath::Max(cell->y_raw()+cell->dy()/2,m_maxphi_raw);
168 }
169 m_cells[cell->identify()]=cell;
170}

◆ calculate_distance_eta_phi()

float CaloGeometryLookup::calculate_distance_eta_phi ( const CaloDetDescrElement * DDE,
float eta,
float phi,
float & dist_eta0,
float & dist_phi0 ) const
protected

Definition at line 249 of file CaloGeometryLookup.cxx.

250{
251 dist_eta0=(eta - DDE->eta())/m_deta_double;
252 dist_phi0=(TVector2::Phi_mpi_pi(phi - DDE->phi()))/m_dphi_double;
253 float abs_dist_eta0=TMath::Abs(dist_eta0);
254 float abs_dist_phi0=TMath::Abs(dist_phi0);
255 return TMath::Max(abs_dist_eta0,abs_dist_phi0)-0.5;
256}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method

◆ cell_grid_eta()

int CaloGeometryLookup::cell_grid_eta ( ) const
inline

Definition at line 82 of file CaloGeometryLookup.h.

82{return m_cell_grid_eta;};

◆ cell_grid_phi()

int CaloGeometryLookup::cell_grid_phi ( ) const
inline

Definition at line 83 of file CaloGeometryLookup.h.

83{return m_cell_grid_phi;};

◆ deta()

const MeanAndRMS & CaloGeometryLookup::deta ( )
inline

Definition at line 68 of file CaloGeometryLookup.h.

68{return m_deta;};

◆ dphi()

const MeanAndRMS & CaloGeometryLookup::dphi ( )
inline

Definition at line 69 of file CaloGeometryLookup.h.

69{return m_dphi;};

◆ dx()

const MeanAndRMS & CaloGeometryLookup::dx ( )
inline

Definition at line 72 of file CaloGeometryLookup.h.

72{return m_deta;};

◆ dy()

const MeanAndRMS & CaloGeometryLookup::dy ( )
inline

Definition at line 73 of file CaloGeometryLookup.h.

73{return m_dphi;};

◆ eta_correction()

const MeanAndRMS & CaloGeometryLookup::eta_correction ( )
inline

Definition at line 77 of file CaloGeometryLookup.h.

77{return m_eta_correction;};

◆ getDDE()

const CaloDetDescrElement * CaloGeometryLookup::getDDE ( float eta,
float phi,
float * distance = 0,
int * steps = 0 )
virtual

Definition at line 258 of file CaloGeometryLookup.cxx.

259{
260 float dist = 0;
261 const CaloDetDescrElement* bestDDE=nullptr;
262 if(!distance) distance=&dist;
263 *distance=+10000000;
264 int intsteps=0;
265 if(!steps) steps=&intsteps;
266
267 float best_eta_corr=m_eta_correction;
268 float best_phi_corr=m_phi_correction;
269
270 float raw_eta=eta+best_eta_corr;
271 float raw_phi=phi+best_phi_corr;
272
273 int ieta=raw_eta_position_to_index(raw_eta);
274 int iphi=raw_phi_position_to_index(raw_phi);
275 index_range_adjust(ieta,iphi);
276
277 const CaloDetDescrElement* newDDE=m_cell_grid[ieta][iphi];
278 float bestdist=+10000000;
279 ++(*steps);
280 int nsearch=0;
281 while(newDDE && nsearch<3) {
282 float dist_eta0,dist_phi0;
283 *distance=calculate_distance_eta_phi(newDDE,eta,phi,dist_eta0,dist_phi0);
284 bestDDE=newDDE;
285 bestdist=*distance;
286
288 cout<<"CaloGeometryLookup::getDDE, search iteration "<<nsearch<<endl;
289 cout<<"cell id="<<newDDE->identify()<<" steps "<<*steps<<" steps, eta="<<eta<<" phi="<<phi<<" dist="<<*distance<<" cell_grid_eta="<<cell_grid_eta()<<" cell_grid_phi="<<cell_grid_phi()<<" m_deta_double="<<m_deta_double<<" m_dphi_double="<<m_dphi_double<<" 1st_eta_corr="<<best_eta_corr<<" 1st_phi_corr="<<best_phi_corr<<endl;
290 cout<<" input sampling="<<newDDE->getSampling()<<" eta="<<newDDE->eta()<<" eta_raw="<<newDDE->eta_raw()<<" deta="<<newDDE->deta()<<" ("<<(newDDE->eta_raw()-newDDE->eta())/newDDE->deta()<<") phi="<<newDDE->phi()<<" phi_raw="<<newDDE->phi_raw()<<" dphi="<<newDDE->dphi()<<" ("<<(newDDE->phi_raw()-newDDE->phi())/newDDE->dphi()<<")"<<endl;
291 cout<<" ieta="<<ieta<<" iphi="<<iphi<<endl;
292 cout<<" dist_eta0="<<dist_eta0<<" ,dist_phi0="<<dist_phi0<<endl;
293 }
294
295 if(*distance<0) return newDDE;
296 //correct ieta and iphi by the observed difference to the hit cell
297 ieta+=TMath::Nint(dist_eta0);
298 iphi+=TMath::Nint(dist_phi0);
299 index_range_adjust(ieta,iphi);
300 const CaloDetDescrElement* oldDDE=newDDE;
301 newDDE=m_cell_grid[ieta][iphi];
302 ++(*steps);
303 ++nsearch;
304 if(oldDDE==newDDE) break;
305 }
306 if(CaloGeometry::m_debug && !newDDE) {
307 cout<<"CaloGeometryLookup::getDDE, direct search ieta="<<ieta<<" iphi="<<iphi<<" is empty"<<endl;
308 }
309 float minieta=ieta+TMath::Nint(TMath::Floor(m_mineta_correction/cell_grid_eta()));
310 float maxieta=ieta+TMath::Nint(TMath::Ceil(m_maxeta_correction/cell_grid_eta()));
311 float miniphi=iphi+TMath::Nint(TMath::Floor(m_minphi_correction/cell_grid_phi()));
312 float maxiphi=iphi+TMath::Nint(TMath::Ceil(m_maxphi_correction/cell_grid_phi()));
313 if(minieta<0) minieta=0;
314 if(maxieta>=m_cell_grid_eta) maxieta=m_cell_grid_eta-1;
315 for(int iieta=minieta;iieta<=maxieta;++iieta) {
316 for(int iiphi=miniphi;iiphi<=maxiphi;++iiphi) {
317 ieta=iieta;
318 iphi=iiphi;
319 index_range_adjust(ieta,iphi);
320 newDDE=m_cell_grid[ieta][iphi];
321 ++(*steps);
322 if(newDDE) {
323 float dist_eta0,dist_phi0;
324 *distance=calculate_distance_eta_phi(newDDE,eta,phi,dist_eta0,dist_phi0);
325
327 cout<<"CaloGeometryLookup::getDDE, windows search! minieta="<<m_mineta_correction/cell_grid_eta()<<" maxieta="<<m_maxeta_correction/cell_grid_eta()<<" miniphi="<<m_minphi_correction/cell_grid_phi()<<" maxiphi="<<m_maxphi_correction/cell_grid_phi()<<endl;
328 cout<<"cell id="<<newDDE->identify()<<" steps "<<*steps<<" steps, eta="<<eta<<" phi="<<phi<<" dist="<<*distance<<endl;
329 cout<<" input sampling="<<newDDE->getSampling()<<" eta="<<newDDE->eta()<<" eta_raw="<<newDDE->eta_raw()<<" deta="<<newDDE->deta()<<" ("<<(newDDE->eta_raw()-newDDE->eta())/newDDE->deta()<<") phi="<<newDDE->phi()<<" phi_raw="<<newDDE->phi_raw()<<" dphi="<<newDDE->dphi()<<" ("<<(newDDE->phi_raw()-newDDE->phi())/newDDE->dphi()<<")"<<endl;
330 cout<<" ieta="<<ieta<<" iphi="<<iphi<<endl;
331 cout<<" dist_eta0="<<dist_eta0<<" ,dist_phi0="<<dist_phi0<<endl;
332 }
333
334 if(*distance<0) return newDDE;
335 if(*distance<bestdist) {
336 bestDDE=newDDE;
337 bestdist=*distance;
338 }
339 } else if(CaloGeometry::m_debug) {
340 cout<<"CaloGeometryLookup::getDDE, windows search ieta="<<ieta<<" iphi="<<iphi<<" is empty"<<endl;
341 }
342 }
343 }
344 *distance=bestdist;
345 return bestDDE;
346}
CaloCell_ID::CaloSample getSampling() const
cell sampling
Identifier identify() const override final
cell identifier
std::vector< std::vector< const CaloDetDescrElement * > > m_cell_grid
int raw_phi_position_to_index(float phi_raw) const
bool index_range_adjust(int &ieta, int &iphi) const
int raw_eta_position_to_index(float eta_raw) const
float calculate_distance_eta_phi(const CaloDetDescrElement *DDE, float eta, float phi, float &dist_eta0, float &dist_phi0) const
static std::atomic< bool > m_debug
static const Identifier m_debug_identify
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space

◆ has_overlap()

bool CaloGeometryLookup::has_overlap ( CaloGeometryLookup * ref)

Definition at line 53 of file CaloGeometryLookup.cxx.

54{
55 if(m_cells.empty()) return false;
56 for(t_cellmap::iterator ic=m_cells.begin();ic!=m_cells.end();++ic) {
57 const CaloDetDescrElement* cell=ic->second;
58 if(ref->IsCompatible(cell)) return true;
59 }
60 return false;
61}
const boost::regex ref(r_ef)
int ic
Definition grepfile.py:33

◆ index()

int CaloGeometryLookup::index ( ) const
inline

Definition at line 33 of file CaloGeometryLookup.h.

33{return m_index;};

◆ index_range_adjust()

bool CaloGeometryLookup::index_range_adjust ( int & ieta,
int & iphi ) const
protected

Definition at line 172 of file CaloGeometryLookup.cxx.

173{
174 while(iphi<0) {iphi+=m_cell_grid_phi;};
175 while(iphi>=m_cell_grid_phi) {iphi-=m_cell_grid_phi;};
176 if(ieta<0) {
177 ieta=0;
178 return false;
179 }
180 if(ieta>=m_cell_grid_eta) {
181 ieta=m_cell_grid_eta-1;
182 return false;
183 }
184 return true;
185}

◆ IsCompatible()

bool CaloGeometryLookup::IsCompatible ( const CaloDetDescrElement * cell)

Definition at line 72 of file CaloGeometryLookup.cxx.

73{
74 if(m_cells.empty()) return true;
75 t_cellmap::iterator ic=m_cells.begin();
76 const CaloDetDescrElement* refcell=ic->second;
77 int sampling=refcell->getSampling();
78 if(cell->getSampling()!=sampling) return false;
79 if(cell->eta_raw()*refcell->eta_raw()<0) return false;
80 if(sampling<21) { // keep only cells reasonable close in eta to each other
81 if(TMath::Abs(cell->deta()-refcell->deta())>0.001) return false;
82 if(TMath::Abs(cell->dphi()-refcell->dphi())>0.001) return false;
83
84 if( cell->eta()<mineta()-2.1*cell->deta() ) return false;
85 if( cell->eta()>maxeta()+2.1*cell->deta() ) return false;
86
87 double delta_eta=(cell->eta_raw()-refcell->eta_raw())/cell->deta();
88 double delta_phi=(cell->phi_raw()-refcell->phi_raw())/cell->dphi();
89 if(TMath::Abs(delta_eta-TMath::Nint(delta_eta)) > 0.01) return false;
90 if(TMath::Abs(delta_phi-TMath::Nint(delta_phi)) > 0.01) return false;
91
92 /*
93 cout<<"Compatible: s="<<cell->getSampling()<<"~"<<refcell->getSampling()<<"; ";
94 cout<<"eta="<<cell->eta_raw()<<","<<refcell->eta_raw()<<"; ";
95 cout<<"phi="<<cell->phi_raw()<<","<<refcell->phi_raw()<<"; ";
96 cout<<"deta="<<cell->deta()<<"~"<<refcell->deta()<<"; ";
97 cout<<"dphi="<<cell->dphi()<<"~"<<refcell->dphi()<<";";
98 cout<<"mineta="<<mineta()<<", maxeta="<<maxeta()<<"; ";
99 cout<<endl;
100 */
101 } else {
102 //FCal is not sufficiently regular to use submaps with regular mapping
103 return true;
104 /*
105 if(TMath::Abs(cell->dx()-refcell->dx())>0.001) return false;
106 if(TMath::Abs(cell->dy()-refcell->dy())>0.001) return false;
107 if( cell->x()<minx()-20*cell->dx() ) return false;
108 if( cell->x()>maxx()+20*cell->dx() ) return false;
109 if( cell->y()<miny()-20*cell->dy() ) return false;
110 if( cell->y()>maxy()+20*cell->dy() ) return false;
111
112 double delta_x=(cell->x_raw()-refcell->x_raw())/cell->dx();
113 double delta_y=(cell->y_raw()-refcell->y_raw())/cell->dy();
114 if(TMath::Abs(delta_x-TMath::Nint(delta_x)) > 0.01) return false;
115 if(TMath::Abs(delta_y-TMath::Nint(delta_y)) > 0.01) return false;
116 */
117 }
118
119 return true;
120}
delta_phi(phi1, phi2)
Definition eFEXNTuple.py:14

◆ maxeta()

float CaloGeometryLookup::maxeta ( ) const
inline

Definition at line 41 of file CaloGeometryLookup.h.

41{return m_maxeta;};

◆ maxeta_raw()

float CaloGeometryLookup::maxeta_raw ( ) const
inline

Definition at line 46 of file CaloGeometryLookup.h.

46{return m_maxeta_raw;};

◆ maxphi()

float CaloGeometryLookup::maxphi ( ) const
inline

Definition at line 43 of file CaloGeometryLookup.h.

43{return m_maxphi;};

◆ maxphi_raw()

float CaloGeometryLookup::maxphi_raw ( ) const
inline

Definition at line 48 of file CaloGeometryLookup.h.

48{return m_maxphi_raw;};

◆ maxx()

float CaloGeometryLookup::maxx ( ) const
inline

Definition at line 59 of file CaloGeometryLookup.h.

59{return m_maxeta;};

◆ maxx_raw()

float CaloGeometryLookup::maxx_raw ( ) const
inline

Definition at line 64 of file CaloGeometryLookup.h.

64{return m_maxeta_raw;};

◆ maxy()

float CaloGeometryLookup::maxy ( ) const
inline

Definition at line 61 of file CaloGeometryLookup.h.

61{return m_maxphi;};

◆ maxy_raw()

float CaloGeometryLookup::maxy_raw ( ) const
inline

Definition at line 66 of file CaloGeometryLookup.h.

66{return m_maxphi_raw;};

◆ merge_into_ref()

void CaloGeometryLookup::merge_into_ref ( CaloGeometryLookup * ref)

Definition at line 63 of file CaloGeometryLookup.cxx.

64{
65 for(t_cellmap::iterator ic=m_cells.begin();ic!=m_cells.end();++ic) {
66 const CaloDetDescrElement* cell=ic->second;
67 ref->add(cell);
68 }
69}

◆ mindeta()

float CaloGeometryLookup::mindeta ( )
inline

Definition at line 70 of file CaloGeometryLookup.h.

70{return m_mindeta;};

◆ mindphi()

float CaloGeometryLookup::mindphi ( )
inline

Definition at line 71 of file CaloGeometryLookup.h.

71{return m_mindphi;};

◆ mindx()

float CaloGeometryLookup::mindx ( )
inline

Definition at line 74 of file CaloGeometryLookup.h.

74{return m_mindeta;};

◆ mindy()

float CaloGeometryLookup::mindy ( )
inline

Definition at line 75 of file CaloGeometryLookup.h.

75{return m_mindphi;};

◆ mineta()

float CaloGeometryLookup::mineta ( ) const
inline

Definition at line 40 of file CaloGeometryLookup.h.

40{return m_mineta;};

◆ mineta_raw()

float CaloGeometryLookup::mineta_raw ( ) const
inline

Definition at line 45 of file CaloGeometryLookup.h.

45{return m_mineta_raw;};

◆ minphi()

float CaloGeometryLookup::minphi ( ) const
inline

Definition at line 42 of file CaloGeometryLookup.h.

42{return m_minphi;};

◆ minphi_raw()

float CaloGeometryLookup::minphi_raw ( ) const
inline

Definition at line 47 of file CaloGeometryLookup.h.

47{return m_minphi_raw;};

◆ minx()

float CaloGeometryLookup::minx ( ) const
inline

Definition at line 58 of file CaloGeometryLookup.h.

58{return m_mineta;};

◆ minx_raw()

float CaloGeometryLookup::minx_raw ( ) const
inline

Definition at line 63 of file CaloGeometryLookup.h.

63{return m_mineta_raw;};

◆ miny()

float CaloGeometryLookup::miny ( ) const
inline

Definition at line 60 of file CaloGeometryLookup.h.

60{return m_minphi;};

◆ miny_raw()

float CaloGeometryLookup::miny_raw ( ) const
inline

Definition at line 65 of file CaloGeometryLookup.h.

65{return m_minphi_raw;};

◆ neta()

Int_t CaloGeometryLookup::neta ( )
inlineprotected

Definition at line 99 of file CaloGeometryLookup.h.

99{return TMath::Nint( neta_double() );};

◆ neta_double()

float CaloGeometryLookup::neta_double ( )
inlineprotected

Definition at line 97 of file CaloGeometryLookup.h.

97{return (maxeta_raw()-mineta_raw())/deta().mean();};
const MeanAndRMS & deta()
double mean() const
Definition MeanAndRMS.h:22

◆ nphi()

Int_t CaloGeometryLookup::nphi ( )
inlineprotected

Definition at line 100 of file CaloGeometryLookup.h.

100{return TMath::Nint( nphi_double() );};

◆ nphi_double()

float CaloGeometryLookup::nphi_double ( )
inlineprotected

Definition at line 98 of file CaloGeometryLookup.h.

98{return (maxphi_raw()-minphi_raw())/dphi().mean();};
const MeanAndRMS & dphi()

◆ nx()

Int_t CaloGeometryLookup::nx ( )
inlineprotected

Definition at line 105 of file CaloGeometryLookup.h.

105{return TMath::Nint(TMath::Ceil( nx_double() ));};

◆ nx_double()

float CaloGeometryLookup::nx_double ( )
inlineprotected

Definition at line 103 of file CaloGeometryLookup.h.

103{return (maxx_raw()-minx_raw())/mindx();};

◆ ny()

Int_t CaloGeometryLookup::ny ( )
inlineprotected

Definition at line 106 of file CaloGeometryLookup.h.

106{return TMath::Nint(TMath::Ceil( ny_double() ));};

◆ ny_double()

float CaloGeometryLookup::ny_double ( )
inlineprotected

Definition at line 104 of file CaloGeometryLookup.h.

104{return (maxy_raw()-miny_raw())/mindy();};

◆ phi_correction()

const MeanAndRMS & CaloGeometryLookup::phi_correction ( )
inline

Definition at line 78 of file CaloGeometryLookup.h.

78{return m_phi_correction;};

◆ post_process()

void CaloGeometryLookup::post_process ( )

Definition at line 187 of file CaloGeometryLookup.cxx.

188{
189 if(size()==0) return;
190 t_cellmap::iterator ic=m_cells.begin();
191 const CaloDetDescrElement* refcell=ic->second;
192 int sampling=refcell->getSampling();
193 if(sampling<21) {
194 double rneta=neta_double()-neta();
195 double rnphi=nphi_double()-nphi();
196 if(TMath::Abs(rneta)>0.05 || TMath::Abs(rnphi)>0.05) {
197 cout<<"ERROR: can't map cells into a regular grid for sampling "<<sampling<<", map index "<<index()<<endl;
198 return;
199 }
204 } else {
205 //double rnx=nx_double()-nx();
206 //double rny=ny_double()-ny();
207 //if(TMath::Abs(rnx)>0.05 || TMath::Abs(rny)>0.05) {
208 // cout<<"Grid: Sampling "<<sampling<<"_"<<index()<<": mapping cells into a regular grid, although cells don't fit well"<<endl;
209 //}
210
211 m_cell_grid_eta=TMath::Nint(TMath::Ceil(nx_double()/m_xy_grid_adjustment_factor));
212 m_cell_grid_phi=TMath::Nint(TMath::Ceil(ny_double()/m_xy_grid_adjustment_factor));
215 }
216
218 for(int ieta=0;ieta<m_cell_grid_eta;++ieta) {
219 m_cell_grid[ieta].resize(m_cell_grid_phi,nullptr);
220 }
221
222 for(ic=m_cells.begin();ic!=m_cells.end();++ic) {
223 refcell=ic->second;
224 int ieta,iphi;
225 if(sampling<21) {
226 ieta=raw_eta_position_to_index(refcell->eta_raw());
227 iphi=raw_phi_position_to_index(refcell->phi_raw());
228 } else {
229 ieta=raw_eta_position_to_index(refcell->x_raw());
230 iphi=raw_phi_position_to_index(refcell->y_raw());
231 }
232 if(index_range_adjust(ieta,iphi)) {
233 if(m_cell_grid[ieta][iphi]) {
234 cout<<"Grid: Sampling "<<sampling<<"_"<<index()<<": Already cell found at pos ("<<ieta<<","<<iphi<<"): id="
235 <<m_cell_grid[ieta][iphi]->identify()<<"->"<<refcell->identify()<<endl;
236 cout<<" x="<<m_cells[m_cell_grid[ieta][iphi]->identify()]->x_raw()<<" -> "<<refcell->x_raw();
237 cout<<" , y="<<m_cells[m_cell_grid[ieta][iphi]->identify()]->y_raw()<<" -> "<<refcell->y_raw();
238 cout<<" mindx="<<m_deta_double<<" mindy="<<m_dphi_double<<endl;
239 cout<<endl;
240 }
241 m_cell_grid[ieta][iphi]=refcell;
242 } else {
243 cout<<"Grid: Sampling "<<sampling<<"_"<<index()<<": Cell at pos ("<<ieta<<","<<iphi<<"): id="
244 <<refcell->identify()<<" outside eta range"<<endl;
245 }
246 }
247}
t_cellmap::size_type size() const

◆ raw_eta_position_to_index()

int CaloGeometryLookup::raw_eta_position_to_index ( float eta_raw) const
inlineprotected

Definition at line 110 of file CaloGeometryLookup.h.

110{return TMath::Floor((eta_raw-mineta_raw())/m_deta_double);};

◆ raw_phi_position_to_index()

int CaloGeometryLookup::raw_phi_position_to_index ( float phi_raw) const
inlineprotected

Definition at line 111 of file CaloGeometryLookup.h.

111{return TMath::Floor((phi_raw-minphi_raw())/m_dphi_double);};

◆ set_index()

void CaloGeometryLookup::set_index ( int ind)
inline

Definition at line 34 of file CaloGeometryLookup.h.

34{m_index=ind;};

◆ set_xy_grid_adjustment_factor()

void CaloGeometryLookup::set_xy_grid_adjustment_factor ( float factor)
inline

Definition at line 84 of file CaloGeometryLookup.h.

◆ size()

t_cellmap::size_type CaloGeometryLookup::size ( ) const
inline

Definition at line 32 of file CaloGeometryLookup.h.

32{return m_cells.size();};

◆ x_correction()

const MeanAndRMS & CaloGeometryLookup::x_correction ( )
inline

Definition at line 79 of file CaloGeometryLookup.h.

79{return m_eta_correction;};

◆ y_correction()

const MeanAndRMS & CaloGeometryLookup::y_correction ( )
inline

Definition at line 80 of file CaloGeometryLookup.h.

80{return m_phi_correction;};

Member Data Documentation

◆ m_cell_grid

std::vector< std::vector< const CaloDetDescrElement* > > CaloGeometryLookup::m_cell_grid
protected

Definition at line 117 of file CaloGeometryLookup.h.

◆ m_cell_grid_eta

int CaloGeometryLookup::m_cell_grid_eta
protected

Definition at line 118 of file CaloGeometryLookup.h.

◆ m_cell_grid_phi

int CaloGeometryLookup::m_cell_grid_phi
protected

Definition at line 118 of file CaloGeometryLookup.h.

◆ m_cells

t_cellmap CaloGeometryLookup::m_cells
protected

Definition at line 116 of file CaloGeometryLookup.h.

◆ m_deta

MeanAndRMS CaloGeometryLookup::m_deta
protected

Definition at line 123 of file CaloGeometryLookup.h.

◆ m_deta_double

float CaloGeometryLookup::m_deta_double
protected

Definition at line 125 of file CaloGeometryLookup.h.

◆ m_dphi

MeanAndRMS CaloGeometryLookup::m_dphi
protected

Definition at line 123 of file CaloGeometryLookup.h.

◆ m_dphi_double

float CaloGeometryLookup::m_dphi_double
protected

Definition at line 125 of file CaloGeometryLookup.h.

◆ m_eta_correction

MeanAndRMS CaloGeometryLookup::m_eta_correction
protected

Definition at line 123 of file CaloGeometryLookup.h.

◆ m_index

int CaloGeometryLookup::m_index
protected

Definition at line 115 of file CaloGeometryLookup.h.

◆ m_maxeta

float CaloGeometryLookup::m_maxeta
protected

Definition at line 119 of file CaloGeometryLookup.h.

◆ m_maxeta_correction

float CaloGeometryLookup::m_maxeta_correction
protected

Definition at line 121 of file CaloGeometryLookup.h.

◆ m_maxeta_raw

float CaloGeometryLookup::m_maxeta_raw
protected

Definition at line 120 of file CaloGeometryLookup.h.

◆ m_maxphi

float CaloGeometryLookup::m_maxphi
protected

Definition at line 119 of file CaloGeometryLookup.h.

◆ m_maxphi_correction

float CaloGeometryLookup::m_maxphi_correction
protected

Definition at line 121 of file CaloGeometryLookup.h.

◆ m_maxphi_raw

float CaloGeometryLookup::m_maxphi_raw
protected

Definition at line 120 of file CaloGeometryLookup.h.

◆ m_mindeta

float CaloGeometryLookup::m_mindeta
protected

Definition at line 124 of file CaloGeometryLookup.h.

◆ m_mindphi

float CaloGeometryLookup::m_mindphi
protected

Definition at line 124 of file CaloGeometryLookup.h.

◆ m_mineta

float CaloGeometryLookup::m_mineta
protected

Definition at line 119 of file CaloGeometryLookup.h.

◆ m_mineta_correction

float CaloGeometryLookup::m_mineta_correction
protected

Definition at line 121 of file CaloGeometryLookup.h.

◆ m_mineta_raw

float CaloGeometryLookup::m_mineta_raw
protected

Definition at line 120 of file CaloGeometryLookup.h.

◆ m_minphi

float CaloGeometryLookup::m_minphi
protected

Definition at line 119 of file CaloGeometryLookup.h.

◆ m_minphi_correction

float CaloGeometryLookup::m_minphi_correction
protected

Definition at line 121 of file CaloGeometryLookup.h.

◆ m_minphi_raw

float CaloGeometryLookup::m_minphi_raw
protected

Definition at line 120 of file CaloGeometryLookup.h.

◆ m_phi_correction

MeanAndRMS CaloGeometryLookup::m_phi_correction
protected

Definition at line 123 of file CaloGeometryLookup.h.

◆ m_xy_grid_adjustment_factor

float CaloGeometryLookup::m_xy_grid_adjustment_factor
protected

Definition at line 108 of file CaloGeometryLookup.h.


The documentation for this class was generated from the following files: