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

#include <CaloGeometry.h>

Inheritance 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) const
virtual const CaloDetDescrElementgetDDE (int sampling, Identifier identify) const
virtual const CaloDetDescrElementgetDDE (int sampling, float eta, float phi, float *distance=0, int *steps=0) const
virtual const CaloDetDescrElementgetFCalDDE (int sampling, float x, float y, float z, float *distance=0, int *steps=0) const
bool getClosestFCalCellIndex (int sampling, float x, float y, int &ieta, int &iphi, int *steps=0) const
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}
std::vector< FSmap< double, double > > m_zent_map[2]
std::vector< t_cellmap > m_cells_in_sampling
std::vector< t_eta_cellmap > m_cells_in_sampling_for_phi0
std::vector< double > m_max_eta_sample[2]
std::vector< FSmap< double, double > > m_rext_map[2]
std::vector< FSmap< double, double > > m_zext_map[2]
FCAL_ChannelMap m_FCal_ChannelMap
std::vector< FSmap< double, double > > m_zmid_map[2]
static const int MAX_SAMPLING
std::vector< double > m_min_eta_sample[2]
std::vector< TGraphErrors * > m_graph_layers
std::vector< std::vector< CaloGeometryLookup * > > m_cells_in_regions
std::vector< FSmap< double, double > > m_rmid_map[2]
std::vector< bool > m_isCaloBarrel
std::vector< FSmap< double, double > > m_rent_map[2]
static constexpr unsigned int barrelPattern()
Get the bit-pattern for barrel samplings.
static unsigned int getSamplingPattern(const CaloSample s)
Get a unsigned with one bit set.

◆ ~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
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) {
87 lookup=new CaloGeometryLookup(m_cells_in_regions[sampling].size());
88 m_cells_in_regions[sampling].push_back(lookup);
89 }
90 lookup->add(cell);
91}
t_cellmap m_cells
const Identifier & identify(const UncalibratedMeasurement *meas)
Returns the associated identifier from the muon measurement.

◆ 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}
#define y
#define x
std::vector< double > m_FCal_rmin
std::vector< double > m_FCal_rmax
int r
Definition globals.cxx:22

◆ 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}
HWIdentifier id2
virtual const CaloDetDescrElement * getDDE(Identifier identify) const

◆ 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}
Scalar eta() const
pseudorapidity method

◆ DoGraphs()

bool CaloGeometry::DoGraphs ( ) const
inline

Definition at line 67 of file CaloGeometry.h.

67{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) {
455 TGraph* gr=DrawGeoSampleForPhi0(sample,CaloGeometry_calocol[sample],(sample==17));
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}
const int CaloGeometry_calocol[24]
#define gr
static std::string SamplingName(int sample)
TGraph * DrawGeoSampleForPhi0(int sample, int calocol, bool print=false)

