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

#include <CaloGeometryFromCaloDDM.h>

Inheritance diagram for CaloGeometryFromCaloDDM:
Collaboration diagram for CaloGeometryFromCaloDDM:

Public Member Functions

 CaloGeometryFromCaloDDM ()
 
virtual ~CaloGeometryFromCaloDDM ()
 
bool LoadGeometryFromCaloDDM (const CaloDetDescrManager *calo_dd_man)
 
bool LoadFCalChannelMapFromFCalDDM (const FCALDetectorManager *fcal_dd_man)
 
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)
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

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
 

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Definition at line 15 of file CaloGeometryFromCaloDDM.h.

Constructor & Destructor Documentation

◆ CaloGeometryFromCaloDDM()

CaloGeometryFromCaloDDM::CaloGeometryFromCaloDDM ( )

Definition at line 9 of file CaloGeometryFromCaloDDM.cxx.

10  : CaloGeometry()
11  , AthMessaging("CaloGeometryFromCaloDDM")
12 {
13 }

◆ ~CaloGeometryFromCaloDDM()

CaloGeometryFromCaloDDM::~CaloGeometryFromCaloDDM ( )
virtualdefault

Member Function Documentation

◆ addcell()

void CaloGeometry::addcell ( const CaloDetDescrElement cell)
protectedvirtualinherited

Definition at line 67 of file CaloGeometry.cxx.

68 {
69  int sampling=cell->getSampling();
70  Identifier identify=cell->identify();
71 
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)
virtualinherited

Implements ICaloGeometry.

◆ calculateFCalRminRmax()

void CaloGeometry::calculateFCalRminRmax ( )
inherited

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 ( )
virtualinherited

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
virtualinherited

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
inlineinherited

Definition at line 68 of file CaloGeometry.h.

68 {return m_dographs;};

◆ DrawGeoForPhi0()

TCanvas * CaloGeometry::DrawGeoForPhi0 ( )
inherited

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 
)
inherited

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 
)
inherited

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)
virtualinherited

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 
)
virtualinherited

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 
)
virtualinherited

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 ( )
inlineinherited

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 
)
virtualinherited

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
inlineinherited

Definition at line 66 of file CaloGeometry.h.

66 {return m_graph_layers[sample];};

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ InitRZmaps()

void CaloGeometry::InitRZmaps ( )
protectedvirtualinherited

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
inlinevirtualinherited

Implements ICaloGeometry.

Definition at line 63 of file CaloGeometry.h.

63 {return m_isCaloBarrel[sample];};

◆ LoadFCalChannelMapFromFCalDDM()

bool CaloGeometryFromCaloDDM::LoadFCalChannelMapFromFCalDDM ( const FCALDetectorManager fcal_dd_man)

Definition at line 33 of file CaloGeometryFromCaloDDM.cxx.

33  {
34  this->SetFCal_ChannelMap( fcal_dd_man->getChannelMap() );
35  this->calculateFCalRminRmax();
36  return this->checkFCalGeometryConsistency();
37 }

◆ LoadGeometryFromCaloDDM()

bool CaloGeometryFromCaloDDM::LoadGeometryFromCaloDDM ( const CaloDetDescrManager calo_dd_man)

Definition at line 18 of file CaloGeometryFromCaloDDM.cxx.

19 {
20  int jentry=0;
21  for(CaloDetDescrManager::calo_element_const_iterator calo_iter=calo_dd_man->element_begin();calo_iter<calo_dd_man->element_end();++calo_iter) {
22  const CaloDetDescrElement* pcell=*calo_iter;
23  addcell(pcell);
24 
25  if(jentry%25000==0) {
26  ATH_MSG_DEBUG(jentry<<" : "<<pcell->getSampling()<<", "<<pcell->identify());
27  }
28  ++jentry;
29  }
30 
31  return PostProcessGeometry();
32 }

◆ minmaxeta()

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

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 }

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ post_process()

void CaloGeometry::post_process ( int  layer)
protectedvirtualinherited

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 ( )
virtualinherited

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 
)
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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
virtualinherited

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)
staticinherited

Definition at line 900 of file CaloGeometry.cxx.

901 {
903 }

◆ SetDoGraphs()

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

Definition at line 67 of file CaloGeometry.h.

67 {m_dographs=dographs;};

◆ SetFCal_ChannelMap()

void CaloGeometry::SetFCal_ChannelMap ( const FCAL_ChannelMap fcal_ChannnelMap)
inlineinherited

Definition at line 74 of file CaloGeometry.h.

74 {m_FCal_ChannelMap=*fcal_ChannnelMap;}

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

◆ zent()

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

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
virtualinherited

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
virtualinherited

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
virtualinherited

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

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_cells

t_cellmap CaloGeometry::m_cells
protectedinherited

Definition at line 101 of file CaloGeometry.h.

◆ m_cells_in_regions

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

Definition at line 104 of file CaloGeometry.h.

