ATLAS Offline Software
HIEventShapeIndex.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef HIEVENTUTILS_HIEVENTSHAPEINDEX_H
6 #define HIEVENTUTILS_HIEVENTSHAPEINDEX_H
7 
10 #include <memory>
11 #include <map>
12 #include <cmath>
13 #include <TH2.h>
14 
15 
17 {
18 
19 public:
22 
23  //initialize indexing given object or scheme
24  //returns total number of bins
25 
26  unsigned int setBinning(const TH2* h2, bool asMask);
27  unsigned int setBinning(HI::BinningScheme scheme);
28 
29  void initializeEventShapeContainer(std::unique_ptr<xAOD::HIEventShapeContainer>& shape_container, unsigned int num_harmonics) const;
30  //can associate ptr to shape container w/ binning
31  //not required
32 
33  //lookup functions
34  unsigned int getIndex(float eta, int layer) const;
35  unsigned int getIndexFromBin(unsigned int ebin, int layer) const;
36  unsigned int getEtaBin(float eta, int layer) const;
37  unsigned int getNumBins() const {return m_size;};
38  xAOD::HIEventShape* getShape(float eta, int layer, xAOD::HIEventShapeContainer* shape_container) const;
39  const xAOD::HIEventShape* getShape(float eta, int layer, const xAOD::HIEventShapeContainer* shape_container) const;
40  xAOD::HIEventShape* getShape(float eta, int layer, std::unique_ptr<xAOD::HIEventShapeContainer>& shape_container) const;
41  //HIEventShapeIndex& operator=(const HIEventShapeIndex& in);
42  std::string print() const;
43 private:
44  struct range_index_t{
45  float eta_min;
46  float eta_max;
47  unsigned int index;
48 
49  range_index_t(float emin, float emax, unsigned int ii) : eta_min(emin), eta_max(emax),index(ii) {};
50  range_index_t()=default;
51  bool operator() (float eta) const
52  {
53  if (eta > this->eta_min && eta < this->eta_max) return true;
54  if(eta==this->eta_min) return true;
55  return false;
56  };
57  bool operator< (const range_index_t& rhs) const {return this->eta_min < rhs.eta_min;};
58  };
59  std::map<int,std::vector<range_index_t> > m_edges;
60 
61  unsigned int m_size;
62 
63  unsigned int getIndex_Internal(float eta, int layer, bool etaIndex) const;
64  std::map<int,std::vector<range_index_t> >::const_iterator getLayer(int layer) const;
65 
66  inline float roundToTenth(float d) const {return std::floor(d)+std::floor((d-std::floor(d))*10.0+0.5)/10.0;};
67 
68 
69 
70 };
71 
72 #endif
HIEventShapeIndex::getEtaBin
unsigned int getEtaBin(float eta, int layer) const
Definition: HIEventShapeIndex.cxx:150
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
index
Definition: index.py:1
HIEventShapeIndex::getIndexFromBin
unsigned int getIndexFromBin(unsigned int ebin, int layer) const
Definition: HIEventShapeIndex.cxx:105
hist_file_dump.d
d
Definition: hist_file_dump.py:137
HIEventShapeIndex::roundToTenth
float roundToTenth(float d) const
Definition: HIEventShapeIndex.h:66
HIEventShapeIndex::HIEventShapeIndex
HIEventShapeIndex()
Definition: HIEventShapeIndex.cxx:14
HIEventShapeIndex::getShape
xAOD::HIEventShape * getShape(float eta, int layer, xAOD::HIEventShapeContainer *shape_container) const
Definition: HIEventShapeIndex.cxx:155
HIEventDefs.h
HIEventShapeIndex::~HIEventShapeIndex
~HIEventShapeIndex()
Definition: HIEventShapeIndex.cxx:18
HIEventShapeIndex::range_index_t::operator()
bool operator()(float eta) const
Definition: HIEventShapeIndex.h:51
HIEventShapeIndex::initializeEventShapeContainer
void initializeEventShapeContainer(std::unique_ptr< xAOD::HIEventShapeContainer > &shape_container, unsigned int num_harmonics) const
Definition: HIEventShapeIndex.cxx:206
HIEventShapeIndex::getLayer
std::map< int, std::vector< range_index_t > >::const_iterator getLayer(int layer) const
Definition: HIEventShapeIndex.cxx:193
xAOD::HIEventShape_v2
Interface class for the HI reconstruction EDM.
Definition: HIEventShape_v2.h:31
HIEventShapeIndex::range_index_t::range_index_t
range_index_t()=default
HIEventShapeIndex::range_index_t::eta_min
float eta_min
Definition: HIEventShapeIndex.h:45
HIEventShapeIndex::print
std::string print() const
Definition: HIEventShapeIndex.cxx:246
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
HIEventShapeIndex::setBinning
unsigned int setBinning(const TH2 *h2, bool asMask)
Definition: HIEventShapeIndex.cxx:23
HIEventShapeIndex::getNumBins
unsigned int getNumBins() const
Definition: HIEventShapeIndex.h:37
HIEventShapeContainer.h
HIEventShapeIndex::range_index_t
Definition: HIEventShapeIndex.h:44
HIEventShapeIndex::range_index_t::range_index_t
range_index_t(float emin, float emax, unsigned int ii)
Definition: HIEventShapeIndex.h:49
JetTagCalibConfig.scheme
scheme
Definition: JetTagCalibConfig.py:10
HIEventShapeIndex::getIndex_Internal
unsigned int getIndex_Internal(float eta, int layer, bool etaIndex) const
Definition: HIEventShapeIndex.cxx:110
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
TH2
Definition: rootspy.cxx:373
HIEventShapeIndex
Definition: HIEventShapeIndex.h:17
HIEventShapeIndex::m_size
unsigned int m_size
Definition: HIEventShapeIndex.h:61
HIEventShapeIndex::getIndex
unsigned int getIndex(float eta, int layer) const
Definition: HIEventShapeIndex.cxx:145
HIEventShapeIndex::range_index_t::operator<
bool operator<(const range_index_t &rhs) const
Definition: HIEventShapeIndex.h:57
HIEventShapeIndex::range_index_t::eta_max
float eta_max
Definition: HIEventShapeIndex.h:46
HI::BinningScheme
BinningScheme
Definition: HIEventDefs.h:16
HIEventShapeIndex::range_index_t::index
unsigned int index
Definition: HIEventShapeIndex.h:47
HIEventShapeIndex::m_edges
std::map< int, std::vector< range_index_t > > m_edges
Definition: HIEventShapeIndex.h:59