ATLAS Offline Software
Classes | Public Types | Public Member Functions | Private Attributes | List of all members
CaloHadDMCoeff2 Class Reference

Dead material correction coefficients. More...

#include <CaloHadDMCoeff2.h>

Collaboration diagram for CaloHadDMCoeff2:

Classes

struct  HadDMArea
 
struct  HadDMDimension
 

Public Types

enum  key_dim_type { kDIM_FLAT, kDIM_HAND }
 
enum  key_area_type { kAREA_PROF, kAREA_LOOKUP, kAREA_SMPW }
 
typedef std::vector< float > HadDMCoeff
 

Public Member Functions

 CaloHadDMCoeff2 ()
 
 CaloHadDMCoeff2 (const CaloHadDMCoeff2 &other)
 
CaloHadDMCoeff2operator= (const CaloHadDMCoeff2 &other)
 
int getSizeDMAreaSet () const
 
void addHadDMArea (const HadDMArea &theArea)
 
void setHadDMArea (const int n_area, const HadDMArea &theArea)
 
const HadDMAreagetHadDMArea (int n_area) const
 
int getSizeDMCoeffSet () const
 
void addHadDMCoeff (const HadDMCoeff &theData)
 
void setHadDMCoeff (const int iBin, const HadDMCoeff &theData)
 
const HadDMCoeffgetHadDMCoeff (const int &iBin) const
 
const HadDMCoeffgetHadDMCoeff (const int &n_area, const float &cls_emfrac, const float &cls_ener, const float &cls_lambda, const float &cls_eta) const
 
int getBinFrac (const int dm_area, const float &cls_frac) const
 
int getBinEner (const int dm_area, const float &cls_ener) const
 
int getBinLambda (const int dm_area, const float &cls_lambda) const
 
int getBinEta (const int dm_area, const float &cls_eta) const
 
int getBin (const int n_area, const float &cls_em_frac, const float &cls_energy, const float &cls_lambda, const float &cls_eta) const
 
void PrintData (std::ostream &ff) const
 
int bin2indexes (const int iBin, std::vector< int > &v_dim_indx) const
 

Private Attributes

std::vector< HadDMCoeffm_DMCoeffSet
 
std::vector< HadDMAream_DMAreaSet
 
std::vector< int > m_area_offsets
 

Detailed Description

Dead material correction coefficients.

Author
Gennady Pospelov guenn.nosp@m.adi..nosp@m.pospe.nosp@m.lov@.nosp@m.cern..nosp@m.ch
Date
21-November-2007 Holds dead material correction coefficients for using in Local Hadronic Correction Procedure (DeadMaterialCorrrection tool)

Definition at line 23 of file CaloHadDMCoeff2.h.

Member Typedef Documentation

◆ HadDMCoeff

typedef std::vector<float> CaloHadDMCoeff2::HadDMCoeff

Definition at line 54 of file CaloHadDMCoeff2.h.

Member Enumeration Documentation

◆ key_area_type

Enumerator
kAREA_PROF 
kAREA_LOOKUP 
kAREA_SMPW 

Definition at line 26 of file CaloHadDMCoeff2.h.

◆ key_dim_type

Enumerator
kDIM_FLAT 
kDIM_HAND 

Definition at line 25 of file CaloHadDMCoeff2.h.

25 { kDIM_FLAT, kDIM_HAND };

Constructor & Destructor Documentation

◆ CaloHadDMCoeff2() [1/2]

CaloHadDMCoeff2::CaloHadDMCoeff2 ( )
default

◆ CaloHadDMCoeff2() [2/2]

CaloHadDMCoeff2::CaloHadDMCoeff2 ( const CaloHadDMCoeff2 other)
default

Member Function Documentation

◆ addHadDMArea()

void CaloHadDMCoeff2::addHadDMArea ( const HadDMArea theArea)

Definition at line 39 of file CaloHadDMCoeff2.cxx.

40 {
41  m_DMAreaSet.push_back(theArea);
42  m_area_offsets.push_back(theArea.m_offset);
43 }

◆ addHadDMCoeff()

