**Next message:**Peter H Fisher: "[ROOT] Two questions"**Previous message:**Fons Rademakers: "Re: [ROOT] Problems with shared libraries in rootd authentication"**In reply to:**Tomasz Bold: "[ROOT] Saving ROOT functions in C code?"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]

Ho Tomasz, In the CVS version, I have implemented the functions TSpline3::SaveAs(const char *filename) const TSpline5::SaveAs(const char *filename) const These functions generate the C++ code (no ROOT calls) corresponding to the spline object. Rene Brun Tomasz Bold wrote: > > Dear Rooters, > > I have posted mail some time ago asking about possiblity to > save/export splies (and possibly other functions) from ROOT to C code. > > I have written the simple function which does the job but asking whether > there is any general method? > > // saves spline as the C code > // function returns the string with valid C code of with function body. > // the string can be saved in file and direcly compilled. > // The code is inaccurate (give invalid results) at ends. > // > TString CCode (TSpline3 &spline, const char *fname, double oret=-999. ) > { > Int_t i; // inedx > Int_t N = spline.GetNpx(); > TString *out = new TString(); > // prepare function header > *out += "// the code generated automatically by root \n double "; > *out += fname; > *out += "( double x )\n{\n"; > *out += "const int N ="; > *out += N; > *out += ";\n"; > *out += "int i;\n"; > *out += "double coef["; > *out += N; > *out +="][5]= {\n"; > > double x,y,b,c,d; > for ( i = 0 ; i < N ; i++ ) > { > spline.GetCoeff(i, x, y, b, c, d); > *out += "\t\t{"; > *out += x; *out += ", "; > *out += y; *out += ", "; > *out += b; *out += ", "; > *out += c; *out += ", "; > *out += d; *out += " "; > *out += "}"; > if (i != N-1) > *out += ",\n"; > } > *out += "};\n"; > > *out += "if (x < coef[0][0] || x >= coef[N-1][0])\n\t return "; > *out += oret; > *out += ";\n"; > > *out += " > i = 0; > do { > // found section > if (coef[i][0] <= x && coef[i+1][0] > x ) { > double dx; > dx = x - coef[i][0]; > return coef[i][1] +dx*(coef[i][2] + dx*(coef[i][3] + > dx*coef[i][3])); > } > i++; > } while (i < N-1);\n"; > *out += "return -1;\n"; > > *out += "}\n"; > > return *out; > > } > > Any hints for general solution? I suppose that this would be usefull for > Analysis ---> > production code cycle for HEP experiments as the HQUAD.F was in PAW since > many times the PDFs are used for reconstruction alogtithms (and others). > I need it for ATLAS analysis. > > Best reagrds, > Tomasz Bold

**Next message:**Peter H Fisher: "[ROOT] Two questions"**Previous message:**Fons Rademakers: "Re: [ROOT] Problems with shared libraries in rootd authentication"**In reply to:**Tomasz Bold: "[ROOT] Saving ROOT functions in C code?"**Messages sorted by:**[ date ] [ thread ] [ subject ] [ author ]

*
This archive was generated by hypermail 2b29
: Sun Jan 02 2005 - 05:50:07 MET
*