Changeset 2419 in Sophya for trunk/SophyaPI/PIext/servnobjm.cc


Ignore:
Timestamp:
Jul 21, 2003, 11:13:10 PM (22 years ago)
Author:
cmv
Message:
  • introduction notion de numero de ligne dans expression ntuple modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend) modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,

PrepareNTExpressionCFile, LinkExprFunc,...)

  • doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand

(rz + cmv 21/7/2003)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/servnobjm.cc

    r2322 r2419  
    909909mImgapp->RedirectStdOutErr(false);
    910910
    911 int k1,k2,dk;
     911int_8 k1,k2,dk;
    912912k1 = 0;  k2 = objnt->NbLines();  dk = 1;
    913913DecodeLoopParameters(loop, k1, k2, dk);
    914914if (k1 < 0) k1 = 0;
    915915if (k2 < 0) k2 = objnt->NbLines();
    916 if (k2 > (int_4)objnt->NbLines()) k2 = objnt->NbLines();
     916if (k2 > (int_8)objnt->NbLines()) k2 = objnt->NbLines();
    917917if (dk <= 0) dk = 1;
    918918
    919919try  {
    920920  double* xn;
    921   int kmax = k2;
    922   for(k=k1; k<kmax; k+=dk)    {
     921  int_8 kstart = k1, kend = k2;
     922  for(k=kstart; k<kend; k+=dk)    {
    923923    xn = objnt->GetLineD(k);
    924     if (f(xn, xnt, xnt+1, xnt+2, xnt+3, k, kmax) != 0) {
     924    if (f((int_8_exprf)k, xn, xnt, xnt+1, xnt+2, xnt+3, (int_8_exprf)kstart,(int_8_exprf) kend) != 0) {
    925925      if (nt) {
    926          for(i=0; i<4; i++) fxnt[i] = xnt[i];
     926         for(int i=0; i<4; i++) fxnt[i] = xnt[i];
    927927         nt->Fill(fxnt);
    928928         }
     
    989989
    990990fputs("/* ------ Compare bits on double --------- */ \n", fip);
    991 fputs("typedef long long int_8;\n", fip);
    992 fputs("int_8 BitCmp64(double v,int_8 flg)\n", fip);
    993 fputs("{return ((int_8)((v<0.) ? v-0.1 : v+0.1))&flg;}\n", fip);
     991fputs("typedef long long int_8_exprf;\n", fip);
     992fputs("int_8_exprf BitCmp64(double v,int_8_exprf flg)\n", fip);
     993fputs("{return ((int_8_exprf)((v<0.) ? v-0.1 : v+0.1))&flg;}\n", fip);
    994994fputs("/* ------ Some random number generators --------- */ \n", fip);
    995995fputs("#if defined(__ppc__) && defined(__MACH__) \n",fip);
     
    10111011fputs("#define gaurand() NorRand() \n\n", fip);
    10121012
    1013 fputs("/* NTupleInterface Variable declaration - Generated by piapp  \n", fip);
    1014 fputs("      -- Services2NObjMgr::PrepareNTExpressionCFile()  --     */ \n\n", fip);
    1015 fprintf(fip,"int %s(double* _xnti_, double* _rx_, double* _ry_, double* _rz_, \n",
     1013fputs("/* NTupleInterface Variable declaration - Generated by piapp    */\n", fip);
     1014fputs("/*    -- Services2NObjMgr::PrepareNTExpressionCFile()  --       */ \n", fip);
     1015fputs("/* _nl line number or sequential index : _nstart <= _nl < _nend */ \n\n", fip);
     1016fprintf(fip,"int %s(int_8_exprf _nl, double* _xnti_, double* _rx_, double* _ry_, double* _rz_, \n",
    10161017        funcname.c_str());
    1017 fprintf(fip,"       double* _rt_, int _n_, int _nmax_) \n");
     1018fprintf(fip,"       double* _rt_, int_8_exprf _nstart, int_8_exprf _nend) \n");
    10181019fprintf(fip, "{ \n %s \n", vardec.c_str());
    10191020fputs("  if (!1) { /* Cut Expression failed */ \n", fip);
     
    11781179float  fxnt[10];
    11791180
    1180 int i,k;
    1181 for(i=0; i<10; i++) xnt[i] = 0.;
    1182 int k1,k2,dk;
     1181int_8 k;
     1182for(k=0; k<10; k++) xnt[k] = 0.;
     1183int_8 k1,k2,dk;
    11831184k1 = 0;  k2 = objnt->NbLines();  dk = 1;
    11841185DecodeLoopParameters(loop, k1, k2, dk);
    11851186if (k1 < 0) k1 = 0;
    11861187if (k2 < 0) k2 = objnt->NbLines();
    1187 if (k2 > (int_4)objnt->NbLines()) k2 = objnt->NbLines();
     1188if (k2 > (int_8)objnt->NbLines()) k2 = objnt->NbLines();
    11881189if (dk <= 0) dk = 1;
    11891190
     
    11921193  for(k=k1; k<k2; k += dk)    {
    11931194    xn = objnt->GetLineD(k);
    1194     if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) {
     1195    if (f((int_8_exprf)k,xn, xnt, xnt+1, xnt+2, xnt+3) != 0) {
    11951196      if (nt) {
    1196          for(i=0; i<4; i++) fxnt[i] = xnt[i];
     1197         for(int i=0; i<4; i++) fxnt[i] = xnt[i];
    11971198         nt->Fill(fxnt);
    11981199         }
     
    12511252
    12521253fputs("/* ------ Compare bits on double --------- */ \n", fip);
    1253 fputs("typedef long long int_8;\n", fip);
    1254 fputs("int_8 BitCmp64(double v,int_8 flg)\n", fip);
    1255 fputs("{return ((int_8)((v<0.) ? v-0.1 : v+0.1))&flg;}\n", fip);
     1254fputs("typedef long long int_8_exprf;\n", fip);
     1255fputs("int_8_exprf BitCmp64(double v,int_8_exprf flg)\n", fip);
     1256fputs("{return ((int_8_exprf)((v<0.) ? v-0.1 : v+0.1))&flg;}\n", fip);
    12561257fputs("/* ------ Some random number generators --------- */ \n", fip);
    12571258fputs("#if defined(__ppc__) && defined(__MACH__) \n",fip);
     
    12731274fputs("#define gaurand() NorRand() \n\n", fip);
    12741275
    1275 fputs("int expf_pia_dl_func(double* _zz6qi_, double* _rx_6q_, double* _ry_6q_, double* _rz_6q_, double* _rt_6q_) \n{\n", fip);
     1276fputs("int expf_pia_dl_func(int_8_exprf _nl, double* _zz6qi_, double* _rx_6q_, double* _ry_6q_, double* _rz_6q_, double* _rt_6q_) \n{\n", fip);
    12761277fprintf(fip,"%s \n", vardec.c_str());
    12771278fprintf(fip, "if (!(%s)) { *_rx_6q_ = *_ry_6q_ = *_rz_6q_ = *_rt_6q_ = 0.;  return(0); } \n", cut.c_str());
     
    13231324// Fonction static
    13241325/* --Methode-- */
    1325 void Services2NObjMgr::DecodeLoopParameters(string& loop, int& i1, int& i2, int& di)
     1326void Services2NObjMgr::DecodeLoopParameters(string& loop, int_8& i1, int_8& i2, int_8& di)
    13261327{
    13271328// Decode des paramatres de boucle for(int i=i1; i<i2; i+=di) specifies
     
    13311332if (l < 1) return;
    13321333size_t p = loop.find(':');
    1333 if (p >= l) { i1 = atoi(loop.c_str()); return; }
    1334 i1 = atoi(loop.substr(0, p).c_str());
     1334if (p >= l) { i1 = atol(loop.c_str()); return; }
     1335i1 = atol(loop.substr(0, p).c_str());
    13351336string aa = loop.substr(p+1);
    13361337p = aa.find(':');
    13371338if (p < aa.length() ) {
    1338   i2 = atoi(aa.substr(0,p).c_str());
    1339   di = atoi(aa.substr(p+1).c_str());
    1340   }
    1341 else i2 = atoi(aa.c_str());
     1339  i2 = atol(aa.substr(0,p).c_str());
     1340  di = atol(aa.substr(p+1).c_str());
     1341  }
     1342else i2 = atol(aa.c_str());
    13421343// cout << "-> I1= " << i1 << " I2= " << i2 << " DI= " << di << endl;
    13431344return;
Note: See TracChangeset for help on using the changeset viewer.