void CaloHadDMCoeff2::addHadDMCoeff ( const HadDMCoeff theData)

Definition at line 63 of file CaloHadDMCoeff2.cxx.

64 {
65  m_DMCoeffSet.push_back(theData);
66 }

◆ bin2indexes()

int CaloHadDMCoeff2::bin2indexes ( const int  iBin,
std::vector< int > &  v_dim_indx 
) const

Definition at line 168 of file CaloHadDMCoeff2.cxx.

169 {
170  int i_area = 0;
171  int narea = (int)m_area_offsets.size();
172  for(i_area=0; i_area<narea; i_area++) {
173  if( iBin < m_area_offsets[i_area] ) break;
174  if( iBin >= m_area_offsets[i_area] && (i_area == narea-1 || iBin < m_area_offsets[i_area+1]) ) break;
175  }
176  const HadDMArea *theArea = &m_DMAreaSet[i_area];
177  std::vector<HadDMDimension > v_dims;
178  v_dims.resize(4);
179  v_dims[0] = theArea->m_dimFrac;
180  v_dims[1] = theArea->m_dimEner;
181  v_dims[2] = theArea->m_dimLambda;
182  v_dims[3] = theArea->m_dimEta;
183  int ndim = (int) v_dims.size();
184  v_dim_indx.resize(ndim,0);
185  for(int i_dim=0; i_dim<ndim; i_dim++){
186  int x0 = 0;
187  for(int j=0; j<i_dim; j++){
188  x0 += v_dim_indx[j]*v_dims[j].xloc;
189  }
190  v_dim_indx[i_dim] = (iBin-theArea->m_offset-x0)/v_dims[i_dim].xloc;
191  }
192  return 0;
193 }

◆ getBin()

int CaloHadDMCoeff2::getBin ( const int  n_area,
const float &  cls_em_frac,
const float &  cls_energy,
const float &  cls_lambda,
const float &  cls_eta 
) const

Definition at line 126 of file CaloHadDMCoeff2.cxx.

127 {
128  if(n_dm_area < 0 || n_dm_area >= (int)m_DMAreaSet.size()) {
129  std::cout << " WARNING CaloHadDMCoeff::getBin -> wrong n_area: " << n_dm_area << std::endl;
130  return (-1);
131  }
132  int iBin = -1;
133  const HadDMArea *dmArea = &m_DMAreaSet[n_dm_area];
134  int ifrac = -1, iener = -1, ilambda = -1, ieta = -1;
135  ifrac = getBinFrac(n_dm_area, cls_emfrac);
136  if( ifrac != -1 ) {
137  iener = getBinEner(n_dm_area, cls_ener);
138  if( iener != -1 ) {
139  ilambda = getBinLambda(n_dm_area, cls_lambda);
140  if( ilambda != -1 ) {
141  ieta = getBinEta(n_dm_area, cls_eta);
142  if ( ieta != -1 ) {
143  iBin = ieta + ilambda*dmArea->m_dimEta.m_nbins
144  + iener*dmArea->m_dimEta.m_nbins*dmArea->m_dimLambda.m_nbins
145  + ifrac*dmArea->m_dimEta.m_nbins*dmArea->m_dimLambda.m_nbins*dmArea->m_dimEner.m_nbins
146  + dmArea->m_offset;
147  } // ieta
148  }// ilambda
149  } // iener
150  } // ifrac
151  return iBin;
152 }

◆ getBinEner()

int CaloHadDMCoeff2::getBinEner ( const int  dm_area,
const float &  cls_ener 
) const

Definition at line 96 of file CaloHadDMCoeff2.cxx.

97 {
98  const HadDMArea *dmArea = &m_DMAreaSet[n_area];
99  if( cls_ener < dmArea->m_dimEner.m_vMin || cls_ener >= dmArea->m_dimEner.m_vMax ) return (-1);
100  int iener;
101  for (iener=0; iener<dmArea->m_dimEner.m_nbins; iener++) {
102  if( cls_ener < dmArea->m_dimEner.m_vBins[iener] ) break;
103  if( cls_ener >= dmArea->m_dimEner.m_vBins[iener] && (iener == dmArea->m_dimEner.m_nbins-1 || cls_ener < dmArea->m_dimEner.m_vBins[iener+1]) ) break;
104  }
105  return iener;
106 }

◆ getBinEta()

int CaloHadDMCoeff2::getBinEta ( const int  dm_area,
const float &  cls_eta 
) const

Definition at line 117 of file CaloHadDMCoeff2.cxx.

118 {
119  const HadDMArea *dmArea = &m_DMAreaSet[n_area];
120  float cls_abseta = std::abs(cls_eta);
121  if(cls_abseta < dmArea->m_dimEta.m_vMin || cls_abseta >= dmArea->m_dimEta.m_vMax) return (-1);
122  return (int)((cls_abseta - dmArea->m_dimEta.m_vMin)/dmArea->m_dimEta.m_bin_size);
123 }

◆ getBinFrac()

int CaloHadDMCoeff2::getBinFrac ( const int  dm_area,
const float &  cls_frac 
) const

Definition at line 88 of file CaloHadDMCoeff2.cxx.

89 {
90  const HadDMArea *dmArea = &m_DMAreaSet[n_area];
91  if(cls_emfrac < dmArea->m_dimFrac.m_vMin || cls_emfrac >= dmArea->m_dimFrac.m_vMax) return (-1);
92  return (int)((cls_emfrac - dmArea->m_dimFrac.m_vMin)/dmArea->m_dimFrac.m_bin_size);
93 }

◆ getBinLambda()

int CaloHadDMCoeff2::getBinLambda ( const int  dm_area,
const float &  cls_lambda 
) const

Definition at line 109 of file CaloHadDMCoeff2.cxx.

110 {
111  const HadDMArea *dmArea = &m_DMAreaSet[n_area];
112  if(cls_lambda < dmArea->m_dimLambda.m_vMin || cls_lambda >= dmArea->m_dimLambda.m_vMax) return (-1);
113  return (int)((cls_lambda - dmArea->m_dimLambda.m_vMin)/dmArea->m_dimLambda.m_bin_size);
114 }

◆ getHadDMArea()

const CaloHadDMCoeff2::HadDMArea * CaloHadDMCoeff2::getHadDMArea ( int  n_area) const

Definition at line 50 of file CaloHadDMCoeff2.cxx.

51 {
52  if(n_area >= 0 && n_area<(int)m_DMAreaSet.size() ) {
53  return &(m_DMAreaSet[n_area]);
54  } else {
55  return nullptr;
56  }
57 }

◆ getHadDMCoeff() [1/2]

const CaloHadDMCoeff2::HadDMCoeff * CaloHadDMCoeff2::getHadDMCoeff ( const int &  iBin) const

Definition at line 73 of file CaloHadDMCoeff2.cxx.

74 {
75  if ( iBin > -1 && iBin < (int)m_DMCoeffSet.size() ) {
76  return (& m_DMCoeffSet[iBin]);
77  }else{
78  return nullptr;
79  }
80 }

◆ getHadDMCoeff() [2/2]

const CaloHadDMCoeff2::HadDMCoeff * CaloHadDMCoeff2::getHadDMCoeff ( const int &  n_area,
const float &  cls_emfrac,
const float &  cls_ener,
const float &  cls_lambda,
const float &  cls_eta 
) const

Definition at line 155 of file CaloHadDMCoeff2.cxx.

156 {
157  int iBin = getBin(n_area, cls_emfrac, cls_ener, cls_lambda, cls_eta);
158  return getHadDMCoeff(iBin);
159 }

◆ getSizeDMAreaSet()

int CaloHadDMCoeff2::getSizeDMAreaSet ( ) const
inline

Definition at line 62 of file CaloHadDMCoeff2.h.

62 { return (int)m_DMAreaSet.size(); }

◆ getSizeDMCoeffSet()

int CaloHadDMCoeff2::getSizeDMCoeffSet ( ) const
inline

Definition at line 68 of file CaloHadDMCoeff2.h.

68 { return (int)m_DMCoeffSet.size(); }

◆ operator=()

CaloHadDMCoeff2 & CaloHadDMCoeff2::operator= ( const CaloHadDMCoeff2 other)

Definition at line 25 of file CaloHadDMCoeff2.cxx.

26 {
27  if (this != &other) {
28  m_DMCoeffSet = other.m_DMCoeffSet;
29  m_DMAreaSet = other.m_DMAreaSet;
30  m_area_offsets = other.m_area_offsets;
31  }
32  return *this;
33 }

◆ PrintData()

void CaloHadDMCoeff2::PrintData ( std::ostream &  ff) const

Definition at line 199 of file CaloHadDMCoeff2.cxx.

200 {
201  const char *comments =
202  {
203  "# Coeffs for Dead Material corrections in DeadMaterialCorrectionTool2 tool.\n\n"
204  };
205  fout << comments << std::endl;
206  char line[1024];
207 
208  // loop over DM areas
209  for(int i_zone=0; i_zone < (int)m_DMAreaSet.size(); i_zone++){
210  const HadDMArea *area = &m_DMAreaSet[i_zone];
211  fout << "zone " << area->m_indx << " " << area->m_is_on << " " << area->m_title << std::endl;
212  std::vector<CaloHadDMCoeff2::HadDMDimension > v_dims;
213  v_dims.resize(4);
214  v_dims[0] = area->m_dimFrac;
215  v_dims[1] = area->m_dimEner;
216  v_dims[2] = area->m_dimLambda;
217  v_dims[3] = area->m_dimEta;
218  for(unsigned int i_dim=0; i_dim<v_dims.size(); i_dim++){
219  CaloHadDMCoeff2::HadDMDimension dim = v_dims[i_dim];
220  sprintf(line,"%-6s %2d %6.3f %12.3f ",dim.m_title.c_str(), dim.m_nbins, dim.m_vMin, dim.m_vMax);
221  std::string sline(line);
222  if(dim.m_type == CaloHadDMCoeff2::kDIM_FLAT) {
223  sline += "flat";
224  }else if(dim.m_type == CaloHadDMCoeff2::kDIM_HAND) {
225  sline += "hand";
226  } else {
227  std::cout << "CaloHadDMCoeff2::PrintData2() -> Error! p1." << std::endl;
228  }
229  fout << sline;
230  if(dim.m_type == CaloHadDMCoeff2::kDIM_HAND) {
231  for(unsigned int i=0; i<dim.m_vBins.size(); i++){
232  fout << " " << dim.m_vBins[i];
233  }
234  }
235  fout << std::endl;
236  }
237  fout << "npars " << area->m_nPars << std::endl;
238  // now printing the data
239  for(int i_data=0; i_data<area->m_length; i_data++) {
240  int indx = area->m_offset + i_data;
241  const HadDMCoeff *pars = getHadDMCoeff(indx);
242  fout << std::setw(5) << indx << " ";
243  std::vector<int > v_dim_indexes;
244  bin2indexes(indx, v_dim_indexes);
245  for(unsigned int i_dim=0; i_dim<v_dim_indexes.size(); i_dim++){
246  fout << std::setw(4) << v_dim_indexes[i_dim] << " ";
247  }
248  fout << " ";
249  for(int i_par=0; i_par<area->m_nPars; i_par++){
250  std::stringstream foutx;
251  foutx << std::fixed << std::setprecision(5) << std::setw(12) << (*pars)[i_par] << " ";
252  fout<<foutx.str();
253  }
254  fout << std::endl;
255  }
256  // end of DM area
257  fout << std::endl;
258  }
259  // printing title strin
260 }

◆ setHadDMArea()

void CaloHadDMCoeff2::setHadDMArea ( const int  n_area,
const HadDMArea theArea 
)

Definition at line 45 of file CaloHadDMCoeff2.cxx.

46 {
47  m_DMAreaSet[n_area] = theArea;
48 }

◆ setHadDMCoeff()

void CaloHadDMCoeff2::setHadDMCoeff ( const int  iBin,
const HadDMCoeff theData 
)

