Subversion Repositories f9daq

Rev

Blame | Last modification | View Log | RSS feed

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <TROOT.h>
  4. #include <TF1.h>
  5. #include <TH1F.h>
  6. #include <TH1D.h>
  7. #include <TH2D.h>
  8. #include <TTree.h>
  9. #include <TCanvas.h>
  10. #include <TStyle.h>
  11. #include <TSystem.h>
  12. #include <TFile.h>
  13. #include <TDirectory.h>
  14. #include <TGraph.h>
  15. #include <TLegend.h>
  16.  
  17. #include <TPaveText.h>
  18.  
  19. #include "TXMLEngine.h"
  20.  
  21. // const char nodes[][20]={"TMON0","TMON1", "dna", "VDD", "V2P","V2N","VSS","VTH1","VTH2","VCC12","VCC15","VCC25","V38P",0};
  22. const char nodes[][20]={ "VDD", "V2P","V2N","VSS","VTH1","VTH2","VCC12","VCC15","VCC25","V38P",0};
  23. const double ul[20]   ={  1.7 , 2.1,  -1.85, -1.61, 3,      3,     1.31,    1.61   ,  2.61 , 3.91 };
  24. const double ll[20]   ={  1.61, 1.85,  -2.09, -1.69 , 0,      0,     1.09,    1.39   ,  2.39 , 3.69 };
  25.  
  26. Int_t mid=0;
  27. void hinit( int id){
  28.         int i=0;
  29.         char name[0xFF];
  30. sprintf(name,"title%d",id);
  31. //printf("ime naslova=%s\n", name);
  32. TPaveText *pt = new TPaveText(.2,.2,.7,.7);
  33. pt->SetName(name);
  34. gDirectory->GetList()->Add(pt);
  35.        
  36.         do {
  37.                 sprintf(name,"%s_%d",nodes[i],id);
  38.                 printf("name=%s\n",name);
  39.                 TGraph *g=  new TGraph();
  40.                 g->SetName(name);
  41.                 g->SetLineColor(i%9+1);
  42.                 g->SetLineWidth(3);
  43.                 gDirectory->GetList()->Add(g);
  44.                 i++;   
  45.         } while (strlen(nodes[i])> 1); 
  46. }      
  47.        
  48. void hplot(int id){
  49.         int i=0;
  50.         char name[0xFF];
  51.         char title[0xFF]= "Feb Test";
  52.  
  53.    TLegend  *leg = new TLegend(0.60,0.1,0.99,0.9);
  54.    //leg->SetHeader("Legend");
  55.         do {
  56.                 sprintf(name,"%s_%d",nodes[i],id);
  57.                 if (gROOT->FindObject(name) ) {
  58.                         TGraph *g = (TGraph *) (gROOT->FindObject(name)) ;
  59.                     if (i==0) {
  60.                                 TH2F *frame = new TH2F("frame",title,g->GetN(),0,g->GetN()+5,40,-2.5,4.5);
  61.                 frame->SetStats(0);                            
  62.                 frame->Draw();
  63.                         }
  64.                         double x, y;
  65.                         g->GetPoint(g->GetN()-1,x,y);
  66.                         if (y>ll[i] && y<ul[i]){
  67.                             sprintf(title,"%s\t=%2.2f V",nodes[i], y);
  68.                         }       else   {
  69.                                 sprintf(title,"%s\t=%2.2f V ERROR",nodes[i], y);
  70.                         }
  71.                         leg->AddEntry(g,title,"l");
  72.                         g->Draw("ls");
  73.                 } else {
  74.                         printf("%s not found!\n",name);
  75.                 }      
  76.                 i++;
  77.         } while (strlen(nodes[i])> 1); 
  78.         leg->Draw();
  79. }
  80.  
  81. void hpt( int id ){
  82. char name[0xFF];
  83. sprintf(name,"title%d",id);
  84.  
  85. //printf("title=%s\n", name);
  86.      TPaveText *pt =  (TPaveText *) (gROOT->FindObject(name));
  87.      if (pt) pt->Draw();
  88.          
  89.          
  90.        
  91. }
  92.  
  93. void hend(){
  94.    TCanvas *c= new TCanvas("slowcontrol");
  95.    c->Divide(2,2);
  96.    for (int i=0;i<4;i++) {
  97.          c->cd(i+1);  
  98.          hplot(i);
  99.    }
  100.    c->Modified();
  101.    c->Update();
  102. }
  103.  
  104.  
  105. void DisplayNode(TXMLEngine* xml, XMLNodePointer_t node, Int_t level)
  106. {
  107.    // this function display all accessible information about xml node and its children
  108.    
  109.    //printf("%*c node: %s\n",level,' ', xml->GetNodeName(node));
  110.    
  111.    // display namespace
  112.    XMLNsPointer_t ns = xml->GetNS(node);
  113.    if (ns!=0)
  114.       printf("%*c namespace: %s refer: %s\n",level+2,' ', xml->GetNSName(ns), xml->GetNSReference(ns));
  115.    
  116.    // display attributes
  117.    XMLAttrPointer_t attr = xml->GetFirstAttr(node);
  118.    while (attr!=0) {
  119.        //printf("%*c attr: %s value: %s\n",level+2,' ', xml->GetAttrName(attr), xml->GetAttrValue(attr));
  120.        attr = xml->GetNextAttr(attr);  
  121.    }
  122.    
  123.    // display content (if exists)
  124.    const char* content = xml->GetNodeContent(node);
  125.    
  126.    if (content!=0){
  127.       //printf("%*c cont: %s\n",level+2,' ', content);
  128.           if (strcmp(xml->GetNodeName(node),"time")==0) {
  129.            // printf("Time=%s\n", content);
  130.            char name[0xFF];
  131.            //sprintf(name,"Cas kki ga hocem=\t%s",content);
  132.            //printf("Time=%s\n", name);
  133.                   for (int ii=0;ii<4;ii++){
  134.                     sprintf(name,"title%d",ii);
  135.                         printf("title=%s\n",name);
  136.                     TPaveText *pt = (TPaveText *) (gROOT->FindObject(name)) ;
  137.                     if (pt) {
  138.                          pt->AddText("ARICH FEB QA test");
  139.                           sprintf(name,"Time= %s",content);
  140.                           pt->AddText(name);
  141.                          
  142.                        
  143.                     }
  144.               }
  145.           }              
  146.          
  147.           if (strcmp(xml->GetNodeName(node),"id")==0) {
  148.            mid=atoi(content);
  149.            //printf("ID---->%d\n",mid);
  150.       } else {
  151.                  char name[0xFF];
  152.                  sprintf(name,"%s_%d",xml->GetNodeName(node),mid);
  153.                  TGraph *g = (TGraph *) (gROOT->FindObject(name)) ;
  154.                  if (g) g->SetPoint(g->GetN(), g->GetN() ,atof(content));
  155.                  else printf("%s not found!\n",name);
  156.           }
  157.    }  
  158.    // display all child nodes  
  159.    XMLNodePointer_t child = xml->GetChild(node);
  160.    while (child!=0) {
  161.       DisplayNode(xml, child, level+2);
  162.       child = xml->GetNext(child);
  163.    }
  164. }
  165.  
  166.  
  167. void slowcxml2root(const char* filename = "febslowc_0044.xml")
  168. {
  169.   TTree *run = new TTree("run", "run");
  170.  
  171.    // First create engine
  172.    TXMLEngine* xml = new TXMLEngine;
  173.    
  174.    // Now try to parse xml file
  175.    // Only file with restricted xml syntax are supported
  176.    XMLDocPointer_t xmldoc = xml->ParseFile(filename);
  177.    if (xmldoc==0) {
  178.       delete xml;
  179.       return;  
  180.    }
  181.  
  182.    // take access to main node  
  183.    XMLNodePointer_t mainnode = xml->DocGetRootElement(xmldoc);
  184.    
  185.    // display recursively all nodes and subnodes
  186.    for (int i=0;i<4;i++) hinit(i);
  187.    DisplayNode(xml, mainnode, 1);
  188.    //hend();  
  189.    // Release memory before exit
  190.    xml->FreeDoc(xmldoc);
  191.    delete xml;
  192. }
  193.  
  194.