◆ 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;
357 for(t_eta_cellmap::iterator calo_iter=m_cells_in_sampling_for_phi0[sample].begin();calo_iter!=m_cells_in_sampling_for_phi0[sample].end();++calo_iter) {
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
381 if(CaloSampling::PreSamplerB<=sample && sample<=CaloSampling::EMB3) {
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 {
398 if(sample<CaloSampling::FCAL0) {
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}
void print(char *figname, TCanvas *c1)
#define z
double deta(int sample, double eta) const
bool isCaloBarrel(int sample) const

◆ getClosestFCalCellIndex()

bool CaloGeometry::getClosestFCalCellIndex ( int sampling,
float x,
float y,
int & ieta,
int & iphi,
int * steps = 0 ) const

Definition at line 592 of file CaloGeometry.cxx.

592 {
593
594 double rmin = m_FCal_rmin.at(sampling-21);
595 double rmax = m_FCal_rmax.at(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}
static Double_t a
const int nmax(200)

◆ getDDE() [1/3]

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

Implements ICaloGeometry.

Definition at line 466 of file CaloGeometry.cxx.

467{
468 return m_cells.at(identify);
469}

◆ getDDE() [2/3]

const CaloDetDescrElement * CaloGeometry::getDDE ( int sampling,
float eta,
float phi,
float * distance = 0,
int * steps = 0 ) const
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.at(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.at(sampling).size();++j) {
493 if(!skip_range_check) {
494 if(eta<m_cells_in_regions.at(sampling).at(j)->mineta()) continue;
495 if(eta>m_cells_in_regions.at(sampling).at(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.at(sampling).at(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}
Scalar phi() const
phi method
static std::atomic< bool > m_debug
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space

◆ getDDE() [3/3]

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

Definition at line 470 of file CaloGeometry.cxx.

471{
472 return m_cells_in_sampling.at(sampling).at(identify);
473}

◆ GetFCAL_ChannelMap()

FCAL_ChannelMap * CaloGeometry::GetFCAL_ChannelMap ( )
inline

Definition at line 72 of file CaloGeometry.h.

72{return &m_FCal_ChannelMap;}

◆ getFCalDDE()

const CaloDetDescrElement * CaloGeometry::getFCalDDE ( int sampling,
float x,
float y,
float z,
float * distance = 0,
int * steps = 0 ) const
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.at(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}
#define max(a, b)
Definition cfImp.cxx:41
bool getClosestFCalCellIndex(int sampling, float x, float y, int &ieta, int &iphi, int *steps=0) const

◆ GetGraph()

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

Definition at line 65 of file CaloGeometry.h.

65{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 {
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;
241 if(min_eta<m_min_eta_sample[side][sample]) m_min_eta_sample[side][sample]=min_eta;
242 if(max_eta>m_max_eta_sample[side][sample]) m_max_eta_sample[side][sample]=max_eta;
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}
static const Attributes_t empty
CaloCell_ID::CaloSample getSampling() const
cell sampling
double zmid(int sample, double eta) const
double rent(int sample, double eta) const
double zent(int sample, double eta) const
double rmid(int sample, double eta) const
double rext(int sample, double eta) const
bool DoGraphs() const
double zext(int sample, double eta) const
std::map< _Key, _Tp >::iterator iterator
Definition FSmap.h:14
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:138

◆ isCaloBarrel()

bool CaloGeometry::isCaloBarrel ( int sample) const
inlinevirtual

Implements ICaloGeometry.

Definition at line 62 of file CaloGeometry.h.

62{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
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}
void merge_into_ref(CaloGeometryLookup *ref)
virtual void post_process(int layer)

◆ 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}
virtual void InitRZmaps()

◆ 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{
902 return CaloSampling::getSamplingName(sample);
903}
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.

◆ SetDoGraphs()

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

Definition at line 66 of file CaloGeometry.h.

66{m_dographs=dographs;};

◆ SetFCal_ChannelMap()

void CaloGeometry::SetFCal_ChannelMap ( const FCAL_ChannelMap * fcal_ChannnelMap)
inline

Definition at line 73 of file CaloGeometry.h.

73{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 100 of file CaloGeometry.h.

◆ m_cells_in_regions

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

Definition at line 103 of file CaloGeometry.h.

◆ m_cells_in_sampling

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

Definition at line 101 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 102 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 115 of file CaloGeometry.h.

◆ m_FCal_ChannelMap

FCAL_ChannelMap CaloGeometry::m_FCal_ChannelMap
protected

Definition at line 117 of file CaloGeometry.h.

◆ m_FCal_rmax

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

Definition at line 118 of file CaloGeometry.h.

◆ m_FCal_rmin

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

Definition at line 118 of file CaloGeometry.h.

◆ m_graph_layers

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

Definition at line 116 of file CaloGeometry.h.

◆ m_isCaloBarrel

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

Definition at line 105 of file CaloGeometry.h.

◆ m_max_eta_sample

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

Definition at line 107 of file CaloGeometry.h.

◆ m_min_eta_sample

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

Definition at line 106 of file CaloGeometry.h.

◆ m_rent_map

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

Definition at line 110 of file CaloGeometry.h.

◆ m_rext_map

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

Definition at line 112 of file CaloGeometry.h.

◆ m_rmid_map

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

Definition at line 108 of file CaloGeometry.h.

◆ m_zent_map

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

Definition at line 111 of file CaloGeometry.h.

◆ m_zext_map

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

Definition at line 113 of file CaloGeometry.h.

◆ m_zmid_map

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

Definition at line 109 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: