12 #ifndef HAMMER_HISTOS_HH
13 #define HAMMER_HISTOS_HH
31 class DictionaryManager;
36 namespace MD = MultiDimensional;
64 const MD::BinRangeList& ranges = {},
bool shouldCompress =
false,
bool withErrors =
false);
66 bool hasUnderOverFlow =
true,
bool shouldCompress =
false,
bool withErrors =
false);
68 void createProjectedHistogram(
const std::string& oldName,
const std::string& newName,
const std::set<uint16_t>& collapsedIndexPositions);
110 bool canFill(
const std::string& name,
const std::vector<double>& values);
135 bool isValidHistogram(
const std::string& histogramName,
const TH1D& h)
const;
136 bool isValidHistogram(
const std::string& histogramName,
const TH2D& h)
const;
137 bool isValidHistogram(
const std::string& histogramName,
const TH3D& h)
const;
144 std::unique_ptr<TH1D> getHistogram1D(
const std::string& histogramName,
const std::string& schemeName)
const;
150 std::unique_ptr<TH2D> getHistogram2D(
const std::string& histogramName,
const std::string& schemeName)
const;
156 std::unique_ptr<TH3D> getHistogram3D(
const std::string& histogramName,
const std::string& schemeName)
const;
181 void setHistogram1D(
const std::string& histogramName,
const std::string& schemeName, TH1D& rootHistogram)
const;
188 void setHistogram2D(
const std::string& histogramName,
const std::string& schemeName, TH2D& rootHistogram)
const;
195 void setHistogram3D(
const std::string& histogramName,
const std::string& schemeName, TH3D& rootHistogram)
const;
202 void setHistograms1D(
const std::string& histogramName,
const std::string& schemeName,
210 void setHistograms2D(
const std::string& histogramName,
const std::string& schemeName,
218 void setHistograms3D(
const std::string& histogramName,
const std::string& schemeName,
228 void fillHisto(
const std::string& histogramName,
const std::string& schemeName,
const IndexList& binPosition,
229 Tensor& value,
double extraWeight = 1.0);
245 bool writeDefinition(flatbuffers::FlatBufferBuilder* msgwriter,
const std::string& histogramName)
const;
252 bool writeHistogram(flatbuffers::FlatBufferBuilder* msgwriter,
const std::string& histogramName,
const std::string& schemeName,
const EventUID& eventIDs)
const;
257 std::string
readDefinition(
const Serial::FBHistoDefinition* msgreader,
bool merge);
269 const HistogramSet*
getEntry(
const std::string& histogramName,
const std::string& schemeName)
const;
272 std::vector<Tensor>
getExternalData(
const std::string& schemeName, std::vector<LabelsList> labels)
const;
std::set< ProcessUID > EventUID
void createProjectedHistogram(const std::string &oldName, const std::string &newName, const std::set< uint16_t > &collapsedIndexPositions)
Histos(DictionaryManager *dict=nullptr)
Forward declaration of serialization related typedefs and includes.
IOHistogram getHistogram(const std::string &histogramName, const std::string &schemeName) const
bool writeDefinition(flatbuffers::FlatBufferBuilder *msgwriter, const std::string &histogramName) const
std::vector< EventUID > getEventIDRepsForHisto(const std::string &name, const std::string &scheme) const
IndexList getHistogramShape(const std::string &histogramName) const
HistoInfo readHistogram(const Serial::FBHistogram *msgreader, bool merge)
EventIdGroupDict< IOHistogram > getHistograms(const std::string &histogramName, const std::string &schemeName) const
std::vector< std::vector< double >> BinEdgeList
std::vector< BinContents > IOHistogram
void defineSettings()
purely virtual function for a class to define new settings
bool getUnderOverFlows(const std::string &histogramName) const
std::set< EventUID > EventUIDGroup
void addHistogramFixedData(const std::string &histogramName, MD::SharedTensorData data)
Log & getLog() const
logging facility
Container class for histograms belonging to different event types.
Hammer configuration definitions.
bool canFill(const std::string &name, const std::vector< double > &values)
Checks values can be binned.
Hammer histogram manager class.
std::map< std::string, T > HistoNameDict
Base class to access the settings repository.
const HistogramSet * getEntry(const std::string &histogramName, const std::string &schemeName) const
EventUIDGroup getHistogramEventIds(const std::string &name, const std::string &scheme) const
std::shared_ptr< IContainer > SharedTensorData
IndexList getBinIndices(const std::string &histogramName, const MD::BinValue &value) const
bool isValidHistogram(const std::string &histogramName, size_t dim) const
Histos & operator=(const Histos &other)=delete
std::string readDefinition(const Serial::FBHistoDefinition *msgreader, bool merge)
Forward declarations for histogram manager class.
MD::BinEdgeList getHistogramEdges(const std::string &histogramName) const
HistoNameDict< SchemeDict< HistogramSet > > _histograms
std::vector< IndexType > IndexList
HistoNameDict< HistogramDefinition > _histogramDefs
std::vector< std::string > getHistogramNames() const
UMap< EventUIDGroup, T > EventIdGroupDict
void checkExists(const std::string &name)
Checks histogram exists.
Histogram definition class.
void resetHistogramFixedData(const std::string &histogramName)
Multidimensional tensor class with complex numbers as elements.
void setEventId(EventUID eventId)
Base class for accessing Hammer settings repository.
void setHistogramCompression(const std::string &histogramName, bool value=true)
void setHistogramKeepErrors(const std::string &histogramName, bool value=true)
bool writeHistogram(flatbuffers::FlatBufferBuilder *msgwriter, const std::string &histogramName, const std::string &schemeName, const EventUID &eventIDs) const
std::vector< Tensor > getExternalData(const std::string &schemeName, std::vector< LabelsList > labels) const
Declarations for Hammer IO structs.
DictionaryManager * _dictionaries
std::vector< BinRange > BinRangeList
ROOT forward declarations.
void fillHisto(const std::string &histogramName, const std::string &schemeName, const IndexList &binPosition, Tensor &value, double extraWeight=1.0)
void addHistogramDefinition(const std::string &histogramName, const IndexList &binSizes, bool hasUnderOverFlow=true, const MD::BinRangeList &ranges={}, bool shouldCompress=false, bool withErrors=false)
void removeHistogram(const std::string &histogramName)
std::vector< double > BinValue