GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SignalWatcher.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include <iomanip>
3 #include <fstream>
4 #include <sstream>
5 #include <vector>
6 #include <string>
7 #include <map>
8 
9 #include "TCanvas.h"
10 #include "TROOT.h"
11 #include "TStyle.h"
12 #include "TH1.h"
13 #include "TF1.h"
14 #include "TSpectrum.h"
15 #include "TBrowser.h"
16 #include "TMath.h"
17 #include "TVirtualFitter.h"
18 #include "TPavesText.h"
19 #include "TSystem.h"
20 
21 #include "BashColor.h"
22 #include "LoupeOnPad.h"
23 
24 #include "SignalWatcher.h"
25 
26 using namespace std;
27 
31 
32 SignalWatcher::SignalWatcher(const char* name, const char *title) : SpectraViewerWatcher(name,title),
33  fCurrentColor(0),
34  ListOfCurrentGraphs(new TList()),
35  fCurrentSignal(0),
36  fTotShiftX(0.),
37  fTotShiftY(0.),
38  fTotScaleX(1.),
39  fTotScaleY(1.),
40  fLasteventType(0),
41  fLasteventX(0),
42  fLasteventY(0),
43  fActiveShift(0),
44  fActiveScale(0),
45  fShiftFact(10),
46  fScaleFact(0.05)
47 {
48  ListOfCurrentGraphs->SetOwner(true);
49  ListOfCurrentGraphs->SetName("ListOfGraphs");
50 }
51 
53 
55 {
56  for(int i=0 ; i<fNLib ; i++)
57  {
58  TList *l;
59  l = new TList();
60  l->SetOwner(true);
61  l->SetName(Form("Lib_%d",i));
62  ListOfCurrentGraphs->Add(l);
63  for(int j=0 ; j<fNSg+1 ; j++)
64  {
65  MyGraph *myg;
66  myg= new MyGraph();
67  myg->SetWatcher(this);
68  l->Add(myg);
69  }
70  }
71 }
72 
74 
76 {
77  delete ListOfCurrentGraphs;
78 }
79 
81 
82 void SignalWatcher::Exec(const char */*option*/)
83 {
84 
85 }
86 
88 
89 void SignalWatcher::ShowSignalsMap(int LibraryNbr, const char *option)
90 {
91  TString opt = (TString)option;
92 
93  if(opt.Contains("a",TString::kIgnoreCase))
94  {
95  TString Name = fObservableTitle + "_" + fCrystalName;
96  TString Title = "Mapping of the signals for crystal " + fCrystalName;
97 
99 
100  new LoupeOnPad(fCanvas);
101  CanvasVisu::SetLoupe(false);
102 
103  fCanvas->Connect("ProcessedEvent(Int_t, Int_t, Int_t, TObject*)",
104  "SignalWatcher",
105  this,
106  "HandleMovement(Int_t, Int_t, Int_t, TObject*)");
107 
108  }
109  else fCanvas = gPad->GetCanvas();
110 
111  if(fCanvas == 0x0) return;
112  fCanvas->cd();
113 
114  this->UpdateGraphs("NoDraw");
115 
116  bool redraw = false;
117 
118  for(int i=0 ; i<fNSg+1 ; i++)
119  {
120  PadPos HistPosition = fHistPositionList[i];
121 
122  TPad *pad = (TPad*)fCanvas->cd(HistPosition.PadNmbr);
123 
124  MyGraph *Myg = (MyGraph*)((TList*)ListOfCurrentGraphs->At(LibraryNbr))->At(i);
125 
126  if(Myg==0x0) continue;
127 
128  TGraph *graph = (TGraph*)Myg->GetGraph();
129 
130  TPaveText *p = (TPaveText*)pad->GetListOfPrimitives()->FindObject("InfoPad");
131  MyGraph *OldGraph = (MyGraph*)pad->GetListOfPrimitives()->FindObject(Myg->GetName());
132  if(p) pad->GetListOfPrimitives()->Remove(p);
133 
134  if(OldGraph)
135  {
136  redraw = true;
137  pad->GetListOfPrimitives()->Remove(OldGraph);
138  }
139 
140  if(graph==0x0) continue;
141 
142  int col = 0;
143  for(int k=0 ; k<pad->GetListOfPrimitives()->GetSize() ; k++)
144  {
145  if(pad->GetListOfPrimitives()->At(k)->InheritsFrom("MyGraph"))col++;
146  }
147 
148  fCurrentColor = col;
149 
150  Myg->Draw(opt);
151 
152  if(p)p->Draw();
153  }
154 
155  if(!redraw)this->UpdateGraphs(Form("Init_%d",LibraryNbr));
156  else this->UpdateGraphs();
157 }
158 
160 
161 void SignalWatcher::GlobalAutoRange(const char *x_y)
162 {
163  TString opt = x_y;
164  opt.ToLower();
165 
166  double MinY = 100000., MaxY = -100000;
167  double MinX = 100000., MaxX = -100000;
168 
169  bool OnlySeg = false;
170 
171  TString OptToToken = opt;
172  TObjArray *token = OptToToken.Tokenize(" ");
173  TObject *an_obj = 0x0;
174  TIter it(token);
175  while ( (an_obj = it.Next()) )
176  {
177  TString Name = an_obj->GetName();
178  if(Name.Contains("seg")) OnlySeg = true;
179  }
180 
181  for(int i=1 ; i<= fNPadsX*fNPadsY ; i++)
182  {
183  TPad *CurrentPad = (TPad*)fCanvas->cd(i);
184 
185  TPaveText *t = (TPaveText*)gPad->FindObject("InfoPad");
186  if(!t) continue;
187  else if(((TString)t->GetLine(1)->GetTitle()).Contains("Core") && OnlySeg) continue;
188 
189  TIter iter((TList*)CurrentPad->GetListOfPrimitives());
190  TObject *o;
191  TGraph *graph = 0x0;
192  while( (o = iter()) )
193  {
194  if(o->InheritsFrom("MyGraph"))
195  {
196  graph = ((MyGraph*)o)->GetGraph();
197  if(!graph) continue;
198 
199  double *x,*y;
200  x = graph->GetX();
201  y = graph->GetY();
202 
203  for(int j=0 ; j<graph->GetN() ; j++)
204  {
205  if(x[j]<MinX) MinX = x[j];
206  if(x[j]>MaxX) MaxX = x[j];
207  if(y[j]<MinY) MinY = y[j];
208  if(y[j]>MaxY) MaxY = y[j];
209  }
210  }
211  }
212  }
213 
214  if(opt.Contains("y"))
215  {
216  double shift = TMath::Abs((MaxY-MinY)*0.05);
217  SetRange(MinY-shift,MaxY+shift,"y");
218  }
219  if(opt.Contains("x")) SetRange(MinX,MaxX,"x");
220 }
221 
223 
224 void SignalWatcher::GoToEvent(int EvtNbr)
225 {
226  this->RestoreModifs(false);
227 
228  fCurrentSignal = EvtNbr;
229 
231 
232  int NMax = GetNEvents();
233 
234  if(fCurrentSignal>=NMax) fCurrentSignal = NMax-1;
235 
236  this->UpdateGraphs("NoDraw");
237 
238  this->ShiftAndScale(0.,0.,fTotScaleX,fTotScaleY,false);
239  this->ShiftAndScale(fTotShiftX,fTotShiftY,1.,1.,false);
240 
241  GlobalAutoRange("xy");
242 
243  cout<<"Showing event number "<<fCurrentSignal<<" of watcher "<<GetName()<<endl;
244 }
245 
247 
248 void SignalWatcher::UpdateGraphs(const char *option)
249 {
250  TString opt = (TString)option;
251 
252  for(int i=0 ; i<fNLib ; i++)
253  {
254  for(int j=0 ; j<fNSg+1 ; j++)
255  {
256  MyGraph *myg = (MyGraph*)((TList*)ListOfCurrentGraphs->At(i))->At(j);
257 
258  TGraph *NewGraph = GetGraph(i,j,fCurrentSignal);
259 
260  if(NewGraph == 0x0 || myg == 0x0) continue;
261 
262  if(opt == Form("Init_%d",i))
263  {
266 
267  if(this->InheritsFrom("SignalWatcherTracesPsa") && i==1) myg->SetLS(2);
268 
269  myg->SetLW(2);
270  }
271 
272  NewGraph->GetXaxis()->SetLabelSize(0.07);
273  NewGraph->GetYaxis()->SetLabelSize(0.07);
274 
275  NewGraph->SetLineColor(myg->GetLineColor());
276  NewGraph->SetLineStyle(myg->GetLineStyle());
277  NewGraph->SetLineWidth(myg->GetLineWidth());
278 
279  NewGraph->SetMarkerColor(myg->GetMarkerColor());
280  NewGraph->SetMarkerStyle(myg->GetMarkerStyle());
281  NewGraph->SetMarkerSize(myg->GetMarkerSize());
282 
283  NewGraph->SetFillColor(myg->GetFillColor());
284  NewGraph->SetFillStyle(myg->GetFillStyle());
285 
286  myg->SetGraph(NewGraph);
287  }
288  }
289 
290  if(!opt.Contains("NoDraw")) GlobalAutoRange("xy");
291 }
292 
294 
295 void SignalWatcher::ShiftAndScale(double XShift, double YShift, double XScale, double YScale, bool Store)
296 {
297 
298  if(XScale==0.) XScale = 1e-20;
299  if(YScale==0.) YScale = 1e-20;
300 
301  for(int i=0 ; i<fNLib ; i++)
302  {
303  for(int j=0 ; j<fNSg+1 ; j++)
304  {
305  MyGraph *myg = (MyGraph*)((TList*)ListOfCurrentGraphs->At(i))->At(j);
306 
307  if(myg==0x0) continue;
308 
309  TGraph *Graph = myg->GetGraph();
310 
311  if(Graph==0x0) continue;
312 
313  double *X = Graph->GetX();
314  double *Y = Graph->GetY();
315 
316  for(int k=0 ; k<Graph->GetN() ; k++)
317  {
318  X[k] = XScale * (X[k] + XShift);
319  Y[k] = YScale * (Y[k] + YShift);
320  }
321  }
322  }
323 
324  if(Store)
325  {
326  fTotScaleX = XScale*fTotScaleX;
327  fTotShiftX = XScale*(fTotShiftX+XShift);
328 
329  fTotScaleY = YScale*fTotScaleY;
330  fTotShiftY = YScale*(fTotShiftY+YShift);
331 
332  GlobalAutoRange("xy");
333  }
334 }
335 
337 
339 {
341 
342  if(Store) cout<<"Initial signal restored for wacher "<<GetName()<<endl;
343 }
344 
346 
347 void SignalWatcher::HandleMovement(Int_t eventType, Int_t eventX, Int_t eventY, TObject *select)
348 {
349 
350 // cout<<endl;
351 // cout<<"LasteventType = "<<fLasteventType<<" ; LasteventX = "<<fLasteventX<<" ; LasteventY = "<<fLasteventY<<endl;
352 // cout<<"eventType = "<<eventType<<" ; eventX = "<<eventX<<" ; eventY = "<<eventY<<" ; ObjectName = "<<select->GetName()<<endl;
353 // cout<<endl;
354 
356 
357  if( eventType == kKeyPress )
358  {
359  SignalWatcher *SigWatch = 0x0;
360 
361  if(select->InheritsFrom("MyGraph"))
362  {
363  MyGraph *Myg = (MyGraph*)select;
364  SigWatch = (SignalWatcher*)Myg->GetWatcher();
365  }
366 
368  if((EKeySym)eventX == kKey_e && (EKeySym)eventY == kKey_e)
369  {
370  if((EKeySym)fLasteventX == kKey_n && (EKeySym)fLasteventY == kKey_n)
371  {
372  if(SigWatch) SigWatch->NextEvent();
373  }
374  else if((EKeySym)fLasteventX == kKey_p && (EKeySym)fLasteventY == kKey_p)
375  {
376  if(SigWatch) SigWatch->PreviousEvent();
377  }
378  }
379 
381  if((EKeySym)eventX == kKey_e-96 && (EKeySym)eventY == kKey_e)
382  {
383  TList *ListOfWatchers;
384  ListOfWatchers = new TList();
385  TList *ListOfMyGraphs = fCanvas->cd(1)->GetListOfPrimitives();
386  for(int i=0 ; i<ListOfMyGraphs->GetSize() ; i++)
387  {
388  TObject *o = ListOfMyGraphs->At(i);
389  MyGraph *MyG = 0x0;
390  if(o->InheritsFrom("MyGraph")) MyG = (MyGraph*)o;
391  if(MyG!=0x0 && MyG->GetWatcher()->InheritsFrom("SignalWatcher") && !ListOfWatchers->FindObject(MyG->GetWatcher())) ListOfWatchers->Add(MyG->GetWatcher());
392  }
393 
394  if((EKeySym)fLasteventX == kKey_n-96 && (EKeySym)fLasteventY == kKey_n)
395  {
396  for(int i=0 ; i<ListOfWatchers->GetSize() ; i++) ((SignalWatcher*)ListOfWatchers->At(i))->NextEvent();
397  }
398  else if((EKeySym)fLasteventX == kKey_p-96 && (EKeySym)fLasteventY == kKey_p)
399  {
400  for(int i=0 ; i<ListOfWatchers->GetSize() ; i++) ((SignalWatcher*)ListOfWatchers->At(i))->PreviousEvent();
401  }
402 
403  delete ListOfWatchers;
404  }
405 
407  if((EKeySym)eventY == kKey_h && (EKeySym)fLasteventY == kKey_s) fActiveShift=1;
408 
410  if((EKeySym)eventY == kKey_x && (EKeySym)fLasteventY == kKey_h && fActiveShift==1 && SigWatch)
411  {
412  fLastSelect = SigWatch;
413  fActiveShift=2;
414  fActiveScale = 0;
415  cout<<"Mode Xhift activated with shift factor at "<<fShiftFact<<endl;
416  }
417 
419  if((EKeySym)eventY == kKey_y && (EKeySym)fLasteventY == kKey_h && fActiveShift==1 && SigWatch)
420  {
421  fLastSelect = SigWatch;
422  fActiveShift=3;
423  fActiveScale = 0;
424  cout<<"Mode YShift activated with shift factor at "<<fShiftFact<<endl;
425  }
426  if(fActiveShift!=0 && (EKeySym)eventY == kKey_Shift)
427  {
428  if(fShiftFact == 1) fShiftFact = 10;
429  else fShiftFact = 1;
430  cout<<"Setting Shift factor at "<<fShiftFact<<endl;
431  }
432  if(fActiveShift!=0 && (EKeySym)eventY == kKey_Control)
433  {
434  if(fShiftFact == 100.) fShiftFact = 10;
435  else fShiftFact = 100;
436  cout<<"Setting Shift factor at "<<fShiftFact<<endl;
437  }
438 
440  if((EKeySym)eventY == kKey_c && (EKeySym)fLasteventY == kKey_s) fActiveScale=1;
441 
443  if((EKeySym)eventY == kKey_x && (EKeySym)fLasteventY == kKey_c && fActiveScale==1 && SigWatch)
444  {
445  fLastSelect = SigWatch;
446  fActiveScale=2;
447  fActiveShift = 0;
448  cout<<"Mode XScale activated with shift factor at "<<fScaleFact<<endl;
449  }
450  if((EKeySym)eventY == kKey_y && (EKeySym)fLasteventY == kKey_c && fActiveScale==1 && SigWatch)
451  {
452  fLastSelect = SigWatch;
453  fActiveScale=3;
454  fActiveShift = 0;
455  cout<<"Mode YScale activated with shift factor at "<<fScaleFact<<endl;
456  }
457  if(fActiveScale!=0 && (EKeySym)eventY == kKey_Shift)
458  {
459  if(fScaleFact == 0.01) fScaleFact = 0.05;
460  else fScaleFact = 0.01;
461  cout<<"Setting Scale factor at "<<fScaleFact<<endl;
462  }
463  if(fActiveScale!=0 && (EKeySym)eventY == kKey_Control)
464  {
465  if(fScaleFact == 0.1) fScaleFact = 0.05;
466  else fScaleFact = 0.1;
467  cout<<"Setting Scale factor at "<<fScaleFact<<endl;
468  }
469 
471  if((EKeySym)eventY == kKey_m && (EKeySym)fLasteventY == kKey_r)
472  {
473  if(SigWatch) SigWatch->RestoreModifs();
474  }
475 
477  if((EKeySym)eventX == kKey_m-96 && (EKeySym)eventY == kKey_m)
478  {
479  TList *ListOfWatchers;
480  ListOfWatchers = new TList();
481  TList *ListOfMyGraphs = fCanvas->cd(1)->GetListOfPrimitives();
482  for(int i=0 ; i<ListOfMyGraphs->GetSize() ; i++)
483  {
484  TObject *o = ListOfMyGraphs->At(i);
485  MyGraph *MyG = 0x0;
486  if(o->InheritsFrom("MyGraph")) MyG = (MyGraph*)o;
487  if(MyG!=0x0 && MyG->GetWatcher()->InheritsFrom("SignalWatcher") && !ListOfWatchers->FindObject(MyG->GetWatcher())) ListOfWatchers->Add(MyG->GetWatcher());
488  }
489 
490  if((EKeySym)fLasteventX == kKey_r-96 && (EKeySym)fLasteventY == kKey_r)
491  {
492  for(int i=0 ; i<ListOfWatchers->GetSize() ; i++) ((SignalWatcher*)ListOfWatchers->At(i))->RestoreModifs();
493  }
494  delete ListOfWatchers;
495  }
496  }
497 
498  if( (eventType == kWheelUp || eventType == kWheelDown ) && fLastSelect!=0x0 )
499  {
500  double fact = fShiftFact;
501  if(eventType == kWheelDown) fact = -fShiftFact;
502  if(fActiveShift==2) fLastSelect->ShiftX(fact);
503  if(fActiveShift==3) fLastSelect->ShiftY(fact);
504  fact = 1+fScaleFact;
505  if(eventType == kWheelDown) fact = 1-fScaleFact;
506  if(fActiveScale==2) fLastSelect->ScaleX(fact);
507  if(fActiveScale==3) fLastSelect->ScaleY(fact);
508  }
509 
510  if(eventY == 0 && eventX == 0 && ( fActiveShift || fActiveScale))
511  {
512  fActiveShift = 0;
513  fActiveScale = 0;
514  fLastSelect = 0x0;
515  fShiftFact = 10;
516  fScaleFact = 0.05;
517 
518  cout<<"Editor mode stoped !"<<endl;
519  }
520 
522 
523  fLasteventType = eventType;
524  fLasteventX = eventX;
525  fLasteventY = eventY;
526 
527 }
528 
532 
533 SignalWatcherTracesPrepProd::SignalWatcherTracesPrepProd(const char* name, const char *title) : SignalWatcher(name,title)
534 {
535  fNLib = 1;
536 
537  if(fObservableName.Contains("Prep")) fObservableTitle = "SigMap_Prep";
538  else fObservableTitle = "SigMap_Prod";
539  Init();
540 }
541 
543 
544 TGraph *SignalWatcherTracesPrepProd::GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
545 {
546  TGraph *graph = 0x0;
547 
548  TList *ListOfHists;
549 
550  LibraryNbr=0;
551 
552  ListOfHists = (TList*)fListOfLibrairies->At(SigNbr);
553  graph = (TGraph*)ListOfHists->At(SegNbr);
554 
555  return graph;
556 }
557 
561 
562 SignalWatcherTracesPsa::SignalWatcherTracesPsa(const char* name, const char *title) : SignalWatcher(name,title)
563 {
564  fNLib = 2;
565  fObservableTitle = "SigMap_Psa";
566  Init();
567 }
568 
570 
571 TGraph *SignalWatcherTracesPsa::GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
572 {
573  TGraph *graph = 0x0;
574 
575  TList *ListOfHists;
576 
577  ListOfHists = (TList*)fListOfLibrairies->At(2*SigNbr+LibraryNbr);
578  graph = (TGraph*)ListOfHists->At(SegNbr);
579  return graph;
580 }
581 
583 
584 void SignalWatcherTracesPsa::ShowTraces(const char *option,const char *Exp_Sim_Both)
585 {
586  TString Opt = Exp_Sim_Both;
587  Opt.ToLower();
588 
589  TString DrawOpt = option;
590  DrawOpt.ToLower();
591 
592 
593  if(Opt == "exp") SignalWatcher::ShowSignalsMap(0,option);
594  if(Opt == "sim") SignalWatcher::ShowSignalsMap(1,option);
595 
596  if(Opt == "both")
597  {
599  SignalWatcher::ShowSignalsMap(1,DrawOpt.ReplaceAll("a",""));
600  }
601 }
602 
606 
607 SignalWatcherAverSinglesPsa::SignalWatcherAverSinglesPsa(const char* name, const char *title) : SignalWatcher(name,title)
608 {
609  fNLib = 2;
610  fObservableTitle = "AverSingles_Psa";
611  Init();
612 }
613 
615 
616 TGraph *SignalWatcherAverSinglesPsa::GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
617 {
618  TGraph *graph = 0x0;
619 
620  TList *ListOfHists;
621 
622  ListOfHists = (TList*)fListOfLibrairies->At(SigNbr+(fNSg+fNC)*LibraryNbr);
623  graph = (TGraph*)ListOfHists->At(SegNbr);
624  return graph;
625 }
626 
628 
629 void SignalWatcherAverSinglesPsa::ShowTraces(const char *option, const char *Exp_Sim_Both)
630 {
631  TString Opt = Exp_Sim_Both;
632  Opt.ToLower();
633 
634  TString DrawOpt = option;
635  DrawOpt.ToLower();
636 
637 
638  if(Opt == "exp") SignalWatcher::ShowSignalsMap(0,option);
639  if(Opt == "sim") SignalWatcher::ShowSignalsMap(1,option);
640 
641  if(Opt == "both")
642  {
644  SignalWatcher::ShowSignalsMap(1,DrawOpt.ReplaceAll("a",""));
645  }
646 }
647 
652 
TList * ListOfCurrentGraphs
Definition: SignalWatcher.h:22
TString fObservableName
Definition: CanvasVisu.h:31
BashColor * fBashColor
Definition: CanvasVisu.h:34
virtual int GetNEvents()
Definition: SignalWatcher.h:26
TTask * GetWatcher()
Definition: CanvasVisu.h:116
virtual void ShiftAndScale(double XShift=0., double YShift=0., double XScale=1., double YScale=1., bool Store=true)
******************************************************************************************/// ...
ClassImp(SignalWatcher)
virtual TGraph * GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
******************************************************************************************/// ...
virtual TGraph * GetGraph(int, int, int)
Definition: SignalWatcher.h:19
vector< PadPos > fHistPositionList
Definition: CanvasVisu.h:44
SignalWatcherTracesPrepProd(const char *name, const char *title)
*/
virtual ~SignalWatcher()
******************************************************************************************/// ...
void RestoreModifs(bool Store=true)
******************************************************************************************/// ...
TString fCrystalName
Definition: CanvasVisu.h:67
void SetLW(Width_t lwidth)
Definition: CanvasVisu.h:130
double fTotScaleY
Definition: SignalWatcher.h:59
TGraph * GetGraph()
Definition: CanvasVisu.h:103
TList * fListOfLibrairies
Definition: CanvasVisu.h:64
virtual void ShiftX(double XShift)
Definition: SignalWatcher.h:63
virtual void PreviousEvent()
Definition: SignalWatcher.h:50
SignalWatcherTracesPsa(const char *name, const char *title)
*/
void SetGraph(TGraph *o)
Definition: CanvasVisu.h:102
SignalWatcher(const char *name, const char *title)
*/
virtual void Exec(const char *)
******************************************************************************************/// ...
void Init()
******************************************************************************************/// ...
Int_t fLasteventType
Definition: SignalWatcher.h:76
int fNPadsX
Definition: CanvasVisu.h:41
double fScaleFact
Definition: SignalWatcher.h:84
LoupOnPad, a class to Loupe on a Pad in a Canvas with many pads in it.
Definition: LoupeOnPad.h:76
virtual void GlobalAutoRange(const char *opt="xy")
******************************************************************************************/// ...
virtual void SetRange(double min, double max, const char *x_y="x")
TCanvas * fCanvas
Definition: CanvasVisu.h:47
TCanvas * BuildSegmentedCanvas(TString CanvasName, TString CanvasTitle)
Definition: CanvasVisu.C:125
void ShowTraces(const char *option="apl", const char *Exp_Sim_Both="Both")
******************************************************************************************/// ...
double fTotScaleX
Definition: SignalWatcher.h:58
virtual void ScaleY(double YScale)
Definition: SignalWatcher.h:69
virtual void NextEvent()
Definition: SignalWatcher.h:48
Color_t GetColor(int i)
Definition: CanvasVisu.h:49
SignalWatcherAverSinglesPsa(const char *name, const char *title)
*/
void ShowTraces(const char *option="apl", const char *Exp_Sim_Both="Both")
******************************************************************************************/// ...
TString fObservableTitle
Definition: CanvasVisu.h:32
void HandleMovement(Int_t eventType, Int_t eventX, Int_t eventY, TObject *select)
******************************************************************************************/// ...
virtual TGraph * GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
******************************************************************************************/// ...
virtual TGraph * GetGraph(int LibraryNbr, int SegNbr, int SigNbr)
******************************************************************************************/// ...
ADF::LogMessage & endl(ADF::LogMessage &log)
virtual void GoToEvent(int EvtNbr)
******************************************************************************************/// ...
virtual void ScaleX(double XScale)
Definition: SignalWatcher.h:67
void SetMC(Color_t mcolor)
Definition: CanvasVisu.h:133
void SetWatcher(TTask *t)
Definition: CanvasVisu.h:115
void SetLS(Style_t lstyle)
Definition: CanvasVisu.h:128
virtual void ShowSignalsMap(int LibraryNbr=0, const char *option="apl")
******************************************************************************************/// ...
Int_t fActiveScale
Definition: SignalWatcher.h:82
double fTotShiftY
Definition: SignalWatcher.h:57
double fTotShiftX
Definition: SignalWatcher.h:56
void SetLC(Color_t lcolor)
Definition: CanvasVisu.h:126
SignalWatcher * fLastSelect
Definition: SignalWatcher.h:79
virtual void ShiftY(double YShift)
Definition: SignalWatcher.h:65
virtual void UpdateGraphs(const char *opt="")
******************************************************************************************/// ...
Int_t fActiveShift
Definition: SignalWatcher.h:81
double fShiftFact
Definition: SignalWatcher.h:83
int fNPadsY
Definition: CanvasVisu.h:42
virtual void SetLoupe(bool loupeon=true)
Definition: CanvasVisu.C:646