ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | List of all members
CaloGeometry Class Reference

#include <CaloGeometry.h>

Inheritance diagram for CaloGeometry:
Collaboration diagram for CaloGeometry:

Public Member Functions

 CaloGeometry ()
 
virtual ~CaloGeometry ()
 
virtual bool PostProcessGeometry ()
 
virtual void Validate ATLAS_NOT_THREAD_SAFE (int nrnd=100)
 
virtual const CaloDetDescrElementgetDDE (Identifier identify)
 
virtual const CaloDetDescrElementgetDDE (int sampling, Identifier identify)
 
virtual const CaloDetDescrElementgetDDE (int sampling, float eta, float phi, float *distance=0, int *steps=0)
 
virtual const CaloDetDescrElementgetFCalDDE (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_ChannelMapGetFCAL_ChannelMap ()
 
void SetFCal_ChannelMap (const FCAL_ChannelMap *fcal_ChannnelMap)
 
void calculateFCalRminRmax ()
 
virtual bool checkFCalGeometryConsistency ()
 
virtual void PrintMapInfo (int i, int j)
 

Static Public Member Functions

static std::string SamplingName (int sample)
 

Static Public Attributes

static const int MAX_SAMPLING = CaloCell_ID_FCS::MaxSample
 
static const Identifier m_debug_identify
 
static std::atomic< bool > m_debug =false
 

Protected Member Functions

virtual void addcell (const CaloDetDescrElement *cell)
 
virtual void post_process (int layer)
 
virtual void InitRZmaps ()
 

Protected Attributes

t_cellmap m_cells
 
std::vector< t_cellmapm_cells_in_sampling
 
std::vector< t_eta_cellmapm_cells_in_sampling_for_phi0
 
std::vector< std::vector< CaloGeometryLookup * > > m_cells_in_regions
 
std::vector< bool > m_isCaloBarrel
 
std::vector< double > m_min_eta_sample [2]
 
std::vector< double > m_max_eta_sample [2]
 
std::vector< FSmap< double, double > > m_rmid_map [2]
 
std::vector< FSmap< double, double > > m_zmid_map [2]
 
std::vector< FSmap< double, double > > m_rent_map [2]
 
std::vector< FSmap< double, double > > m_zent_map [2]
 
std::vector< FSmap< double, double > > m_rext_map [2]
 
std::vector< FSmap< double, double > > m_zext_map [2]
 
bool m_dographs
 
std::vector< TGraphErrors * > m_graph_layers
 
FCAL_ChannelMap m_FCal_ChannelMap
 
std::vector< double > m_FCal_rmin
 
std::vector< double > m_FCal_rmax
 

Detailed Description

Definition at line 27 of file CaloGeometry.h.

Constructor & Destructor Documentation

◆ CaloGeometry()

CaloGeometry::CaloGeometry ( )

Definition at line 41 of file CaloGeometry.cxx.

42 {
43  //TMVA::Tools::Instance();
44  for(int i=0;i<2;++i) {
45  m_min_eta_sample[i].resize(MAX_SAMPLING); //[side][calosample]
46  m_max_eta_sample[i].resize(MAX_SAMPLING); //[side][calosample]
47  m_rmid_map[i].resize(MAX_SAMPLING); //[side][calosample]
48  m_zmid_map[i].resize(MAX_SAMPLING); //[side][calosample]
49  m_rent_map[i].resize(MAX_SAMPLING); //[side][calosample]
50  m_zent_map[i].resize(MAX_SAMPLING); //[side][calosample]
51  m_rext_map[i].resize(MAX_SAMPLING); //[side][calosample]
52  m_zext_map[i].resize(MAX_SAMPLING); //[side][calosample]
53  }
55 // for(unsigned int i=CaloCell_ID_FCS::FirstSample;i<CaloCell_ID_FCS::MaxSample;++i) {
56  for(unsigned int i=CaloSampling::PreSamplerB;i<=CaloSampling::FCAL2;++i) {
57  m_graph_layers[i]=nullptr;
60  }
62 }

◆ ~CaloGeometry()

CaloGeometry::~CaloGeometry ( )
virtualdefault

Member Function Documentation

◆ addcell()

void CaloGeometry::addcell ( const CaloDetDescrElement cell)
protectedvirtual

Definition at line 67 of file CaloGeometry.cxx.

68 {
69  int sampling=cell->getSampling();
70  Identifier identify=cell->identify();
71 
72  m_cells[identify]=cell;
73  m_cells_in_sampling[sampling][identify]=cell;
74 
75  //m_cells[identify]= new CaloDetDescrElement(*cell);
76  //m_cells_in_sampling[sampling][identify]= new CaloDetDescrElement(*cell);
77 
78  CaloGeometryLookup* lookup=nullptr;
79  for(unsigned int i=0;i<m_cells_in_regions[sampling].size();++i) {
80  if(m_cells_in_regions[sampling][i]->IsCompatible(cell)) {
81  lookup=m_cells_in_regions[sampling][i];
82  //cout<<sampling<<": found compatible map"<<endl;
83  break;
84  }
85  }
86  if(!lookup) {
88  m_cells_in_regions[sampling].push_back(lookup);
89  }
90  lookup->add(cell);
91 }

◆ ATLAS_NOT_THREAD_SAFE()

virtual void Validate CaloGeometry::ATLAS_NOT_THREAD_SAFE ( int  nrnd = 100)
virtual

Implements ICaloGeometry.

◆ calculateFCalRminRmax()

void CaloGeometry::calculateFCalRminRmax ( )

Definition at line 905 of file CaloGeometry.cxx.

905  {
906 
907  m_FCal_rmin.resize(3,FLT_MAX);
908  m_FCal_rmax.resize(3,0.);
909 
910  double x(0.),y(0.),r(0.);
911  for(int imap=1;imap<=3;imap++)for(auto it=m_FCal_ChannelMap.begin(imap);it!=m_FCal_ChannelMap.end(imap);it++){
912  x=it->second.x();
913  y=it->second.y();
914  r=sqrt(x*x+y*y);
915  if(r<m_FCal_rmin[imap-1])m_FCal_rmin[imap-1]=r;
916  if(r>m_FCal_rmax[imap-1])m_FCal_rmax[imap-1]=r;
917  }
918 
919 }

◆ checkFCalGeometryConsistency()

bool CaloGeometry::checkFCalGeometryConsistency ( )
virtual

Reimplemented in CaloGeometryFromFile.

Definition at line 922 of file CaloGeometry.cxx.

922  {
923 
924  unsigned long long phi_index,eta_index;
925  float x,y,dx,dy;
926  long id;
927 
928  long mask1[]{0x34,0x34,0x35};
929  long mask2[]{0x36,0x36,0x37};
930 
931  m_FCal_rmin.resize(3,FLT_MAX);
932  m_FCal_rmax.resize(3,0.);
933 
934 
935  for(int imap=1;imap<=3;imap++){
936 
937  int sampling = imap+20;
938 
939  if((int)m_cells_in_sampling[sampling].size() != 2*std::distance(m_FCal_ChannelMap.begin(imap), m_FCal_ChannelMap.end(imap))){
940  cout << "Error: Incompatibility between FCalChannel map and GEO file: Different number of cells in m_cells_in_sampling and FCal_ChannelMap" << endl;
941  cout << "m_cells_in_sampling: " << m_cells_in_sampling[sampling].size() << endl;
942  cout << "FCal_ChannelMap: " << 2*std::distance(m_FCal_ChannelMap.begin(imap), m_FCal_ChannelMap.end(imap)) << endl;
943  return false;
944  }
945 
946  for(auto it=m_FCal_ChannelMap.begin(imap);it!=m_FCal_ChannelMap.end(imap);it++){
947 
948 
949  phi_index = it->first & 0xffff;
950  eta_index = it->first >> 16;
951  x=it->second.x();
952  y=it->second.y();
953  m_FCal_ChannelMap.tileSize(imap, eta_index, phi_index,dx,dy);
954 
955  id=(mask1[imap-1]<<12) + (eta_index << 5) +2*phi_index;
956 
957  if(imap==2) id+= (8<<8);
958 
959  Identifier id1((unsigned long long)(id<<44));
960  const CaloDetDescrElement *DDE1 =getDDE(id1);
961 
962  id=(mask2[imap-1]<<12) + (eta_index << 5) +2*phi_index;
963  if(imap==2) id+= (8<<8);
964  Identifier id2((unsigned long long)(id<<44));
965  const CaloDetDescrElement *DDE2=getDDE(id2);
966 
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;
969  return false;
970  }
971  }
972 
973 
974 
975  }
976 
977  return true;
978 }

