AmpGen
2.1
Toggle main menu visibility
Loading...
Searching...
No Matches
ASTResolver.h
Go to the documentation of this file.
1
#ifndef AMPGEN_ASTRESOLVER_H
2
#define AMPGEN_ASTRESOLVER_H
3
#include <memory>
4
#include <stddef.h>
5
#include <iosfwd>
6
#include <map>
7
#include <memory>
8
#include <string>
9
#include <utility>
10
#include <vector>
11
#include <unordered_map>
12
#include <future>
13
14
#include "
AmpGen/Expression.h
"
15
#include "
AmpGen/CacheTransfer.h
"
16
#include "
AmpGen/Spline.h
"
17
18
namespace
AmpGen
{
19
class
MinuitParameter
;
20
class
MinuitParameterSet
;
21
class
MinuitProxy
;
22
30
class
ASTResolver
{
31
public
:
32
ASTResolver
(
const
std::map<std::string, unsigned> &evtMap = {},
const
MinuitParameterSet
*mps =
nullptr
);
33
std::vector<std::pair<uint64_t, Expression>>
getOrderedSubExpressions
(
const
Expression
&expression);
34
35
template
<
class
TYPE>
void
resolve
(
const
TYPE &obj) {}
36
template
<
class
TYPE,
class
... ARGS>
size_t
addCacheFunction
(
const
std::string &name,
const
ARGS &...args) {
37
auto
it = m_cacheFunctions.find(name);
38
if
(it != m_cacheFunctions.end())
return
it->second->address();
39
m_cacheFunctions[name] = std::make_shared<TYPE>(m_nParameters, name, args...);
40
m_nParameters += m_cacheFunctions[name]->size();
41
return
m_nParameters - m_cacheFunctions[name]->size();
42
}
43
size_t
nParams
()
const
{
return
m_nParameters; }
44
bool
enableCuda
()
const
{
return
false
; }
45
bool
enableAVX
()
const
{
return
m_enableAVX; }
46
void
setEnableAVX
() { m_enableAVX =
true
; }
47
std::map<std::string, std::shared_ptr<CacheTransfer>>
cacheFunctions
()
const
;
48
void
addResolvedParameter
(
const
IExpression
*param,
const
std::string &thing);
49
void
addResolvedParameter
(
const
IExpression
*param,
const
size_t
&address,
const
size_t
&arg = 0);
50
std::string
resolvedVariable
(
const
IExpression
*param)
const
;
51
52
void
clear
();
53
54
std::map<const IExpression *, std::string>
parameters
()
const
{
return
m_resolvedParameters; }
55
std::vector<Variable>
unresolvedVariables
()
const
{
return
m_unresolvedVariables; }
56
57
private
:
58
std::vector<Variable> m_unresolvedVariables;
59
std::map<const IExpression *, std::string> m_resolvedParameters;
60
std::map<std::string, std::shared_ptr<CacheTransfer>> m_cacheFunctions;
61
std::map<std::string, unsigned> m_evtMap;
62
std::map<std::string, std::string> m_parameterMapping;
63
const
MinuitParameterSet
*m_mps;
64
std::map<const IExpression *, const SubTree *> m_tempTrees;
65
unsigned
int
m_nParameters{0};
66
bool
m_enableAVX{
false
};
67
};
68
69
template
<>
void
ASTResolver::resolve<Variable>
(
const
Variable
&obj);
70
template
<>
void
ASTResolver::resolve<SubTree>
(
const
SubTree
&obj);
71
template
<>
void
ASTResolver::resolve<Spline>
(
const
Spline
&obj);
72
template
<>
void
ASTResolver::resolve<MinuitProxy>
(
const
MinuitProxy
&obj);
73
template
<>
void
ASTResolver::resolve<LambdaExpression>
(
const
LambdaExpression
&obj);
74
}
75
76
#endif
CacheTransfer.h
Expression.h
Spline.h
AmpGen::ASTResolver::addCacheFunction
size_t addCacheFunction(const std::string &name, const ARGS &...args)
Definition
ASTResolver.h:36
AmpGen::ASTResolver::resolvedVariable
std::string resolvedVariable(const IExpression *param) const
AmpGen::ASTResolver::addResolvedParameter
void addResolvedParameter(const IExpression *param, const std::string &thing)
AmpGen::ASTResolver::enableAVX
bool enableAVX() const
Definition
ASTResolver.h:45
AmpGen::ASTResolver::unresolvedVariables
std::vector< Variable > unresolvedVariables() const
Definition
ASTResolver.h:55
AmpGen::ASTResolver::enableCuda
bool enableCuda() const
Definition
ASTResolver.h:44
AmpGen::ASTResolver::nParams
size_t nParams() const
Definition
ASTResolver.h:43
AmpGen::ASTResolver::resolve
void resolve(const TYPE &obj)
Definition
ASTResolver.h:35
AmpGen::ASTResolver::clear
void clear()
AmpGen::ASTResolver::parameters
std::map< const IExpression *, std::string > parameters() const
Definition
ASTResolver.h:54
AmpGen::ASTResolver::cacheFunctions
std::map< std::string, std::shared_ptr< CacheTransfer > > cacheFunctions() const
AmpGen::ASTResolver::setEnableAVX
void setEnableAVX()
Definition
ASTResolver.h:46
AmpGen::ASTResolver::getOrderedSubExpressions
std::vector< std::pair< uint64_t, Expression > > getOrderedSubExpressions(const Expression &expression)
AmpGen::ASTResolver::ASTResolver
ASTResolver(const std::map< std::string, unsigned > &evtMap={}, const MinuitParameterSet *mps=nullptr)
AmpGen::ASTResolver::addResolvedParameter
void addResolvedParameter(const IExpression *param, const size_t &address, const size_t &arg=0)
AmpGen::Expression
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Definition
Expression.h:135
AmpGen::IExpression
Virtual base class for other expression tree components.
Definition
Expression.h:116
AmpGen::LambdaExpression
Parameter that the value of which is given by some arbitrary C++ function.
Definition
Expression.h:213
AmpGen::MinuitParameter
Definition
MinuitParameter.h:15
AmpGen::MinuitParameterSet
Definition
MinuitParameterSet.h:13
AmpGen::MinuitProxy
Definition
MinuitParameter.h:83
AmpGen::Spline
Definition
Spline.h:48
AmpGen::Variable
Free parameter for expression.
Definition
Expression.h:180
AmpGen
Definition
AddCPConjugate.h:2
AmpGen::SubTree
Definition
Expression.h:246
AmpGen
ASTResolver.h
Generated on
for AmpGen by
1.17.0