|
ATLAS Offline Software
|
#include <CaloGeometry.h>
|
| CaloGeometry () |
|
virtual | ~CaloGeometry () |
|
virtual bool | PostProcessGeometry () |
|
virtual void Validate | ATLAS_NOT_THREAD_SAFE (int nrnd=100) |
|
virtual const CaloDetDescrElement * | getDDE (Identifier identify) |
|
virtual const CaloDetDescrElement * | getDDE (int sampling, Identifier identify) |
|
virtual const CaloDetDescrElement * | getDDE (int sampling, float eta, float phi, float *distance=0, int *steps=0) |
|
virtual const CaloDetDescrElement * | getFCalDDE (int sampling, float x, float y, float z, float *distance=0, int *steps=0) |
|
bool | getClosestFCalCellIndex (int sampling, float x, float y, int &ieta, int &iphi, int *steps=0) |
|
double | deta (int sample, double eta) const |
|
void | minmaxeta (int sample, double eta, double &mineta, double &maxeta) const |
|
double | rzmid (int sample, double eta) const |
|
double | rzent (int sample, double eta) const |
|
double | rzext (int sample, double eta) const |
|
double | rmid (int sample, double eta) const |
|
double | rent (int sample, double eta) const |
|
double | rext (int sample, double eta) const |
|
double | zmid (int sample, double eta) const |
|
double | zent (int sample, double eta) const |
|
double | zext (int sample, double eta) const |
|
double | rpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
|
double | zpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
|
double | rzpos (int sample, double eta, int subpos=CaloSubPos::SUBPOS_MID) const |
|
bool | isCaloBarrel (int sample) const |
|
TGraphErrors * | GetGraph (unsigned int sample) const |
|
void | SetDoGraphs (bool dographs=true) |
|
bool | DoGraphs () const |
|
TGraph * | DrawGeoSampleForPhi0 (int sample, int calocol, bool print=false) |
|
TCanvas * | DrawGeoForPhi0 () |
|
FCAL_ChannelMap * | GetFCAL_ChannelMap () |
|
void | SetFCal_ChannelMap (const FCAL_ChannelMap *fcal_ChannnelMap) |
|
void | calculateFCalRminRmax () |
|
virtual bool | checkFCalGeometryConsistency () |
|
virtual void | PrintMapInfo (int i, int j) |
|
Definition at line 27 of file CaloGeometry.h.
◆ CaloGeometry()
CaloGeometry::CaloGeometry |
( |
| ) |
|
◆ ~CaloGeometry()
CaloGeometry::~CaloGeometry |
( |
| ) |
|
|
virtualdefault |
◆ addcell()
◆ ATLAS_NOT_THREAD_SAFE()
virtual void Validate CaloGeometry::ATLAS_NOT_THREAD_SAFE |
( |
int |
nrnd = 100 | ) |
|
|
virtual |
◆ calculateFCalRminRmax()
void CaloGeometry::calculateFCalRminRmax |
( |
| ) |
|
◆ checkFCalGeometryConsistency()
bool CaloGeometry::checkFCalGeometryConsistency |
( |
| ) |
|
|
virtual |
Reimplemented in CaloGeometryFromFile.
Definition at line 922 of file CaloGeometry.cxx.
928 long mask1[]{0x34,0x34,0x35};
929 long mask2[]{0x36,0x36,0x37};
935 for(
int imap=1;imap<=3;imap++){
937 int sampling = imap+20;
940 cout <<
"Error: Incompatibility between FCalChannel map and GEO file: Different number of cells in m_cells_in_sampling and FCal_ChannelMap" << endl;
949 phi_index =
it->first & 0xffff;
955 id=(mask1[imap-1]<<12) + (
eta_index << 5) +2*phi_index;
957 if(imap==2)
id+= (8<<8);
962 id=(mask2[imap-1]<<12) + (
eta_index << 5) +2*phi_index;
963 if(imap==2)
id+= (8<<8);
967 if(!TMath::AreEqualRel(
x, DDE1->
x(),1.E-8) || !TMath::AreEqualRel(
y, DDE1->
y(),1.E-8) || !TMath::AreEqualRel(
x, DDE2->
x(),1.E-8) || !TMath::AreEqualRel(
y, DDE2->
y(),1.E-8) ){
968 cout <<
"Error: Incompatibility between FCalChannel map and GEO file \n" <<
x <<
" " << DDE1->
x() <<
" " << DDE2->
x() <<
y <<
" " << DDE1->
y() <<
" " << DDE2->
y() << endl;
◆ deta()
double CaloGeometry::deta |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ DoGraphs()
bool CaloGeometry::DoGraphs |
( |
| ) |
const |
|
inline |
◆ DrawGeoForPhi0()
TCanvas * CaloGeometry::DrawGeoForPhi0 |
( |
| ) |
|
Definition at line 440 of file CaloGeometry.cxx.
442 TCanvas*
c=
new TCanvas(
"CaloGeoForPhi0",
"Calo geometry for #phi~0");
443 TH2D* hcalolayout=
new TH2D(
"hcalolayoutPhi0",
"Reconstruction geometry: calorimeter layout;z [mm];r [mm]",50,-7000,7000,50,0,4000);
445 hcalolayout->SetStats(0);
446 hcalolayout->GetYaxis()->SetTitleOffset(1.4);
448 TLegend*
leg=
new TLegend(0.30,0.13,0.70,0.37);
449 leg->SetFillStyle(0);
450 leg->SetFillColor(10);
451 leg->SetBorderSize(1);
457 std::string sname=Form(
"Sampling %2d : ",
sample);
459 leg->AddEntry(
gr,sname.c_str(),
"LF");
◆ DrawGeoSampleForPhi0()
TGraph * CaloGeometry::DrawGeoSampleForPhi0 |
( |
int |
sample, |
|
|
int |
calocol, |
|
|
bool |
print = false |
|
) |
| |
Definition at line 349 of file CaloGeometry.cxx.
354 TGraph* firstgr=
nullptr;
361 TGraph*
gr=
new TGraph(5);
362 gr->SetLineColor(TMath::Abs(calocol));
363 gr->SetFillColor(TMath::Abs(calocol));
365 gr->SetFillStyle(1001);
370 double r=theDDE->
r();
371 double dr=theDDE->
dr();
372 double x=theDDE->
x();
373 double dx=theDDE->
dx();
374 double y=theDDE->
y();
375 double dy=theDDE->
dy();
376 double z=theDDE->
z();
377 double dz=theDDE->
dz()*2;
385 cout<<
"sample="<<
sample<<
" r="<<
r<<
" dr="<<
dr<<
" eta="<<
eta<<
" deta="<<
deta<<
" x="<<
x<<
" y="<<
y<<
" z="<<
z<<
" dz="<<dz<<endl;
389 gr->SetPoint(0,cv.Z(),cv.Pt());
390 gr->SetPoint(4,cv.Z(),cv.Pt());
392 gr->SetPoint(1,cv.Z(),cv.Pt());
394 gr->SetPoint(2,cv.Z(),cv.Pt());
396 gr->SetPoint(3,cv.Z(),cv.Pt());
399 cv.SetPtEtaPhi(1,
eta-
deta/2,0);cv*=(
z-dz/2)/cv.Z();
400 gr->SetPoint(0,cv.Z(),cv.Pt());
401 gr->SetPoint(4,cv.Z(),cv.Pt());
402 cv.SetPtEtaPhi(1,
eta+
deta/2,0);cv*=(
z-dz/2)/cv.Z();
403 gr->SetPoint(1,cv.Z(),cv.Pt());
404 cv.SetPtEtaPhi(1,
eta+
deta/2,0);cv*=(
z+dz/2)/cv.Z();
405 gr->SetPoint(2,cv.Z(),cv.Pt());
406 cv.SetPtEtaPhi(1,
eta-
deta/2,0);cv*=(
z+dz/2)/cv.Z();
407 gr->SetPoint(3,cv.Z(),cv.Pt());
414 minr=TMath::Min(minr,
pr);
415 maxr=TMath::Max(maxr,
pr);
418 cv.SetXYZ(minr,0,
z-dz/2);
419 gr->SetPoint(0,cv.Z(),cv.Pt());
420 gr->SetPoint(4,cv.Z(),cv.Pt());
421 cv.SetXYZ(maxr,0,
z-dz/2);
422 gr->SetPoint(1,cv.Z(),cv.Pt());
423 cv.SetXYZ(maxr,0,
z+dz/2);
424 gr->SetPoint(2,cv.Z(),cv.Pt());
425 cv.SetXYZ(minr,0,
z+dz/2);
426 gr->SetPoint(3,cv.Z(),cv.Pt());
432 if(ngr==0) firstgr=
gr;
◆ getClosestFCalCellIndex()
bool CaloGeometry::getClosestFCalCellIndex |
( |
int |
sampling, |
|
|
float |
x, |
|
|
float |
y, |
|
|
int & |
ieta, |
|
|
int & |
iphi, |
|
|
int * |
steps = 0 |
|
) |
| |
Definition at line 592 of file CaloGeometry.cxx.
596 int isam=sampling-20;
602 const double r = sqrt(
x*
x +
y*
y);
603 if(
r==0.)
return false;
604 const double r_inverse=1./
r;
606 if((
r/rmax)>(rmin*r_inverse)){
◆ getDDE() [1/3]
◆ getDDE() [2/3]
const CaloDetDescrElement * CaloGeometry::getDDE |
( |
int |
sampling, |
|
|
float |
eta, |
|
|
float |
phi, |
|
|
float * |
distance = 0 , |
|
|
int * |
steps = 0 |
|
) |
| |
|
virtual |
Implements ICaloGeometry.
Definition at line 475 of file CaloGeometry.cxx.
477 if(sampling<0)
return nullptr;
487 if(
steps) beststeps=(*steps);
491 for(
int skip_range_check=0;skip_range_check<=1;++skip_range_check) {
493 if(!skip_range_check) {
497 if(
steps) intsteps=(*steps);
500 cout<<
"CaloGeometry::getDDE : check map"<<j<<
" skip_range_check="<<skip_range_check<<endl;
505 cout<<
"CaloGeometry::getDDE : map"<<j<<
" dist="<<newdist<<
" best dist="<<*
distance<<
" steps="<<intsteps<<endl;
510 if(
steps) beststeps=intsteps;
511 if(newdist<-0.1)
break;
◆ getDDE() [3/3]
◆ GetFCAL_ChannelMap()
◆ getFCalDDE()
const CaloDetDescrElement * CaloGeometry::getFCalDDE |
( |
int |
sampling, |
|
|
float |
x, |
|
|
float |
y, |
|
|
float |
z, |
|
|
float * |
distance = 0 , |
|
|
int * |
steps = 0 |
|
) |
| |
|
virtual |
Implements ICaloGeometry.
Definition at line 550 of file CaloGeometry.cxx.
551 int isam = sampling - 20;
552 int iphi(-100000),ieta(-100000);
553 Long64_t mask1[]{0x34,0x34,0x35};
554 Long64_t mask2[]{0x36,0x36,0x37};
562 cout <<
"Error: Unable to find the closest FCal cell!" << endl;
568 Long64_t
id = (ieta << 5) + 2*iphi;
569 if(isam==2)
id+= (8<<8);
573 if(
z>0)
id+=(mask2[isam-1] << 12);
574 else id+=(mask1[isam-1] << 12);
584 float distanceX = abs(foundcell->
x()-
x) - foundcell->
dx()/2;
585 float distanceY = abs(foundcell->
y()-
y) - foundcell->
dy()/2;
◆ GetGraph()
TGraphErrors* CaloGeometry::GetGraph |
( |
unsigned int |
sample | ) |
const |
|
inline |
◆ InitRZmaps()
void CaloGeometry::InitRZmaps |
( |
| ) |
|
|
protectedvirtual |
Definition at line 197 of file CaloGeometry.cxx.
225 double eta_raw=theDDE->
eta_raw();
257 double drh=theDDE->
dr()/2;
258 double dzh=theDDE->
dz();
265 rz_map_rent[
side][
sample][eta_raw]+=theDDE->
r()-drh;
266 rz_map_zent[
side][
sample][eta_raw]+=theDDE->
z()-dzh*sign_side;
267 rz_map_rext[
side][
sample][eta_raw]+=theDDE->
r()+drh;
268 rz_map_zext[
side][
sample][eta_raw]+=theDDE->
z()+dzh*sign_side;
283 double eta_raw=iter->first;
310 std::cout<<
"rz-map for side="<<
side<<
" sample="<<
sample<<
" is empty!!!"<<std::endl;
323 double eta_raw=iter->first;
325 if(eta_raw>0) sign_side=+1;
◆ isCaloBarrel()
bool CaloGeometry::isCaloBarrel |
( |
int |
sample | ) |
const |
|
inlinevirtual |
◆ minmaxeta()
void CaloGeometry::minmaxeta |
( |
int |
sample, |
|
|
double |
eta, |
|
|
double & |
mineta, |
|
|
double & |
maxeta |
|
) |
| const |
|
virtual |
◆ post_process()
void CaloGeometry::post_process |
( |
int |
layer | ) |
|
|
protectedvirtual |
Definition at line 121 of file CaloGeometry.cxx.
124 bool found_overlap=
false;
192 cout<<
"Run another round of ";
◆ PostProcessGeometry()
bool CaloGeometry::PostProcessGeometry |
( |
| ) |
|
|
virtual |
◆ PrintMapInfo()
void CaloGeometry::PrintMapInfo |
( |
int |
i, |
|
|
int |
j |
|
) |
| |
|
virtual |
◆ rent()
double CaloGeometry::rent |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rext()
double CaloGeometry::rext |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rmid()
double CaloGeometry::rmid |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rpos()
◆ rzent()
double CaloGeometry::rzent |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rzext()
double CaloGeometry::rzext |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rzmid()
double CaloGeometry::rzmid |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ rzpos()
◆ SamplingName()
std::string CaloGeometry::SamplingName |
( |
int |
sample | ) |
|
|
static |
◆ SetDoGraphs()
void CaloGeometry::SetDoGraphs |
( |
bool |
dographs = true | ) |
|
|
inline |
◆ SetFCal_ChannelMap()
◆ zent()
double CaloGeometry::zent |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ zext()
double CaloGeometry::zext |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ zmid()
double CaloGeometry::zmid |
( |
int |
sample, |
|
|
double |
eta |
|
) |
| const |
|
virtual |
◆ zpos()
◆ m_cells
◆ m_cells_in_regions
◆ m_cells_in_sampling
std::vector< t_cellmap > CaloGeometry::m_cells_in_sampling |
|
protected |
◆ m_cells_in_sampling_for_phi0
std::vector< t_eta_cellmap > CaloGeometry::m_cells_in_sampling_for_phi0 |
|
protected |
◆ m_debug
std::atomic< bool > CaloGeometry::m_debug =false |
|
static |
◆ m_debug_identify
◆ m_dographs
bool CaloGeometry::m_dographs |
|
protected |
◆ m_FCal_ChannelMap
◆ m_FCal_rmax
std::vector<double> CaloGeometry::m_FCal_rmax |
|
protected |
◆ m_FCal_rmin
std::vector<double> CaloGeometry::m_FCal_rmin |
|
protected |
◆ m_graph_layers
std::vector< TGraphErrors* > CaloGeometry::m_graph_layers |
|
protected |
◆ m_isCaloBarrel
std::vector< bool > CaloGeometry::m_isCaloBarrel |
|
protected |
◆ m_max_eta_sample
std::vector< double > CaloGeometry::m_max_eta_sample[2] |
|
protected |
◆ m_min_eta_sample
std::vector< double > CaloGeometry::m_min_eta_sample[2] |
|
protected |
◆ m_rent_map
std::vector< FSmap< double , double > > CaloGeometry::m_rent_map[2] |
|
protected |
◆ m_rext_map
std::vector< FSmap< double , double > > CaloGeometry::m_rext_map[2] |
|
protected |
◆ m_rmid_map
std::vector< FSmap< double , double > > CaloGeometry::m_rmid_map[2] |
|
protected |
◆ m_zent_map
std::vector< FSmap< double , double > > CaloGeometry::m_zent_map[2] |
|
protected |
◆ m_zext_map
std::vector< FSmap< double , double > > CaloGeometry::m_zext_map[2] |
|
protected |
◆ m_zmid_map
std::vector< FSmap< double , double > > CaloGeometry::m_zmid_map[2] |
|
protected |
◆ MAX_SAMPLING
The documentation for this class was generated from the following files:
float deta() const
cell deta
JetConstituentVector::iterator iterator
std::vector< double > m_max_eta_sample[2]
virtual void post_process(int layer)
TGraph * DrawGeoSampleForPhi0(int sample, int calocol, bool print=false)
double rent(int sample, double eta) const
static const int MAX_SAMPLING
std::vector< TGraphErrors * > m_graph_layers
std::vector< double > m_FCal_rmax
Scalar phi() const
phi method
const unsigned short lookup[2401]
std::string find(const std::string &s)
return a remapped string
bool isCaloBarrel(int sample) const
tileMap_const_iterator end(int isam) const
std::vector< FSmap< double, double > > m_zext_map[2]
Scalar eta() const
pseudorapidity method
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Identifier identify(const UncalibratedMeasurement *meas)
Returns the associated identifier.
double zmid(int sample, double eta) const
static constexpr unsigned int barrelPattern()
Get the bit-pattern for barrel samplings.
double rext(int sample, double eta) const
std::vector< FSmap< double, double > > m_rent_map[2]
float eta_raw() const
cell eta_raw
FCAL_ChannelMap m_FCal_ChannelMap
double zent(int sample, double eta) const
static std::string SamplingName(int sample)
std::vector< FSmap< double, double > > m_rmid_map[2]
static unsigned int getSamplingPattern(const CaloSample s)
Get a unsigned with one bit set
bool getClosestFCalCellIndex(int sampling, float x, float y, int &ieta, int &iphi, int *steps=0)
std::vector< FSmap< double, double > > m_rext_map[2]
std::vector< double > m_FCal_rmin
std::map< _Key, _Tp >::iterator iterator
bool getTileID(int isam, float x, float y, int &eta, int &phi) const
-— For the new LArFCAL_ID Identifier
std::vector< double > m_min_eta_sample[2]
void merge_into_ref(CaloGeometryLookup *ref)
std::vector< t_eta_cellmap > m_cells_in_sampling_for_phi0
const int CaloGeometry_calocol[24]
static std::atomic< bool > m_debug
std::vector< FSmap< double, double > > m_zmid_map[2]
std::vector< t_cellmap > m_cells_in_sampling
virtual const CaloDetDescrElement * getDDE(Identifier identify)
CaloCell_ID::CaloSample getSampling() const
cell sampling
double deta(int sample, double eta) const
virtual void InitRZmaps()
tileMap_const_iterator begin(int isam) const
float eta() const
cell eta
std::vector< std::vector< CaloGeometryLookup * > > m_cells_in_regions
float phi() const
cell phi
void tileSize(int sam, int eta, int phi, float &dx, float &dy) const
std::vector< FSmap< double, double > > m_zent_map[2]
void print(std::FILE *stream, std::format_string< Args... > fmt, Args &&... args)
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
double zext(int sample, double eta) const
double rmid(int sample, double eta) const
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
std::vector< bool > m_isCaloBarrel