◆ deta()

double CaloGeometry::deta ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 752 of file CaloGeometry.cxx.

753 {
754  int side=0;
755  if(eta>0) side=1;
756 
757  double mineta=m_min_eta_sample[side][sample];
758  double maxeta=m_max_eta_sample[side][sample];
759 
760  if(eta<mineta)
761  {
762  return fabs(eta-mineta);
763  }
764  else if(eta>maxeta)
765  {
766  return fabs(eta-maxeta);
767  }
768  else
769  {
770  double d1=fabs(eta-mineta);
771  double d2=fabs(eta-maxeta);
772  if(d1<d2) return -d1;
773  else return -d2;
774  }
775 }

◆ DoGraphs()

bool CaloGeometry::DoGraphs ( ) const
inline

Definition at line 68 of file CaloGeometry.h.

68 {return m_dographs;};

◆ DrawGeoForPhi0()

TCanvas * CaloGeometry::DrawGeoForPhi0 ( )

Definition at line 440 of file CaloGeometry.cxx.

441 {
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);
444  hcalolayout->Draw();
445  hcalolayout->SetStats(0);
446  hcalolayout->GetYaxis()->SetTitleOffset(1.4);
447 
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);
452  leg->SetNColumns(2);
453 
454  for(int sample=0;sample<MAX_SAMPLING;++sample) {
456  if(gr) {
457  std::string sname=Form("Sampling %2d : ",sample);
458  sname+=SamplingName(sample);
459  leg->AddEntry(gr,sname.c_str(),"LF");
460  }
461  }
462  leg->Draw();
463  return c;
464 }

◆ DrawGeoSampleForPhi0()

TGraph * CaloGeometry::DrawGeoSampleForPhi0 ( int  sample,
int  calocol,
bool  print = false 
)

Definition at line 349 of file CaloGeometry.cxx.

350 {
351  if (sample < CaloSampling::PreSamplerB || sample >= CaloSampling::Unknown) {
352  return nullptr;
353  }
354  TGraph* firstgr=nullptr;
355  cout<<"Start sample "<<sample<<" ("<<SamplingName(sample)<<")"<<endl;
356  int ngr=0;
358  const CaloDetDescrElement* theDDE=(*calo_iter).second;
359  if(theDDE) {
360  TVector3 cv;
361  TGraph* gr=new TGraph(5);
362  gr->SetLineColor(TMath::Abs(calocol));
363  gr->SetFillColor(TMath::Abs(calocol));
364  if(calocol<0) {
365  gr->SetFillStyle(1001);
366  } else {
367  gr->SetFillStyle(0);
368  }
369  gr->SetLineWidth(2);
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;
378  double eta=theDDE->eta();
379  double deta=theDDE->deta();
380 
382  dr*=2;
383  }
384  if(print) {
385  cout<<"sample="<<sample<<" r="<<r<<" dr="<<dr<<" eta="<<eta<<" deta="<<deta<<" x="<<x<<" y="<<y<<" z="<<z<<" dz="<<dz<<endl;
386  }
387  if(isCaloBarrel(sample)) {
388  cv.SetPtEtaPhi(r-dr/2,eta-deta/2,0);
389  gr->SetPoint(0,cv.Z(),cv.Pt());
390  gr->SetPoint(4,cv.Z(),cv.Pt());
391  cv.SetPtEtaPhi(r-dr/2,eta+deta/2,0);
392  gr->SetPoint(1,cv.Z(),cv.Pt());
393  cv.SetPtEtaPhi(r+dr/2,eta+deta/2,0);
394  gr->SetPoint(2,cv.Z(),cv.Pt());
395  cv.SetPtEtaPhi(r+dr/2,eta-deta/2,0);
396  gr->SetPoint(3,cv.Z(),cv.Pt());
397  } else {
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());
408  } else {
409  double minr=r;
410  double maxr=r;
411  for(double px=x-dx/2;px<=x+dx/2;px+=dx) {
412  for(double py=y-dy/2;py<=y+dy/2;py+=dy) {
413  double pr=TMath::Sqrt(px*px+py*py);
414  minr=TMath::Min(minr,pr);
415  maxr=TMath::Max(maxr,pr);
416  }
417  }
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());
427  }
428  }
429  //if(calocol[sample]>0) gr->Draw("Lsame");
430  // else gr->Draw("LFsame");
431  gr->Draw("LFsame");
432  if(ngr==0) firstgr=gr;
433  ++ngr;
434  }
435  }
436  cout<<"Done sample "<<sample<<" ("<<SamplingName(sample)<<")="<<ngr<<endl;
437  return firstgr;
438 }

◆ 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.

