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