Definition at line 68 of file CaloHadDMCoeff2.cxx.

69 {
70  m_DMCoeffSet[iBin] = theData;
71 }

Member Data Documentation

◆ m_area_offsets

std::vector<int > CaloHadDMCoeff2::m_area_offsets
private

Definition at line 88 of file CaloHadDMCoeff2.h.

◆ m_DMAreaSet

std::vector<HadDMArea> CaloHadDMCoeff2::m_DMAreaSet
private

Definition at line 87 of file CaloHadDMCoeff2.h.

◆ m_DMCoeffSet

std::vector<HadDMCoeff> CaloHadDMCoeff2::m_DMCoeffSet
private

Definition at line 86 of file CaloHadDMCoeff2.h.


The documentation for this class was generated from the following files:
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
CaloHadDMCoeff2::kAREA_SMPW
@ kAREA_SMPW
Definition: CaloHadDMCoeff2.h:26
WriteBchToCool.comments
comments
Definition: WriteBchToCool.py:297
checkFileSG.line
line
Definition: checkFileSG.py:75
yodamerge_tmp.dim
dim
Definition: yodamerge_tmp.py:239
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CaloHadDMCoeff2::kDIM_HAND
@ kDIM_HAND
Definition: CaloHadDMCoeff2.h:25
CaloHadDMCoeff2::kAREA_LOOKUP
@ kAREA_LOOKUP
Definition: CaloHadDMCoeff2.h:26
CaloHadDMCoeff2::getBin
int getBin(const int n_area, const float &cls_em_frac, const float &cls_energy, const float &cls_lambda, const float &cls_eta) const
Definition: CaloHadDMCoeff2.cxx:126
CaloHadDMCoeff2::bin2indexes
int bin2indexes(const int iBin, std::vector< int > &v_dim_indx) const
Definition: CaloHadDMCoeff2.cxx:168
CaloHadDMCoeff2::m_DMCoeffSet
std::vector< HadDMCoeff > m_DMCoeffSet
Definition: CaloHadDMCoeff2.h:86
CaloHadDMCoeff2::getBinEta
int getBinEta(const int dm_area, const float &cls_eta) const
Definition: CaloHadDMCoeff2.cxx:117
lumiFormat.i
int i
Definition: lumiFormat.py:92
dqt_zlumi_alleff_HIST.fout
fout
Definition: dqt_zlumi_alleff_HIST.py:59
CaloHadDMCoeff2::HadDMDimension
Definition: CaloHadDMCoeff2.h:27
CaloHadDMCoeff2::m_DMAreaSet
std::vector< HadDMArea > m_DMAreaSet
Definition: CaloHadDMCoeff2.h:87
CaloHadDMCoeff2::kAREA_PROF
@ kAREA_PROF
Definition: CaloHadDMCoeff2.h:26
CaloHadDMCoeff2::getHadDMCoeff
const HadDMCoeff * getHadDMCoeff(const int &iBin) const
Definition: CaloHadDMCoeff2.cxx:73
CaloHadDMCoeff2::getBinEner
int getBinEner(const int dm_area, const float &cls_ener) const
Definition: CaloHadDMCoeff2.cxx:96
CaloHadDMCoeff2::HadDMCoeff
std::vector< float > HadDMCoeff
Definition: CaloHadDMCoeff2.h:54
InDetDD::other
@ other
Definition: InDetDD_Defs.h:16
CaloHadDMCoeff2::getBinFrac
int getBinFrac(const int dm_area, const float &cls_frac) const
Definition: CaloHadDMCoeff2.cxx:88
CaloHadDMCoeff2::getBinLambda
int getBinLambda(const int dm_area, const float &cls_lambda) const
Definition: CaloHadDMCoeff2.cxx:109
area
double area(double R)
Definition: ConvertStaveServices.cxx:42
CaloHadDMCoeff2::m_area_offsets
std::vector< int > m_area_offsets
Definition: CaloHadDMCoeff2.h:88
CaloHadDMCoeff2::kDIM_FLAT
@ kDIM_FLAT
Definition: CaloHadDMCoeff2.h:25