592  {
593 
594  double rmin = m_FCal_rmin[sampling-21];
595  double rmax = m_FCal_rmax[sampling-21];
596  int isam=sampling-20;
597  double a=1.;
598  const double b=0.01;
599  const int nmax=100;
600  int i=0;
601 
602  const double r = sqrt(x*x +y*y);
603  if(r==0.) return false;
604  const double r_inverse=1./r;
605 
606  if((r/rmax)>(rmin*r_inverse)){
607  x=x*rmax*r_inverse;
608  y=y*rmax*r_inverse;
609  while((!m_FCal_ChannelMap.getTileID(isam, a*x, a*y, ieta, iphi)) && i<nmax){
610  a-=b;
611  i++;
612  }
613  }
614  else {
615  x=x*rmin*r_inverse;
616  y=y*rmin*r_inverse;
617  while((!m_FCal_ChannelMap.getTileID(isam, a*x, a*y, ieta, iphi)) && i<nmax){
618  a+=b;
619  i++;
620  }
621 
622  }
623  if(steps)*steps=i+1;
624  return i<nmax;
625 }

◆ getDDE() [1/3]

const CaloDetDescrElement * CaloGeometry::getDDE ( Identifier  identify)
virtual

Implements ICaloGeometry.

Definition at line 466 of file CaloGeometry.cxx.

467 {
468  return m_cells[identify];
469 }

◆ 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.

476 {
477  if(sampling<0) return nullptr;
478  if(sampling>=MAX_SAMPLING) return nullptr;
479  if(m_cells_in_regions[sampling].empty()) return nullptr;
480 
481  float dist = 0;
482  const CaloDetDescrElement* bestDDE=nullptr;
483  if(!distance) distance=&dist;
484  *distance=+10000000;
485  int intsteps;
486  int beststeps;
487  if(steps) beststeps=(*steps);
488  else beststeps=0;
489 
490  if(sampling<21) {
491  for(int skip_range_check=0;skip_range_check<=1;++skip_range_check) {
492  for(unsigned int j=0;j<m_cells_in_regions[sampling].size();++j) {
493  if(!skip_range_check) {
494  if(eta<m_cells_in_regions[sampling][j]->mineta()) continue;
495  if(eta>m_cells_in_regions[sampling][j]->maxeta()) continue;
496  }
497  if(steps) intsteps=(*steps);
498  else intsteps=0;
499  if(m_debug) {
500  cout<<"CaloGeometry::getDDE : check map"<<j<<" skip_range_check="<<skip_range_check<<endl;
501  }
502  float newdist;
503  const CaloDetDescrElement* newDDE=m_cells_in_regions[sampling][j]->getDDE(eta,phi,&newdist,&intsteps);
504  if(m_debug) {
505  cout<<"CaloGeometry::getDDE : map"<<j<<" dist="<<newdist<<" best dist="<<*distance<<" steps="<<intsteps<<endl;
506  }
507  if(newdist<*distance) {
508  bestDDE=newDDE;
509  *distance=newdist;
510  if(steps) beststeps=intsteps;
511  if(newdist<-0.1) break; //stop, we are well within the hit cell
512  }
513  }
514  if(bestDDE) break;
515  }
516  } else {
517  return nullptr;
518  //for(int skip_range_check=0;skip_range_check<=1;++skip_range_check) {
519  //for(unsigned int j=0;j<m_cells_in_regions[sampling].size();++j) {
520  //if(!skip_range_check) {
521  //if(eta<m_cells_in_regions[sampling][j]->minx()) continue;
522  //if(eta>m_cells_in_regions[sampling][j]->maxx()) continue;
523  //if(phi<m_cells_in_regions[sampling][j]->miny()) continue;
524  //if(phi>m_cells_in_regions[sampling][j]->maxy()) continue;
525  //}
526  //if(steps) intsteps=*steps;
527  //else intsteps=0;
528  //if(m_debug) {
529  //cout<<"CaloGeometry::getDDE : check map"<<j<<" skip_range_check="<<skip_range_check<<endl;
530  //}
531  //float newdist;
532  //const CaloGeoDetDescrElement* newDDE=m_cells_in_regions[sampling][j]->getDDE(eta,phi,&newdist,&intsteps);
533  //if(m_debug) {
534  //cout<<"CaloGeometry::getDDE : map"<<j<<" dist="<<newdist<<" best dist="<<*distance<<" steps="<<intsteps<<endl;
535  //}
536  //if(newdist<*distance) {
537  //bestDDE=newDDE;
538  //*distance=newdist;
539  //if(steps) beststeps=intsteps;
540  //if(newdist<-0.1) break; //stop, we are well within the hit cell
541  //}
542  //}
543  //if(bestDDE) break;
544  //}
545  }
546  if(steps) *steps=beststeps;
547  return bestDDE;
548 }

◆ getDDE() [3/3]

const CaloDetDescrElement * CaloGeometry::getDDE ( int  sampling,
Identifier  identify 
)
virtual

Definition at line 470 of file CaloGeometry.cxx.

471 {
472  return m_cells_in_sampling[sampling][identify];
473 }

◆ GetFCAL_ChannelMap()

FCAL_ChannelMap* CaloGeometry::GetFCAL_ChannelMap ( )
inline

Definition at line 73 of file CaloGeometry.h.

73 {return &m_FCal_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.

550  {
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};
555  bool found = m_FCal_ChannelMap.getTileID(isam, x, y, ieta, iphi);
556  if(steps && found) *steps=0;
557  if(!found) {
558  //cout << "Warning: Hit is not matched with any FCal cell! Looking for the closest cell" << endl;
559  found = getClosestFCalCellIndex(sampling, x, y, ieta, iphi,steps);
560  }
561  if(!found) {
562  cout << "Error: Unable to find the closest FCal cell!" << endl;
563  return nullptr;
564  }
565 
566 
567  //cout << "CaloGeometry::getFCalDDE: x:" << x << " y: " << y << " ieta: " << ieta << " iphi: " << iphi << " cmap->x(): " << m_FCal_ChannelMap.x(isam,ieta,iphi) << " cmap->y(): " << m_FCal_ChannelMap.y(isam,ieta,iphi) << endl;
568  Long64_t id = (ieta << 5) + 2*iphi;
569  if(isam==2)id+= (8<<8);
570 
571 
572 
573  if(z>0) id+=(mask2[isam-1] << 12);
574  else id+=(mask1[isam-1] << 12);
575 
576  id = id << 44;
577  Identifier identify((unsigned long long)id);
578  const CaloDetDescrElement* foundcell=m_cells[identify];
579 
580  // Report the shortest distance in x or y to the face of the cell if outside the cell.
581  // If inside the cell this will be negative and be the shortest distance to a cell face.
582  float dist = 0;
583  if(!distance) distance=&dist;
584  float distanceX = abs(foundcell->x()-x) - foundcell->dx()/2;
585  float distanceY = abs(foundcell->y()-y) - foundcell->dy()/2;
586  *distance = max(distanceX,distanceY);
587 
588  return foundcell;
589 }

