19#ifndef PERENTRYHISTOGRAMSET_H
20#define PERENTRYHISTOGRAMSET_H
21#include "HistogramDefSet.hh"
22#include "PerEntryHistogram.hh"
23#include "SpectraParticles.hh"
25#include "BDSOutputROOTEventSampler.hh"
42 template<
typename A,
typename B>
44 {
return std::pair<B, A>(p.second, p.first);}
46 template<
typename A,
typename B>
47 std::multimap<B, A> flip_map(
const std::map<A, B> &src)
49 std::multimap<B, A> dst;
50 std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), flip_pair<A, B>);
71 virtual void Write(TDirectory* dir =
nullptr);
78 inline bool IsIon(
long long int pdgID)
const {
return pdgID > 100000000;}
80 void CreatePerEntryHistogram(
long long int pdgID);
83 std::vector<long long int>
TopUtility(
const std::set<long long int>& s,
87 std::vector<long long int>
TopNNonIons(
int n)
const;
88 std::vector<long long int>
TopNIons(
int n)
const;
89 std::vector<long long int>
TopN(
int n)
const;
95 std::string branchName;
96 bool dynamicallyStoreParticles;
97 bool dynamicallyStoreIons;
98 long long int nEntries;
99 HistogramDefSet::writewhat what;
108 std::set<long long int> allPDGIDs;
109 std::set<long long int> ions;
110 std::set<long long int> nonIons;
111 std::map<ParticleSpec, PerEntryHistogram*> histograms;
112 std::map<long long int, PerEntryHistogram*> histogramsByPDGID;
113 std::vector<PerEntryHistogram*> allPerEntryHistograms;
Information stored per sampler per event.
Specification for a set of histograms.
Common specification for a histogram.
Histogram over a set of integers not number line.
virtual void Write(TDirectory *dir=nullptr)
virtual void AccumulateCurrentEntry(long int entryNumber)
std::vector< long long int > TopN(int n) const
Get top part of set. Sorted in descending order of integral.
std::vector< long long int > TopNIons(int n) const
Get top part of set. Sorted in descending order of integral.
virtual void Terminate()
Terminate the accumulator and save the result to the result member variable.
std::vector< long long int > TopNNonIons(int n) const
Get top part of set. Sorted in descending order of integral.
std::vector< long long int > TopUtility(const std::set< long long int > &s, size_t n) const
Utility function to find top N in set s. Sorted in descending order of integral.
Holder for information to calculate per entry histograms.
Return either G4Tubs or G4CutTubs depending on flat face.
std::pair< B, A > flip_pair(const std::pair< A, B > &p)