26 explicit ITMD(TMDApproachT tmdApproach)
27 : pimpl_(new OwningModel<TMDApproachT>(std::move(tmdApproach)),
28 [](void *tmdfApproachBytes) {
29 using Model = OwningModel<TMDApproachT>;
30 auto *
const model =
static_cast<Model *
>(tmdfApproachBytes);
33 tmdOperation_([](
void *tmdfApproachBytes, PartonFlavor flavor,
double x,
double kt2,
34 double mu2) ->
double {
35 using Model = OwningModel<TMDApproachT>;
36 auto *
const model =
static_cast<Model *
>(tmdfApproachBytes);
37 return model->tmd(flavor, x, kt2, mu2);
39 tmdOperation1_([](
void *tmdfApproachBytes,
double x,
double kt2,
double mu2,
40 std::array<double, DEFAULT_TOTAL_PDFS> &output) ->
void {
41 using Model = OwningModel<TMDApproachT>;
42 auto *
const model =
static_cast<Model *
>(tmdfApproachBytes);
43 model->tmd(x, kt2, mu2, output);
45 clone_([](
void *tmdfApproachBytes) ->
void * {
46 using Model = OwningModel<TMDApproachT>;
47 auto *
const model =
static_cast<Model *
>(tmdfApproachBytes);
48 return new Model(*model);
80 void tmd(
double x,
double kt2,
double mu2, std::array<double, DEFAULT_TOTAL_PDFS> &output)
const
82 return tmdOperation1_(pimpl_.get(), x, kt2, mu2, output);
93 : pimpl_(other.clone_(other.pimpl_.get()), other.pimpl_.get_deleter()),
94 clone_(other.clone_), tmdOperation_(other.tmdOperation_),
95 tmdOperation1_(other.tmdOperation1_)
111 swap(pimpl_, copy.pimpl_);
112 swap(clone_, copy.clone_);
113 swap(tmdOperation_, copy.tmdOperation_);
114 swap(tmdOperation1_, copy.tmdOperation1_);
142 return m_tmdApproach.tmd(flavor, x, kt2, mu2);
157 return m_tmdApproach.tmd(x, kt2, mu2, output);