◆ GetGraph()

TGraphErrors* CaloGeometry::GetGraph ( unsigned int  sample) const
inline

Definition at line 66 of file CaloGeometry.h.

66 {return m_graph_layers[sample];};

◆ InitRZmaps()

void CaloGeometry::InitRZmaps ( )
protectedvirtual

Definition at line 197 of file CaloGeometry.cxx.

198 {
199  FSmap< double , double > rz_map_eta [2][MAX_SAMPLING];
200  FSmap< double , double > rz_map_rmid[2][MAX_SAMPLING];
201  FSmap< double , double > rz_map_zmid[2][MAX_SAMPLING];
202  FSmap< double , double > rz_map_rent[2][MAX_SAMPLING];
203  FSmap< double , double > rz_map_zent[2][MAX_SAMPLING];
204  FSmap< double , double > rz_map_rext[2][MAX_SAMPLING];
205  FSmap< double , double > rz_map_zext[2][MAX_SAMPLING];
206  FSmap< double , int > rz_map_n [2][MAX_SAMPLING];
207 
208 
209  for(unsigned int side=0;side<=1;++side) for(unsigned int sample=0;sample<MAX_SAMPLING;++sample)
210  {
211  m_min_eta_sample[side][sample]=+1000;
212  m_max_eta_sample[side][sample]=-1000;
213  }
214 
215 
216  for(t_cellmap::iterator calo_iter=m_cells.begin();calo_iter!=m_cells.end();++calo_iter)
217  {
218  const CaloDetDescrElement* theDDE=(*calo_iter).second;
219  if(theDDE)
220  {
221  unsigned int sample=theDDE->getSampling();
222 
223  int side=0;
224  int sign_side=-1;
225  double eta_raw=theDDE->eta_raw();
226  if(eta_raw>0) {
227  side=1;
228  sign_side=+1;
229  }
230 
231  if(!m_cells_in_sampling_for_phi0[sample][eta_raw]) {
232  m_cells_in_sampling_for_phi0[sample][eta_raw]=theDDE;
233  } else {
234  if(TMath::Abs(theDDE->phi()) < TMath::Abs(m_cells_in_sampling_for_phi0[sample][eta_raw]->phi())) {
235  m_cells_in_sampling_for_phi0[sample][eta_raw]=theDDE;
236  }
237  }
238 
239  double min_eta=theDDE->eta()-theDDE->deta()/2;
240  double max_eta=theDDE->eta()+theDDE->deta()/2;
243 
244  if(rz_map_eta[side][sample].find(eta_raw)==rz_map_eta[side][sample].end()) {
245  rz_map_eta [side][sample][eta_raw]=0;
246  rz_map_rmid[side][sample][eta_raw]=0;
247  rz_map_zmid[side][sample][eta_raw]=0;
248  rz_map_rent[side][sample][eta_raw]=0;
249  rz_map_zent[side][sample][eta_raw]=0;
250  rz_map_rext[side][sample][eta_raw]=0;
251  rz_map_zext[side][sample][eta_raw]=0;
252  rz_map_n [side][sample][eta_raw]=0;
253  }
254  rz_map_eta [side][sample][eta_raw]+=theDDE->eta();
255  rz_map_rmid[side][sample][eta_raw]+=theDDE->r();
256  rz_map_zmid[side][sample][eta_raw]+=theDDE->z();
257  double drh=theDDE->dr()/2;
258  double dzh=theDDE->dz();
259  if(sample<=CaloSampling::EMB3) { // ensure we have a valid sampling
260  drh=theDDE->dr();
261  }
262  // An `else` would be good here since we can't continue with a *bad* sampling...
263  // Should most likely handle the situation nicely rather than with a crash.
264 
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;
269  rz_map_n [side][sample][eta_raw]++;
270 
271  }
272  }
273 
274  for(int side=0;side<=1;++side)
275  {
276  for(int sample=0;sample<MAX_SAMPLING;++sample)
277  {
278 
279  if(!rz_map_n[side][sample].empty())
280  {
281  for(FSmap< double , int >::iterator iter=rz_map_n[side][sample].begin();iter!=rz_map_n[side][sample].end();++iter)
282  {
283  double eta_raw=iter->first;
284  if(iter->second<1)
285  {
286  //ATH_MSG_WARNING("rz-map for side="<<side<<" sample="<<sample<<" eta_raw="<<eta_raw<<" : #cells="<<iter->second<<" !!!");
287  }
288  else
289  {
290  double eta =rz_map_eta[side][sample][eta_raw]/iter->second;
291  double rmid=rz_map_rmid[side][sample][eta_raw]/iter->second;
292  double zmid=rz_map_zmid[side][sample][eta_raw]/iter->second;
293  double rent=rz_map_rent[side][sample][eta_raw]/iter->second;
294  double zent=rz_map_zent[side][sample][eta_raw]/iter->second;
295  double rext=rz_map_rext[side][sample][eta_raw]/iter->second;
296  double zext=rz_map_zext[side][sample][eta_raw]/iter->second;
297 
304  }
305  }
306  //ATH_MSG_DEBUG("rz-map for side="<<side<<" sample="<<sample<<" #etas="<<m_rmid_map[side][sample].size());
307  }
308  else
309  {
310  std::cout<<"rz-map for side="<<side<<" sample="<<sample<<" is empty!!!"<<std::endl;
311  }
312  } //sample
313  } //side
314 
315  if(DoGraphs()) {
316  for(int sample=0;sample<MAX_SAMPLING;++sample) {
317  m_graph_layers[sample]=new TGraphErrors(rz_map_n[0][sample].size()+rz_map_n[1][sample].size());
318  m_graph_layers[sample]->SetMarkerColor(TMath::Abs(CaloGeometry_calocol[sample]));
319  m_graph_layers[sample]->SetLineColor(TMath::Abs(CaloGeometry_calocol[sample]));
320  int np=0;
321  for(int side=0;side<=1;++side) {
322  for(FSmap< double , int >::iterator iter=rz_map_n[side][sample].begin();iter!=rz_map_n[side][sample].end();++iter) {
323  double eta_raw=iter->first;
324  int sign_side=-1;
325  if(eta_raw>0) sign_side=+1;
326  //double eta =rz_map_eta[side][sample][eta_raw]/iter->second;
327  double rmid=rz_map_rmid[side][sample][eta_raw]/iter->second;
328  double zmid=rz_map_zmid[side][sample][eta_raw]/iter->second;
329  //double rent=rz_map_rent[side][sample][eta_raw]/iter->second;
330  //double zent=rz_map_zent[side][sample][eta_raw]/iter->second;
331  double rext=rz_map_rext[side][sample][eta_raw]/iter->second;
332  double zext=rz_map_zext[side][sample][eta_raw]/iter->second;
333  m_graph_layers[sample]->SetPoint(np,zmid,rmid);
334  /*
335  if(isCaloBarrel(sample)) {
336  m_graph_layers[sample]->SetPointError(np,0,rext-rmid);
337  } else {
338  m_graph_layers[sample]->SetPointError(np,(zext-zent)*sign_side,0);
339  }
340  */
341  m_graph_layers[sample]->SetPointError(np,(zext-zmid)*sign_side,rext-rmid);
342  ++np;
343  }
344  }
345  }
346  }
347 }

