GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TXXXUnpackProc.cxx
Go to the documentation of this file.
1 // $Id: TXXXUnpackProc.cxx 3390 2021-12-14 09:32:44Z linev $
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #include "TXXXUnpackProc.h"
15 
16 #include "TH1.h"
17 #include "TF1.h"
18 #include "TH2.h"
19 #include "TCutG.h"
20 #include "TMath.h"
21 #include "TLatex.h"
22 
23 #include "TGo4Log.h"
24 #include "TGo4MbsEvent.h"
25 #include "TGo4WinCond.h"
26 #include "TGo4ShapedCond.h"
27 #include "TGo4ListCond.h"
28 #include "TGo4CondArray.h"
29 #include "TGo4Picture.h"
30 #include "TGo4RollingGraph.h"
31 
32 #include "TXXXParameter.h"
33 #include "TXXXUnpackEvent.h"
34 
35 //-----------------------------------------------------------
38  fCr1Ch1x2(0),
39  fHis1(0),
40  fHis1gate(0),
41  fHis2(0),
42  fHis2gate(0),
43  fconHis1(0),
44  fconHis2(0),
45  fWinCon1(0),
46  fWinCon2(0),
47  fPolyCon1(0),
48  fConArr1(0),
49  fConArr2(0),
50  fEllipseCond(0),
51  fCircleCond(0),
52  fBoxCond(0),
53  fFreestyleCond(0),
54  fWhitelistCon(0),
55  fParam(0),
56  fPicture1(0),
57  fcondSet(0),
58  fLaText(0)
59 {
60  for (int n=0;n<XXX_NUM_CHAN;n++) {
61  fCr1Ch[n] = 0;
62  fCr2Ch[n] = 0;
63  }
64 }
65 //-----------------------------------------------------------
66 TXXXUnpackProc::TXXXUnpackProc(const char* name) :
67  TGo4EventProcessor(name),
68  fCr1Ch1x2(0),
69  fHis1(0),
70  fHis1gate(0),
71  fHis2(0),
72  fHis2gate(0),
73  fconHis1(0),
74  fconHis2(0),
75  fWinCon1(0),
76  fWinCon2(0),
77  fPolyCon1(0),
78  fConArr1(0),
79  fConArr2(0),
80  fEllipseCond(0),
81  fCircleCond(0),
82  fBoxCond(0),
83  fFreestyleCond(0),
84  fWhitelistCon(0),
85  fParam(0),
86  fPicture1(0),
87  fcondSet(0),
88  fLaText(0)
89 {
90  for (int n=0;n<XXX_NUM_CHAN;n++) {
91  fCr1Ch[n] = 0;
92  fCr2Ch[n] = 0;
93  }
94 
95  TGo4Log::Info("TXXXUnpackProc: Create");
96 
98  // create and load parameter here
99  // set_Par.C macro executed after parameter load from auto-save file
100  fParam = (TXXXParameter*) MakeParameter("XXXParameter", "TXXXParameter", "set_Par.C");
101 
102  // this one is created in TXXXAnalysis, because it is used in both steps
103  fWinCon1 = (TGo4WinCond *) GetAnalysisCondition("wincon1", "TGo4WinCond");
104 
105  if(fParam->fbHisto){
106 
107  TGo4Log::Info("TXXXUnpackProc: Produce histograms");
108 
109  for(int i=0;i<XXX_NUM_CHAN;i++) {
110  fCr1Ch[i] = MakeTH1('I', Form("Crate1/Cr1Ch%02d",i+1), Form("Crate 1 channel %2d",i+1), 5000, 1., 5001.);
111  fCr2Ch[i] = MakeTH1('I', Form("Crate2/Cr2Ch%02d",i+1), Form("Crate 2 channel %2d",i+1), 5000, 1., 5001.);
112  }
113 
114  fCr1Ch1x2 = MakeTH2('I', "Cr1Ch1x2","Crate 1 channel 1x2", 200, 1., 5001., 200, 1., 5001.);
115  fHis1 = MakeTH1('I', "His1","Condition histogram", 5000, 1., 5001.);
116  fHis2 = MakeTH1('I', "His2","Condition histogram", 5000, 1., 5001.);
117  fHis1gate = MakeTH1('I', "His1g","Gated histogram", 5000, 1., 5001.);
118  fHis2gate = MakeTH1('I', "His2g","Gated histogram", 5000, 1., 5001.);
119 
120 
121  fRollingGraph1 = MakeRollingGraph("myrollinggraphs/rolling1","Test of a rolling graph 1",10000,10);
122  fRollingGraph2 = MakeRollingGraph("myrollinggraphs/rolling2","Test of a rolling graph 2",1000,100);
123  fGraph = MakeGraph("sinus","graph from a function",new TF1("sinus","sin(x)",0, 4*TMath::Pi()));
124 
125  TGo4Log::Info("TXXXUnpackProc: Produce conditions");
126  // fWinCon1->PrintCondition(true);
127 
128  fWinCon2 = MakeWinCond("wincon2", 50, 70, 90, 120);
129  fconHis1 = MakeWinCond("cHis1", 100, 2000, "His1");
130  fconHis2 = MakeWinCond("cHis2", 100, 2000, "His2");
131 
132  Double_t cutpnts[3][2] = { {400, 800}, {700, 900}, {600, 1100} };
133  fPolyCon1 = MakePolyCond("polycon", 3, cutpnts, "Cr1Ch1x2");
134 
135  fEllipseCond = MakeEllipseCond("ellipsecond",0,3000,3000,300,800, 45, "Cr1Ch1x2");
136  //Int_t npoints, Double_t cx, Double_t cy, Double_t a1, Double_t a2, Double_t theta, const char* HistoName
137 
138  fCircleCond = MakeCircleCond("circlecond",24,300,200,100, "Cr1Ch1x2");
139  //Int_t npoints, Double_t cx, Double_t cy, Double_t r, const char* HistoName
140 
141  fBoxCond = MakeBoxCond("boxcond",2000,2000,400,100, 30, "Cr1Ch1x2");
142 
143  fFreestyleCond = MakeFreeShapeCond("freecon", 3, cutpnts, "Cr1Ch1x2");
144 
145  fWhitelistCon = MakeListCond("Whitelist",1,42,2,"His1");
146 
148  if (fConArr1==0) {
149  fConArr1 = new TGo4CondArray("winconar",30,"TGo4WinCond");
150  fConArr1->SetValues(100,500);
151  fConArr1->Disable(true);
152  ((*fConArr1)[0])->SetValues(200,400);
153  ((*fConArr1)[1])->SetValues(700,1000);
154  ((*fConArr1)[2])->SetValues(1500,2000);
155  fConArr1->SetHistogram("Sum3");
157  } else {
159  }
160 
162  if(fConArr2==0) {
163  // This is example how to create condition array
164  TGo4Log::Info("TXXXUnpackProc: Create condition polyconar");
165  Double_t xvalues[4] = { 1000, 2000, 1500, 1000 };
166  Double_t yvalues[4] = { 1000, 1000, 3000, 1000 };
167  TCutG* mycut = new TCutG("cut2", 4, xvalues, yvalues);
168  fConArr2 = new TGo4CondArray("polyconar",4,"TGo4PolyCond");
169  fConArr2->SetValues(mycut);
170  fConArr2->Disable(true); // means: condition check always returns true
171  delete mycut; // mycat has been copied into the conditions
173  } else {
174  TGo4Log::Info("TXXXUnpackProc: Restore condition polyconar from autosave");
176  }
177 
178  // connect histograms to conditions. will be drawn when condition is edited.
179  fWinCon1->Enable();
180  fWinCon2->Disable(true); // return always true
181  fWinCon2->Invert(kTRUE);
182  fWinCon1->PrintCondition(true);
183  fconHis1->PrintCondition(true);
184  fconHis2->PrintCondition(true);
185  fPolyCon1->Enable();
186  fPolyCon1->PrintCondition(true);
187  ((*fConArr2)[0])->Enable();
188  ((*fConArr2)[1])->Enable(); // 2 and 3 remain disabled
189 
190  fcondSet = GetPicture("condSet");
191  if (fcondSet==0) {
192  // in the upper two pads, the condition limits can be set,
193  // in the lower two pads, the resulting histograms are shown
194  fcondSet = new TGo4Picture("condSet","Set conditions");
195  fcondSet->SetDivision(2,2);
196  fcondSet->Pic(0,0)->AddObject(fHis1);
197  fcondSet->Pic(0,1)->AddObject(fHis2);
202  fcondSet->Pic(1,0)->SetFillAtt(4, 1001); // solid
203  fcondSet->Pic(1,0)->SetLineAtt(4,1,1);
204  fcondSet->Pic(1,1)->SetFillAtt(9, 1001); // solid
205  fcondSet->Pic(1,1)->SetLineAtt(9,1,1);
206  fcondSet->Pic(0,0)->SetTitleAttr(0.05, 0.85, 0.8, 0.95);
207 
211 // TF1 *fa1 = new TF1("fa1","1000*sin(x)/x",0,1000);
212 // fcondSet->Pic(0,0)->AddSpecialObject(fa1, "same");
213 
214 // TArc* arc = new TArc(0,0, 1000);
215 // fcondSet->Pic(0,1)->AddSpecialObject(arc);
216 
218  }
219 
220  fLaText = new TLatex(0.5,0.5,"-- demo text --");
221  fLaText->SetName("LatexObjectDemo");
222  fLaText->SetTextAlign(22);
223  fLaText->SetNDC();
224  AddObject(fLaText); // will replace old one of same name
225 
226  fPicture1 = GetPicture("Picture1");
227  if (fPicture1 == 0) {
228  fPicture1 = new TGo4Picture("Picture1","Picture example");
229  fPicture1->SetLinesDivision(3, 2,3,1); // three rows, cols per row
230  // top row
231  fPicture1->LPic(0,0)->AddObject(fCr1Ch[0]);
232  fPicture1->LPic(0,0)->SetFillAtt(5, 3001); // pattern
233  fPicture1->LPic(0,0)->SetLineAtt(5,1,1);
234  fPicture1->LPic(0,0)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
235  fPicture1->LPic(0,0)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
236  fPicture1->LPic(0,0)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
237  fPicture1->LPic(0,0)->SetHisTitle(false);
238  fPicture1->LPic(0,0)->SetTitleAttr(0.1,0.75,0.7,0.9);
239 
241 
242  fPicture1->LPic(0,1)->AddObject(fCr1Ch[1]);
243  fPicture1->LPic(0,1)->SetFillAtt(4, 3001); // pattern
244  fPicture1->LPic(0,1)->SetLineAtt(4,1,1);
245  fPicture1->LPic(0,1)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
246  fPicture1->LPic(0,1)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
247  fPicture1->LPic(0,1)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
248  fPicture1->LPic(0,1)->SetHisTitle(false);
249  fPicture1->LPic(0,1)->SetTitleAttr(0.1,0.75,0.7,0.9);
250  // middle row
251  fPicture1->LPic(1,0)->AddObject(fCr1Ch[2]);
252  fPicture1->LPic(1,0)->SetFillAtt(6, 1001); // solid
253  fPicture1->LPic(1,0)->SetLineAtt(6,1,1);
254  fPicture1->LPic(1,0)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
255  fPicture1->LPic(1,0)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
256  fPicture1->LPic(1,0)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
257  fPicture1->LPic(1,0)->SetHisTitle(false);
258  fPicture1->LPic(1,0)->SetTitleAttr(0.1,0.75,0.7,0.9);
259 
260  fPicture1->LPic(1,1)->AddObject(fCr1Ch[3]);
261  fPicture1->LPic(1,1)->SetFillAtt(7, 1001); // solid
262  fPicture1->LPic(1,1)->SetLineAtt(7,1,1);
263  fPicture1->LPic(1,1)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
264  fPicture1->LPic(1,1)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
265  fPicture1->LPic(1,1)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
266  fPicture1->LPic(1,1)->SetHisTitle(false);
267  fPicture1->LPic(1,1)->SetTitleAttr(0.1,0.75,0.7,0.9);
268 
269  fPicture1->LPic(1,2)->AddObject(fCr1Ch[4]);
270  fPicture1->LPic(1,2)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
271  fPicture1->LPic(1,2)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
272  fPicture1->LPic(1,2)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
273  fPicture1->LPic(1,2)->SetHisTitle(false);
274  fPicture1->LPic(1,2)->SetTitleAttr(0.1,0.75,0.7,0.9);
275  // bottom row
277  fPicture1->LPic(2,0)->SetDrawOption("CONT");
278  fPicture1->LPic(2,0)->SetStatsAttr(0.1,0.6,0.4,0.9,101); // mean and name
279  fPicture1->LPic(2,0)->SetAxisLabelFontSize(0, 0.07, 0); // Go4 v4.2
280  fPicture1->LPic(2,0)->SetAxisLabelFontSize(1, 0.07, 0); // Go4 v4.2
281  fPicture1->LPic(2,0)->SetHisTitle(false);
282  fPicture1->LPic(2,0)->SetTitleAttr(0.1,0.75,0.7,0.9);
284  }
285  } // create histograms
286 
287  //ExecuteLine("$blabla.py"); // JAM test internal python call
288  //ExecutePython("blabla.py");
289 
290 }
291 //-----------------------------------------------------------
293 {
294  TGo4Log::Info("TXXXUnpackProc: Delete");
295  if(fParam->fbHisto){
296  fWinCon1->PrintCondition(true);
297  fPolyCon1->PrintCondition(true);
298  }
299 }
300 //-----------------------------------------------------------
302 {
303  Bool_t isValid=kFALSE; // validity of output event
304 
305  TGo4MbsEvent* inp_evt = (TGo4MbsEvent* ) GetInputEvent(); // from this
306  TXXXUnpackEvent* out_evt = (TXXXUnpackEvent*) dest;
307 
308  if (inp_evt==0) {
309  TGo4Log::Error("XXXUnpackProc: no input event !");
310  out_evt->SetValid(isValid); // to store or not to store
311  // default calling Fill method will set validity of out_evt to return value!
312  return isValid;
313  }
314  isValid=kTRUE;
315 
317  // Some examples how to skip event processing or stop analysis by exception
318  // for convenience, we provide GO4_ macros to invoke appropriate exception throws
319  // NOTE: You need to //#include "TGo4UserException.h" for this feature
320  // static UInt_t count=0;
321  // if((count++ % 100000)==0 && count>1) // user may put a real analysis condition here
322  // {
323  // // this macro will skip event and subsequent analysis steps and send specified message to gui log window:
324  // // GO4_SKIP_EVENT_MESSAGE("Skipped Event %d",count-1)
325  //
326  // // this macro will skip event and subsequent analysis steps without message:
327  // GO4_SKIP_EVENT
328  //
329  // // this macro will stop analysis and send specified message to gui log window:
330  // //GO4_STOP_ANALYSIS_MESSAGE("Stopped after Event %d",count-1)
331  //
332  // // this macro will stop analysis without message
333  // //GO4_STOP_ANALYSIS
334  // }
336 
337 
340  // s_filhe* head=inp_evt->GetMbsSourceHeader();
341  // if(head)
342  // {
343  // std::cout <<"found filhe structure:" << std::endl;
344  // std::cout <<"\tdatalen: "<<head->filhe_dlen << std::endl;
345  // std::cout <<"\tfilename_l: "<<head->filhe_file_l << std::endl;
346  // std::cout <<"\tfilename: "<<head->filhe_file << std::endl;
347  // std::cout <<"\ttype: "<<head->filhe_type << std::endl;
348  // std::cout <<"\tsubtype: "<<head->filhe_subtype << std::endl;
349  // std::cout <<"\t#commentlines: "<<head->filhe_lines << std::endl;
350  // }
351  // else
352  // {
353  // std::cout <<"zero file header" << std::endl;
354  // }
356 
359  // s_bufhe* head=inp_evt->GetMbsBufferHeader();
360  // if(head) {
361  // std::cout <<"\nfound bufhe structure:" << std::endl;
362  // std::cout <<"\tbuffernumber: "<<head->l_buf << std::endl;
363  // std::cout <<"\tdatalen: "<<head->l_dlen << std::endl;
364  // std::cout <<"\ttime lo: "<<head->l_time[0] << std::endl; // seconds since epoch 1970
365  // std::cout <<"\ttime hi: "<<head->l_time[1] << std::endl; // microseconds since time lo
366  // char sbuf[1000]; f_ut_utime(head->l_time[0], head->l_time[1], sbuf);
367  // std::cout <<"\ttimestring: " << sbuf << std::endl;
368  // std::cout <<"\ttype: "<<head->i_type << std::endl;
369  // std::cout <<"\tsubtype: "<<head->i_subtype << std::endl;
370  // }
371  // else
372  // {
373  // std::cout <<"zero buffer header" << std::endl;
374  // }
376 
377 
378  inp_evt->ResetIterator();
379  TGo4MbsSubEvent* psubevt(0);
380  while ((psubevt = inp_evt->NextSubEvent()) != 0) // subevent loop
381  {
382  if( psubevt->GetSubcrate() == 1)
383  {
384  Int_t* pdata = psubevt->GetDataField();
385  Int_t lwords = psubevt->GetIntLen();
386  if(lwords > XXX_NUM_CHAN) lwords = XXX_NUM_CHAN; // take only first 8 lwords
387  Int_t lastvalue = 0;
388  for(Int_t i = 0; i<lwords; ++i)
389  {
390  // Int_t index = *pdata&0xfff; // in case low word is index
391  // Int_t value = (*pdata>>16)&0xfff; // in case high word is data
392  if(*pdata != 0)
393  {
394  out_evt->fiCrate1[i] = *pdata; // fill output event
395 
396  if (fCr1Ch[i]) fCr1Ch[i]->Fill(*pdata);
397 
398  if(fParam->fbHisto) { // fill histograms
399  if(i == 0) // fill first channel
400  {
401  if(fconHis1->Test((Double_t) *pdata)) fHis1gate->Fill(*pdata);
402  fHis1->Fill(*pdata);
403  fWhitelistCon->Test(*pdata);
404  fRollingGraph1->Fill(*pdata);
405  fRollingGraph2->Fill(*pdata);
406  }
407  if(i == 1)
408  {
409  if(fconHis2->Test((Double_t) *pdata)) fHis2gate->Fill(*pdata);
410  fHis2->Fill(*pdata);
411  // fill Cr1Ch1x2 for three polygons:
412  if(fPolyCon1->Test(*pdata,lastvalue)) fCr1Ch1x2->Fill(*pdata, lastvalue);
413  if(((*fConArr2)[0])->Test(*pdata,lastvalue)) fCr1Ch1x2->Fill(*pdata, lastvalue);
414  if(((*fConArr2)[1])->Test(*pdata,lastvalue)) fCr1Ch1x2->Fill(*pdata, lastvalue);
415 
416  if(fEllipseCond->Test(*pdata,lastvalue)) fCr1Ch1x2->Fill(*pdata, lastvalue);
417  fCircleCond->Test(*pdata,lastvalue);
418  }
419  }
420  }
421  lastvalue = *pdata; // save for 2d histogram
422  pdata++;
423  } // for SEW LW
424  } // if (subcrate)
425  if( psubevt->GetSubcrate() == 2)
426  {
427  Int_t* pdata = psubevt->GetDataField();
428  Int_t lwords = psubevt->GetIntLen();
429  if(lwords > XXX_NUM_CHAN) lwords=XXX_NUM_CHAN;
430  for(Int_t i = 0; i<lwords; ++i) {
431  if(*pdata != 0) {
432  out_evt->fiCrate2[i] = *pdata;
433  if(fCr2Ch[i]) fCr2Ch[i]->Fill((Float_t)(*pdata));
434  }
435  pdata++;
436  } // for SEW LW
437  } // if (subcrate)
438  } // while
439 
440 
441  if (fLaText)
442  fLaText->SetText(0.5,0.5,Form("#scale[3.0]{#color[2]{Event number:%d}}",inp_evt->GetCount()));
443 
444  out_evt->SetValid(isValid); // to store or not to store
445  // default calling Fill method will set validity of out_evt to return value!
446 
447  return isValid; // this will overwrite out_evt->SetValid
448  // except one would have a Fill method implemented in the output event class!
449  // In this case the return value can be handled differently there.
450 }
virtual Bool_t Test(Double_t value)
virtual void PrintCondition(Bool_t points=kTRUE)
TGo4Parameter * MakeParameter(const char *fullname, const char *classname, const char *newcmd=0)
TGo4ShapedCond * MakeBoxCond(const char *fullname, Double_t cx, Double_t cy, Double_t a1, Double_t a2, Double_t theta, const char *HistoName=0)
virtual void Fill(Double_t value, Double_t xerror=-1, Double_t yerror=-1)
Fills a new value into the rolling graph.
TGo4ShapedCond * MakeFreeShapeCond(const char *fullname, Int_t npoints, Double_t(*points)[2], const char *HistoName=0)
Int_t fiCrate1[XXX_NUM_CHAN]
void SetValid(Bool_t on)
TGo4Picture * GetPicture(const char *name)
virtual void PrintCondition(Bool_t full=kTRUE)
TGo4RollingGraph * fRollingGraph1
TH2 * MakeTH2(char type, const char *fullname, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, const char *xtitle=0, const char *ytitle=0, const char *ztitle=0)
virtual Bool_t Test(Double_t x, Double_t y)
TGo4RollingGraph * MakeRollingGraph(const char *fullname, const char *title, Int_t points=0, Int_t average=1)
TH1 * fCr2Ch[XXX_NUM_CHAN]
TH1 * fCr1Ch[XXX_NUM_CHAN]
TGo4WinCond * MakeWinCond(const char *fullname, Double_t xmin, Double_t xmax, const char *HistoName=0)
TGo4ListCond * MakeListCond(const char *fullname, const Int_t num, const Int_t *values, const char *HistoName=0)
TGo4CondArray * fConArr2
TGo4CondArray * fConArr1
TGo4RollingGraph * fRollingGraph2
void SetHisTitle(bool on)
TGo4Condition * GetAnalysisCondition(const char *name, const char *cond_cl=0)
Int_t fiCrate2[XXX_NUM_CHAN]
TGo4PolyCond * MakePolyCond(const char *fullname, Int_t npoints, Double_t(*points)[2], const char *HistoName=0)
void SetAxisLabelFontSize(Int_t naxis, Float_t LabelSize, Int_t index=UndefIndex)
virtual Bool_t BuildEvent(TGo4EventElement *dest)
virtual void SetValues(Double_t low1, Double_t up1)
TGo4Picture * Pic(Int_t posy, Int_t posx)
TGo4MbsSubEvent * NextSubEvent(Bool_t all=kFALSE)
virtual void Enable()
TGo4ShapedCond * MakeCircleCond(const char *fullname, Int_t npoints, Double_t cx, Double_t cy, Double_t r, const char *HistoName=0)
TGo4ListCond * fWhitelistCon
void SetDivision(Int_t ndivy, Int_t ndivx)
TGraph * MakeGraph(const char *fullname, const char *title, Int_t points=0, Double_t *xvalues=0, Double_t *yvalues=0)
void SetStatsAttr(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Int_t optstat=1111, const char *statformat="6.4g", Int_t optfit=1111, const char *fitformat="5.4g")
void AddObject(TObject *obj, Option_t *DrawOption=0)
TGo4ShapedCond * fCircleCond
virtual void Disable(Bool_t result)
TGo4Picture * fcondSet
TGo4ShapedCond * fBoxCond
Int_t * GetDataField()
void SetHistogram(const char *name)
TLatex * fLaText
virtual void Disable(Bool_t result)
Int_t GetCount() const
Definition: TGo4MbsEvent.h:152
void AddCondition(TNamed *cond=0)
TGo4WinCond * fconHis2
void SetLineAtt(Color_t color, Style_t style, Width_t width, Int_t index=UndefIndex)
void SetLinesDivision(Int_t numlines, const Int_t *numbers)
TGo4EventElement * GetInputEvent()
TGo4WinCond * fWinCon1
TGo4WinCond * fconHis1
Bool_t AddAnalysisCondition(TGo4Condition *con, const char *subfolder=0)
virtual Bool_t Test(Double_t v1)
Definition: TGo4WinCond.cxx:86
TGo4ShapedCond * fEllipseCond
void SetFillAtt(Color_t color, Style_t style, Int_t index=UndefIndex)
TGo4ShapedCond * fFreestyleCond
TGo4WinCond * fWinCon2
Bool_t AddPicture(TGo4Picture *pic, const char *subfolder=0)
Bool_t AddObject(TNamed *anything, const char *subfolder=0)
Int_t GetIntLen() const
TH1 * MakeTH1(char type, const char *fullname, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, const char *xtitle=0, const char *ytitle=0)
TXXXParameter * fParam
Char_t GetSubcrate() const
TGo4PolyCond * fPolyCon1
void ResetIterator()
Definition: TGo4MbsEvent.h:101
TGo4Picture * fPicture1
#define XXX_NUM_CHAN
virtual void SetDrawOption(Option_t *option="")
Definition: TGo4Picture.h:139
TGo4Picture * LPic(Int_t nline, Int_t ncol)
static void Error(const char *text,...)
Definition: TGo4Log.cxx:323
static void Info(const char *text,...)
Definition: TGo4Log.cxx:297
virtual ~TXXXUnpackProc()
virtual void ResetCounts()
void SetTitleAttr(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t textsize=0.)
virtual void Invert(Bool_t on)
TGo4ShapedCond * MakeEllipseCond(const char *fullname, Int_t npoints, Double_t cx, Double_t cy, Double_t a1, Double_t a2, Double_t theta=0, const char *HistoName=0)