Nanga Parbat 1.1.0
A TMD fitting framework
convolutiontable.h
Go to the documentation of this file.
1//
2// Author: Valerio Bertone: valerio.bertone@cern.ch
3//
4
5#pragma once
6
7#include <string>
8#include <functional>
9#include <map>
10#include <vector>
11#include <valarray>
12#include <yaml-cpp/yaml.h>
13
15#include <NangaParbat/cut.h>
16
17namespace NangaParbat
18{
25 {
26 public:
34
45 //ConvolutionTable(YAML::Node const& table, double const& qToQmax = 100, std::vector<std::shared_ptr<Cut>> const& cuts = {}, double const& acc = 1e-7);
46 ConvolutionTable(YAML::Node const& table, std::vector<double> const& cutParam = {}, std::vector<std::shared_ptr<Cut>> const& cuts = {}, double const& acc = 1e-7);
47
58 //ConvolutionTable(std::string const& infile, double const& qToQmax = 100, std::vector<std::shared_ptr<Cut>> const& cuts = {}, double const& acc = 1e-7);
59 ConvolutionTable(std::string const& infile, std::vector<double> const& cutParam = {}, std::vector<std::shared_ptr<Cut>> const& cuts = {}, double const& acc = 1e-7);
60
67 std::map<double, double> ConvoluteDY(std::function<double(double const&, double const&, double const&)> const& fNP) const;
68
76 std::map<double, double> ConvoluteSIDIS(std::function<double(double const&, double const&, double const&)> const& fNP,
77 std::function<double(double const&, double const&, double const&)> const& DNP) const;
78
86 virtual std::vector<double> GetPredictions(std::function<double(double const&, double const&, double const&)> const& fNP1,
87 std::function<double(double const&, double const&, double const&)> const& fNP2) const;
88
98 virtual std::vector<double> GetPredictions(std::function<double(double const&, double const&, double const&, int const&)> const& fNP) const;
99
115 virtual std::vector<double> GetPredictions(std::function<double(double const&, double const&, double const&, int const&)> const& fNP,
116 std::function<double(double const&, double const&, double const&, int const&)> const& dNP) const;
117
123 std::string GetName() const { return _name; }
124 int GetProcess() const { return _proc; }
125 double GetCME() const { return _Vs; }
126 std::vector<std::vector<double>> GetqTBins() const { return _qTmap; }
127 //double GetCutqToverQ() const { return _qToQmax; }
128 std::vector<double> GetcutParam() const { return _cutParam; }
130
135 std::valarray<bool> GetCutMask() const { return _cutmask; };
136
137 protected:
138 std::string const _name;
139 int const _proc;
140 double const _Vs;
141 bool const _IntqT;
142 std::vector<double> const _qTv;
143 std::vector<std::vector<double>> const _qTmap;
144 std::vector<double> const _qTfact;
145 double const _prefact;
146 double const _prefact2;
147 std::vector<double> const _zOgata;
148 std::vector<double> const _Qg;
149 std::vector<double> _xig;
150 std::vector<double> _xbg;
151 std::vector<double> _zg;
152 std::map<double,std::vector<std::vector<double>>> _PSRed;
153 std::map<double,std::vector<std::vector<double>>> _dPSRed;
154 std::map<double,std::vector<std::vector<std::vector<double>>>> _WDY;
155 std::map<double,std::vector<std::vector<std::vector<std::vector<double>>>>> _WSIDIS;
156 //double _qToQmax; //!< Maximum value allowed for the ratio qT / Q for DY
157 std::vector<double> const _cutParam;
158 double _acc;
159 std::vector<std::shared_ptr<Cut>> _cuts;
160 std::valarray<bool> _cutmask;
161
167 public:
168 virtual void SetInputFFs(std::function<std::map<int, double>(double const &, double const &)> const &InDistFunc) {};
169 virtual void SetInputFFs(std::function<apfel::Set<apfel::Distribution>(double const&)> const& InDistFunc) {};
170 virtual std::vector<double> GetPredictions(std::function<double(double const&, double const&, double const&)> const&) const { return {}; };
172 };
173}
Class that implements the methods fot the numerical convolution of the interpolation tables with user...
Definition: convolutiontable.h:25
std::vector< double > _xig
Grid in xi;.
Definition: convolutiontable.h:149
std::string GetName() const
Definition: convolutiontable.h:123
std::map< double, std::vector< std::vector< std::vector< std::vector< double > > > > > _WSIDIS
The weights for SIDIS.
Definition: convolutiontable.h:155
std::vector< double > GetcutParam() const
Definition: convolutiontable.h:128
virtual std::vector< double > GetPredictions(std::function< double(double const &, double const &, double const &)> const &) const
Definition: convolutiontable.h:170
std::vector< double > const _cutParam
The parameters needed to compute the ratio qT / Q.
Definition: convolutiontable.h:157
std::vector< double > _zg
Grid in xi;.
Definition: convolutiontable.h:151
std::vector< std::shared_ptr< Cut > > _cuts
Cut objects.
Definition: convolutiontable.h:159
int const _proc
Index of the process (0: DY, 1: SIDIS)
Definition: convolutiontable.h:139
virtual std::vector< double > GetPredictions(std::function< double(double const &, double const &, double const &, int const &)> const &fNP, std::function< double(double const &, double const &, double const &, int const &)> const &dNP) const
This function returns a vector of predictions given two user-defined non-perturbative function.
int GetProcess() const
Definition: convolutiontable.h:124
ConvolutionTable(std::string const &infile, std::vector< double > const &cutParam={}, std::vector< std::shared_ptr< Cut > > const &cuts={}, double const &acc=1e-7)
The "ConvolutionTable" constructor.
std::map< double, double > ConvoluteSIDIS(std::function< double(double const &, double const &, double const &)> const &fNP, std::function< double(double const &, double const &, double const &)> const &DNP) const
This function convolutes a SIDIS input convolution table with two user-defined non-perturbative funct...
std::map< double, std::vector< std::vector< double > > > _dPSRed
The derivative of the phase-space reduction factors.
Definition: convolutiontable.h:153
double const _Vs
Center of mass energy.
Definition: convolutiontable.h:140
std::vector< std::vector< double > > GetqTBins() const
Definition: convolutiontable.h:126
virtual std::vector< double > GetPredictions(std::function< double(double const &, double const &, double const &, int const &)> const &fNP) const
This function returns a vector of predictions with a single user-defined non-perturbative function.
ConvolutionTable(YAML::Node const &table, std::vector< double > const &cutParam={}, std::vector< std::shared_ptr< Cut > > const &cuts={}, double const &acc=1e-7)
The "ConvolutionTable" constructor.
virtual void SetInputFFs(std::function< apfel::Set< apfel::Distribution >(double const &)> const &InDistFunc)
Definition: convolutiontable.h:169
double const _prefact
Overall prefactor.
Definition: convolutiontable.h:145
std::valarray< bool > _cutmask
Mask of points that pass the cuts.
Definition: convolutiontable.h:160
std::vector< double > _xbg
Grid in xi;.
Definition: convolutiontable.h:150
std::valarray< bool > GetCutMask() const
This function returns the mask of points that pass all the cuts.
Definition: convolutiontable.h:135
std::string const _name
Name of the table.
Definition: convolutiontable.h:135
double GetCME() const
Definition: convolutiontable.h:125
double const _prefact2
Second overall prefactor (do we really need it?)
Definition: convolutiontable.h:146
virtual void SetInputFFs(std::function< std::map< int, double >(double const &, double const &)> const &InDistFunc)
Definition: convolutiontable.h:168
std::vector< double > const _zOgata
Unscaled Ogata coordinate.
Definition: convolutiontable.h:147
ConvolutionTable()
The "ConvolutionTable" constructor.
double _acc
The Ogata-quadrature accuracy.
Definition: convolutiontable.h:158
std::map< double, double > ConvoluteDY(std::function< double(double const &, double const &, double const &)> const &fNP) const
This function convolutes a Drell-Yan input convolution table with a user-defined non-perturbative fun...
std::vector< double > const _Qg
Grid in Q.
Definition: convolutiontable.h:148
std::vector< double > const _qTv
Vector of qT bin-bounds.
Definition: convolutiontable.h:142
std::vector< double > const _qTfact
Bin-by-bin factors.
Definition: convolutiontable.h:144
bool const _IntqT
Whether the bin are integrated in qT or not.
Definition: convolutiontable.h:141
std::vector< std::vector< double > > const _qTmap
Vector of bounds for each qT bin.
Definition: convolutiontable.h:143
std::map< double, std::vector< std::vector< double > > > _PSRed
The phase-space reduction factors.
Definition: convolutiontable.h:152
virtual std::vector< double > GetPredictions(std::function< double(double const &, double const &, double const &)> const &fNP1, std::function< double(double const &, double const &, double const &)> const &fNP2) const
This function returns a vector of predictions given two user-defined non-perturbative functions.
std::map< double, std::vector< std::vector< std::vector< double > > > > _WDY
The weights for Drell-Yan.
Definition: convolutiontable.h:154
Definition: bstar.h:12