◆ isCaloBarrel()

bool CaloGeometry::isCaloBarrel ( int  sample) const
inlinevirtual

Implements ICaloGeometry.

Definition at line 63 of file CaloGeometry.h.

63 {return m_isCaloBarrel[sample];};

◆ minmaxeta()

void CaloGeometry::minmaxeta ( int  sample,
double  eta,
double &  mineta,
double &  maxeta 
) const
virtual

Implements ICaloGeometry.

Definition at line 778 of file CaloGeometry.cxx.

779 {
780  int side=0;
781  if(eta>0) side=1;
782 
783  mineta=m_min_eta_sample[side][sample];
784  maxeta=m_max_eta_sample[side][sample];
785 }

◆ post_process()

void CaloGeometry::post_process ( int  layer)
protectedvirtual

Definition at line 121 of file CaloGeometry.cxx.

122 {
123  //cout<<"post processing sampling "<<sampling<<endl;
124  bool found_overlap=false;
125  for(unsigned int j=0;j<m_cells_in_regions[sampling].size();++j) {
126  /*
127  cout<<"Sample "<<sampling<<": checking map "<<j<<"/"<<m_cells_in_regions[sampling].size();
128  for(unsigned int k=0;k<m_cells_in_regions[sampling].size();++k) {
129  cout<<", "<<k<<":"<<m_cells_in_regions[sampling][k]->size();
130  }
131  cout<<endl;
132  */
133  for(unsigned int i=j+1;i<m_cells_in_regions[sampling].size();++i) {
134  if(m_cells_in_regions[sampling][i]->has_overlap(m_cells_in_regions[sampling][j])) {
135  if(!found_overlap) {
136  cout<<"Sample "<<sampling<<", starting maps : "<<m_cells_in_regions[sampling].size();
137  for(unsigned int k=0;k<m_cells_in_regions[sampling].size();++k) {
138  cout<<", "<<k<<":"<<m_cells_in_regions[sampling][k]->size();
139  }
140  cout<<endl;
141  }
142  found_overlap=true;
143  /*
144  cout<<"Sample "<<sampling<<": Found overlap between map "<<j<<" and "<<i<<", "
145  <<m_cells_in_regions[sampling].size()<<" total maps"<<endl;
146  cout<<" current configuration map "<<j<<"/"<<m_cells_in_regions[sampling].size();
147  for(unsigned int k=0;k<m_cells_in_regions[sampling].size();++k) {
148  cout<<", "<<k<<":"<<m_cells_in_regions[sampling][k]->size();
149  }
150  cout<<endl;
151 
152  PrintMapInfo(sampling,j);
153  PrintMapInfo(sampling,i);
154  */
155 
156  CaloGeometryLookup* toremove=m_cells_in_regions[sampling][i];
157  toremove->merge_into_ref(m_cells_in_regions[sampling][j]);
158 
159  /*
160  cout<<" New ";
161  PrintMapInfo(sampling,j);
162  */
163 
164  for(unsigned int k=i;k<m_cells_in_regions[sampling].size()-1;++k) {
165  m_cells_in_regions[sampling][k]=m_cells_in_regions[sampling][k+1];
166  m_cells_in_regions[sampling][k]->set_index(k);
167  }
168  m_cells_in_regions[sampling].resize(m_cells_in_regions[sampling].size()-1);
169 
170  /*
171  cout<<" new configuration map "<<j<<"/"<<m_cells_in_regions[sampling].size();
172  for(unsigned int k=0;k<m_cells_in_regions[sampling].size();++k) {
173  cout<<", "<<k<<":"<<m_cells_in_regions[sampling][k]->size();
174  }
175  cout<<endl;
176  */
177 
178  --i;
179  }
180  }
181  }
182 
183  if(found_overlap) {
184  cout<<"Sample "<<sampling<<", final maps : "<<m_cells_in_regions[sampling].size();
185  for(unsigned int k=0;k<m_cells_in_regions[sampling].size();++k) {
186  cout<<", "<<k<<":"<<m_cells_in_regions[sampling][k]->size();
187  }
188  cout<<endl;
189  }
190 
191  if(found_overlap) {
192  cout<<"Run another round of ";
193  post_process(sampling);
194  }
195 }

◆ PostProcessGeometry()

bool CaloGeometry::PostProcessGeometry ( )
virtual

Implements ICaloGeometry.

Definition at line 627 of file CaloGeometry.cxx.

628 {
629  for(int i=0;i<MAX_SAMPLING;++i) {
630  post_process(i);
631  for(unsigned int j=0;j<m_cells_in_regions[i].size();++j) {
632  m_cells_in_regions[i][j]->post_process();
633  }
634  //if(i>=21) break;
635  }
636 
637  InitRZmaps();
638 
639  /*
640  cout<<"all : "<<m_cells.size()<<endl;
641  for(int sampling=0;sampling<MAX_SAMPLING;++sampling) {
642  cout<<"cells sampling "<<sampling<<" : "<<m_cells_in_sampling[sampling].size()<<" cells";
643  cout<<", "<<m_cells_in_regions[sampling].size()<<" lookup map(s)"<<endl;
644  for(unsigned int j=0;j<m_cells_in_regions[sampling].size();++j) {
645  PrintMapInfo(sampling,j);
646  //break;
647  }
648  //if(i>0) break;
649  }
650  */
651 
652  return true;
653 }

◆ PrintMapInfo()

void CaloGeometry::PrintMapInfo ( int  i,
int  j 
)
virtual

Definition at line 93 of file CaloGeometry.cxx.

