AmpGen 2.1
Loading...
Searching...
No Matches
FastDT.h
Go to the documentation of this file.
1#ifndef AMPGEN_FASTDT_H
2#define AMPGEN_FASTDT_H
3#include <memory.h>
4#include <stddef.h>
5#include <array>
6#include <fstream>
7#include <functional>
8#include <iomanip>
9#include <iostream>
10#include <fstream>
11#include <map>
12#include <memory>
13#include <queue>
14#include <string>
15#include <utility>
16#include <vector>
17
18#include "AmpGen/ArgumentPack.h"
19#include "AmpGen/EventList.h"
20#include "AmpGen/MsgService.h"
21#include "AmpGen/Types.h"
22
23namespace AmpGen {
24 class FastDT {
25 public:
26 enum Strategy { best, random };
27 struct Node {
28 int index;
29 int left;
30 int right;
31 double cutValue;
32 Node() = default;
33 Node(const int &index, const int &left, const int &right, const double &cutValue) : index(index), left(left), right(right), cutValue(cutValue) {};
34 };
35 FastDT() = default;
36 template <typename... arg_types> FastDT(const arg_types &...args) : FastDT(ArgumentPack(args...)) {}
37 FastDT(const ArgumentPack &args);
38 FastDT(const std::string &textFile);
39 FastDT(std::ifstream &, const unsigned &);
40 int getBinNumber(const double *event) const { return findNode(event); }
41 int findNode(const double *event) const;
42 std::pair<double, double>
43 bestCut_ls(const std::vector<double *> &source, const std::vector<double *> &target, int index, const size_t &dim, const size_t &minEvents);
44 std::vector<Node> const_nodes() const { return m_nodes; }
45 std::vector<Node> m_nodes;
46 std::queue<unsigned> m_queueOrdering;
47 unsigned m_dim = {0};
48 unsigned m_minEvents = {0};
49 unsigned m_maxDepth = {0};
52 std::vector<double> m_minStep;
53 std::vector<int> makeQueue();
54 void setStep(const std::vector<double> &step) { m_minStep = step; }
55 int makeNodes(std::vector<double *> &, std::queue<unsigned>, const unsigned &);
56 int makeNodes(std::vector<double *>, std::vector<double *>);
57 int makeNodes(std::vector<double *>, std::vector<double *>, std::vector<int>, const unsigned &);
58 void refreshQueue(std::vector<double *> &evts, std::queue<unsigned> &indexQueue, const unsigned &depth);
59 void serialise(std::ofstream &);
60 void setQueueOrdering(std::vector<unsigned> &) {};
61 void readFromStream(std::ifstream &stream, const int &n_nodes);
62 };
63}
64#endif
Container for a set of arguments Contains a set of arguments packed from a variadic constructor,...
FastDT()=default
unsigned m_dim
Definition FastDT.h:47
int makeNodes(std::vector< double * > &, std::queue< unsigned >, const unsigned &)
std::vector< double > m_minStep
Definition FastDT.h:52
void readFromStream(std::ifstream &stream, const int &n_nodes)
FastDT(const ArgumentPack &args)
int m_endNodeCounter
Definition FastDT.h:50
FastDT(const std::string &textFile)
std::vector< int > makeQueue()
std::vector< Node > m_nodes
Definition FastDT.h:45
int findNode(const double *event) const
void setQueueOrdering(std::vector< unsigned > &)
Definition FastDT.h:60
FastDT(const arg_types &...args)
Definition FastDT.h:36
std::vector< Node > const_nodes() const
Definition FastDT.h:44
Strategy m_strategy
Definition FastDT.h:51
int makeNodes(std::vector< double * >, std::vector< double * >)
unsigned m_maxDepth
Definition FastDT.h:49
FastDT(std::ifstream &, const unsigned &)
void setStep(const std::vector< double > &step)
Definition FastDT.h:54
unsigned m_minEvents
Definition FastDT.h:48
std::pair< double, double > bestCut_ls(const std::vector< double * > &source, const std::vector< double * > &target, int index, const size_t &dim, const size_t &minEvents)
int makeNodes(std::vector< double * >, std::vector< double * >, std::vector< int >, const unsigned &)
void refreshQueue(std::vector< double * > &evts, std::queue< unsigned > &indexQueue, const unsigned &depth)
std::queue< unsigned > m_queueOrdering
Definition FastDT.h:46
int getBinNumber(const double *event) const
Definition FastDT.h:40
void serialise(std::ofstream &)
Node(const int &index, const int &left, const int &right, const double &cutValue)
Definition FastDT.h:33