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