94 {
95  cout<<" map "<<j<<": "<<m_cells_in_regions[i][j]->size()<<" cells";
96  if(i<21) {
97  cout<<", "<<m_cells_in_regions[i][j]->cell_grid_eta()<<"*"<<m_cells_in_regions[i][j]->cell_grid_phi();
98  cout<<", deta="<<m_cells_in_regions[i][j]->deta().mean()<<"+-"<<m_cells_in_regions[i][j]->deta().rms();
99  cout<<", dphi="<<m_cells_in_regions[i][j]->dphi().mean()<<"+-"<<m_cells_in_regions[i][j]->dphi().rms();
100  cout<<", mineta="<<m_cells_in_regions[i][j]->mineta()<<", maxeta="<<m_cells_in_regions[i][j]->maxeta();
101  cout<<", minphi="<<m_cells_in_regions[i][j]->minphi()<<", maxphi="<<m_cells_in_regions[i][j]->maxphi();
102  cout<<endl<<" ";
103  cout<<", mineta_raw="<<m_cells_in_regions[i][j]->mineta_raw()<<", maxeta_raw="<<m_cells_in_regions[i][j]->maxeta_raw();
104  cout<<", minphi_raw="<<m_cells_in_regions[i][j]->minphi_raw()<<", maxphi_raw="<<m_cells_in_regions[i][j]->maxphi_raw();
105  cout<<endl;
106  } else {
107  cout<<", "<<m_cells_in_regions[i][j]->cell_grid_eta()<<"*"<<m_cells_in_regions[i][j]->cell_grid_phi();
108  cout<<", dx="<<m_cells_in_regions[i][j]->dx().mean()<<"+-"<<m_cells_in_regions[i][j]->dx().rms();
109  cout<<", dy="<<m_cells_in_regions[i][j]->dy().mean()<<"+-"<<m_cells_in_regions[i][j]->dy().rms();
110  cout<<", mindx="<<m_cells_in_regions[i][j]->mindx();
111  cout<<", mindy="<<m_cells_in_regions[i][j]->mindy();
112  cout<<", minx="<<m_cells_in_regions[i][j]->minx()<<", maxx="<<m_cells_in_regions[i][j]->maxx();
113  cout<<", miny="<<m_cells_in_regions[i][j]->miny()<<", maxy="<<m_cells_in_regions[i][j]->maxy();
114  cout<<endl<<" ";
115  cout<<", minx_raw="<<m_cells_in_regions[i][j]->minx_raw()<<", maxx_raw="<<m_cells_in_regions[i][j]->maxx_raw();
116  cout<<", miny_raw="<<m_cells_in_regions[i][j]->miny_raw()<<", maxy_raw="<<m_cells_in_regions[i][j]->maxy_raw();
117  cout<<endl;
118  }
119 }

◆ rent()

double CaloGeometry::rent ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 812 of file CaloGeometry.cxx.

813 {
814  int side=0;
815  if(eta>0) side=1;
816 
817  return m_rent_map[side][sample].find_closest(eta)->second;
818 }

◆ rext()

double CaloGeometry::rext ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 837 of file CaloGeometry.cxx.

838 {
839  int side=0;
840  if(eta>0) side=1;
841 
842  return m_rext_map[side][sample].find_closest(eta)->second;
843 }

◆ rmid()

double CaloGeometry::rmid ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 787 of file CaloGeometry.cxx.

788 {
789  int side=0;
790  if(eta>0) side=1;
791 
792  return m_rmid_map[side][sample].find_closest(eta)->second;
793 }

◆ rpos()

double CaloGeometry::rpos ( int  sample,
double  eta,
int  subpos = CaloSubPos::SUBPOS_MID 
) const
virtual

Implements ICaloGeometry.

Definition at line 862 of file CaloGeometry.cxx.

863 {
864 
865  int side=0;
866  if(eta>0) side=1;
867 
868  if(subpos==CaloSubPos::SUBPOS_ENT) return m_rent_map[side][sample].find_closest(eta)->second;
869  if(subpos==CaloSubPos::SUBPOS_EXT) return m_rext_map[side][sample].find_closest(eta)->second;
870 
871  return m_rmid_map[side][sample].find_closest(eta)->second;
872 }

◆ rzent()

double CaloGeometry::rzent ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 828 of file CaloGeometry.cxx.

829 {
830  int side=0;
831  if(eta>0) side=1;
832 
833  if(isCaloBarrel(sample)) return m_rent_map[side][sample].find_closest(eta)->second;
834  else return m_zent_map[side][sample].find_closest(eta)->second;
835 }

◆ rzext()

double CaloGeometry::rzext ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 853 of file CaloGeometry.cxx.

854 {
855  int side=0;
856  if(eta>0) side=1;
857 
858  if(isCaloBarrel(sample)) return m_rext_map[side][sample].find_closest(eta)->second;
859  else return m_zext_map[side][sample].find_closest(eta)->second;
860 }

◆ rzmid()

double CaloGeometry::rzmid ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 803 of file CaloGeometry.cxx.

804 {
805  int side=0;
806  if(eta>0) side=1;
807 
808  if(isCaloBarrel(sample)) return m_rmid_map[side][sample].find_closest(eta)->second;
809  else return m_zmid_map[side][sample].find_closest(eta)->second;
810 }

◆ rzpos()

double CaloGeometry::rzpos ( int  sample,
double  eta,
int  subpos = CaloSubPos::SUBPOS_MID 
) const
virtual

Implements ICaloGeometry.

Definition at line 884 of file CaloGeometry.cxx.

885 {
886  int side=0;
887  if(eta>0) side=1;
888 
889  if(isCaloBarrel(sample)) {
890  if(subpos==CaloSubPos::SUBPOS_ENT) return m_rent_map[side][sample].find_closest(eta)->second;
891  if(subpos==CaloSubPos::SUBPOS_EXT) return m_rext_map[side][sample].find_closest(eta)->second;
892  return m_rmid_map[side][sample].find_closest(eta)->second;
893  } else {
894  if(subpos==CaloSubPos::SUBPOS_ENT) return m_zent_map[side][sample].find_closest(eta)->second;
895  if(subpos==CaloSubPos::SUBPOS_EXT) return m_zext_map[side][sample].find_closest(eta)->second;
896  return m_zmid_map[side][sample].find_closest(eta)->second;
897  }
898 }

◆ SamplingName()

std::string CaloGeometry::SamplingName ( int  sample)
static

Definition at line 900 of file CaloGeometry.cxx.

901 {
903 }

◆ SetDoGraphs()

void CaloGeometry::SetDoGraphs ( bool  dographs = true)
inline

Definition at line 67 of file CaloGeometry.h.

67 {m_dographs=dographs;};

◆ SetFCal_ChannelMap()

void CaloGeometry::SetFCal_ChannelMap ( const FCAL_ChannelMap fcal_ChannnelMap)
inline

Definition at line 74 of file CaloGeometry.h.

74 {m_FCal_ChannelMap=*fcal_ChannnelMap;}

◆ zent()

double CaloGeometry::zent ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 820 of file CaloGeometry.cxx.

821 {
822  int side=0;
823  if(eta>0) side=1;
824 
825  return m_zent_map[side][sample].find_closest(eta)->second;
826 }

◆ zext()

double CaloGeometry::zext ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 845 of file CaloGeometry.cxx.

846 {
847  int side=0;
848  if(eta>0) side=1;
849 
850  return m_zext_map[side][sample].find_closest(eta)->second;
851 }

◆ zmid()

