1#ifndef AMPGEN_EVENTLIST2_H
2#define AMPGEN_EVENTLIST2_H
37 std::vector<real_v> m_weights {};
38 std::vector<real_v> m_genPDF {};
63 const auto&
store()
const {
return m_data; }
65 const real_v*
block(
const unsigned& p)
const {
return m_data.data() + p * m_data.nFields(); }
66 real_v*
block(
const unsigned& p) {
return m_data.data() + p * m_data.nFields(); }
69 const auto nFields()
const {
return m_data.nFields(); }
79 void resize(
const unsigned nEvents )
86 std::array<Event, utils::size<real_v>::value>
scatter(
unsigned)
const;
95 size_t eventSize()
const {
return m_data.nFields(); }
96 size_t size()
const {
return m_data.size(); }
97 size_t nBlocks()
const {
return m_data.nBlocks(); }
104 TTree*
tree(
const std::string& name,
const std::vector<std::string>& extraBranches = {} )
const;
113 size_t nBins = argPack.getArg<PlotOptions::Bins>(100);
118 template <
typename... ARGS> std::vector<TH1D*>
makeProjections(
const std::vector<Projection>& projections,
const ARGS&... args )
123 template <
typename... ARGS,
130 template <
typename... ARGS,
139 for (
auto& event : *
this )
fcn( event );
144 std::vector<real_v> rt( event.
size() );
145 for(
unsigned i = 0 ; i != event.
size(); ++i ) rt[i] = event[i];
Container for a set of arguments Contains a set of arguments packed from a variadic constructor,...
Base class for compiled expressions, i.e.
Encapsulates the final state particles of a single event.
void resize(const unsigned nEvents)
EventListSIMD & transform(functor &&fcn)
std::vector< TH1D * > makeProjections(const std::vector< Projection > &projections, const ARGS &... args)
const Event at(const unsigned &p) const
EventListSIMD(const EventList &other)
EventListSIMD(const std::string &fname, const EventType &evtType, const ARGS &... args)
const Event operator[](const size_t &) const
EventListSIMD(TTree *tree, const EventType &evtType, const ARGS &... args)
const auto & store() const
real_v genPDF(const unsigned &p) const
void gather(const std::array< Event, utils::size< real_v >::value > &, unsigned)
TH2D * makeProjection(const Projection2D &projection, const ARGS &... args)
TH2D * makeProjection(const Projection2D &projection, const ArgumentPack &args=ArgumentPack()) const
EventType eventType() const
TH1D * makeProjection(const Projection &projection, const ARGS &... args) const
EventListSIMD(const std::string &fname, const ARGS &... args)
TH1D * makeProjection(const Projection &projection, const ArgumentPack &args=ArgumentPack()) const
void loadFromFile(const std::string &fname, const ArgumentPack &args)
std::array< Event, utils::size< real_v >::value > scatter(unsigned) const
EventListSIMD(const std::vector< std::string > &fname, const EventType &evtType, const ARGS &... args)
std::vector< TH1D * > makeProjections(const std::vector< Projection > &projections, const ArgumentPack &args)
void add(const EventListSIMD &evts)
real_v weight(const unsigned &p) const
EventListSIMD(const EventType &type)
size_t aligned_size() const
void loadFromTree(TTree *tree, const ArgumentPack &args)
void setEventType(const EventType &type)
const real_v * data() const
static std::vector< real_v > makeEvent(const Event &event)
TTree * tree(const std::string &name, const std::vector< std::string > &extraBranches={}) const
std::vector< TH1D * > makeDefaultProjections(const ARGS &... args)
const auto nFields() const
void setGenPDF(const unsigned &block, const real_v &g)
void setWeight(const unsigned &block, const real_v &w, const real_v &g=1.f)
const real_v * block(const unsigned &p) const
real_v * block(const unsigned &p)
Deals with final state configuration of events, specifically dealing with the ordering of particles i...
std::vector< Projection > defaultProjections(const unsigned &nBins=100) const
typename detail::zeroType< args... >::type zeroType
auto make_scatter_iterator(const unsigned &pos, store_type *store)
static constexpr unsigned value