18#ifndef PERENTRYHISTOGRAMSET_H
19#define PERENTRYHISTOGRAMSET_H
20#include "HistogramDefSet.hh"
21#include "PerEntryHistogram.hh"
22#include "SpectraParticles.hh"
24#include "BDSOutputROOTEventSampler.hh"
41 template<
typename A,
typename B>
43 {
return std::pair<B, A>(p.second, p.first);}
45 template<
typename A,
typename B>
46 std::multimap<B, A> flip_map(
const std::map<A, B> &src)
48 std::multimap<B, A> dst;
49 std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), flip_pair<A, B>);
70 virtual void Write(TDirectory* dir =
nullptr);
83 inline bool IsIon(
long long int pdgID)
const {
return pdgID > 100000000;}
85 void CreatePerEntryHistogram(
long long int pdgID);
88 std::vector<long long int>
TopUtility(
const std::set<long long int>& s,
92 std::vector<long long int>
TopNNonIons(
int n)
const;
93 std::vector<long long int>
TopNIons(
int n)
const;
94 std::vector<long long int>
TopN(
int n)
const;
100 std::string branchName;
101 bool dynamicallyStoreParticles;
102 bool dynamicallyStoreIons;
103 long long int nEntries;
104 HistogramDefSet::writewhat what;
113 std::set<long long int> allPDGIDs;
114 std::set<long long int> ions;
115 std::set<long long int> nonIons;
116 std::map<ParticleSpec, PerEntryHistogram*> histograms;
117 std::map<long long int, PerEntryHistogram*> histogramsByPDGID;
118 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 GetPDGIDSetFromSampler(std::set< long long int > &setIn) const =0
virtual void CheckSampler()=0
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)