double CaloGeometry::zmid ( int  sample,
double  eta 
) const
virtual

Implements ICaloGeometry.

Definition at line 795 of file CaloGeometry.cxx.

796 {
797  int side=0;
798  if(eta>0) side=1;
799 
800  return m_zmid_map[side][sample].find_closest(eta)->second;
801 }

◆ zpos()

double CaloGeometry::zpos ( int  sample,
double  eta,
int  subpos = CaloSubPos::SUBPOS_MID 
) const
virtual

Implements ICaloGeometry.

Definition at line 874 of file CaloGeometry.cxx.

875 {
876  int side=0;
877  if(eta>0) side=1;
878 
879  if(subpos==CaloSubPos::SUBPOS_ENT) return m_zent_map[side][sample].find_closest(eta)->second;
880  if(subpos==CaloSubPos::SUBPOS_EXT) return m_zext_map[side][sample].find_closest(eta)->second;
881  return m_zmid_map[side][sample].find_closest(eta)->second;
882 }

Member Data Documentation

◆ m_cells

t_cellmap CaloGeometry::m_cells
protected

Definition at line 101 of file CaloGeometry.h.

◆ m_cells_in_regions

std::vector< std::vector< CaloGeometryLookup* > > CaloGeometry::m_cells_in_regions
protected

Definition at line 104 of file CaloGeometry.h.

◆ m_cells_in_sampling

std::vector< t_cellmap > CaloGeometry::m_cells_in_sampling
protected

Definition at line 102 of file CaloGeometry.h.

◆ m_cells_in_sampling_for_phi0

std::vector< t_eta_cellmap > CaloGeometry::m_cells_in_sampling_for_phi0
protected

Definition at line 103 of file CaloGeometry.h.

◆ m_debug

std::atomic< bool > CaloGeometry::m_debug =false
static

Definition at line 32 of file CaloGeometry.h.

◆ m_debug_identify

const Identifier CaloGeometry::m_debug_identify
static

Definition at line 31 of file CaloGeometry.h.

◆ m_dographs

bool CaloGeometry::m_dographs
protected

Definition at line 116 of file CaloGeometry.h.

◆ m_FCal_ChannelMap

FCAL_ChannelMap CaloGeometry::m_FCal_ChannelMap
protected

Definition at line 118 of file CaloGeometry.h.

◆ m_FCal_rmax

std::vector<double> CaloGeometry::m_FCal_rmax
protected

Definition at line 119 of file CaloGeometry.h.

◆ m_FCal_rmin

std::vector<double> CaloGeometry::m_FCal_rmin
protected

Definition at line 119 of file CaloGeometry.h.

◆ m_graph_layers

std::vector< TGraphErrors* > CaloGeometry::m_graph_layers
protected

Definition at line 117 of file CaloGeometry.h.

◆ m_isCaloBarrel

std::vector< bool > CaloGeometry::m_isCaloBarrel
protected

Definition at line 106 of file CaloGeometry.h.

◆ m_max_eta_sample

std::vector< double > CaloGeometry::m_max_eta_sample[2]
protected

Definition at line 108 of file CaloGeometry.h.

◆ m_min_eta_sample

std::vector< double > CaloGeometry::m_min_eta_sample[2]
protected

Definition at line 107 of file CaloGeometry.h.

◆ m_rent_map

std::vector< FSmap< double , double > > CaloGeometry::m_rent_map[2]
protected

Definition at line 111 of file CaloGeometry.h.

◆ m_rext_map

std::vector< FSmap< double , double > > CaloGeometry::m_rext_map[2]
protected

Definition at line 113 of file CaloGeometry.h.

◆ m_rmid_map

std::vector< FSmap< double , double > > CaloGeometry::m_rmid_map[2]
protected

Definition at line 109 of file CaloGeometry.h.

◆ m_zent_map

std::vector< FSmap< double , double > > CaloGeometry::m_zent_map[2]
protected

Definition at line 112 of file CaloGeometry.h.

◆ m_zext_map

std::vector< FSmap< double , double > > CaloGeometry::m_zext_map[2]
protected

Definition at line 114 of file CaloGeometry.h.

◆ m_zmid_map

std::vector< FSmap< double , double > > CaloGeometry::m_zmid_map[2]
protected

Definition at line 110 of file CaloGeometry.h.

◆ MAX_SAMPLING

const int CaloGeometry::MAX_SAMPLING = CaloCell_ID_FCS::MaxSample
static

Definition at line 29 of file CaloGeometry.h.


