23 #include "TGMimeTypes.h"
47 gROOT->GetListOfBrowsables()->Remove(topfold);
56 if (strcmp(source->GetName(),
"Go4Browser")==0)
58 if (strcmp(source->GetName(),
"AnalLoginfo")==0)
60 if (strcmp(source->GetName(),
"AnalRateMeter")==0)
74 TIter iter(gROOT->GetListOfBrowsers());
77 while ((br = dynamic_cast<TBrowser*> (iter())) !=0 ) {
78 br->SetStatusText(str1, 0);
79 br->SetStatusText(str2, 1);
84 TTimer::SingleShot(blockdelay,
"TGo4RootBrowserProxy",
this,
"UnblockStatusOutput()");
96 const char* header = 0;
99 header =
"Analysis running";
101 header =
"Analysis stopped";
106 res.Form(
"Rate = %6.4f Events = %d Time = %d Date = %s",
109 TMath::Nint(TMath::Floor(anal->
GetTime())),
112 res.Form(
"Rate = %d Events = %d Time = %d Date = %s",
113 TMath::Nint(TMath::Floor(anal->
GetRate())),
115 TMath::Nint(TMath::Floor(anal->
GetTime())),
118 Message(header, res.Data(), 0);
124 std::cout <<
"Loginfo = " << obj->GetName() << std::endl;
126 Message(
"Message",obj->GetName(), 5000);
141 topfold->
SetTitle(
"Top Go4 folder");
146 gROOT->GetListOfBrowsables()->Add(topfold);
150 TGMimeTypes* mt = gClient->GetMimeTypeList();
151 mt->AddType(
"go4/logo",
"Go4Logo", img +
"go4logo2_big.png", img +
"go4logo2.png",
"->Draw()");
152 mt->AddType(
"go4/graph",
"TGraph", img +
"tgraph.png", img +
"tgraph.png",
"->Draw()");
153 mt->AddType(
"go4/multigraph",
"TMultiGraph", img +
"superimpose.png", img +
"superimpose.png",
"->Draw()");
154 mt->AddType(
"go4/picture",
"TGo4Picture", img +
"picture.png", img +
"picture.png",
"->Draw()");
155 mt->AddType(
"go4/param",
"TGo4Parameter", img +
"parameter.png", img +
"parameter.png",
"->Draw()");
156 mt->AddType(
"go4/fitter",
"TGo4Fitter", img +
"fitter.png", img +
"fitter.png",
"->Draw()");
157 mt->AddType(
"go4/wincond",
"TGo4WinCond", img +
"windcond.png", img +
"windcond.png",
"->Draw()");
158 mt->AddType(
"go4/polycond",
"TGo4PolyCond", img +
"polycond.png", img +
"polycond.png",
"->Draw()");
159 mt->AddType(
"go4/condarr",
"TGo4CondArray", img +
"windcondarray.png", img +
"windcondarray.png",
"->Draw()");
160 mt->AddType(
"go4/tentry",
"TGo4TreeHistogramEntry", img +
"dynentryx.png", img +
"dynentryx.png",
"->Draw()");
161 mt->AddType(
"go4/pentry",
"TGo4HistogramEntry", img +
"dynentryx.png", img +
"dynentryx.png",
"->Draw()");
162 mt->AddType(
"go4/hserv",
"TGo4HServProxy", img +
"histserv.png", img +
"histserv.png",
"->Draw()");
163 mt->AddType(
"go4/dabcserv",
"TGo4DabcProxy", img +
"dabc.png", img +
"dabc.png",
"->Draw()");
164 mt->AddType(
"go4/analysis",
"TGo4AnalysisProxy", img +
"analysiswin.png", img +
"analysiswin.png",
"->Draw()");
167 mt->AddType(
"go4/canvas",
"TCanvas", img +
"canvas.png", img +
"canvas.png",
"->Draw()");
168 mt->AddType(
"go4/tbranch",
"Go4-TreeBranch", img +
"branch_t.png", img +
"branch_t.png",
"->Draw()");
169 mt->AddType(
"go4/tleaf",
"Go4-TreeLeaf", img +
"leaf_t.png", img +
"leaf_t.png",
"->Draw()");
170 mt->AddType(
"go4/datamember",
"Go4-EventDataMember", img +
"eventitem.png", img +
"eventitem.png",
"->Draw()");
171 mt->AddType(
"go4/event",
"Go4-EventElement", img +
"eventobj.png", img +
"eventobj.png",
"->Draw()");
178 TObjArray testedClasses;
183 Bool_t res = iter.
next();
186 Int_t levelchange = iter.levelchange();
187 while (levelchange++<0) {
195 if (curfold==0)
break;
199 curitem = curfold==0 ? 0 : curfold->
nextChild();
205 while ((curitem!=0) && (strcmp(iter.getname(), curitem->GetName())!=0)) {
213 std::cerr <<
"************* ERROR in gui slots ****************** " << std::endl;
220 TClass* itemclass = 0;
222 if ((classname!=0) && (testedClasses.FindObject(classname)==0)) {
223 itemclass = gROOT->GetClass(classname);
225 testedClasses.Add(
new TNamed(classname,
""));
233 curitem =
new TGo4BrowserItem(curfold, previtem, iter.getname(), classname);
239 TString iconname = classname;
241 iconname =
"Go4-TreeBranch";
244 iconname =
"Go4-TreeLeaf";
247 iconname =
"TGo4Parameter";
250 iconname =
"Go4-EventDataMember";
253 iconname =
"Go4-EventElement";
257 if (iter.isfolder()) {
282 TString cname =
"Canvas_";
286 if (title==0) c1 =
new TCanvas(cname, cname+
" title");
287 else c1 =
new TCanvas(cname, title);
295 if ((pad==0) || (pic==0))
return;
302 for(Int_t posy=0; posy<pic->
GetDivY(); posy++)
303 for(Int_t posx=0; posx<pic->
GetDivX(); posx++) {
325 if (obj==0)
continue;
328 h1 =
dynamic_cast<TH1*
>(obj);
332 if (obj->InheritsFrom(TGo4Condition::Class())) {
335 con->SetLineColor(2);
336 con->SetFillColor(2);
337 con->SetFillStyle(3444);
348 if ((con==0) || (
fBrowser==0))
return;
361 TCanvas* c1 =
MakeCanvas(TString(
"Condition ") + con->GetName() +
" on histo " + h1->GetName());
365 con->SetLineColor(2);
366 con->SetFillColor(2);
367 con->SetFillStyle(3444);
375 if ((itemname==0) || (
fBrowser==0))
return;
381 if ((cl==0) || !cl->InheritsFrom(TGo4Condition::Class()))
return;
388 if (obj->InheritsFrom(TGo4Condition::Class())) {
393 TPad* pad = (TPad*) gPad;
394 if (pad==0) pad =
MakeCanvas(TString(
"Drawing of ") + obj->GetName());
397 if (obj->InheritsFrom(TGo4Picture::Class()))
void deleteChild(TGo4BrowserItem *item)
void Message(const char *str1, const char *str2, Int_t blockdelay)
TGo4BrowserItem * GetParent() const
static Int_t fCanvasCounter
virtual void SetTitle(const char *title="")
TObject * GetBrowserObject(const char *name, Int_t update=0)
Int_t ItemKind(const char *name)
static bool CanDrawItem(int cando)
const char * GetObjName(Int_t n)
Int_t ItemCanDo(const char *name)
void UpdateRatemeter(TObject *obj)
void SetItemClass(const char *name)
TClass * ItemClass(const char *name)
virtual Option_t * GetDrawOption() const
Bool_t IsAnalysisRunning()
void UnblockStatusOutput()
TGo4RootBrowserProxy(TGo4BrowserProxy *br=0)
virtual void Draw(Option_t *opt="")
static const char * ItemInfo(TGo4Slot *slot)
TObject * GetAssignedObject()
ULong64_t GetCurrentCount() const
void SyncRootBrowserSlots()
virtual void Delete(Option_t *option="")
const char * ItemClassName(const char *name)
virtual void SetWorkHistogram(TH1 *histo)
virtual ~TGo4RootBrowserProxy()
Bool_t DefineRelatedObject(const char *itemname, const char *objectname, TString &objectitem, Int_t mask=3)
void DrawCondition(const char *itemname, TGo4Condition *con)
void SetIsFolder(Bool_t b)
TGo4Picture * FindPic(Int_t posy, Int_t posx)
TGo4BrowserProxy * fBrowser
TCanvas * MakeCanvas(const char *title=0)
const char * GetDateTime() const
TGo4BrowserItem * nextChild()
void DrawItem(const char *itemname)
static void SetItemCanDo(TGo4Slot *slot, Int_t cando)
TGo4Slot * BrowserTopSlot()
static TString subGO4SYS(const char *subdir)
void GetDrawAttributes(TObject *obj, Int_t index=UndefIndex)
void SetIconName(const char *name)
virtual Bool_t ProcessEvent(TGo4Slot *slot, TGo4Slot *source, Int_t id, void *param)
const char * GetLinkedHistogram()
void SetBrowser(TGo4BrowserProxy *br, TGo4RootBrowserProxy *br2)
void UpdateLoginfo(TObject *obj)
void DrawPicture(const char *itemname, TGo4Picture *pic, TPad *pad)
static Int_t DefineItemProperties(Int_t kind, TClass *cl, TString &pixmap)
Bool_t next(Bool_t goesinto=kTRUE)
TGo4BrowserItem * firstChild()