Changeset 1247 in Sophya for trunk/SophyaPI/PIext


Ignore:
Timestamp:
Oct 19, 2000, 4:46:29 PM (25 years ago)
Author:
ercodmgr
Message:

n/scan cmv 19/10/00

Location:
trunk/SophyaPI/PIext
Files:
3 edited

Legend:

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

    r1237 r1247  
    101101kw = "c++setvar";
    102102usage = "c++setvar: Setting test variable \n";
    103 usage+= "c++setvar varname varcontent ";
     103usage+= "Usage: c++setvar varname varcontent ";
    104104mpiac->RegisterCommand(kw, usage, this, hgrp);
    105105
    106106kw = "c++getvar";
    107107usage = "c++getvar: Getting test variable content\n";
    108 usage+= "c++getvar varname ";
     108usage+= "Usage: c++getvar varname ";
    109109mpiac->RegisterCommand(kw, usage, this, hgrp);
    110110
    111111kw = "c++varlist";
    112112usage = "c++getvar: Printing test variable list\n";
    113 usage+= "c++varlist  ";
     113usage+= "Usage: c++varlist  ";
    114114mpiac->RegisterCommand(kw, usage, this, hgrp);
    115115//// A VIRER quand variable de objmanager OK  --> Pour Reza
  • trunk/SophyaPI/PIext/pawexecut.cc

    r1091 r1247  
    1414#include "nobjmgr.h"
    1515#include "servnobjm.h"
     16#include "nomgadapter.h"
    1617#include "pistdimgapp.h"
    1718
     
    5556usage += "\n        for default use ! , loop=i1[:i2[:di]]";
    5657usage += "\n  Related commands: projh1d projh2d projprof"; 
     58piac->RegisterCommand(kw,usage,this,hgrp);
     59
     60kw = "n/scan";
     61usage = "Scan NTuple a la paw";
     62usage += "\n n/scan nameobj[.exp1%exp2%exp3] cut loop";
     63usage += "\n               [-f:filename] [list_of_variables]";
     64usage += "\n  loop : iev1[:iev2[:diev]] or !";
     65usage += "\n  cut  : cut expression or 1. or !";
     66usage += "\n  list_of_variables : default is all variables";
     67usage += "\n                    : var1 var2 var3 ... varn";
     68usage += "\n                    : var1 : var2   (from var1 to var2)";
     69usage += "\n                    :  : var2   (from first variable to var2)";
     70usage += "\n                    : var1 :    (from var1 to last variable)";
     71usage += "\n                  ex: \"v1 : v3 v7 v4 : v6 v2 v9 :\"";
     72usage += "\n exp1%exp2%exp3 :";
     73usage += "\n           if given add exp1,exp2,exp3 to the variable list";
     74usage += "\n -f:filename : write into \"filename\", Default is to stdout";
    5775piac->RegisterCommand(kw,usage,this,hgrp);
    5876
     
    192210} else if(kw == "n/proj") {
    193211  n_proj(tokens); return(0);
     212} else if(kw == "n/scan") {
     213  n_scan(tokens); return(0);
    194214} else if(kw == "h/integ") {
    195215  h_integ(tokens); return(0);
     
    275295}
    276296string nameobj,expx,expy,expz;
    277 int nvar = decodepawstring(tokens[0],nameobj,expx,expy,expz);
     297int_4 nvar = decodepawstring(tokens[0],nameobj,expx,expy,expz);
    278298string expcut = "1"; string expwt = "1."; string loop = "";
    279299string dopt = ""; string nameproj="";
     
    327347string nameproj = tokens[0];
    328348string nameobj,expx,expy,expz;
    329 int nvar = decodepawstring(tokens[1],nameobj,expx,expy,expz);
     349int_4 nvar = decodepawstring(tokens[1],nameobj,expx,expy,expz);
    330350string expcut = "1"; string expwt = "1."; string loop = ""; string dopt = "";
    331351if(tokens.size()>=3) expcut = tokens[2]; if(expcut=="!") expcut="1";
     
    354374}
    355375
     376return;
     377}
     378
     379/* methode */
     380void PAWExecutor::n_scan(vector<string>& tokens)
     381{
     382if(tokens.size()<3)
     383  {cerr<<"Usage: n/scan nameobj[.exp1%exp2%exp3] cut loop\n"
     384       <<"       [-f:filename] [list_of_variables]"<<endl; return;}
     385
     386// decodage des premiers arguments
     387string nameobj,expr[4];
     388int_4 nexpr = decodepawstring(tokens[0],nameobj,expr[0],expr[1],expr[2]);
     389if(nexpr<4) {for(int_4 i=nexpr;i<4;i++) expr[i]="1.";}
     390string expcut = tokens[1]; if(expcut=="!") expcut="1";
     391string loop   = tokens[2]; if(loop=="!") loop="";
     392FILE* fout = NULL;
     393uint_4 ldebvar = 3;
     394if(tokens.size()>3) {
     395  if(tokens[3].find("-f:") == 0) {
     396    string filename = tokens[3].substr(3);
     397    if(filename.size()>0) {
     398      fout = fopen(filename.c_str(),"w");
     399      if(fout==NULL)
     400        {cerr<<"PAWExecutor::n_scan Error, file "<<filename
     401             <<" not opened"<<endl; return;}
     402    }
     403    ldebvar++;
     404  }
     405}
     406
     407// ntuple adaptateur
     408NamedObjMgr omg;
     409Services2NObjMgr& srvo = *omg.GetServiceObj();
     410NObjMgrAdapter* obja = omg.GetObjAdapter(nameobj); // Ne pas deleter
     411if(obja == NULL)
     412  {cerr<<"PAWExecutor::n_scan Error, ObjAdapter==NULL for "
     413       <<nameobj<<endl; return;}
     414bool adel = true;
     415NTupleInterface* objnt = obja->GetNTupleInterface(adel);
     416if(objnt == NULL)
     417  {cerr<<"PAWExecutor::n_scan Error, NTupleInterface==NULL for "
     418       <<nameobj<<endl; return;}
     419
     420// function pour le choix
     421string  vardec = objnt->VarList_C("_zz6qi_");
     422PlotExprFunc f = srvo.LinkExprFunc(vardec,expr[0],expr[1],expr[2],expr[3],expcut);
     423if(!f)
     424  {cerr<<"PAWExecutor::n_scan Error, Creation PlotExprFunc"<<endl;
     425   if(adel) delete objnt; if(fout) fclose(fout); return;}
     426
     427// variables a imprimer
     428// "rien"          --> de 0 a ncol-1 (toutes les variables)
     429// : v1            --> de 0 a v1
     430// v1 :            --> de v1 a ncol-1
     431// v1 : v2         --> de v1 a v2 (si v2 apres v1)
     432//                     v1 et v2   (si v2 avant v1)
     433// v1 v2 v3 v4     --> v1 v2 v3 v4 (ordre indifferent)
     434// et toute combinaison : "v1 : v3 v7 v4 : v6 v2 v9 :"
     435//        --> v1 v2 v3  v7  v4 v5 v6  v2  v9 v10...v(ncol-1)
     436int_4 ncol = objnt->NbColumns();
     437if(ncol<=0)
     438  {cerr<<"PAWExecutor::n_scan Error, no columns for NTuple"<<endl;
     439   return;}
     440vector<int_4> varnum;
     441if(ldebvar>=tokens.size()) {   // Toutes les variables
     442  for(int_4 i=0;i<ncol;i++) varnum.push_back(i);
     443} else {   // Choix de certaines variables
     444  int_4 k,klast,kk; bool frlast=false;
     445  if(tokens[ldebvar]==":") {varnum.push_back(0); frlast=true;}
     446  else {k = objnt->ColumnIndex(tokens[ldebvar]); varnum.push_back(k);}
     447  ldebvar++;
     448  if(ldebvar<tokens.size()) for(uint_4 i=ldebvar;i<tokens.size();i++) {
     449    if(tokens[i]!=":") {  // pas un separateur
     450      k = klast = objnt->ColumnIndex(tokens[i]);
     451      if(frlast) klast = varnum[varnum.size()-1] + 1;
     452      if(klast>k) klast=k;
     453      for(kk=klast;kk<=k;kk++) varnum.push_back(kk);
     454      frlast=false;
     455    } else if(i==tokens.size()-1) {  // separateur a la fin
     456      k = ncol-1;
     457      klast = varnum[varnum.size()-1] + 1;
     458      if(klast>k) klast=k;
     459      for(kk=klast;kk<=k;kk++) varnum.push_back(kk);
     460    } else frlast=true;  // separateur pas a la fin
     461  }
     462}
     463
     464vector<string> varname;
     465if(varnum.size()>0) for(int_4 i=0;i<(int)varnum.size();i++) {
     466  if(varnum[i]<0 || varnum[i]>=ncol)
     467    {cerr<<"PAWExecutor::n_scan Error, bad variable name at pos "
     468         <<i<<endl; if(adel) delete objnt; if(fout) fclose(fout); return;}
     469  string dum = objnt->ColumnName(varnum[i]);
     470  varname.push_back(dum);
     471}
     472
     473// evenements a utiliser
     474int_4 k1=0, k2=objnt->NbLines(), dk=1;
     475srvo.DecodeLoopParameters(loop,k1,k2,dk);
     476if (k1<0) k1=0;
     477if (k2<0) k2=objnt->NbLines();
     478if (k2>(int)objnt->NbLines()) k2=objnt->NbLines();
     479if (dk<=0) dk=1;
     480
     481// boucle sur les evenements et print
     482try  {
     483  int_4 i;
     484  if(fout) fprintf(fout,"#ev "); else printf("#ev ");
     485  for(i=0;i<(int)varname.size();i++)
     486    if(fout) fprintf(fout,"%s ",varname[i].c_str());
     487    else      printf(     "%s ",varname[i].c_str());
     488  if(nexpr>0) for(i=0;i<nexpr;i++)
     489    if(fout) fprintf(fout,"%s ",expr[i].c_str());
     490    else      printf(     "%s ",expr[i].c_str());
     491  if(fout) fprintf(fout,"\n"); else printf("\n");
     492 
     493  double xnt[5]={0,0,0,0,0};
     494  double* xn;
     495  for(int_4 k=k1; k<k2; k += dk)    {
     496    xn = objnt->GetLineD(k);
     497    if(f(xn,xnt,xnt+1,xnt+2,xnt+3) != 0) {
     498      if(fout) fprintf(fout,"%d ",k); else printf("%d ",k);
     499      for(i=0;i<(int)varnum.size();i++) {
     500        if(fout) fprintf(fout,"%g ",*(xn+varnum[i]));
     501        else      printf(     "%g ",*(xn+varnum[i]));
     502      }
     503      if(nexpr>0) for(i=0;i<nexpr;i++) {
     504        if(fout) fprintf(fout,"%g ",*(xnt+i));
     505        else      printf(     "%g ",*(xnt+i));
     506      }
     507      if(fout) fprintf(fout,"\n"); else printf("\n");
     508    }
     509  }
     510}   // fin du try
     511#ifdef SANS_EVOLPLANCK
     512CATCH(merr) {
     513  fflush(stdout); cout<<endl; cerr<<endl;
     514  string es = PeidaExc(merr);
     515  cerr<<"Services2NObjMgr::ComputeExpressions()  Exception :"<<merr<<es;
     516} ENDTRY;
     517#else
     518catch ( PException exc ) {
     519  fflush(stdout); cout<<endl; cerr<<endl;
     520  cerr<<"Services2NObjMgr::ComputeExpressions()  Exception :"<<exc.Msg()<<endl;
     521}
     522#endif
     523
     524if(adel) delete objnt;
     525if(fout) fclose(fout);
     526srvo.CloseDLL(); // Fermeture du fichier .so
    356527return;
    357528}
     
    724895
    725896/* methode */
    726 int PAWExecutor::decodepawstring(string tokens,string& nameobj
     897int_4 PAWExecutor::decodepawstring(string tokens,string& nameobj
    727898                                ,string& xexp,string& yexp,string& zexp)
    728899// Decodage general de "nameobj.xexp"
     
    733904nameobj = ""; xexp= ""; yexp= ""; zexp= "";
    734905
    735 int lt = (int) tokens.length();
     906int_4 lt = (int) tokens.length();
    736907if(lt<=0) return -1;
    737908
     
    741912//cout<<"chaine1["<<lt<<"] :"<<str<<":"<<endl;
    742913char *c[3] = {NULL,NULL,NULL};
    743 int i, np=0; bool namefound = false;
     914int_4 i, np=0; bool namefound = false;
    744915for(i=0;i<lt;i++) {
    745916  if(!namefound && str[i]=='.') {
     
    769940             {np++; if(yexp.length()>0)
    770941                      {np++; if(zexp.length()>0) np++;}}}
    771 cout<<"pawstring["<<np<<"] name="<<nameobj
    772     <<" xexp="<<xexp<<" yexp="<<yexp<<" zexp="<<zexp<<endl;
     942//cout<<"pawstring["<<np<<"] name="<<nameobj
     943//    <<" xexp="<<xexp<<" yexp="<<yexp<<" zexp="<<zexp<<endl;
    773944return np;
    774945}
     
    9371108// Le contenu de obj?Dfrom non adresse reste le meme
    9381109{
    939 int tks = tokens.size();
     1110int_4 tks = tokens.size();
    9401111if(tks<2)
    9411112  {cout<<"Usage: h_copy namefrom nametocopy [i1[:i2]] [j1[:j2]] [ic1[:jc1]]"<<endl;
     
    10871258//             : e e1:e2  remplacement des bins ayant une erreur dans cet intervalle
    10881259{
    1089 int tks = tokens.size();
     1260int_4 tks = tokens.size();
    10901261if(tks<3)
    10911262  {cout<<"Usage: h/set/[err,cont] namehisto setvalue i1[:i2]  [j1[:j2]]\n"
     
    10971268bool replerr = false; if(dum=="err") replerr = true;
    10981269r_8 setval = atof(tokens[1].c_str());
    1099 int testcont=0; if(tokens[2]=="v") testcont=1; if(tokens[2]=="e") testcont=2;
     1270int_4 testcont=0; if(tokens[2]=="v") testcont=1; if(tokens[2]=="e") testcont=2;
    11001271int_4 i1=-1, i2=-1, j1=-1, j2=-1;
    11011272r_8 v1=0., v2=0.;
     
    11821353// Fonction
    11831354FILE *fip = NULL;
    1184 string expfunc = ""; {for(int i=1;i<(int)tokens.size();i++) expfunc += tokens[i];}
     1355string expfunc = ""; {for(int_4 i=1;i<(int)tokens.size();i++) expfunc += tokens[i];}
    11851356string fname = "func1or2_pia_dl.c";
    11861357string func = "func1or2_pia_dl_func";
  • trunk/SophyaPI/PIext/pawexecut.h

    r1079 r1247  
    1616class PAWExecutor : public CmdExecutor {
    1717public:
    18                    PAWExecutor(PIACmd* piac, PIStdImgApp* app);
    19   virtual          ~PAWExecutor();
    20   virtual int      Execute(string& keyw, vector<string>& args);
     18              PAWExecutor(PIACmd* piac, PIStdImgApp* app);
     19  virtual     ~PAWExecutor();
     20  virtual int Execute(string& keyw, vector<string>& args);
    2121protected:
    22   void reset(vector<string>& tokens);
    23   void n_plot(vector<string>& tokens);
    24   void n_proj(vector<string>& tokens);
    25   void h_integ(vector<string>& tokens);
    26   void h_deriv(vector<string>& tokens);
    27   void h_rebin(vector<string>& tokens);
    28   void h_cadd(vector<string>& tokens);
    29   void h_cmult(vector<string>& tokens);
    30   void h_oper(vector<string>& tokens);
    31   void h_plot_2d(vector<string>& tokens);
    32   void h_put_vec(vector<string>& tokens);
    33   void h_get_vec(vector<string>& tokens);
    34   void h_copy(vector<string>& tokens);
    35   void h_set(string dum,vector<string>& tokens);
    36   void h_err(vector<string>& tokens);
    37   int  decodepawstring(string tokens,string& nameobj
    38                       ,string& xexp,string& yexp,string& zexp);
     22  void  reset(vector<string>& tokens);
     23  void  n_plot(vector<string>& tokens);
     24  void  n_proj(vector<string>& tokens);
     25  void  n_scan(vector<string>& tokens);
     26  void  h_integ(vector<string>& tokens);
     27  void  h_deriv(vector<string>& tokens);
     28  void  h_rebin(vector<string>& tokens);
     29  void  h_cadd(vector<string>& tokens);
     30  void  h_cmult(vector<string>& tokens);
     31  void  h_oper(vector<string>& tokens);
     32  void  h_plot_2d(vector<string>& tokens);
     33  void  h_put_vec(vector<string>& tokens);
     34  void  h_get_vec(vector<string>& tokens);
     35  void  h_copy(vector<string>& tokens);
     36  void  h_set(string dum,vector<string>& tokens);
     37  void  h_err(vector<string>& tokens);
     38  int_4 decodepawstring(string tokens,string& nameobj
     39                       ,string& xexp,string& yexp,string& zexp);
    3940  PIStdImgApp* mApp;
    4041  static uint_4 autoc_counter_;
Note: See TracChangeset for help on using the changeset viewer.