Subversion Repositories f9daq

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
326 f9daq 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