30   inline Double_t f2(
const Double_t x,
 
   33     return TMath::Gaus(y, 0.0, x, kTRUE);
 
   44   inline Double_t g2(
const Double_t x,
 
   47     return TMath::Gaus(y, 0.0, x, kTRUE) * -y/x;
 
   58   inline Double_t G2(
const Double_t x,
 
   61     return 0.5 * (1.0 + TMath::Erf(sqrt(0.5)*y/x));
 
   67   typedef typename function_type::transformer_type   transformer_type;
 
   68   typedef typename function_type::result_type        result_type;
 
   74   struct JTransformer_t :
 
   75     public transformer_type
 
   77     typedef typename transformer_type::clone_type              clone_type;
 
   78     typedef typename transformer_type::argument_type           argument_type;
 
   79     typedef typename transformer_type::const_array_type        const_array_type;
 
   89     virtual argument_type putXn(const_array_type& buffer, 
const argument_type xn)
 const  
   91       return xn * buffer[0];
 
  102     virtual argument_type getXn(const_array_type& buffer, 
const argument_type xn)
 const  
  104       return xn / buffer[0];
 
  114     virtual double getWeight(const_array_type& buffer)
 const  
  149     virtual clone_type clone()
 const  
  151       return new JTransformer_t(*
this);
 
  163 int main(
int argc, 
char **argv)
 
  175     JParser<> zap(
"Example program to test transformable function.");
 
  184   catch(
const exception &error) {
 
  185     FATAL(error.what() << endl);
 
  188   if (numberOfEvents <= 0) {
 
  189     FATAL(
"No events." << endl);
 
  193   const double xmin = 0.1;
 
  194   const double xmax = 1.0;
 
  195   const double dx   = (xmax - xmin) / 3;
 
  199   for (
double x = xmin; x < xmax + 0.5*dx; x += dx) {
 
  201     const double ymin = -5.0 * xmax;
 
  202     const double ymax = +5.0 * xmax;
 
  203     const double dy   = (ymax - ymin) / (numberOfBins - 1);
 
  205     for (
double y = ymin; y < ymax + 0.5*dy; y += dy) {
 
  210   h2.setExceptionHandler(
new typename function_type::JDefaultResult(
JMATH::zero));
 
  213     h2.transform(JTransformer_t());
 
  225   const double ymin = -5.0 * xmax;
 
  226   const double ymax = +5.0 * xmax;
 
  228   for (
int i = 0; i != numberOfEvents; ++i) {
 
  230     const double x = gRandom->Uniform(xmin, xmax);
 
  231     const double y = gRandom->Uniform(ymin, ymax);
 
  235       const result_type value = h2(x,y);
 
  237       const double f  = f2(x,y);
 
  238       const double fp = g2(x,y);
 
  239       const double v  = G2(x,y);
 
  241       Q[0].put(value.f  - f);
 
  242       Q[1].put(value.fp - fp);
 
  243       Q[2].put(value.v  - v);
 
  245     catch(
const std::exception& error) {}
 
  252     for (
int i = 0; i != 
sizeof(Q)/
sizeof(Q[0]); ++i) {
 
  253       cout << 
"  " << setw(10) << Q[i].getTitle();
 
  258     for (
int i = 0; i != 
sizeof(Q)/
sizeof(Q[0]); ++i) {
 
  259       cout << 
"  " << 
SCIENTIFIC(10,2) << Q[i].getMean();
 
  264     for (
int i = 0; i != 
sizeof(Q)/
sizeof(Q[0]); ++i) {
 
  265       cout << 
"  " << 
SCIENTIFIC(10,2) << Q[i].getSTDev();
 
Utility class to parse command line options. 
Interface for binary output. 
bool read(Vec &v, std::istream &is)
Read a Vec(tor) from a stream. 
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
static const JZero zero
Function object to assign zero value. 
Various implementations of functional maps. 
I/O formatting auxiliaries. 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
Interface for binary input. 
General purpose messaging. 
bool write(const Vec &v, std::ostream &os)
Write a Vec(tor) to a stream. 
Utility class to parse command line options. 
Auxiliary data structure for floating point format specification. 
int main(int argc, char *argv[])