gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool

#include <daFunk.hpp>

Inheritance diagram for daFunk::FunkDerived:
Collaboration diagram for daFunk::FunkDerived:

Public Member Functions

 FunkDerived (Funk f, std::string arg, Funk g)
 
 FunkDerived (Funk f, std::string arg, double x)
 
void resolve (std::map< std::string, size_t > datamap, size_t &datalen, size_t bindID, std::map< std::string, size_t > &argmap)
 
double value (const std::vector< double > &data, size_t bindID)
 
- Public Member Functions inherited from daFunk::FunkBase
 FunkBase ()
 
virtual ~FunkBase ()
 
template<typename... Args>
Funk set (std::string arg, Funk g, Args... args)
 
template<typename... Args>
Funk set (std::string arg, double x, Args... args)
 
template<typename... Args>
Funk set (std::string arg, std::string arg1, Args... args)
 
template<typename... Args>
Funk set ()
 
template<typename... Args>
shared_ptr< FunkBoundbind (Args... args)
 
const std::vector< std::string > & getArgs ()
 
std::size_t getNArgs ()
 
bool hasArg (std::string)
 
bool hasArgs ()
 
Funk help ()
 
template<typename... Args>
bool assert_args (Args... args)
 
Singularities getSingl ()
 
Funk set_singularity (std::string arg, double pos, double width)
 
Funk print (std::string arg)
 
template<typename... Args>
shared_ptr< FunkIntegrate_gsl1dgsl_integration (Args... args)
 
PlainPtrs1 plain (std::string)
 
PlainPtrs2 plain (std::string, std::string)
 
PlainPtrs3 plain (std::string, std::string, std::string)
 
PlainPtrs4 plain (std::string, std::string, std::string, std::string)
 
template<typename T >
PlainPtr1 plain (std::string)
 
template<typename T >
PlainPtr2 plain (std::string, std::string)
 
template<typename T >
PlainPtr3 plain (std::string, std::string, std::string)
 
template<typename T >
PlainPtr4 plain (std::string, std::string, std::string, std::string)
 
template<>
Funk set ()
 

Private Member Functions

void setup (Funk f, std::string arg, Funk g)
 

Private Attributes

std::string my_arg
 
std::vector< size_t > my_index
 

Additional Inherited Members

- Protected Attributes inherited from daFunk::FunkBase
std::vector< Funkfunctions
 
ArgsType arguments
 
std::vector< std::vector< size_t > > indices
 
size_t datalen
 
Singularities singularities
 

Detailed Description

Definition at line 613 of file daFunk.hpp.

Constructor & Destructor Documentation

◆ FunkDerived() [1/2]

daFunk::FunkDerived::FunkDerived ( Funk  f,
std::string  arg,
Funk  g 
)
inline

Definition at line 616 of file daFunk.hpp.

References Gambit::SpecBit::setup().

616  : my_arg(arg)
617  {
618  setup(f, arg, g);
619  };
std::string my_arg
Definition: daFunk.hpp:675
void setup(Funk f, std::string arg, Funk g)
Definition: daFunk.hpp:678
Here is the call graph for this function:

◆ FunkDerived() [2/2]

daFunk::FunkDerived::FunkDerived ( Funk  f,
std::string  arg,
double  x 
)
inline

Definition at line 621 of file daFunk.hpp.

References daFunk::cnst(), and Gambit::SpecBit::setup().

621  : my_arg(arg)
622  {
623  setup(f, arg, cnst(x));
624  }
std::string my_arg
Definition: daFunk.hpp:675
void setup(Funk f, std::string arg, Funk g)
Definition: daFunk.hpp:678
Funk cnst(double x, Args... argss)
Definition: daFunk.hpp:606
Here is the call graph for this function:

Member Function Documentation

◆ resolve()

void daFunk::FunkDerived::resolve ( std::map< std::string, size_t >  datamap,
size_t &  datalen,
size_t  bindID,
std::map< std::string, size_t > &  argmap 
)
inlinevirtual

Reimplemented from daFunk::FunkBase.

