#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string>

#include "sopnamsp.h"
#include "nobjmgr.h"

#include "tvector.h"
#include "histos.h"
#include "histos2.h"
#include "ntuple.h"

#include "srandgen.h"

// ---------- Fonction pour link ds piapp -----------------
// Exemple de fonction pouvant etre linke a piapp 
// La fonction doit etre declare extern "C"
extern "C" {
  void user(vector<string>& args);
}

void user(vector<string>& args)
{
  // On instancie un objet NamedObjMgr
  NamedObjMgr omg;
  cout << " User Function user(...) nargs=" << args.size() << endl;

  // On cree un NTuple et on le remplit
  float xnt[4];
  char *ntn[4] = {"x","y","ex","ey"};
  int nent,i;
  nent = 100;
  NTuple* nt = new NTuple(4,ntn);  // Creation NTuple (AVEC new )
  for(i=0; i<nent; i++) {
    xnt[0] = i*50./nent; xnt[1] = 0.2*xnt[0]*xnt[0]+(NorRand()*xnt[0]/3.);
    xnt[2] = 0.; xnt[3] = xnt[0]/3.;
    nt->Fill(xnt);
  }

  // On ajoute le ntuple cree a la liste des objets geres par piapp
  string nom = "usernt";
  omg.AddObj(nt, nom);
  return;
}