◆ m_cells_in_sampling

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

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
protectedinherited

Definition at line 103 of file CaloGeometry.h.

◆ m_debug

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

Definition at line 32 of file CaloGeometry.h.

◆ m_debug_identify

const Identifier CaloGeometry::m_debug_identify
staticinherited

Definition at line 31 of file CaloGeometry.h.

◆ m_dographs

bool CaloGeometry::m_dographs
protectedinherited

Definition at line 116 of file CaloGeometry.h.

◆ m_FCal_ChannelMap

FCAL_ChannelMap CaloGeometry::m_FCal_ChannelMap
protectedinherited

Definition at line 118 of file CaloGeometry.h.

◆ m_FCal_rmax

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

Definition at line 119 of file CaloGeometry.h.

◆ m_FCal_rmin

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

Definition at line 119 of file CaloGeometry.h.

◆ m_graph_layers

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

Definition at line 117 of file CaloGeometry.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_isCaloBarrel

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

Definition at line 106 of file CaloGeometry.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_max_eta_sample

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

Definition at line 108 of file CaloGeometry.h.

◆ m_min_eta_sample

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

Definition at line 107 of file CaloGeometry.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_rent_map

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

Definition at line 111 of file CaloGeometry.h.

◆ m_rext_map

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

Definition at line 113 of file CaloGeometry.h.

◆ m_rmid_map

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

Definition at line 109 of file CaloGeometry.h.

◆ m_zent_map

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

Definition at line 112 of file CaloGeometry.h.

◆ m_zext_map

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

Definition at line 114 of file CaloGeometry.h.

◆ m_zmid_map

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

Definition at line 110 of file CaloGeometry.h.

◆ MAX_SAMPLING

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

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
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
beamspotman.r
def r
Definition: beamspotman.py:676
CaloGeometry::PostProcessGeometry
virtual bool PostProcessGeometry()
Definition: CaloGeometry.cxx:627
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
CaloGeometry::MAX_SAMPLING
static const int MAX_SAMPLING
Definition: CaloGeometry.h:29
CaloGeometry::checkFCalGeometryConsistency
virtual bool checkFCalGeometryConsistency()
Definition: CaloGeometry.cxx:922
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:67
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:83
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:396
xAOD::identify
Identifier identify(const UncalibratedMeasurement *meas)
Returns the associated identifier.
Definition: MuonSpectrometer/MuonPhaseII/Event/xAOD/xAODMuonPrepData/Root/UtilFunctions.cxx:61
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
CaloGeometry::addcell
virtual void addcell(const CaloDetDescrElement *cell)
Definition: CaloGeometry.cxx:67
gr
#define gr
CaloGeometry::zmid
double zmid(int sample, double eta) const
Definition: CaloGeometry.cxx:795
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
CaloGeometry::CaloGeometry
CaloGeometry()
Definition: CaloGeometry.cxx:41
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
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
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
x
#define x
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
empty
bool empty(TH1 *h)
Definition: computils.cxx:294
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
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
AthMessaging::AthMessaging
AthMessaging()
Default constructor:
CaloGeometry::SamplingName
static std::string SamplingName(int sample)
Definition: CaloGeometry.cxx:900
CaloDetDescrElement::identify
Identifier identify() const override final
cell identifier
Definition: CaloDetDescrElement.cxx:64
CaloGeometry::m_rmid_map
std::vector< FSmap< double, double > > m_rmid_map[2]
Definition: CaloGeometry.h:109
beamspotman.steps
int steps
Definition: beamspotman.py:505
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
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:562
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:116
CaloGeometry::SetFCal_ChannelMap
void SetFCal_ChannelMap(const FCAL_ChannelMap *fcal_ChannnelMap)
Definition: CaloGeometry.h:74
lumiFormat.i
int i
Definition: lumiFormat.py:85
z
#define z
CaloGeometry::m_cells
t_cellmap m_cells
Definition: CaloGeometry.h:101
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
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
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
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:220
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
CaloDetDescrManager_Base::element_begin
calo_element_const_iterator element_begin() const
first element
Definition: CaloDetDescrManager.cxx:111
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
FCALDetectorManager::getChannelMap
const FCAL_ChannelMap * getChannelMap() const
Returns the Channel Map.
Definition: FCALDetectorManager.h:126
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
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
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
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
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
dbg::print
void print(std::FILE *stream, std::format_string< Args... > fmt, Args &&... args)
Definition: SGImplSvc.cxx:70
CaloSampling::getSamplingName
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
Definition: Calorimeter/CaloGeoHelpers/Root/CaloSampling.cxx:18
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
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
CaloGeometry::calculateFCalRminRmax
void calculateFCalRminRmax()
Definition: CaloGeometry.cxx:905
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
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)
CaloConstIteratorAdaptor
Tranform iterator over pointers to iterator over const pointers.
Definition: CaloConstIteratorAdaptor.h:47
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
Identifier
Definition: IdentifierFieldParser.cxx:14