Definition at line 627 of file daFunk.hpp.

628  {
629  functions[1]->resolve(datamap, datalen, bindID, argmap); // resolve g
630  // add new slot for result from of g
631  if(my_index.size() <= bindID)
632  {
633  my_index.resize(bindID+1);
634  // TODO: Introduce informative error message if bind fails
635  // because of inconsistencies, e.g. along the lines:
636  //
637  // std::cout << "FATAL ERROR: bind() attempts to resolve dependencies for FunkDerived" << std::endl;
638  // std::cout << "object inconsistently." << std::endl;
639  // std::cout << "Encountered while resolving " << my_arg << " and:" << std::endl;
640  // for (auto it = datamap.begin(); it != datamap.end(); it++)
641  // {
642  // std::cout << " " << it->first << std::endl;
643  // }
644  // exit(1);
645  }
646  if ( argmap.find(my_arg) == argmap.end() )
647  {
648  if(datamap.find(my_arg) == datamap.end())
649  {
650  my_index[bindID] = datalen;
651  argmap[my_arg] = datalen;
652  ++datalen;
653  }
654  else
655  {
656  my_index[bindID] = datamap[my_arg];
657  }
658  }
659  else
660  {
661  my_index[bindID] = argmap[my_arg];
662  }
663  datamap[my_arg] = my_index[bindID]; // add or overwrite entry in datamap
664  functions[0]->resolve(datamap, datalen, bindID, argmap); // resolve f
665  }
std::vector< Funk > functions
Definition: daFunk.hpp:368
std::string my_arg
Definition: daFunk.hpp:675
size_t datalen
Definition: daFunk.hpp:371
std::vector< size_t > my_index
Definition: daFunk.hpp:686

◆ setup()

void daFunk::FunkDerived::setup ( Funk  f,
std::string  arg,
Funk  g 
)
inlineprivate

Definition at line 678 of file daFunk.hpp.

References daFunk::eraseArg(), daFunk::joinArgs(), daFunk::joinSingl(), and daFunk::vec().

679  {
680  functions = vec(f, g);
681  Singularities tmp_singl = f->getSingl();
682  if ( tmp_singl.erase(arg) > 0 )
683  std::cout << "daFunk::FunkBase WARNING: Loosing singularity information while setting " << arg << std::endl;
684  singularities = joinSingl(g->getSingl(), tmp_singl);
685  arguments = joinArgs(eraseArg(f->getArgs(), arg), g->getArgs());
686  };
ArgsType arguments
Definition: daFunk.hpp:369
ArgsType eraseArg(ArgsType args, std::string arg)
Definition: daFunk.hpp:236
std::map< std::string, std::vector< std::pair< Funk, Funk > > > Singularities
Definition: daFunk.hpp:118
std::vector< Funk > functions
Definition: daFunk.hpp:368
ArgsType joinArgs(ArgsType args1, ArgsType args2)
Definition: daFunk.hpp:228
Singularities singularities
Definition: daFunk.hpp:372
std::vector< T > vec(std::vector< T > vector)
Definition: daFunk.hpp:142
Singularities joinSingl(Singularities s1, Singularities s2)
Definition: daFunk.hpp:243
Here is the call graph for this function:

◆ value()

double daFunk::FunkDerived::value ( const std::vector< double > &  data,
size_t  bindID 
)
inlinevirtual

Implements daFunk::FunkBase.

Definition at line 667 of file daFunk.hpp.

668  {
669  std::vector<double> data2(data);
670  data2[my_index[bindID]] = functions[1]->value(data, bindID);
671  return functions[0]->value(data2, bindID);
672  }
std::vector< Funk > functions
Definition: daFunk.hpp:368
std::vector< size_t > my_index
Definition: daFunk.hpp:686

Member Data Documentation

◆ my_arg

std::string daFunk::FunkDerived::my_arg
private

Definition at line 675 of file daFunk.hpp.

◆ my_index

std::vector<size_t> daFunk::FunkDerived::my_index
private

Definition at line 686 of file daFunk.hpp.


The documentation for this class was generated from the following file: