00001
00002
00003
00005
00007
00008 #include "TFndSCCshowGUI.h"
00009
00010 #include <TPaveText.h>
00011 #include <TPaveStats.h>
00012
00013 ClassImp(TFndSCCshowGUI)
00014
00015
00016 TFndSCCshowGUI::TFndSCCshowGUI():
00017 fTransientProgress(),fTrsnFrm_SaveName(),
00018 fFndMultiGraph()
00019 {
00020
00021 fSCCHistosRef = new TFndSCCshowHistos();
00022
00023 fSCCHistosRef->InitHistos();
00024 fTh1DrawOpt = "P";
00025
00026 ResetMultiGraphs(kTRUE);
00027 }
00028
00029
00030 TFndSCCshowGUI::~TFndSCCshowGUI(){
00031
00032 delete fSCCHistosRef;
00033 for( Int_t i=0;i<(NmaxMulGraph)(NMaxMultiGraphs); i++) delete fFndMultiGraph[i];
00034 }
00035
00036
00037 void TFndSCCshowGUI::ResetMultiGraphs(Bool_t recreate){
00038
00039 TString mgnam="";
00040 for( Int_t i=0;i<(NmaxMulGraph)(NMaxMultiGraphs); i++){
00041 if(recreate){
00042 delete fFndMultiGraph[i];
00043 mgnam.Form("MultiGraph_%i",i);
00044 fFndMultiGraph[i] = new TFndMultiGraph(mgnam,mgnam);
00045 }
00046 else if(fFndMultiGraph[i]) fFndMultiGraph[i]->Reset();
00047 }
00048
00049 }
00050
00051
00052 void TFndSCCshowGUI::ResetDaughter(){
00053 ResetMultiGraphs();
00054 }
00055
00056
00057 void TFndSCCshowGUI::GetDatimesFromGUI(UInt_t &start_time,UInt_t &stop_time){
00058
00059 Int_t year[2] = {0};
00060 Int_t month[2] = {0};
00061 Int_t day[2] = {0};
00062 Int_t hour[2] = {0};
00063 Int_t min[2] = {0};
00064 Int_t sec[2] = {0};
00065
00066 fSteer_Num1->GetDate(year[0],month[0],day[0]);
00067 fSteer_Num1_time->GetTime(hour[0],min[0],sec[0]);
00068
00069 fSteer_Num2->GetDate(year[1],month[1],day[1]);
00070 fSteer_Num2_time->GetTime(hour[1],min[1],sec[1]);
00071
00072 fStartDatime.Set(year[0],month[0],day[0],hour[0],min[0],sec[0]);
00073 fStopDatime.Set(year[1],month[1],day[1],hour[1],min[1],sec[1]);
00074
00075 start_time = fStartDatime.Convert();
00076 stop_time = fStopDatime.Convert();
00077
00078
00079
00080
00081
00082
00083
00084 }
00085
00086
00087 void TFndSCCshowGUI::SetGuiDatime(const Int_t &whichone,const UInt_t &conv_time){
00088
00089 if(whichone < 1 || whichone > 2){
00090 Error("SetGuiDatime","Wrong call: whichone = %i",whichone);
00091 return;
00092 }
00093
00094 TDatime tmpdat;
00095 tmpdat.Set(conv_time);
00096
00097 TGNumberEntry *tmpn_date = (whichone == 1)? fSteer_Num1 : fSteer_Num2;
00098 TGNumberEntry *tmpn_time = (whichone == 1)? fSteer_Num1_time : fSteer_Num2_time;
00099
00100 tmpn_date->SetDate(tmpdat.GetYear(),tmpdat.GetMonth(),tmpdat.GetDay());
00101 tmpn_time->SetTime(tmpdat.GetHour(),tmpdat.GetMinute(),tmpdat.GetSecond());
00102
00103 tmpn_date = 0;
00104 tmpn_time = 0;
00105
00106 if(whichone == 1) fStartDatime.Set(conv_time);
00107 else fStopDatime.Set(conv_time);
00108
00109 }
00110
00111
00112 void TFndSCCshowGUI::SetStartDatime(Long_t){
00113
00114
00115 if(!fSteer_Num1 || !fSteer_Num1_time || !fSteer_Num2 || !fSteer_Num2_time) return;
00116
00117 UInt_t start_time = 0;
00118 UInt_t stop_time = 0;
00119 GetDatimesFromGUI(start_time,stop_time);
00120
00121
00122 if(stop_time < start_time){
00123 SetGuiDatime(1,stop_time);
00124 return;
00125 }
00126
00127 }
00128
00129
00130 void TFndSCCshowGUI::SetStopDatime(Long_t){
00131
00132
00133 if(!fSteer_Num1 || !fSteer_Num1_time || !fSteer_Num2 || !fSteer_Num2_time) return;
00134
00135 UInt_t start_time = 0;
00136 UInt_t stop_time = 0;
00137 GetDatimesFromGUI(start_time,stop_time);
00138
00139
00140 if(start_time > stop_time){
00141 SetGuiDatime(2,start_time);
00142 return;
00143 }
00144
00145
00146 }
00147
00148
00149 void TFndSCCshowGUI::FillHistos_GUI(){
00150
00151 if(!fSteer_Combo || !fSteer_Num1 || !fSteer_Num2){
00152 Warning("FillHistos_GUI","Some STEER command not available");
00153 return;
00154 }
00155
00156
00157
00158
00159
00160
00161
00162 Bool_t fill_tofi = fChkBox_FillDet[TOFI]->GetState();
00163 Bool_t fill_tofo = fChkBox_FillDet[TOFO]->GetState();
00164 Bool_t fill_sil = fChkBox_FillDet[SIL] ->GetState();
00165 Bool_t fill_lmd = fChkBox_FillDet[LMD] ->GetState();
00166 Bool_t fill_stb = fChkBox_FillDet[STB] ->GetState();
00167 Bool_t fill_gas = fChkBox_FillDet[GAS] ->GetState();
00168 Bool_t fill_mag = fChkBox_FillDet[MAG] ->GetState();
00169
00170 UpdateDisplayPad(kFALSE);
00171
00172 if(fStopDatime.Convert()-fStartDatime.Convert() > 3 * 86400){
00173
00174 fTransientProgress = new TFndGTransientProgress();
00175 fTransientProgress->SetTitle("Filling progress");
00176 }
00177
00178 TDatime Ctim = fStartDatime;
00179
00180 AddTextMessage("Resetting plots...",kTRUE);
00181 AddTextMessage("...please wait...",kFALSE);
00182 UpdateDisplayPad(kFALSE);
00183 fSCCHistosRef->ResetHistos(kTRUE);
00184
00185 AddTextMessage("Getting data...",kTRUE);
00186 AddTextMessage("...please wait...",kFALSE);
00187 UpdateDisplayPad(kFALSE);
00189 Bool_t verbmem = kFALSE;
00190 Float_t rammem = 0;
00191 Float_t resmem = 0;
00192 Float_t virmem = 0;
00193
00194 while( Ctim.Convert() <= fStopDatime.Convert() ){
00195 TString tmpstr = "";
00196 TString tmpstr1 = "";
00197 tmpstr.Form("%s",Ctim.AsSQLString());
00198 tmpstr.Resize(tmpstr.Sizeof()-10);
00199 tmpstr1.Form("Filling for time %s (virt. mem: %.2f %)",tmpstr.Data(),virmem);
00200
00201 if(fDebugLev > 1) cout << "Opening file for \"" << Ctim.AsSQLString() << "\"" << endl;
00202 Int_t open_err = fSCCHistosRef->OpenRawFile("$FND_SCC_RAW",Ctim);
00203
00204 if(! open_err){
00205 if(K_DEBUG_LEV > 0) cout << "Filling for date-time \"" << Ctim.AsString() << "\"" << endl;
00206 fSCCHistosRef->FillHistos(fStopDatime.Convert(),
00207 fill_tofi,fill_tofo,fill_sil,fill_lmd,fill_stb,fill_gas,fill_mag);
00208 }
00209 else{
00210 cout << "File not found for \"" << tmpstr.Data() << "\"" << endl;
00211 TString addstr;
00212 addstr.Form("\"%s\" missing",tmpstr.Data());
00213 AddTextMessage(addstr,kFALSE);
00214 }
00215 Int_t close_err = fSCCHistosRef->CloseRawFile();
00216
00217 Ctim.Set( Ctim.Convert() + 86400 );
00218
00219
00220 if(fTransientProgress){
00221 fTransientProgress->ReSetStatusMessage(tmpstr1);
00222 if(Ctim.Convert() < fStopDatime.Convert()){
00223 fTransientProgress->SetProgressBar(Ctim.Convert()-fStartDatime.Convert(),
00224 fStopDatime.Convert()-fStartDatime.Convert() );
00225 }
00226 fTransientProgress->UpdateGUI();
00227 gClient->ProcessEventsFor(fTransientProgress);
00228 if( fTransientProgress->IsCancelled() ){
00229 AddTextMessage("\n Filling manually stopped:",kFALSE);
00230 tmpstr1.Form("time: %s\n",tmpstr.Data());
00231 AddTextMessage(tmpstr1,kFALSE);
00232 break;
00233 }
00234 }
00235
00236
00237 rammem = GetRamUsage(verbmem);
00238 resmem = GetProcMemUsage(E_FROOT_MemRes,verbmem);
00239 virmem = GetProcMemUsage(E_FROOT_MemVirt,verbmem);
00240
00241 if(resmem > 90.){
00242 AddTextMessage("\n Res. mem > 90 %",kFALSE);
00243 tmpstr1.Form("time: %s\n",tmpstr.Data());
00244 AddTextMessage(tmpstr1,kFALSE);
00245 Warning("FillHistos_GUI","Resident memory > 90 percent.");
00246 break;
00247 }
00248 if(rammem > 98.){
00249
00250
00251
00252 Info("FillHistos_GUI","RAM busy.");
00253
00254 }
00255 if(virmem > 95.){
00256 AddTextMessage("\n Virt > 95 %",kFALSE);
00257 tmpstr1.Form("time: %s\n",tmpstr.Data());
00258 AddTextMessage(tmpstr1,kFALSE);
00259 Warning("FillHistos_GUI","Virtual memory > 95 percent.");
00260 break;
00261 }
00262 }
00263
00264 if(fTransientProgress){
00265 delete fTransientProgress;
00266 fTransientProgress = 0;
00267 }
00268
00270 AddTextMessage("SCC GUI ready.",kFALSE);
00271
00272 }
00273
00274
00275 void TFndSCCshowGUI::BuildGUI(){
00276
00277 BuildBaseGUI();
00278
00279
00280 }
00281
00282
00283 void TFndSCCshowGUI::CloseGUI(){
00284
00285 if(!fMainFrame){
00286 Warning("CloseGUI","fMainFrame not available");
00287 return;
00288 }
00289
00290 if(fDebugLev > 1) Info("CloseGUI","Deleting mainframe");
00291
00292 fMainFrame->Cleanup();
00293
00294 delete fMainFrame;
00295
00296 gApplication->Terminate();
00297 return;
00298 }
00299
00300
00301 void TFndSCCshowGUI::CustomizeGUI(){
00302
00303 fGrpFrm_SteerCmd->SetTitle("Steer commands");
00304 fSteer_Combo_Lbl->SetText("Data taking");
00305 fSteer_Num1_Lbl->SetText("From");
00306 fSteer_Num2_Lbl->SetText("To");
00307
00308 Gui::MoveResizeSafe(10,40,77,35, fSteer_Num1_Lbl);
00309 Gui::MoveResizeSafe(10,80,77,35, fSteer_Num2_Lbl);
00310
00311
00312 fSteer_Num1->SetFormat( (TGNumberFormat::EStyle) 10 );
00313 Gui::MoveResizeSafe(90,40,69,17, fSteer_Num2);
00314
00315
00316 fSteer_Num2->SetFormat( (TGNumberFormat::EStyle) 10 );
00317 Gui::MoveResizeSafe(90,80,69,17, fSteer_Num2);
00318
00319 fSteer_Num1_time = new TGNumberEntry(fGrpFrm_SteerCmd, (Double_t) 0,8,-1,(TGNumberFormat::EStyle) 9);
00320 fGrpFrm_SteerCmd->AddFrame(fSteer_Num1_time, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00321 Gui::MoveResizeSafe(90,57,69,17, fSteer_Num1_time);
00322
00323 fSteer_Num2_time = new TGNumberEntry(fGrpFrm_SteerCmd, (Double_t) 0,8,-1,(TGNumberFormat::EStyle) 9);
00324 fGrpFrm_SteerCmd->AddFrame(fSteer_Num2_time, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00325 Gui::MoveResizeSafe(90,97,69,17, fSteer_Num2_time);
00326
00327
00328 fSteer_But1->SetText("Fill Histos");
00329 Gui::MoveResizeSafe(10,120,70,30, fSteer_But1);
00330
00331 fSteer_But2->SetText("Save page");
00332 Gui::MoveResizeSafe(87,120,70,30, fSteer_But2);
00333
00334 fGrpFrm_SelectCmd->SetTitle("Display commands");
00335 fSel_Combo1_Lbl->SetText("Type");
00336 fSel_Combo2_Lbl->SetText("Selection");
00337
00338 Gui::MoveResizeSafe(20,70,130,20, fSel_Combo2_Lbl);
00339 Gui::MoveResizeSafe(20,90,130,20, fSel_Combo2);
00340
00341 fGrpFrm_Msg->SetTitle("Info");
00342
00343
00344
00345 fChkBox_Autoreset = new TGCheckButton(fGrpFrm_SteerCmd,"Auto-reset");
00346 fGrpFrm_SteerCmd->AddFrame(fChkBox_Autoreset, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00347 Gui::MoveResizeSafe(10,155,70,20, fChkBox_Autoreset);
00348 fChkBox_Autoreset->SetState(kButtonDown,kFALSE);
00349
00350
00351 fChkBox_Overwrite = new TGCheckButton(fGrpFrm_SteerCmd,"overwrite");
00352 fGrpFrm_SteerCmd->AddFrame(fChkBox_Overwrite, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00353 Gui::MoveResizeSafe(90,155,70,20, fChkBox_Overwrite);
00354 fChkBox_Overwrite->SetState(kButtonDown,kFALSE);
00355
00357 Gui::MoveResizeSafe(2,20,165,185,fGrpFrm_SteerCmd);
00358
00359
00360 fChkBox_DisplayLine = new TGCheckButton(fGrpFrm_SelectCmd,"Lines");
00361 fGrpFrm_SelectCmd->AddFrame(fChkBox_DisplayLine, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00362 Gui::MoveResizeSafe(10,170,70,20, fChkBox_DisplayLine);
00363 fChkBox_DisplayLine->SetState(kButtonUp,kTRUE);
00364
00365 Gui::MoveResizeSafe(2,195,165,205, fGrpFrm_SelectCmd);
00366
00367
00368 fSetting_Combo_Lbl = new TGLabel(fGrpFrm_SelectCmd,"Setting",
00369 fFontGC_LabNorm->GetGC(),
00370 fFont_LabNorm->GetFontStruct(),
00371 kSunkenFrame | kDoubleBorder | kOwnBackground);
00372
00373 fSetting_Combo_Lbl->SetTextJustify(36);
00374 fGrpFrm_SelectCmd->AddFrame(fSetting_Combo_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00375 Gui::MoveResizeSafe(10,140,65,20, fSetting_Combo_Lbl);
00376
00377 fSetting_Combo = new TGComboBox(fGrpFrm_SelectCmd,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
00378 fSetting_Combo->AddEntry("Entry 1 ",0);
00379 fSetting_Combo->AddEntry("Entry 2 ",1);
00380 fSetting_Combo->Select(-1);
00381 fGrpFrm_SelectCmd->AddFrame(fSetting_Combo, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00382 Gui::MoveResizeSafe(80,140,80,20, fSetting_Combo);
00383
00384
00385 fWarningMsg_Lbl = new TGLabel(fVertFrm_CL1," --- ",
00386 fFontGC_LabEnl->GetGC(),
00387 fFont_LabEnl->GetFontStruct(),
00388 kSunkenFrame | kDoubleBorder | kOwnBackground);
00389
00390 fWarningMsg_Lbl->SetTextJustify(36);
00391 fWarningMsg_Lbl->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00392 fVertFrm_CL1->AddFrame(fWarningMsg_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00393 Gui::MoveResizeSafe(5,2,165,20, fWarningMsg_Lbl);
00394
00395
00396 fLab_ChannelSelect = new TGLabel(fGrpFrm_SelectCmd," ch ",
00397 fFontGC_LabEnl->GetGC(),
00398 fFont_LabEnl->GetFontStruct(),
00399 kSunkenFrame | kDoubleBorder | kOwnBackground);
00400
00401 fLab_ChannelSelect->SetTextJustify(36);
00402 fLab_ChannelSelect->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00403 fGrpFrm_SelectCmd->AddFrame(fLab_ChannelSelect, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00404 Gui::MoveResizeSafe(40,110,30,20, fLab_ChannelSelect);
00405
00406 fNum_ChannelSelect = new TGNumberEntry(fGrpFrm_SelectCmd, (Double_t) 0,8,-1,(TGNumberFormat::EStyle) 5);
00407 fGrpFrm_SelectCmd->AddFrame(fNum_ChannelSelect, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00408 Gui::MoveResizeSafe(73,110,50,20, fNum_ChannelSelect);
00409
00410
00411
00412
00413 fTxtBut_SaveRootFile = new TGTextButton(fVertFrm_CL1,"Save root-file");
00414 fTxtBut_SaveRootFile->SetTextJustify(36);
00415 fTxtBut_SaveRootFile->SetFont(fFont_But->GetName());
00416 fVertFrm_CL1->AddFrame(fTxtBut_SaveRootFile, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00417 Gui::MoveResizeSafe(185,2,90,19, fTxtBut_SaveRootFile);
00418
00419 fTxtBut_LoadRootFile = new TGTextButton(fVertFrm_CL1,"Load root-file");
00420 fTxtBut_LoadRootFile->SetTextJustify(36);
00421 fTxtBut_LoadRootFile->SetFont(fFont_But->GetName());
00422 fVertFrm_CL1->AddFrame(fTxtBut_LoadRootFile, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00423 Gui::MoveResizeSafe(280,2,90,19, fTxtBut_LoadRootFile);
00424
00425
00426
00427 for(Int_t sldet_id =(Int_t)(TOFI) ; sldet_id <=(Int_t)(MAG) ; sldet_id++){
00428 fChkBox_FillDet[sldet_id] = new TGCheckButton(fVertFrm_CL1,fSlowDetNames[sldet_id]);
00429 fVertFrm_CL1->AddFrame(fChkBox_FillDet[sldet_id], new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00430 Gui::MoveResizeSafe(500 ,2,50,19, fChkBox_FillDet[(Int_t)(TOFI)]);
00431 Gui::MoveResizeSafe(500 + (65) ,2,50,19, fChkBox_FillDet[(Int_t)(TOFO)]);
00432 Gui::MoveResizeSafe(500 + (65 * 2) ,2,50,19, fChkBox_FillDet[(Int_t)(SIL)]);
00433 Gui::MoveResizeSafe(500 + (65 * 3) ,2,50,19, fChkBox_FillDet[(Int_t)(LMD)]);
00434 Gui::MoveResizeSafe(500 + (65 * 4) ,2,50,19, fChkBox_FillDet[(Int_t)(STB)]);
00435 Gui::MoveResizeSafe(500 + (65 * 5) ,2,50,19, fChkBox_FillDet[(Int_t)(GAS)]);
00436 Gui::MoveResizeSafe(500 + (65 * 6) ,2,50,19, fChkBox_FillDet[(Int_t)(MAG)]);
00437 if(sldet_id != (Int_t)(MAG)) fChkBox_FillDet[sldet_id]->SetState(kButtonDown,kFALSE);
00438 else fChkBox_FillDet[sldet_id]->SetState(kButtonUp,kFALSE);
00439 }
00440
00441
00442 Gui::MoveResizeSafe(10, 10,1000,550,fMainFrame);
00443
00444 fMainFrame->SetWindowName("FINUDA SCC GUI");
00445
00446 SetBackgroundColor( (Int_t)E_SCCshowBckCol_default );
00447
00448 UInt_t default_start = 1170284400;
00449 SetGuiDatime(1,default_start);
00450 SetStopDatime(0);
00451 }
00452
00453
00454 Bool_t TFndSCCshowGUI::MakeConnections(Bool_t Connect){
00455
00456 Bool_t ok = kTRUE;
00457
00458 if(Connect){
00459 ok = ok && fMainFrame->Connect("CloseWindow()", "TFndSCCshowGUI", this, "CloseGUI()");
00460
00461 ok = ok && fSteer_But1->Connect("Clicked()", "TFndSCCshowGUI", this, "FillHistos_GUI()");
00462 ok = ok && fSteer_But2->Connect("Clicked()", "TFndSCCshowGUI", this, "SavePage()");
00463
00464 ok = ok && fSteer_Combo->Connect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SteerCombo(Int_t)");
00465 ok = ok && fSel_Combo1->Connect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SelCombo1(Int_t)");
00466 ok = ok && fSel_Combo2->Connect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SelCombo2(Int_t)");
00467
00468 ok = ok && fSteer_Num1->Connect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStopDatime(Long_t)");
00469 ok = ok && fSteer_Num1_time->Connect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStopDatime(Long_t)");
00470 ok = ok && fSteer_Num2->Connect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStartDatime(Long_t)");
00471 ok = ok && fSteer_Num2_time->Connect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStartDatime(Long_t)");
00472 ok = ok && fChkBox_DisplayLine->Connect("Toggled(Bool_t)", "TFndSCCshowGUI", this, "ToggleLineDraw(Bool_t)");
00473 ok = ok && fSetting_Combo->Connect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SettingCombo(Int_t)");
00474 ok = ok && fNum_ChannelSelect->Connect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetDetChan(Long_t)");
00475
00476 ok = ok && fTxtBut_SaveRootFile->Connect("Clicked()", "TFndSCCshowGUI", this, "SaveHistos()");
00477 ok = ok && fTxtBut_LoadRootFile->Connect("Clicked()", "TFndSCCshowGUI", this, "LoadHistos()");
00478
00479 ok = ok && fShowCanvas->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","TFndSCCshowGUI",this,"HandleMouseActions(Int_t,Int_t,Int_t,TObject*)");
00480
00481
00482 }
00483 else{
00484 ok = ok && fMainFrame->Disconnect("CloseWindow()", "TFndSCCshowGUI", this, "CloseGUI()");
00485
00486 ok = ok && fSteer_But1->Disconnect("Clicked()", "TFndSCCshowGUI", this, "FillHistos_GUI()");
00487 ok = ok && fSteer_But2->Disconnect("Clicked()", "TFndSCCshowGUI", this, "SavePage()");
00488
00489 ok = ok && fSteer_Combo->Disconnect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SteerCombo(Int_t)");
00490 ok = ok && fSel_Combo1->Disconnect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SelCombo1(Int_t)");
00491 ok = ok && fSel_Combo2->Disconnect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SelCombo2(Int_t)");
00492
00493 ok = ok && fSteer_Num1->Disconnect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStopDatime(Long_t)");
00494 ok = ok && fSteer_Num1_time->Disconnect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStopDatime(Long_t)");
00495 ok = ok && fSteer_Num2->Disconnect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStartDatime(Long_t)");
00496 ok = ok && fSteer_Num2_time->Disconnect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetStartDatime(Long_t)");
00497 ok = ok && fChkBox_DisplayLine->Disconnect("Toggled(Bool_t)", "TFndSCCshowGUI", this, "ToggleLineDraw(Bool_t)");
00498 ok = ok && fSetting_Combo->Disconnect("Selected(Int_t)", "TFndSCCshowGUI", this, "Exe_SettingCombo(Int_t)");
00499 ok = ok && fNum_ChannelSelect->Disconnect("ValueSet(Long_t)", "TFndSCCshowGUI", this, "SetDetChan(Long_t)");
00500
00501 ok = ok && fTxtBut_SaveRootFile->Disconnect("Clicked()", "TFndSCCshowGUI", this, "SaveHistos()");
00502 ok = ok && fTxtBut_LoadRootFile->Disconnect("Clicked()", "TFndSCCshowGUI", this, "LoadHistos()");
00503
00504 ok = ok && fShowCanvas->Disconnect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","TFndSCCshowGUI",this,"HandleMouseActions(Int_t,Int_t,Int_t,TObject*)");
00505 }
00506
00507 if(!ok) Warning("MakeConnections","At least one broken connection found.");
00508 return ok;
00509
00510 }
00511
00512
00513 void TFndSCCshowGUI::FillCombo_Steer(){
00514
00515 if( !fSteer_Combo ) return;
00516
00517
00518 if(fSteer_Combo->GetNumberOfEntries() != 0) fSteer_Combo->RemoveAll();
00519
00520 fSteer_Combo->AddEntry("2006/2007",0);
00521 fSteer_Combo->Select(0);
00522
00523 }
00524
00525
00526 void TFndSCCshowGUI::FillCombo_Sel1(){
00527
00528 if(!fSel_Combo1) return;
00529 if(fSel_Combo1->GetNumberOfEntries() != 0) fSel_Combo1->RemoveAll();
00530
00531 fSel_Combo1->AddEntry("TOFINO", E_MasMenu_TOFI );
00532 fSel_Combo1->AddEntry("TOFONE", E_MasMenu_TOFO );
00533 fSel_Combo1->AddEntry("ISIM", E_MasMenu_ISIM );
00534 fSel_Combo1->AddEntry("OSIM", E_MasMenu_OSIM );
00535 fSel_Combo1->AddEntry("INN_LMD", E_MasMenu_LMDINN );
00536 fSel_Combo1->AddEntry("OUT_LMD", E_MasMenu_LMDOUT );
00537 fSel_Combo1->AddEntry("STB", E_MasMenu_STB );
00538 fSel_Combo1->AddEntry("GAS", E_MasMenu_GAS );
00539
00540
00541 }
00542
00543
00544 void TFndSCCshowGUI::FillCombo_Setting(){
00545
00546 if(fSetting_Combo->GetNumberOfEntries() != 0) fSetting_Combo->RemoveAll();
00547 for(Int_t id=E_SetMenu_ZoomV;id<E_SetMenu_End;id++){
00548 fSetting_Combo->AddEntry(GetSettingName(id),id);
00549 }
00550 fSetting_Combo->Select((Int_t)E_SetMenu_ZoomV);
00551
00552 }
00553
00554
00555 void TFndSCCshowGUI::FillCombo_Sel2(Int_t mode){
00556
00557 fCurMasterMode = (E_MasterMenuMode) mode;
00558
00559 if(!fSel_Combo2) return;
00560 if(fSel_Combo2->GetNumberOfEntries() != 0) fSel_Combo2->RemoveAll();
00561
00562 if(fCurMasterMode != E_MasMenu_GAS){
00563 fSel_Combo2->AddEntry("AVAIL.", E_SlMenu_Gen_Avail);
00564 fSel_Combo2->AddEntry("CHANNEL", E_SlMenu_Gen_Ch);
00565 fSel_Combo2->AddEntry("POWER", E_SlMenu_Gen_Pw);
00566 fSel_Combo2->AddEntry("TRIPS", E_SlMenu_Gen_Trip);
00567 fSel_Combo2->AddEntry("SUMMARY", E_SlMenu_Gen_Summ);
00568 }
00569 else{
00570 fSel_Combo2->AddEntry("STATUS", E_SlMenu_Gas_Avail);
00571
00572 }
00573
00574
00575
00576 }
00577
00578
00579
00580 void TFndSCCshowGUI::SetYaxis(TFndGraph *prof,Float_t min, Float_t max){
00581
00582 if(min == 0 && max == 0){
00583 prof->GetYaxis()->UnZoom();
00584 return;
00585 }
00586
00587 prof->GetYaxis()->SetRangeUser(min,max);
00588 }
00589
00590
00591 void TFndSCCshowGUI::SetYaxis(TProfile *prof,Float_t min, Float_t max){
00592
00593 if(min == 0 && max == 0){
00594 prof->GetYaxis()->UnZoom();
00595 return;
00596 }
00597
00598 prof->SetAxisRange(min,max,"Y");
00599
00600 }
00601
00602
00603 void TFndSCCshowGUI::Exe_SettingCombo(Int_t sel){
00604
00605 if(fDebugLev > 0) Printf("Exe_SettingCombo ==========> %d",sel);
00606
00607 E_SettingMenuMode sel_set = (E_SettingMenuMode) sel;
00608
00609
00610 Float_t mins[K_N_SLOWS] = {0};
00611 Float_t maxs[K_N_SLOWS] = {0};
00612
00613 if( sel_set == (Int_t)(E_SetMenu_ZoomV) ){
00614 mins[TOFI] = 0; maxs[TOFI] = 2500.;
00615 mins[TOFO] = 0; maxs[TOFO] = 3000.;
00616 mins[LMD] = 0; maxs[LMD] = 3500.;
00617 mins[STB] = 0; maxs[STB] = 1800.;
00618 mins[GAS] = 0; maxs[GAS] = 5;
00619 mins[SIL] = 0.; maxs[SIL] = 8.;
00620 mins[MAG] = 0; maxs[MAG] = 1;
00621 }
00622 else if( sel_set == (Int_t)(E_SetMenu_ZoomI) ){
00623 mins[TOFI] = 0; maxs[TOFI] = 450.;
00624 mins[TOFO] = 0; maxs[TOFO] = 3000.;
00625 mins[LMD] = -1; maxs[LMD] = 200.;
00626 mins[STB] = -1; maxs[STB] = 10.;
00627 mins[GAS] = 0; maxs[GAS] = 5;
00628 mins[SIL] = -1; maxs[SIL] = 50.;
00629 mins[MAG] = 0; maxs[MAG] = 1;
00630 }
00631 else{
00632 Error("Exe_SettingCombo","Selection \"%d\" not available!",sel);
00633 return;
00634 }
00635
00636 for(Int_t mod=(Int_t)(TFndSCCshowHistos::E_SccHisMod_V) ; mod<=(Int_t)(TFndSCCshowHistos::E_SccHisMod_I) ; mod++){
00637
00638 for(Int_t sid=0;sid<2;sid++){
00639 for(Int_t ch=0;ch<K_N_TOFONE_SLABS;ch++){
00640 if(ch<K_N_TOFINO_SLABS) SetYaxis( fSCCHistosRef->fHP_Tofi[mod][sid][ch],mins[TOFI],maxs[TOFI] );
00641 SetYaxis( fSCCHistosRef->fHP_Tofo[mod][sid][ch],mins[TOFO],maxs[TOFO] );
00642 }
00643 }
00644
00645
00646 for(Int_t ch=0;ch<K_N_Sil_Modules;ch++){
00647 for(Int_t side=0;side<K_N_Sil_Sides;side++){
00648 for(Int_t sign=0;sign<2;sign++){
00649 SetYaxis(fSCCHistosRef->fHP_Osim[mod][ch][side][sign],mins[SIL],maxs[SIL]);
00650 if( ch < (K_N_Sil_Modules-2) ) SetYaxis(fSCCHistosRef->fHP_Isim[mod][ch][side][sign],mins[SIL],maxs[SIL]);
00651 }
00652 }
00653 }
00654
00655
00656 for(Int_t ch=0;ch<K_N_LMD_CHAMS_PER_LAYER;ch++){
00657 for(Int_t sign=0;sign<2;sign++){
00658 SetYaxis(fSCCHistosRef->fHP_LmdInn[mod][ch][sign],mins[LMD],maxs[LMD]);
00659 SetYaxis(fSCCHistosRef->fHP_LmdOut[mod][ch][sign],mins[LMD],maxs[LMD]);
00660 }
00661 }
00662
00663
00664 for(Int_t ch=0;ch<K_SLOW_N_CHANS[STB];ch++){
00665 SetYaxis(fSCCHistosRef->fHP_Stb[mod][ch],mins[STB],maxs[STB]);
00666 }
00667 }
00668
00669 UpdateDisplayPad(kTRUE);
00670 }
00671
00672
00673 void TFndSCCshowGUI::Exe_SteerCombo(Int_t id){
00674
00675 if(fDebugLev > 0) Info("Exe_SteerCombo","Executing command id: %d",id);
00676
00677 }
00678
00679
00680 void TFndSCCshowGUI::Exe_SelCombo1(Int_t id){
00681
00682 if(fDebugLev > 0) Info("Exe_SelCombo1","Executing command id: %d",id);
00683 FillCombo_Sel2(id);
00684 }
00685
00686
00687 void TFndSCCshowGUI::Exe_SelCombo2(Int_t id){
00688
00689 if(fDebugLev > 0) Info("Exe_SelCombo2","Executing command id: %d",id);
00690
00691
00692
00693
00694
00695
00696
00697
00698 switch(fCurMasterMode){
00699 case E_MasMenu_TOFI:
00700 DisplayTofino((E_SlaveMenuMode)id);
00701 break;
00702 case E_MasMenu_TOFO:
00703 DisplayTofone((E_SlaveMenuMode)id);
00704 break;
00705 case E_MasMenu_ISIM:
00706 DisplaySil((E_SlaveMenuMode)id, E_FIN_INNER_LAYER);
00707 break;
00708 case E_MasMenu_OSIM:
00709 DisplaySil((E_SlaveMenuMode)id, E_FIN_OUTER_LAYER);
00710 break;
00711 case E_MasMenu_LMDINN:
00712 DisplayLmd((E_SlaveMenuMode)id, E_FIN_INNER_LAYER);
00713 break;
00714 case E_MasMenu_LMDOUT:
00715 DisplayLmd((E_SlaveMenuMode)id, E_FIN_OUTER_LAYER);
00716 break;
00717 case E_MasMenu_STB:
00718 DisplayStb((E_SlaveMenuMode)id);
00719 break;
00720 case E_MasMenu_GAS:
00721 DisplayGas((E_SlaveMenuMode)id);
00722 break;
00723 default: return;
00724 }
00725 }
00726
00727
00728 void TFndSCCshowGUI::UpdateDisplayPad(Bool_t every_pad){
00729
00730 if(!fShowCanvas){
00731 Warning("ResetDisplayPad","Display pad not available");
00732 return;
00733 }
00734
00735 fShowCanvas->cd();
00736
00737
00738
00739
00740
00741
00742
00743
00744
00745
00746
00747
00748
00749
00750
00751
00752
00753
00754
00755
00756 if(every_pad){
00757 if( !fShowCanvas->GetListOfPrimitives() ) return;
00758 const Int_t npads = fShowCanvas->GetListOfPrimitives()->GetEntries();
00759 if(npads>1){
00760 for(Int_t pd=1;pd<=npads;pd++){
00761 if(! fShowCanvas->cd(pd) ) continue;
00762 gPad->Modified();
00763 }
00764 }
00765 }
00766
00767 fShowCanvas->Modified();
00768 fShowCanvas->Update();
00769
00770
00771 }
00772
00773
00774 void TFndSCCshowGUI::SetDetChan(Long_t){
00775
00776 fDetChan = static_cast<Int_t>( fNum_ChannelSelect->GetNumber() );
00777
00778 Exe_SelCombo2(fSel_Combo2->GetSelected());
00779 }
00780
00781
00782 void TFndSCCshowGUI::ToggleLineDraw(Bool_t line){
00783
00784 fTh1DrawOpt = line ? "LHIST" : "P" ;
00785 Exe_SelCombo2(fSel_Combo2->GetSelected());
00786 }
00787
00788
00789
00790 void TFndSCCshowGUI::SavePage(){
00791
00792 StartGUI_SaveFilename(Esave_pdf);
00793
00794
00795 }
00796
00797
00798 void TFndSCCshowGUI::SaveHistos(){
00799
00800 StartGUI_SaveFilename(Esave_root);
00801
00802
00803 }
00804
00805
00806 TString TFndSCCshowGUI::BrowseCurDir(){
00807
00808 TString sel_name = "";
00809
00810 Printf("...Browsing for histograms...");
00811
00812 static TString dir(".");
00813 TGFileInfo fi;
00814 new TGFileDialog(gClient->GetDefaultRoot(), fMainFrame,
00815 kFDOpen,&fi);
00816 dir = fi.fIniDir;
00817 TObjString *el;
00818 TIter next(fi.fFileNamesList);
00819 while ((el = (TObjString *) next())) {
00820 new TFile(el->GetString(), "update");
00821 }
00822 sel_name = fi.fFilename;
00823
00824 if( sel_name.IsNull() ){ return 0; }
00825
00826 Printf("...Selected file is \"%s\"",sel_name.Data());
00827 return sel_name;
00828
00829 }
00830
00831
00832 void TFndSCCshowGUI::LoadHistos(){
00833
00834 TString nam = BrowseCurDir();
00835
00836 if( nam.IsNull() ){
00837 Info("LoadHistos","Load operation cancelled");
00838 return;
00839 }
00840
00841 Printf("...Loading histograms from file \"%s\"",nam.Data());
00842 Bool_t fill_tofi = fChkBox_FillDet[TOFI]->GetState();
00843 Bool_t fill_tofo = fChkBox_FillDet[TOFO]->GetState();
00844 Bool_t fill_sil = fChkBox_FillDet[SIL] ->GetState();
00845 Bool_t fill_lmd = fChkBox_FillDet[LMD] ->GetState();
00846 Bool_t fill_stb = fChkBox_FillDet[STB] ->GetState();
00847 Bool_t fill_gas = fChkBox_FillDet[GAS] ->GetState();
00848 Bool_t fill_mag = fChkBox_FillDet[MAG] ->GetState();
00849
00850 fSCCHistosRef->LoadHistosFromFile(nam,
00851 fill_tofi,fill_tofo,fill_sil,fill_lmd,fill_stb,fill_gas,fill_mag);
00852 Printf("...histograms loadedfrom file \"%s\"",nam.Data());
00853
00854
00855
00856 }
00857
00858
00859 void TFndSCCshowGUI::StartGUI_SaveFilename(E_savemode mode){
00860
00861
00862 fStrSaveFilename.Form("SCCshow_%s_%u_%u%s",
00863 RunType_Name(fSteer_Combo->GetSelected()).Data(),
00864 (UInt_t)(fSteer_Num1->GetNumber()),
00865 (UInt_t)(fSteer_Num2->GetNumber()),
00866 GetExtFromMode(mode).Data()
00867 );
00868
00869
00870
00871 fTrsnFrm_SaveName = new TGTransientFrame(gClient->GetRoot(), fMainFrame, 400, 200);
00872 fTrsnFrm_SaveName->SetCleanup(kDeepCleanup);
00873
00874 Gui::MoveResizeSafe(10,90,385,120, fTrsnFrm_SaveName);
00875
00876 fSaveFnam_Trsn_Lbl = new TGLabel(fTrsnFrm_SaveName,"set filename (with ext)",
00877 fFontGC_LabNorm->GetGC(),
00878 fFont_LabEnl->GetFontStruct(),
00879 kSunkenFrame | kDoubleBorder | kOwnBackground);
00880
00881 fSaveFnam_Trsn_Lbl->SetTextJustify(36);
00882 fSaveFnam_Trsn_Lbl->SetTextFont("-adobe-helvetica-medium-r-*-*-16-*-*-*-*-*-iso8859-1");
00883 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00884 Gui::MoveResizeSafe(10,10,135,25, fSaveFnam_Trsn_Lbl);
00885
00886 fSaveFnam_Trsn_Txt = new TGTextEntry(fTrsnFrm_SaveName, new TGTextBuffer(15),-1);
00887
00888
00889
00890
00891
00892 fSaveFnam_Trsn_Txt->SetMaxLength(255);
00893 fSaveFnam_Trsn_Txt->SetAlignment(kTextLeft);
00894 fSaveFnam_Trsn_Txt->SetText(fStrSaveFilename);
00895 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_Txt, new TGLayoutHints(kLHintsLeft | kLHintsTop,5,5,5,5));
00896 Gui::MoveResizeSafe(155,10,240,25,fSaveFnam_Trsn_Txt);
00897
00898 fSaveFnam_Trsn_ButOk = new TGTextButton(fTrsnFrm_SaveName,"OK");
00899 fSaveFnam_Trsn_ButOk->SetTextJustify(36);
00900 fSaveFnam_Trsn_ButOk->SetFont(fFont_But->GetName());
00901 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_ButOk, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00902 Gui::MoveResizeSafe(30,50,70,30, fSaveFnam_Trsn_ButOk);
00903
00904 fSaveFnam_Trsn_ButCancel = new TGTextButton(fTrsnFrm_SaveName,"CANCEL");
00905 fSaveFnam_Trsn_ButCancel->SetTextJustify(36);
00906 fSaveFnam_Trsn_ButCancel->SetFont(fFont_But->GetName());
00907 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_ButCancel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00908 Gui::MoveResizeSafe(300,50,70,30, fSaveFnam_Trsn_ButCancel);
00909
00910 fTrsnFrm_SaveName->MapSubwindows();
00911
00912
00913 fTrsnFrm_SaveName->CenterOnParent();
00914 fTrsnFrm_SaveName->SetWindowName("Filename window");
00915 fTrsnFrm_SaveName->MapWindow();
00916
00917
00918 switch(mode){
00919 case Esave_pdf:
00920 fSaveFnam_Trsn_ButOk->Connect("Clicked()", "TFndSCCshowGUI", this, "Do_SaveDisplay()");
00921 break;
00922 case Esave_root:
00923 fSaveFnam_Trsn_ButOk->Connect("Clicked()", "TFndSCCshowGUI", this, "Do_SaveHistos()");
00924 break;
00925
00926 }
00927
00928 fSaveFnam_Trsn_ButCancel->Connect("Clicked()", "TFndSCCshowGUI", this, "CloseGUI_SaveFilename()");
00929 fMainFrame->Connect("CloseWindow()", "TGTransientFrame", fTrsnFrm_SaveName, "CloseWindow()");
00930 fTrsnFrm_SaveName->DontCallClose();
00931
00932 }
00933
00934
00935 void TFndSCCshowGUI::CloseGUI_SaveFilename(){
00936
00937 fTrsnFrm_SaveName->CloseWindow();
00938 if(fDebugLev > 0) Printf("Save window closed");
00939 }
00940
00941
00942 void TFndSCCshowGUI::Do_SaveDisplay(){
00943
00944 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
00945
00946 if(! Do_CheckCanWriteFile() ) return;
00947
00948 fStrSaveFilename = fSaveFnam_Trsn_Txt->GetText();
00949
00950 SetBackgroundColor( (Int_t)E_SCCshowBckCol_save );
00951
00952
00953 TString msg;
00954 TString canv_tit;
00955 canv_tit.Form("SCC show \"%s\" from %u to %u",
00956 RunType_Name(fSteer_Combo->GetSelected()).Data(),
00957 (UInt_t)(fSteer_Num1->GetNumber()),
00958 (UInt_t)(fSteer_Num2->GetNumber())
00959 );
00960
00961 Gui::SaveCanvasWithTitle(fShowCanvas,canv_tit,fStrSaveFilename,fTh1DrawOpt,"",0);
00962 msg.Form("file \"%s\" created in current directory.",fStrSaveFilename.Data());
00963 WriteStatusMessage(msg);
00964
00965
00966 SetBackgroundColor( (Int_t)E_SCCshowBckCol_default );
00967
00968 CloseGUI_SaveFilename();
00969
00970 }
00971
00972
00973 void TFndSCCshowGUI::Do_SaveHistos(){
00974
00975 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
00976 Printf("Saving histograms to root-file... (overwrite flag: %d)",MustOverwrite);
00977
00978 if(! Do_CheckCanWriteFile() ){
00979 CloseGUI_SaveFilename();
00980 return;
00981 }
00982
00983 Bool_t fill_tofi = fChkBox_FillDet[TOFI]->GetState();
00984 Bool_t fill_tofo = fChkBox_FillDet[TOFO]->GetState();
00985 Bool_t fill_sil = fChkBox_FillDet[SIL] ->GetState();
00986 Bool_t fill_lmd = fChkBox_FillDet[LMD] ->GetState();
00987 Bool_t fill_stb = fChkBox_FillDet[STB] ->GetState();
00988 Bool_t fill_gas = fChkBox_FillDet[GAS] ->GetState();
00989 Bool_t fill_mag = fChkBox_FillDet[MAG] ->GetState();
00990
00991 fStrSaveFilename = fSaveFnam_Trsn_Txt->GetText();
00992 fSCCHistosRef->WriteHistosToFile(fStrSaveFilename,
00993 fill_tofi,fill_tofo,fill_sil,fill_lmd,fill_stb,fill_gas,fill_mag);
00994
00995 CloseGUI_SaveFilename();
00996 Printf("histograms saved to root-file...");
00997 }
00998
00999
01000 Bool_t TFndSCCshowGUI::Do_CheckCanWriteFile(){
01001
01002 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
01003
01004 if(!MustOverwrite && !gSystem->AccessPathName(fStrSaveFilename)){
01005 TString msg;
01006 msg.Form("file \"%s\" already existing: can not save (if you want to overwrite it check the dedicated box).",fStrSaveFilename.Data());
01007 WriteStatusMessage(msg);
01008 return kFALSE;
01009 }
01010
01011 return kTRUE;
01012 }
01013
01014
01015 void TFndSCCshowGUI::DrawFndGraph(Int_t pad_id, TFndGraph *graph1, TFndGraph *graph2,Bool_t time_x){
01016
01017
01018
01019
01020 if(pad_id < 0){
01021 Error("DrawFndGraph","BUG detected: wrong pad_id (%d) in private method",pad_id);
01022 TerminateFroot();
01023 return;
01024 }
01025
01026 if(! graph1 || graph1->GetN() < 2){
01027 Info("DrawFndGraph","graph1 is empty (less than 2 points).");
01028 return;
01029 }
01030
01031 Int_t gr_id = (pad_id == 0) ? pad_id : pad_id -1 ;
01032 if( pad_id ==0 )fShowCanvas->cd();
01033 else fShowCanvas->cd(pad_id);
01034
01035 fFndMultiGraph[gr_id]->AddFndGraph( graph1 );
01036 if(graph2) fFndMultiGraph[gr_id]->AddFndGraph( graph2 );
01037 fFndMultiGraph[gr_id]->DrawDefaults(time_x);
01038 }
01039
01040
01041 void TFndSCCshowGUI::DisplayTofino(E_SlaveMenuMode mode){
01042
01043 if(mode < E_SlMenu_Gen_Avail || mode > E_SlMenu_Gen_End){
01044 Warning("DisplayTofino","mode %d not accepted",(Int_t)mode);
01045 return;
01046 }
01047
01048 if( fDetChan<1 ){
01049 fDetChan = 1;
01050 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01051 }
01052 else if( fDetChan>K_N_TOFINO_SLABS ){
01053 fDetChan = K_N_TOFINO_SLABS;
01054 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01055 }
01056
01057 TString sameopt = fTh1DrawOpt; sameopt+="same";
01058
01059 switch(mode){
01060 case E_SlMenu_Gen_Avail:
01061 ResetDisplayPad(1,2);
01062 DrawFndGraph(1,fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1]);
01063
01064 DrawFndGraph(2,fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1]);
01065
01066 break;
01067 case E_SlMenu_Gen_Ch:
01068 ResetDisplayPad(1,2);
01069 DrawFndGraph(1,
01070 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1],
01071 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1]);
01072
01073 DrawFndGraph(2,
01074 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1],
01075 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1]);
01076 break;
01077 case E_SlMenu_Gen_Pw:
01078 ResetDisplayPad(1,2);
01079 DrawFndGraph(1,
01080 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW) ][(Int_t)(E_FIN_SIDE_E)][fDetChan-1]);
01081
01082 DrawFndGraph(2,
01083 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW) ][(Int_t)(E_FIN_SIDE_P)][fDetChan-1]);
01084 break;
01085 case E_SlMenu_Gen_Trip:
01086 ResetDisplayPad(1,2);
01087 DrawFndGraph(1,
01088 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1]);
01089
01090 DrawFndGraph(2,
01091 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1]);
01092 break;
01093 case E_SlMenu_Gen_Summ:
01094 ResetDisplayPad(1,2);
01095 DrawFndGraph(1,
01096 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat) ][(Int_t)(E_FIN_SIDE_E)][fDetChan-1]);
01097
01098 DrawFndGraph(2,
01099 fSCCHistosRef->fHP_Tofi[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat) ][(Int_t)(E_FIN_SIDE_P)][fDetChan-1]);
01100 break;
01101 default:
01102 ResetDisplayPad();
01103 Error("DisplayTofino","mode not available");
01104 return;
01105 }
01106
01107 UpdateDisplayPad();
01108
01109 DisplayInfo_Tofino(mode);
01110
01111 }
01112
01113
01114 void TFndSCCshowGUI::DisplayTofone(E_SlaveMenuMode mode){
01115
01116 if(mode < E_SlMenu_Gen_Avail || mode > E_SlMenu_Gen_End){
01117 Warning("DisplayTofone","mode %d not accepted",(Int_t)mode);
01118 return;
01119 }
01120
01121 if( fDetChan<1 ){
01122 fDetChan = 1;
01123 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01124 }
01125 else if( fDetChan>K_N_TOFONE_SLABS ){
01126 fDetChan = K_N_TOFONE_SLABS;
01127 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01128 }
01129
01130 TString sameopt = fTh1DrawOpt; sameopt+="same";
01131
01132 switch(mode){
01133 case E_SlMenu_Gen_Avail:
01134 ResetDisplayPad(1,2);
01135 DrawFndGraph(1,
01136 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1] );
01137
01138 DrawFndGraph(2,
01139 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1] );
01140 break;
01141 case E_SlMenu_Gen_Ch:
01142 ResetDisplayPad(1,2);
01143 DrawFndGraph(1,
01144 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1],
01145 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1] );
01146
01147 DrawFndGraph(2,
01148 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1],
01149 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1] );
01150 break;
01151 case E_SlMenu_Gen_Pw:
01152 ResetDisplayPad(1,2);
01153 DrawFndGraph(1,
01154 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW) ][(Int_t)(E_FIN_SIDE_E)][fDetChan-1] );
01155
01156 DrawFndGraph(2,
01157 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW) ][(Int_t)(E_FIN_SIDE_P)][fDetChan-1] );
01158 break;
01159 case E_SlMenu_Gen_Trip:
01160 ResetDisplayPad(1,2);
01161 DrawFndGraph(1,
01162 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][(Int_t)(E_FIN_SIDE_E)][fDetChan-1] );
01163
01164 DrawFndGraph(2,
01165 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][(Int_t)(E_FIN_SIDE_P)][fDetChan-1] );
01166 break;
01167 case E_SlMenu_Gen_Summ:
01168 ResetDisplayPad(1,2);
01169 DrawFndGraph(1,
01170 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat) ][(Int_t)(E_FIN_SIDE_E)][fDetChan-1] );
01171
01172 DrawFndGraph(2,
01173 fSCCHistosRef->fHP_Tofo[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat) ][(Int_t)(E_FIN_SIDE_P)][fDetChan-1] );
01174 break;
01175 default:
01176 ResetDisplayPad();
01177 Error("DisplayTofone","mode not available");
01178 return;
01179 }
01180
01181 UpdateDisplayPad();
01182
01183 DisplayInfo_Tofone(mode);
01184
01185 }
01186
01187
01188 void TFndSCCshowGUI::DisplaySil(E_SlaveMenuMode mode,E_Fnd_Layer layer){
01189
01190
01191
01192 Int_t maxch = K_N_Sil_Modules;
01193 if( layer == (Int_t)(E_FIN_INNER_LAYER) ) maxch = K_N_Sil_Modules - 2;
01194
01195
01196 if( fDetChan<1 ){
01197 fDetChan = 1;
01198 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01199 }
01200 else if( fDetChan>maxch ){
01201 fDetChan = maxch;
01202 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01203 }
01204
01205 TString sameopt = fTh1DrawOpt; sameopt+="same";
01206
01207 switch(mode){
01208 case E_SlMenu_Gen_Avail:
01209 ResetDisplayPad(3,2);
01210 for(Int_t side=0; side<3;side++){
01211 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01212 DrawFndGraph(side+1,
01213 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][side][0] );
01214 } else{
01215 DrawFndGraph(side+1,
01216 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][side][0] );
01217 }
01218
01219
01220 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01221 DrawFndGraph(side+4,
01222 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][side][1] );
01223 } else{
01224 DrawFndGraph(side+4,
01225 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][side][1] );
01226 }
01227 }
01228 break;
01229 case E_SlMenu_Gen_Ch:
01230 ResetDisplayPad(3,2);
01231 for(Int_t side=0; side<3;side++){
01232
01233 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01234 DrawFndGraph(side+1,
01235 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][side][0],
01236 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][side][0] );
01237 } else {
01238 DrawFndGraph(side+1,
01239 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][side][0],
01240 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][side][0] );
01241 }
01242
01243
01244 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01245 DrawFndGraph(side+4,
01246 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][side][1],
01247 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][side][1] );
01248 } else {
01249 DrawFndGraph(side+4,
01250 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][side][1],
01251 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][side][1] );
01252 }
01253 }
01254 break;
01255 case E_SlMenu_Gen_Pw:
01256 ResetDisplayPad(3,2);
01257 for(Int_t side=0; side<3;side++){
01258
01259 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01260 DrawFndGraph(side+1,
01261 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][side][0] );
01262 }
01263 else {
01264 DrawFndGraph(side+1,
01265 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][side][0] );
01266 }
01267
01268
01269 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01270 DrawFndGraph(side+4,
01271 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][side][1] );
01272 }
01273 else {
01274 DrawFndGraph(side+4,
01275 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][side][1] );
01276 }
01277 }
01278 break;
01279 case E_SlMenu_Gen_Trip:
01280 ResetDisplayPad(3,2);
01281 for(Int_t side=0; side<3;side++){
01282
01283 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01284 DrawFndGraph(side+1,
01285 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][side][0] );
01286 }
01287 else {
01288 DrawFndGraph(side+1,
01289 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][side][0] );
01290 }
01291
01292
01293 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01294 DrawFndGraph(side+4,
01295 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][side][1] );
01296 }
01297 else {
01298 DrawFndGraph(side+4,
01299 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][side][1] );
01300 }
01301 }
01302 break;
01303 case E_SlMenu_Gen_Summ:
01304 ResetDisplayPad(3,2);
01305 for(Int_t side=0; side<3;side++){
01306
01307 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01308 DrawFndGraph(side+1,
01309 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][side][0] );
01310 }
01311 else {
01312 DrawFndGraph(side+1,
01313 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][side][0] );
01314 }
01315
01316
01317 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01318 DrawFndGraph(side+4,
01319 fSCCHistosRef->fHP_Isim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][side][1] );
01320 }
01321 else {
01322 DrawFndGraph(side+4,
01323 fSCCHistosRef->fHP_Osim[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][side][1] );
01324 }
01325 }
01326 break;
01327 default:
01328 ResetDisplayPad();
01329 Error("DisplaySil","mode not available");
01330 return;
01331 }
01332
01333 UpdateDisplayPad();
01334
01335 DisplayInfo_Sil(mode,layer);
01336
01337 }
01338
01339
01340
01341 void TFndSCCshowGUI::DisplayLmd(E_SlaveMenuMode mode,E_Fnd_Layer layer){
01342
01343
01344
01345 if( fDetChan<1 ){
01346 fDetChan = 1;
01347 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01348 }
01349 else if( fDetChan>K_N_LMD_CHAMS_PER_LAYER ){
01350 fDetChan = K_N_LMD_CHAMS_PER_LAYER;
01351 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01352 }
01353
01354 TString sameopt = fTh1DrawOpt; sameopt+="same";
01355
01356 switch(mode){
01357 case E_SlMenu_Gen_Avail:
01358 ResetDisplayPad(1,2);
01359
01360 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01361 DrawFndGraph(1,
01362 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][0] );
01363 } else{
01364 DrawFndGraph(1,
01365 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][0] );
01366 }
01367
01368
01369 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01370 DrawFndGraph(2,
01371 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][1] );
01372 } else{
01373 DrawFndGraph(2,
01374 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1][1] );
01375 }
01376 break;
01377 case E_SlMenu_Gen_Ch:
01378 ResetDisplayPad(1,2);
01379
01380 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01381 DrawFndGraph(1,
01382 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][0],
01383 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][0] );
01384 } else {
01385 DrawFndGraph(1,
01386 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][0],
01387 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][0]);
01388 }
01389
01390
01391 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01392 DrawFndGraph(2,
01393 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][1],
01394 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][1]);
01395 } else {
01396 DrawFndGraph(2,
01397 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1][1],
01398 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1][1]);
01399 }
01400 break;
01401 case E_SlMenu_Gen_Pw:
01402 ResetDisplayPad(1,2);
01403
01404 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01405 DrawFndGraph(1,
01406 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][0] );
01407 }
01408 else {
01409 DrawFndGraph(1,
01410 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][0] );
01411 }
01412
01413
01414 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01415 DrawFndGraph(2,
01416 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][1] );
01417 }
01418 else {
01419 DrawFndGraph(2,
01420 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1][1] );
01421 }
01422 break;
01423 case E_SlMenu_Gen_Trip:
01424 ResetDisplayPad(1,2);
01425
01426 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01427 DrawFndGraph(1,
01428 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][0] );
01429 }
01430 else {
01431 DrawFndGraph(1,
01432 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][0] );
01433 }
01434
01435
01436 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01437 DrawFndGraph(2,
01438 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][1] );
01439 }
01440 else {
01441 DrawFndGraph(2,
01442 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1][1] );
01443 }
01444 break;
01445 case E_SlMenu_Gen_Summ:
01446 ResetDisplayPad(1,2);
01447
01448 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01449 DrawFndGraph(1,
01450 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][0] );
01451 }
01452 else {
01453 DrawFndGraph(1,
01454 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][0] );
01455 }
01456
01457
01458 if( layer == (Int_t)(E_FIN_INNER_LAYER)){
01459 DrawFndGraph(2,
01460 fSCCHistosRef->fHP_LmdInn[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][1] );
01461 }
01462 else {
01463 DrawFndGraph(2,
01464 fSCCHistosRef->fHP_LmdOut[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1][1] );
01465 }
01466 break;
01467 default:
01468 ResetDisplayPad();
01469 Error("DisplayLmd","mode not available");
01470 return;
01471 }
01472
01473 UpdateDisplayPad();
01474
01475 DisplayInfo_Lmd(mode,layer);
01476
01477 }
01478
01479
01480 void TFndSCCshowGUI::DisplayStb(E_SlaveMenuMode mode){
01481
01482 if(mode < E_SlMenu_Gen_Avail || mode > E_SlMenu_Gen_End){
01483 Warning("DisplayStb","mode %d not accepted",(Int_t)mode);
01484 return;
01485 }
01486
01487 if( fDetChan<1 ){
01488 fDetChan = 1;
01489 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01490 }
01491 else if( fDetChan>K_SLOW_N_CHANS[STB] ){
01492 fDetChan = K_SLOW_N_CHANS[STB];
01493 fNum_ChannelSelect->SetNumber( static_cast<Long_t>(fDetChan) );
01494 }
01495
01496 TString sameopt = fTh1DrawOpt; sameopt+="same";
01497
01498 switch(mode){
01499 case E_SlMenu_Gen_Avail:
01500 ResetDisplayPad();
01501
01502 DrawFndGraph(0,
01503 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Avail)][fDetChan-1] );
01504
01505 break;
01506 case E_SlMenu_Gen_Ch:
01507 ResetDisplayPad();
01508
01509 DrawFndGraph(0,
01510 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_V)][fDetChan-1],
01511 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_I)][fDetChan-1] );
01512
01513 break;
01514 case E_SlMenu_Gen_Pw:
01515 ResetDisplayPad();
01516
01517 DrawFndGraph(0,
01518 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_PW)][fDetChan-1] );
01519
01520 break;
01521 case E_SlMenu_Gen_Trip:
01522 ResetDisplayPad();
01523
01524 DrawFndGraph(0,
01525 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Trip)][fDetChan-1] );
01526
01527 break;
01528 case E_SlMenu_Gen_Summ:
01529 ResetDisplayPad();
01530
01531 DrawFndGraph(0,
01532 fSCCHistosRef->fHP_Stb[(Int_t)(TFndSCCshowHistos::E_SccHisMod_Stat)][fDetChan-1] );
01533
01534 break;
01535 default:
01536 ResetDisplayPad();
01537 Error("DisplayStb","mode not available");
01538 return;
01539 }
01540
01541 UpdateDisplayPad();
01542
01543 DisplayInfo_Stb(mode);
01544
01545 }
01546
01547
01548 void TFndSCCshowGUI::DisplayGas(E_SlaveMenuMode mode){
01549
01550 if(mode < E_SlMenu_Gen_Avail || mode > E_SlMenu_Gen_End){
01551 Warning("DisplayGas","mode %d not accepted",(Int_t)mode);
01552 return;
01553 }
01554
01555 switch(mode){
01556 case E_SlMenu_Gen_Avail:
01557 ResetDisplayPad();
01558 fShowCanvas->cd(1);
01559
01560 break;
01561 case E_SlMenu_Gen_Ch:
01562 ResetDisplayPad();
01563 fShowCanvas->cd(1);
01564
01565 break;
01566 case E_SlMenu_Gen_Summ:
01567 ResetDisplayPad();
01568 fShowCanvas->cd(1);
01569
01570 break;
01571 default:
01572 ResetDisplayPad();
01573 Error("DisplayGas","mode not available");
01574 return;
01575 }
01576
01577 UpdateDisplayPad();
01578
01579 DisplayInfo_Gas(mode);
01580
01581 }
01582
01584
01585
01586 void TFndSCCshowGUI::DisplayInfo_Tofino(E_SlaveMenuMode mode){
01587
01588 if(fDebugLev > 0) Info("DisplayInfo_Tofino","Displaying information");
01589 ResetTextMessage();
01590 TString info_msg = "";
01591
01592
01593 switch(mode){
01594 case E_SlMenu_Gen_Avail:
01595 info_msg.Form("TOFINO: %i",mode);
01596 AddTextMessage(info_msg,kTRUE);
01597 return;
01598 case E_SlMenu_Gen_Ch:
01599 info_msg.Form("TOFINO: %i",mode);
01600 AddTextMessage(info_msg,kTRUE);
01601 return;
01602 case E_SlMenu_Gen_Summ:
01603 info_msg.Form("TOFINO: %i",mode);
01604 AddTextMessage(info_msg,kTRUE);
01605 return;
01606 default: return;
01607 }
01608
01609
01610 }
01611
01612
01613 void TFndSCCshowGUI::DisplayInfo_Tofone(E_SlaveMenuMode mode){
01614
01615 if(fDebugLev > 0) Info("DisplayInfo_Tofone","Displaying information");
01616 ResetTextMessage();
01617 TString info_msg = "";
01618
01619 switch(mode){
01620 case E_SlMenu_Gen_Avail:
01621 info_msg.Form("TOFONE: %i",mode);
01622 AddTextMessage(info_msg,kTRUE);
01623 return;
01624 case E_SlMenu_Gen_Ch:
01625 info_msg.Form("TOFONE: %i",mode);
01626 AddTextMessage(info_msg,kTRUE);
01627 return;
01628 case E_SlMenu_Gen_Summ:
01629 info_msg.Form("TOFONE: %i",mode);
01630 AddTextMessage(info_msg,kTRUE);
01631 return;
01632 default: return;
01633 }
01634
01635 }
01636
01637
01638 void TFndSCCshowGUI::DisplayInfo_Sil(E_SlaveMenuMode mode,E_Fnd_Layer layer){
01639
01640 if(fDebugLev > 0) Info("DisplayInfo_Sil","Displaying information");
01641 ResetTextMessage();
01642 TString info_msg = "";
01643
01644 switch(mode){
01645 case E_SlMenu_Gen_Avail:
01646 info_msg.Form("SIL: %i (lay: %i)",mode,layer);
01647 AddTextMessage(info_msg,kTRUE);
01648 return;
01649 case E_SlMenu_Gen_Ch:
01650 info_msg.Form("SIL: %i (lay: %i)",mode,layer);
01651 AddTextMessage(info_msg,kTRUE);
01652 return;
01653 case E_SlMenu_Gen_Summ:
01654 info_msg.Form("SIL: %i (lay: %i)",mode,layer);
01655 AddTextMessage(info_msg,kTRUE);
01656 return;
01657 default: return;
01658 }
01659
01660 }
01661
01662
01663 void TFndSCCshowGUI::DisplayInfo_Lmd(E_SlaveMenuMode mode,E_Fnd_Layer layer){
01664
01665 if(fDebugLev > 0) Info("DisplayInfo_Lmd","Displaying information");
01666 ResetTextMessage();
01667 TString info_msg = "";
01668
01669 switch(mode){
01670 case E_SlMenu_Gen_Avail:
01671 info_msg.Form("LMD: %i (lay: %i)",mode,layer);
01672 AddTextMessage(info_msg,kTRUE);
01673 return;
01674 case E_SlMenu_Gen_Ch:
01675 info_msg.Form("LMD: %i (lay: %i)",mode,layer);
01676 AddTextMessage(info_msg,kTRUE);
01677 return;
01678 case E_SlMenu_Gen_Summ:
01679 info_msg.Form("LMD: %i (lay: %i)",mode,layer);
01680 AddTextMessage(info_msg,kTRUE);
01681 return;
01682 default: return;
01683 }
01684
01685 }
01686
01687
01688 void TFndSCCshowGUI::DisplayInfo_Stb(E_SlaveMenuMode mode){
01689
01690 if(fDebugLev > 0) Info("DisplayInfo_Stb","Displaying information");
01691 ResetTextMessage();
01692 TString info_msg = "";
01693
01694
01695 switch(mode){
01696 case E_SlMenu_Gen_Avail:
01697 info_msg.Form("STB: %i",mode);
01698 AddTextMessage(info_msg,kTRUE);
01699 return;
01700 case E_SlMenu_Gen_Ch:
01701 info_msg.Form("STB: %i",mode);
01702 AddTextMessage(info_msg,kTRUE);
01703 return;
01704 case E_SlMenu_Gen_Summ:
01705 info_msg.Form("STB: %i",mode);
01706 AddTextMessage(info_msg,kTRUE);
01707 return;
01708 default: return;
01709 }
01710
01711
01712 }
01713
01714
01715 void TFndSCCshowGUI::DisplayInfo_Gas(E_SlaveMenuMode mode){
01716
01717 if(fDebugLev > 0) Info("DisplayInfo_Gas","Displaying information");
01718 ResetTextMessage();
01719 TString info_msg = "";
01720
01721
01722 switch(mode){
01723 case E_SlMenu_Gen_Avail:
01724 info_msg.Form("GAS: %i",mode);
01725 AddTextMessage(info_msg,kTRUE);
01726 return;
01727 case E_SlMenu_Gen_Ch:
01728 info_msg.Form("GAS: %i",mode);
01729 AddTextMessage(info_msg,kTRUE);
01730 return;
01731 case E_SlMenu_Gen_Summ:
01732 info_msg.Form("GAS: %i",mode);
01733 AddTextMessage(info_msg,kTRUE);
01734 return;
01735 default: return;
01736 }
01737
01738
01739 }
01740
01744
01745
01746 void TFndSCCshowGUI::HandleMouseActionsDaughter(Int_t event, Int_t x, Int_t y, TObject *selected){
01747
01748
01749
01750
01751
01752
01753
01754
01755
01756
01757
01758
01759
01760
01761
01762
01763
01764
01765
01766
01767
01768
01769
01770 switch(event){
01771
01772
01773 case 51:
01774
01775 break;
01776 case 53:
01777 break;
01778 case 52:
01779 break;
01780
01781
01782 case 1:
01783
01784 break;
01785
01786 case 11:
01787
01788 break;
01789
01790 case 61:
01791 cout << "Double-click received on object: \"" << selected->ClassName()
01792 << "\"; name: \"" << selected->GetName()
01793 << "\"; title: \"" << selected->GetTitle() << "\"." << endl;
01794
01795 if(!strncmp(selected->ClassName(),"TH",2)) EnlargeHisto(selected);
01796 if(!strncmp(selected->ClassName(),"TProfile",8)) EnlargeHisto(selected);
01797 if(!strncmp(selected->ClassName(),"TPave",5)) PrintPaveInfo(selected);
01798 break;
01799
01800 default: break;
01801 }
01802
01803 }
01804
01805
01806 void TFndSCCshowGUI::EnlargeHisto(TObject *selected){
01807
01808
01809 if(!selected){
01810 Warning("EnlargeHisto","selected object is NULL!");
01811 return;
01812 }
01813
01814
01815
01816
01817 ResetDisplayPad();
01818 fShowCanvas->cd();
01819 selected->Draw(fTh1DrawOpt);
01820
01821 UpdateDisplayPad();
01822
01823 }
01824
01825 void TFndSCCshowGUI::PrintPaveInfo(TObject *selected){
01826
01827 const Char_t *clnam = (Char_t *) selected->ClassName();
01828
01829 Printf("");
01830 Printf(" ----------------------------------------");
01831 Printf(" Selected object general properties:");
01832 Printf(" Object type: \"%s\"",clnam);
01833
01834 if(!strcmp(clnam,"TPaveText")){
01835 Printf(" Histogram title ====> \"%s\".",((TPaveText *)selected)->GetLine(0)->GetTitle());
01836 }
01837 else if(!strcmp(clnam,"TPaveStats")){
01838 for(Int_t i=0;i<50;i++){
01839 TText *curtxt = (TText*)(((TPaveText *)selected)->GetListOfLines())->At(i);
01840 if(!curtxt) break;
01841 Printf(" - %s",curtxt->GetTitle());
01842 }
01843 }
01844 if(fDebugLev > 1){
01845 cout << " Text Align =======> " << ((TPaveText *)selected)->GetTextAlign() << endl;
01846 cout << " Text Color =======> " << ((TPaveText *)selected)->GetTextColor() << endl;
01847 cout << " Text Font ========> " << ((TPaveText *)selected)->GetTextFont() << endl;
01848 }
01849 cout << " ----------------------------------------" << endl;
01850 }