The documentation for this class was generated from the following files:
CaloDetDescrElement::deta
float deta() const
cell deta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:356
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
beamspotman.r
def r
Definition: beamspotman.py:676
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
CaloGeometry::m_max_eta_sample
std::vector< double > m_max_eta_sample[2]
Definition: CaloGeometry.h:108
CaloGeometry::post_process
virtual void post_process(int layer)
Definition: CaloGeometry.cxx:121
CaloGeometry::DrawGeoSampleForPhi0
TGraph * DrawGeoSampleForPhi0(int sample, int calocol, bool print=false)
Definition: CaloGeometry.cxx:349
CaloGeometry::rent
double rent(int sample, double eta) const
Definition: CaloGeometry.cxx:812
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
CaloGeometry::MAX_SAMPLING
static const int MAX_SAMPLING
Definition: CaloGeometry.h:29
test_pyathena.px
px
Definition: test_pyathena.py:18
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
max
#define max(a, b)
Definition: cfImp.cxx:41
CaloGeometry::m_graph_layers
std::vector< TGraphErrors * > m_graph_layers
Definition: CaloGeometry.h:117
CaloGeometry::m_FCal_rmax
std::vector< double > m_FCal_rmax
Definition: CaloGeometry.h:119
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
TileRawChannelBuilderOpt2::lookup
const unsigned short lookup[2401]
Definition: TileRawChannelBuilderOpt2FilterLookup.h:21
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
CaloDetDescrElement::y
float y() const
cell y
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:365
CaloGeometry::isCaloBarrel
bool isCaloBarrel(int sample) const
Definition: CaloGeometry.h:63
FCAL_ChannelMap::end
tileMap_const_iterator end(int isam) const
Definition: LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCAL_ChannelMap.h:148
CaloGeometry::m_zext_map
std::vector< FSmap< double, double > > m_zext_map[2]
Definition: CaloGeometry.h:114
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
CaloDetDescrElement::dr
float dr() const
cell dr
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:360
skel.it
it
Definition: skel.GENtoEVGEN.py:423
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
gr
#define gr
CaloGeometry::zmid
double zmid(int sample, double eta) const
Definition: CaloGeometry.cxx:795
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
CaloSampling::barrelPattern
static constexpr unsigned int barrelPattern()
Get the bit-pattern for barrel samplings.
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:75
CaloGeometry::rext
double rext(int sample, double eta) const
Definition: CaloGeometry.cxx:837
CaloGeometry::m_rent_map
std::vector< FSmap< double, double > > m_rent_map[2]
Definition: CaloGeometry.h:111
x
#define x
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
CaloDetDescrElement::eta_raw
float eta_raw() const
cell eta_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:350
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
FSmap< double, double >
TRT::Hit::side
@ side
Definition: HitInfo.h:83
CaloDetDescrElement::dz
float dz() const
cell dz
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:379
CaloGeometry::m_FCal_ChannelMap
FCAL_ChannelMap m_FCal_ChannelMap
Definition: CaloGeometry.h:118
CaloGeometry::zent
double zent(int sample, double eta) const
Definition: CaloGeometry.cxx:820
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
CaloGeometry::SamplingName
static std::string SamplingName(int sample)
Definition: CaloGeometry.cxx:900
CaloGeometry::m_rmid_map
std::vector< FSmap< double, double > > m_rmid_map[2]
Definition: CaloGeometry.h:109
CaloSampling::getSamplingPattern
static unsigned int getSamplingPattern(const CaloSample s)
Get a unsigned with one bit set
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:36
beamspotman.steps
int steps
Definition: beamspotman.py:505
CaloGeometry::getClosestFCalCellIndex
bool getClosestFCalCellIndex(int sampling, float x, float y, int &ieta, int &iphi, int *steps=0)
Definition: CaloGeometry.cxx:592
id2
HWIdentifier id2
Definition: LArRodBlockPhysicsV0.cxx:564
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
z
#define z
CaloGeometry::m_cells
t_cellmap m_cells
Definition: CaloGeometry.h:101
CaloGeometry::m_rext_map
std::vector< FSmap< double, double > > m_rext_map[2]
Definition: CaloGeometry.h:113
CaloGeometry::m_FCal_rmin
std::vector< double > m_FCal_rmin
Definition: CaloGeometry.h:119
CaloGeometryLookup
Definition: CaloGeometryLookup.h:25
FSmap::iterator
std::map< _Key, _Tp >::iterator iterator
Definition: FSmap.h:14
TileDCSDataPlotter.pr
pr
Definition: TileDCSDataPlotter.py:922
FCAL_ChannelMap::getTileID
bool getTileID(int isam, float x, float y, int &eta, int &phi) const
-— For the new LArFCAL_ID Identifier
Definition: LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCAL_ChannelMap.cxx:212
CaloGeometry::m_min_eta_sample
std::vector< double > m_min_eta_sample[2]
Definition: CaloGeometry.h:107
compute_lumi.leg
leg
Definition: compute_lumi.py:95
createCablingJSON.eta_index
int eta_index
Definition: createCablingJSON.py:9
SUBPOS_ENT
@ SUBPOS_ENT
Definition: FastCaloSim_CaloCell_ID.h:12
module_driven_slicing.max_eta
max_eta
Definition: module_driven_slicing.py:166
CaloGeometryLookup::merge_into_ref
void merge_into_ref(CaloGeometryLookup *ref)
Definition: CaloGeometryLookup.cxx:63
CaloGeometry::m_cells_in_sampling_for_phi0
std::vector< t_eta_cellmap > m_cells_in_sampling_for_phi0
Definition: CaloGeometry.h:103
Amg::py
@ py
Definition: GeoPrimitives.h:39
CaloGeometry::DoGraphs
bool DoGraphs() const
Definition: CaloGeometry.h:68
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:191
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CaloGeometry_calocol
const int CaloGeometry_calocol[24]
Definition: CaloGeometry.cxx:27
CaloGeometry::m_debug
static std::atomic< bool > m_debug
Definition: CaloGeometry.h:32
CaloGeometry::m_zmid_map
std::vector< FSmap< double, double > > m_zmid_map[2]
Definition: CaloGeometry.h:110
CaloDetDescrElement::x
float x() const
cell x
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:363
CaloGeometry::m_cells_in_sampling
std::vector< t_cellmap > m_cells_in_sampling
Definition: CaloGeometry.h:102
makeTRTBarrelCans.dy
tuple dy
Definition: makeTRTBarrelCans.py:21
SUBPOS_EXT
@ SUBPOS_EXT
Definition: FastCaloSim_CaloCell_ID.h:13
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
CaloGeometry::getDDE
virtual const CaloDetDescrElement * getDDE(Identifier identify)
Definition: CaloGeometry.cxx:466
CaloDetDescrElement::dx
float dx() const
cell dx
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:375
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
CaloGeometry::deta
double deta(int sample, double eta) const
Definition: CaloGeometry.cxx:752
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
CaloDetDescrElement::z
float z() const
cell z
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:367
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
CaloGeometry::InitRZmaps
virtual void InitRZmaps()
Definition: CaloGeometry.cxx:197
makeTRTBarrelCans.dx
tuple dx
Definition: makeTRTBarrelCans.py:20
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
FCAL_ChannelMap::begin
tileMap_const_iterator begin(int isam) const
Definition: LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/FCAL_ChannelMap.h:147
module_driven_slicing.min_eta
min_eta
Definition: module_driven_slicing.py:166
CaloCell_ID_FCS::FCAL2
@ FCAL2
Definition: FastCaloSim_CaloCell_ID.h:42
CaloDetDescrElement::eta
float eta() const
cell eta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:344
CaloGeometry::m_cells_in_regions
std::vector< std::vector< CaloGeometryLookup * > > m_cells_in_regions
Definition: CaloGeometry.h:104
CaloDetDescrElement::phi
float phi() const
cell phi
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:346
FCAL_ChannelMap::tileSize
void tileSize(int sam, int eta, int phi, float &dx, float &dy) const
Definition: LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/FCAL_ChannelMap.cxx:429
CaloGeometry::m_zent_map
std::vector< FSmap< double, double > > m_zent_map[2]
Definition: CaloGeometry.h:112
CaloSampling::getSamplingName
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
Definition: Calorimeter/CaloGeoHelpers/Root/CaloSampling.cxx:18
CaloDetDescrElement::r
float r() const
cell r
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:348
CaloGeometry::zext
double zext(int sample, double eta) const
Definition: CaloGeometry.cxx:845
CaloGeometry::rmid
double rmid(int sample, double eta) const
Definition: CaloGeometry.cxx:787
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
CaloDetDescrElement::dy
float dy() const
cell dy
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:377
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
python.compressB64.c
def c
Definition: compressB64.py:93
nmax
const int nmax(200)
CaloGeometry::m_isCaloBarrel
std::vector< bool > m_isCaloBarrel
Definition: CaloGeometry.h:106
CaloGeometry::m_dographs
bool m_dographs
Definition: CaloGeometry.h:116
fitman.k
k
Definition: fitman.py:528