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 {
26 public:
27 enum Strategy { best, random };
28 struct Node {
29 int index;
30 int left;
31 int right;
32 double cutValue;
33 Node() = default;
34 Node(const int& index,
35 const int& left,
36 const int& right,
37 const double& cutValue) : index(index), left(left), right(right), cutValue(cutValue) {};
38 };
39 FastDT() = default;
40 template <typename ...arg_types> FastDT( const arg_types&... args)
41 : FastDT( ArgumentPack(args...) ) {}
42 FastDT( const ArgumentPack& args );
43 FastDT( const std::string& textFile );
44 FastDT( std::ifstream&, const unsigned&);
45 int getBinNumber( const double* event) const { return findNode(event) ; }
46 int findNode(const double* event) const;
47 std::pair<double,double> bestCut_ls(const std::vector<double*>& source,
48 const std::vector<double*>& target,
49 int index,
50 const size_t& dim,
51 const size_t& minEvents);
52 std::vector<Node> const_nodes() const { return m_nodes; }
53 std::vector<Node> m_nodes;
54 std::queue<unsigned> m_queueOrdering;
55 unsigned m_dim = {0};
56 unsigned m_minEvents = {0};
57 unsigned m_maxDepth = {0};
58 int m_endNodeCounter = {0};
60 std::vector<double> m_minStep;
61 std::vector<int> makeQueue();
62 void setStep( const std::vector<double>& step ) { m_minStep = step; }
63 int makeNodes(std::vector<double*>&, std::queue<unsigned>, const unsigned&);
64 int makeNodes(std::vector<double*>, std::vector<double*>);
65 int makeNodes(std::vector<double*>, std::vector<double*>, std::vector<int>, const unsigned&);
66 void refreshQueue(std::vector<double*>& evts, std::queue<unsigned>& indexQueue, const unsigned& depth);
67 void serialise( std::ofstream& );
68 void setQueueOrdering( std::vector<unsigned>& ){};
69 void readFromStream( std::ifstream& stream, const int& n_nodes );
70 };
71}
72#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:55
int makeNodes(std::vector< double * > &, std::queue< unsigned >, const unsigned &)
FastDT(const arg_types &... args)
Definition FastDT.h:40
std::vector< double > m_minStep
Definition FastDT.h:60
void readFromStream(std::ifstream &stream, const int &n_nodes)
FastDT(const ArgumentPack &args)
int m_endNodeCounter
Definition FastDT.h:58
FastDT(const std::string &textFile)
std::vector< int > makeQueue()
std::vector< Node > m_nodes
Definition FastDT.h:53
int findNode(const double *event) const
void setQueueOrdering(std::vector< unsigned > &)
Definition FastDT.h:68
std::vector< Node > const_nodes() const
Definition FastDT.h:52
Strategy m_strategy
Definition FastDT.h:59
int makeNodes(std::vector< double * >, std::vector< double * >)
unsigned m_maxDepth
Definition FastDT.h:57
FastDT(std::ifstream &, const unsigned &)
void setStep(const std::vector< double > &step)
Definition FastDT.h:62
unsigned m_minEvents
Definition FastDT.h:56
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:54
int getBinNumber(const double *event) const
Definition FastDT.h:45
void serialise(std::ofstream &)
Node(const int &index, const int &left, const int &right, const double &cutValue)
Definition FastDT.h:34