00001
00002
00003
00005
00007
00008
00009 #include "TFndPreanGUI.h"
00010
00011 #include "TFndRun.h"
00012
00013 #include <TPaveText.h>
00014 #include <TPaveStats.h>
00015
00016 ClassImp(TFndPreanGUI)
00017
00018
00019 TFndPreanGUI::TFndPreanGUI():
00020 fTrsnFrm_SaveName()
00021 {
00022
00023 PreanHistosRef = new TFndPreanHistos();
00024 SetCutFit(kTRUE);
00025
00026 PreanHistosRef->InitHistos();
00027 fTh1DrawOpt = "hist";
00028
00029 new TFndRun;
00030 ResetMultiGraphs(kTRUE);
00031
00032 }
00033
00034
00035 TFndPreanGUI::~TFndPreanGUI(){
00036
00037 delete PreanHistosRef;
00038 }
00039
00040
00041 void TFndPreanGUI::SetFirstRun(Long_t){
00042
00043
00044 if(!fSteer_Num1 || !fSteer_Num2) return;
00045 if(fSteer_Num2->GetNumber() <= 0){
00046 fSteer_Num1->SetNumber(0);
00047 fSteer_Num2->SetNumber(0);
00048 return;
00049 }
00050
00051 if(fSteer_Num1->GetNumber() < fSteer_Num2->GetNumber()) return;
00052 fSteer_Num1->SetNumber(fSteer_Num2->GetNumber());
00053 }
00054
00055
00056 void TFndPreanGUI::SetLastRun(Long_t){
00057
00058
00059 if(!fSteer_Num1 || !fSteer_Num2) return;
00060 if(fSteer_Num1->GetNumber() <= 0){
00061 fSteer_Num1->SetNumber(0);
00062 fSteer_Num2->SetNumber(0);
00063 return;
00064 }
00065
00066 if(fSteer_Num1->GetNumber() < fSteer_Num2->GetNumber()) return;
00067 fSteer_Num2->SetNumber(fSteer_Num1->GetNumber());
00068
00069 }
00070
00071
00072 void TFndPreanGUI::FillHistos_GUI(){
00073
00074 if(!fSteer_Combo || !fSteer_Num1 || !fSteer_Num2){
00075 Warning("FillHistos_GUI","Some STEER command not available");
00076 return;
00077 }
00078
00079 TString run_type = RunType_Name(fSteer_Combo->GetSelected());
00080 Int_t first_run = (Int_t) fSteer_Num1->GetNumber();
00081 Int_t last_run = (Int_t)fSteer_Num2->GetNumber();;
00082 if(fDebugLev > 0){
00083 Info("FillHistos_GUI","Filling: run-type: \"%s\"; from run %d to run %d.",
00084 run_type.Data(),
00085 first_run,
00086 last_run);
00087 }
00088
00089 if(fChkBox_Autoreset->GetState()) PreanHistosRef->ResetHistos();
00090 PreanHistosRef->ResetStatGraphs(kTRUE);
00091 ResetMultiGraphs(kTRUE);
00092
00094 TString cpth = "$FND_PREAN_TREES/";
00095 cpth+=FidaVer_Name( (E_FndFidaVersion)(fFidaVer_Combo->GetSelected()) );
00096 TString start_pth=ExpandPathName(cpth);
00097 TString fnam;
00098
00099 AddTextMessage("Getting data: please wait...",kTRUE);
00100 UpdateDisplayPad(kFALSE);
00101
00102 if(last_run-first_run > 2){
00103 fTransientProgress = new TFndGTransientProgress();
00104 fTransientProgress->SetTitle("Filling progress");
00105 }
00106
00107 for(Int_t cur_run=first_run;cur_run<=last_run;cur_run++){
00108 #if defined _FND_OUTPUTS_USE_SUBDIR
00109 TString frunnam = BuildRunName(run_type,cur_run,kTRUE);
00110 #else
00111 TString frunnam = BuildRunName(run_type,cur_run);
00112 #endif
00113
00114 fnam.Form("%s/%s.prean.root",
00115 start_pth.Data(),
00116 frunnam.Data() );
00117
00118 if( PreanHistosRef->LoadTrees(fnam) != 0){
00119
00120 TString inf_str_tmp="";
00121 inf_str_tmp.Form("run %d missing",cur_run);
00122 AddTextMessage(inf_str_tmp,kFALSE,kFALSE);
00123 continue;
00124 }
00125
00126
00127
00128 PreanHistosRef->FillHistos();
00129
00130 PreanHistosRef->CloseCurrentSourceFile();
00131 PreanHistosRef->EvalStatGraphs(cur_run);
00132
00133
00134 if(fTransientProgress){
00135 TString tmpstr = "";
00136 tmpstr.Form("Filling from run %d",cur_run);
00137 fTransientProgress->ReSetStatusMessage(tmpstr);
00138 fTransientProgress->SetProgressBar(cur_run-first_run,last_run-first_run);
00139 fTransientProgress->UpdateGUI();
00140 gClient->ProcessEventsFor(fTransientProgress);
00141 if( fTransientProgress->IsCancelled() ){
00142 AddTextMessage("\n Filling manually",kFALSE);
00143 tmpstr.Form(" stopped(last run %d)\n",cur_run);
00144 AddTextMessage(tmpstr,kFALSE);
00145 break;
00146 }
00147 }
00148
00149 }
00150
00151 if(fTransientProgress){
00152 delete fTransientProgress;
00153 fTransientProgress = 0;
00154 }
00155
00156 AddTextMessage("Data loaded...",kFALSE);
00157
00158 PreanHistosRef->EvalHistos();
00159 AddTextMessage("Pre-analysis GUI ready.",kFALSE);
00160
00161 }
00162
00163
00164 void TFndPreanGUI::BuildGUI(){
00165
00166 BuildBaseGUI();
00167
00168
00169 }
00170
00171
00172 void TFndPreanGUI::CloseGUI(){
00173
00174 if(!fMainFrame){
00175 Warning("CloseGUI","fMainFrame not available");
00176 return;
00177 }
00178
00179 if(fDebugLev > 1) Info("CloseGUI","Deleting mainframe");
00180
00181 fMainFrame->Cleanup();
00182
00183 delete fMainFrame;
00184
00185 gApplication->Terminate();
00186 return;
00187 }
00188
00189
00190 void TFndPreanGUI::CustomizeGUI(){
00191
00192 fGrpFrm_SteerCmd->SetTitle("Steer commands");
00193 fSteer_Combo_Lbl->SetText("RUN type");
00194 fSteer_Num1_Lbl->SetText("From run");
00195 fSteer_Num2_Lbl->SetText("To run");
00196
00197 fSteer_But1->SetText("Fill Histos");
00198 Gui::MoveResizeSafe(10,120,70,30, fSteer_But1);
00199
00200 fSteer_But2->SetText("Save page");
00201 Gui::MoveResizeSafe(87,120,70,30, fSteer_But2);
00202
00203 fGrpFrm_SelectCmd->SetTitle("Display commands");
00204 fSel_Combo1_Lbl->SetText("Type");
00205 fSel_Combo2_Lbl->SetText("Selection");
00206
00207 Gui::MoveResizeSafe(20,70,130,20, fSel_Combo2_Lbl);
00208 Gui::MoveResizeSafe(20,90,130,20, fSel_Combo2);
00209
00210 fGrpFrm_Msg->SetTitle("Info");
00211
00212
00213 fFidaVer_Combo_Lbl = new TGLabel(fGrpFrm_SteerCmd,"fidarc ver.",
00214 fFontGC_LabNorm->GetGC(),
00215 fFont_LabNorm->GetFontStruct(),
00216 kSunkenFrame | kDoubleBorder | kOwnBackground);
00217
00218 fFidaVer_Combo_Lbl->SetTextJustify(36);
00219 fGrpFrm_SteerCmd->AddFrame(fFidaVer_Combo_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00220 Gui::MoveResizeSafe(10,90,75,20, fFidaVer_Combo_Lbl);
00221
00222 fFidaVer_Combo = new TGComboBox(fGrpFrm_SteerCmd,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
00223 fFidaVer_Combo->AddEntry("Entry 1 ",0);
00224 fFidaVer_Combo->AddEntry("Entry 2 ",1);
00225 fFidaVer_Combo->Select(-1);
00226 fGrpFrm_SteerCmd->AddFrame(fFidaVer_Combo, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00227 Gui::MoveResizeSafe(90,90,70,20, fFidaVer_Combo);
00228
00229 fChkBox_Autoreset = new TGCheckButton(fGrpFrm_SteerCmd,"Auto-reset");
00230 fGrpFrm_SteerCmd->AddFrame(fChkBox_Autoreset, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00231 Gui::MoveResizeSafe(10,155,70,20, fChkBox_Autoreset);
00232 fChkBox_Autoreset->SetState(kButtonDown,kFALSE);
00233
00234
00235 fChkBox_Overwrite = new TGCheckButton(fGrpFrm_SteerCmd,"overwrite");
00236 fGrpFrm_SteerCmd->AddFrame(fChkBox_Overwrite, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00237 Gui::MoveResizeSafe(90,155,70,20, fChkBox_Overwrite);
00238 fChkBox_Overwrite->SetState(kButtonDown,kFALSE);
00239
00241 Gui::MoveResizeSafe(2,20,165,185,fGrpFrm_SteerCmd);
00242
00243
00244
00245 fChkBox_SumW2 = new TGCheckButton(fGrpFrm_SelectCmd,"Error-bars");
00246 fGrpFrm_SelectCmd->AddFrame(fChkBox_SumW2, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00247 Gui::MoveResizeSafe(10,170,70,20, fChkBox_SumW2);
00248 fChkBox_SumW2->SetState(kButtonUp,kFALSE);
00249
00250 Gui::MoveResizeSafe(2,195,165,205, fGrpFrm_SelectCmd);
00251
00252
00253 fSetting_Combo_Lbl = new TGLabel(fGrpFrm_SelectCmd,"Setting",
00254 fFontGC_LabNorm->GetGC(),
00255 fFont_LabNorm->GetFontStruct(),
00256 kSunkenFrame | kDoubleBorder | kOwnBackground);
00257
00258 fSetting_Combo_Lbl->SetTextJustify(36);
00259 fGrpFrm_SelectCmd->AddFrame(fSetting_Combo_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00260 Gui::MoveResizeSafe(10,140,75,20, fSetting_Combo_Lbl);
00261
00262 fSetting_Combo = new TGComboBox(fGrpFrm_SelectCmd,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
00263 fSetting_Combo->AddEntry("Entry 1 ",0);
00264 fSetting_Combo->AddEntry("Entry 2 ",1);
00265 fSetting_Combo->Select(-1);
00266 fGrpFrm_SelectCmd->AddFrame(fSetting_Combo, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00267 Gui::MoveResizeSafe(90,140,70,20, fSetting_Combo);
00268
00269
00270 fWarningMsg_Lbl = new TGLabel(fVertFrm_CL1," --- ",
00271 fFontGC_LabEnl->GetGC(),
00272 fFont_LabEnl->GetFontStruct(),
00273 kSunkenFrame | kDoubleBorder | kOwnBackground);
00274
00275 fWarningMsg_Lbl->SetTextJustify(36);
00276 fWarningMsg_Lbl->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00277 fVertFrm_CL1->AddFrame(fWarningMsg_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00278 Gui::MoveResizeSafe(5,2,165,20, fWarningMsg_Lbl);
00279
00280
00281 fTxtBut_SaveRootFile = new TGTextButton(fVertFrm_CL1,"Save root-file");
00282 fTxtBut_SaveRootFile->SetTextJustify(36);
00283 fTxtBut_SaveRootFile->SetFont(fFont_But->GetName());
00284 fVertFrm_CL1->AddFrame(fTxtBut_SaveRootFile, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00285 Gui::MoveResizeSafe(185,2,90,19, fTxtBut_SaveRootFile);
00286
00287 fTxtBut_LoadRootFile = new TGTextButton(fVertFrm_CL1,"Load root-file");
00288 fTxtBut_LoadRootFile->SetTextJustify(36);
00289 fTxtBut_LoadRootFile->SetFont(fFont_But->GetName());
00290 fVertFrm_CL1->AddFrame(fTxtBut_LoadRootFile, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00291 Gui::MoveResizeSafe(280,2,90,19, fTxtBut_LoadRootFile);
00292
00293
00294
00295 fLbl_EvtCuts = new TGLabel(fVertFrm_CL1,"EV. SELECT.",
00296 fFontGC_LabEnl->GetGC(),
00297 fFont_LabEnl->GetFontStruct(),
00298 kSunkenFrame | kDoubleBorder | kOwnBackground);
00299
00300 fLbl_EvtCuts->SetTextJustify(36);
00301 fLbl_EvtCuts->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00302 fVertFrm_CL1->AddFrame(fLbl_EvtCuts, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00303 Gui::MoveResizeSafe(380,1,75,20, fLbl_EvtCuts);
00304
00305
00306
00307 fLbl_TrkCuts = new TGLabel(fVertFrm_CL1,"TRK. SELECT.",
00308 fFontGC_LabEnl->GetGC(),
00309 fFont_LabEnl->GetFontStruct(),
00310 kSunkenFrame | kDoubleBorder | kOwnBackground);
00311
00312 fLbl_TrkCuts->SetTextJustify(36);
00313 fLbl_TrkCuts->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00314 fVertFrm_CL1->AddFrame(fLbl_TrkCuts, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00315 Gui::MoveResizeSafe(590,1,75,20, fLbl_TrkCuts);
00316
00317 fChkBox_CutTrkFit = new TGCheckButton(fVertFrm_CL1,"FITTED",-1,
00318 fFontGC_LabEnl->GetGC(),
00319 fFont_LabEnl->GetFontStruct(),
00320 kSunkenFrame | kDoubleBorder | kOwnBackground);
00321
00322 fVertFrm_CL1->AddFrame(fChkBox_CutTrkFit, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00323 Gui::MoveResizeSafe(670,1,50,20, fChkBox_CutTrkFit);
00324 fChkBox_CutTrkFit->SetState(kButtonDown,kFALSE);
00325
00326 fLbl_TrkType = new TGLabel(fVertFrm_CL1,"TYPE:",
00327 fFontGC_LabEnl->GetGC(),
00328 fFont_LabEnl->GetFontStruct(),
00329 kSunkenFrame | kDoubleBorder | kOwnBackground);
00330
00331 fLbl_TrkType->SetTextJustify(36);
00332 fLbl_TrkType->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00333 fVertFrm_CL1->AddFrame(fLbl_TrkType, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00334 Gui::MoveResizeSafe(720,1,50,20, fLbl_TrkType);
00335
00336
00337 fCombo_TrkType = new TGComboBox(fVertFrm_CL1,-1,kHorizontalFrame | kSunkenFrame | kDoubleBorder | kOwnBackground);
00338 TString typstr = "";
00339 for(Int_t ti=0;ti<PreanHistosRef->TrkTypes();ti++){
00340 PreanHistosRef->TrkType(ti,typstr);
00341 fCombo_TrkType->AddEntry(typstr,ti);
00342 }
00343 fCombo_TrkType->Select(0,kTRUE);
00344 fVertFrm_CL1->AddFrame(fCombo_TrkType, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00345 Gui::MoveResizeSafe(770,1,90,20, fCombo_TrkType);
00346
00348
00350 Gui::MoveResizeSafe(10, 10,1000,550,fMainFrame);
00351 fMainFrame->SetWindowName("FINUDA pre-analysis GUI");
00352 SetBackgroundColor( (Int_t)E_PreanBckCol_default );
00354 }
00355
00356
00357 Bool_t TFndPreanGUI::MakeConnections(Bool_t Connect){
00358
00359 Bool_t ok = kTRUE;
00360
00361 if(Connect){
00362 ok = ok && fMainFrame->Connect("CloseWindow()", "TFndPreanGUI", this, "CloseGUI()");
00363
00364 ok = ok && fSteer_But1->Connect("Clicked()", "TFndPreanGUI", this, "FillHistos_GUI()");
00365 ok = ok && fSteer_But2->Connect("Clicked()", "TFndPreanGUI", this, "SavePage()");
00366
00367 ok = ok && fSteer_Combo->Connect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SteerCombo(Int_t)");
00368 ok = ok && fSel_Combo1->Connect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SelCombo1(Int_t)");
00369 ok = ok && fSel_Combo2->Connect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SelCombo2(Int_t)");
00370
00371 ok = ok && fSteer_Num1->Connect("ValueSet(Long_t)", "TFndPreanGUI", this, "SetLastRun(Long_t)");
00372 ok = ok && fSteer_Num2->Connect("ValueSet(Long_t)", "TFndPreanGUI", this, "SetFirstRun(Long_t)");
00373 ok = ok && fChkBox_SumW2->Connect("Toggled(Bool_t)", "TFndPreanGUI", this, "ToggleErrorBars(Bool_t)");
00374 ok = ok && fFidaVer_Combo->Connect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_FidaVerCombo(Int_t)");
00375 ok = ok && fSetting_Combo->Connect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SettingCombo(Int_t)");
00376
00377 ok = ok && fTxtBut_SaveRootFile->Connect("Clicked()", "TFndPreanGUI", this, "SaveHistos()");
00378 ok = ok && fTxtBut_LoadRootFile->Connect("Clicked()", "TFndPreanGUI", this, "LoadHistos()");
00379
00380 ok = ok && fShowCanvas->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","TFndPreanGUI",this,"HandleMouseActions(Int_t,Int_t,Int_t,TObject*)");
00381
00382 ok = ok && fChkBox_CutTrkFit->Connect("Toggled(Bool_t)","TFndPreanGUI",this,"SetCutFit(Bool_t)");
00383 ok = ok && fCombo_TrkType->Connect("Selected(Int_t)", "TFndPreanGUI", this, "SetTrkType(Int_t)");
00384 }
00385 else{
00386 ok = ok && fMainFrame->Disconnect("CloseWindow()", "TFndPreanGUI", this, "CloseGUI()");
00387
00388 ok = ok && fSteer_But1->Disconnect("Clicked()", "TFndPreanGUI", this, "FillHistos_GUI()");
00389 ok = ok && fSteer_But2->Disconnect("Clicked()", "TFndPreanGUI", this, "SavePage()");
00390
00391 ok = ok && fSteer_Combo->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SteerCombo(Int_t)");
00392 ok = ok && fSel_Combo1->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SelCombo1(Int_t)");
00393 ok = ok && fSel_Combo2->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SelCombo2(Int_t)");
00394
00395 ok = ok && fSteer_Num1->Disconnect("ValueSet(Long_t)", "TFndPreanGUI", this, "SetLastRun(Long_t)");
00396 ok = ok && fSteer_Num2->Disconnect("ValueSet(Long_t)", "TFndPreanGUI", this, "SetFirstRun(Long_t)");
00397 ok = ok && fChkBox_SumW2->Disconnect("Toggled(Bool_t)", "TFndPreanGUI", this, "ToggleErrorBars(Bool_t)");
00398 ok = ok && fFidaVer_Combo->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_FidaVerCombo(Int_t)");
00399 ok = ok && fSetting_Combo->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "Exe_SettingCombo(Int_t)");
00400
00401 ok = ok && fTxtBut_SaveRootFile->Disconnect("Clicked()", "TFndPreanGUI", this, "SaveHistos()");
00402 ok = ok && fTxtBut_LoadRootFile->Disconnect("Clicked()", "TFndPreanGUI", this, "LoadHistos()");
00403
00404 ok = ok && fShowCanvas->Disconnect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)","TFndPreanGUI",this,"HandleMouseActions(Int_t,Int_t,Int_t,TObject*)");
00405
00406 ok = ok && fChkBox_CutTrkFit->Disconnect("Toggled(Bool_t)","TFndPreanGUI",this,"SetCutFit(Bool_t)");
00407 ok = ok && fCombo_TrkType->Disconnect("Selected(Int_t)", "TFndPreanGUI", this, "SetTrkType(Int_t)");
00408 }
00409
00410 if(!ok) Warning("MakeConnections","At least one broken connection found.");
00411 return ok;
00412
00413 }
00414
00415
00416 void TFndPreanGUI::FillCombo_Steer(){
00417
00418 if(!fSteer_Combo || !fFidaVer_Combo) return;
00419
00420
00421 if(fSteer_Combo->GetNumberOfEntries() != 0) fSteer_Combo->RemoveAll();
00422
00423
00424
00425
00426 fSteer_Combo->AddEntry(RunType_Name((Int_t)(RT_FINU)),(Int_t)(RT_FINU));
00427 fSteer_Combo->Select(RT_FINU);
00428
00429
00430 if(fFidaVer_Combo->GetNumberOfEntries() != 0) fFidaVer_Combo->RemoveAll();
00431
00432 for(Int_t i=(Int_t)(FIDAVER_521);i < (Int_t)(FIDAVER_END);i++) {
00433 fFidaVer_Combo->AddEntry(FidaVer_Name((E_FndFidaVersion)i),i);
00434 }
00435 fFidaVer_Combo->Select(FIDAVER_603);
00436
00437 }
00438
00439
00440 void TFndPreanGUI::FillCombo_Sel1(){
00441
00442 if(!fSel_Combo1) return;
00443 if(fSel_Combo1->GetNumberOfEntries() != 0) fSel_Combo1->RemoveAll();
00444
00445 fSel_Combo1->AddEntry("GES",E_MasMenu_GES);
00446 fSel_Combo1->AddEntry("BHABHA",E_MasMenu_BHABHA);
00447 fSel_Combo1->AddEntry("HYPE",E_MasMenu_HYPE);
00448 fSel_Combo1->AddEntry("STATISTICS",E_MasMenu_STAT);
00449
00450 }
00451
00452
00453 void TFndPreanGUI::FillCombo_Setting(){
00454
00455 if(fSetting_Combo->GetNumberOfEntries() != 0) fSetting_Combo->RemoveAll();
00456 for(Int_t id=E_SetMenu_DEFAULT;id<E_SetMenu_End;id++){
00457 fSetting_Combo->AddEntry(GetSettingName(id),id);
00458 }
00459 fSetting_Combo->Select((Int_t)E_SetMenu_DEFAULT);
00460
00461 }
00462
00463
00464 void TFndPreanGUI::FillCombo_Sel2(Int_t mode){
00465
00466 fCurMasterMode = (E_MasterMenuMode) mode;
00467
00468 if(!fSel_Combo2) return;
00469 if(fSel_Combo2->GetNumberOfEntries() != 0) fSel_Combo2->RemoveAll();
00470
00471 switch(fCurMasterMode){
00472 case E_MasMenu_GES:
00473 fSel_Combo2->AddEntry("Main check",E_SlMenu_Ges_Main);
00474 break;
00475 case E_MasMenu_BHABHA:
00476 fSel_Combo2->AddEntry("Particles", E_SlMenu_Bha_Part);
00477 fSel_Combo2->AddEntry("Int. point", E_SlMenu_Bha_Int);
00478 fSel_Combo2->AddEntry("TOF", E_SlMenu_Bha_Tof);
00479 break;
00480 case E_MasMenu_HYPE:
00481 fSel_Combo2->AddEntry("K- stop (2D)", E_SlMenu_Hyp_Km_Stop_2D);
00482 fSel_Combo2->AddEntry("K+ stop (2D)", E_SlMenu_Hyp_Kp_Stop_2D);
00483 fSel_Combo2->AddEntry("K-/K+ stop", E_SlMenu_Hyp_K_Stop);
00484 fSel_Combo2->AddEntry("K-/K+ stat", E_SlMenu_Hyp_K_Stat);
00485 fSel_Combo2->AddEntry("Phi decay pos.", E_SlMenu_Hyp_K_PhiPos);
00486 fSel_Combo2->AddEntry("K+ pos. trk (ALL)", E_SlMenu_Hyp_K_KpluPosTrk_All);
00487 fSel_Combo2->AddEntry("K+ pos. trk (tgt)", E_SlMenu_Hyp_K_KpluPosTrk_Tgt);
00488 fSel_Combo2->AddEntry("K+ pos. trk (pth)", E_SlMenu_Hyp_K_KpluPosTrk_Pth);
00489 fSel_Combo2->AddEntry("K+ mu+ (TOF)", E_SlMenu_Hyp_K_KpluPosTrk_Tof);
00490 break;
00491 case E_MasMenu_STAT:
00492 fSel_Combo2->AddEntry("Events./run", E_SlMenu_Stat_Events);
00493 fSel_Combo2->AddEntry("Lumin./run", E_SlMenu_Stat_Lumin);
00494 fSel_Combo2->AddEntry("Int. Lumin.[no inh.]", E_SlMenu_Stat_LuminInt_NoInh);
00495 fSel_Combo2->AddEntry("Int. Lumin.[inj inh.]", E_SlMenu_Stat_LuminInt_InjInh);
00496 fSel_Combo2->AddEntry("Int. Lumin.[all inh]", E_SlMenu_Stat_LuminInt_AllInh);
00497 fSel_Combo2->AddEntry("BHA trig", E_SlMenu_Stat_BhaCount);
00498 fSel_Combo2->AddEntry("HYP trig", E_SlMenu_Stat_HypCount);
00499 fSel_Combo2->AddEntry("K stop (all tgt.)", E_SlMenu_Stat_KaonsStop);
00500 fSel_Combo2->AddEntry("Mu-plus (all tgt.)", E_SlMenu_Stat_MuPluAll);
00501 fSel_Combo2->AddEntry("ECM. (from e-e+)", E_SlMenu_Stat_BhaECM);
00502 fSel_Combo2->AddEntry("Kshort. (from pi-pi+)", E_SlMenu_Stat_BhaKshort);
00503 fSel_Combo2->AddEntry("Kshort/Bhabha ratio", E_SlMenu_Stat_BhaRatio);
00504 break;
00505 default: return;
00506 }
00507
00508 }
00509
00510
00511 void TFndPreanGUI::Exe_FidaVerCombo(Int_t sel){
00512
00513 if(fDebugLev > 0) Printf("Exe_FidaVerCombo ==========> %d",sel);
00514
00515 if( fFidaVer_Combo->GetSelected() != FidaVer_ID()){
00516 fWarningMsg_Lbl->SetBackgroundColor(TColor::RGB2Pixel(0xff,0x00,0x33));
00517
00518 TString msg = "";
00519 msg.Form("default fidarc version is \"%s\" ",FidaVer_Name().Data());
00520
00521 Warning("Exe_FidaVerCombo","Not using the default release of fidarc (default is \"%s\")",FidaVer_Name().Data());
00522 fWarningMsg_Lbl->SetText(msg);
00523 }
00524 else{
00525 fWarningMsg_Lbl->SetBackgroundColor(TColor::RGB2Pixel(0xcd,0xc5,0xbf));
00526 fWarningMsg_Lbl->SetText("");
00527 }
00528 }
00529
00530
00531 void TFndPreanGUI::Exe_SettingCombo(Int_t sel){
00532
00533 if(fDebugLev > 0) Printf("Exe_SettingCombo ==========> %d",sel);
00534
00535 E_SettingMenuMode sel_set = (E_SettingMenuMode) sel;
00536 switch(sel_set){
00537 case E_SetMenu_DEFAULT:
00538 ( (TAxis *)(PreanHistosRef->fH_HypTrk_KpluPosAll->GetXaxis() ) ) ->UnZoom();
00539 ( (TAxis *)(PreanHistosRef->fH_InvMass_EpluEmin->GetXaxis() ) ) ->UnZoom();
00540 ( (TAxis *)(PreanHistosRef->fH_InvMass_PIpluPImin->GetXaxis() ) )->UnZoom();
00541 ( (TAxis *)(PreanHistosRef->fH_BhaTracksAngle->GetXaxis() ) )->UnZoom();
00542 break;
00543 case E_SetMenu_SHIFT:
00544 PreanHistosRef->fH_HypTrk_KpluPosAll->SetAxisRange(0.215,0.245,"X");
00545 PreanHistosRef->fH_InvMass_EpluEmin->SetAxisRange(0.95,1.08,"X");
00546 PreanHistosRef->fH_InvMass_PIpluPImin->SetAxisRange(0.46,0.54,"X");
00547 PreanHistosRef->fH_BhaTracksAngle->SetAxisRange(120.,180.,"X");
00548 break;
00549 default:
00550 Warning("Exe_SettingCombo","selection \"%d\" not available.",sel);
00551 return;
00552 }
00553
00554 UpdateDisplayPad(kTRUE);
00555 }
00556
00557
00558 void TFndPreanGUI::Exe_SteerCombo(Int_t id){
00559
00560 if(fDebugLev > 0) Info("Exe_SteerCombo","Executing command id: %d",id);
00561
00562 }
00563
00564
00565 void TFndPreanGUI::Exe_SelCombo1(Int_t id){
00566
00567 if(fDebugLev > 0) Info("Exe_SelCombo1","Executing command id: %d",id);
00568 FillCombo_Sel2(id);
00569 }
00570
00571
00572 void TFndPreanGUI::Exe_SelCombo2(Int_t id){
00573
00574 if(fDebugLev > 0) Info("Exe_SelCombo2","Executing command id: %d",id);
00575
00576
00577 switch(fCurMasterMode){
00578 case E_MasMenu_GES:
00579 DisplayGes((E_SlaveMenuMode)id);
00580 break;
00581 case E_MasMenu_BHABHA:
00582 DisplayBhabha((E_SlaveMenuMode)id);
00583 break;
00584 case E_MasMenu_HYPE:
00585 DisplayHype((E_SlaveMenuMode)id);
00586 break;
00587 case E_MasMenu_STAT:
00588 DisplayStat((E_SlaveMenuMode)id);
00589 break;
00590 default: return;
00591 }
00592 }
00593
00594
00595 void TFndPreanGUI::UpdateDisplayPad(Bool_t every_pad){
00596
00597 if(!fShowCanvas){
00598 Warning("ResetDisplayPad","Display pad not available");
00599 return;
00600 }
00601
00602 fShowCanvas->cd();
00603
00604
00605 TIter next(gDirectory->GetList());
00606 TObject *obj;
00607 while ( obj && ( obj = next() ) ) {
00608 if( !obj->IsA() ) continue;
00609 TString clnam = obj->IsA()->GetName();
00610 clnam.Resize(3);
00611 if ( clnam.CompareTo("TH1") == 0 ) {
00612 if(! ( ((TH1 *)obj)->GetSumw2() )->fN) ( (TH1 *)obj )->Sumw2();
00613
00614 }
00615 }
00616
00617
00618 if(every_pad){
00619 if( !fShowCanvas->GetListOfPrimitives() ) return;
00620 const Int_t npads = fShowCanvas->GetListOfPrimitives()->GetEntries();
00621 if(npads>1){
00622 for(Int_t pd=1;pd<=npads;pd++){
00623 if(! fShowCanvas->cd(pd) ) continue;
00624 gPad->Modified();
00625
00626 }
00627 }
00628 }
00629
00630 fShowCanvas->Modified();
00631
00632 gInterpreter->EndOfLineAction();
00633 }
00634
00635
00636 void TFndPreanGUI::ResetMultiGraphs(Bool_t recreate){
00637
00638 TString mgnam="";
00639 for( Int_t i=0;i<(NmaxMulGraph)(NMaxMultiGraphs); i++){
00640 if(recreate){
00641 delete fFndMultiGraph[i];
00642 mgnam.Form("MultiGraph_%i",i);
00643 fFndMultiGraph[i] = new TFndMultiGraph(mgnam,mgnam);
00644 }
00645 else if(fFndMultiGraph[i]) fFndMultiGraph[i]->Reset();
00646 }
00647
00648 }
00649
00650
00651 void TFndPreanGUI::ToggleErrorBars(Bool_t sumw2){
00652
00653 fTh1DrawOpt = sumw2 ? "" : "hist" ;
00654 Exe_SelCombo2(fSel_Combo2->GetSelected());
00655 }
00656
00657
00658
00659 void TFndPreanGUI::SavePage(){
00660
00661 StartGUI_SaveFilename(Esave_pdf);
00662
00663
00664 }
00665
00666
00667 void TFndPreanGUI::SaveHistos(){
00668
00669 StartGUI_SaveFilename(Esave_root);
00670
00671
00672 }
00673
00674
00675 TString TFndPreanGUI::BrowseCurDir(){
00676
00677 TString sel_name = "";
00678
00679 Printf("...Browsing for histograms...");
00680
00681 static TString dir(".");
00682 TGFileInfo fi;
00683 new TGFileDialog(gClient->GetDefaultRoot(), fMainFrame,
00684 kFDOpen,&fi);
00685 dir = fi.fIniDir;
00686 TObjString *el;
00687 TIter next(fi.fFileNamesList);
00688 while ((el = (TObjString *) next())) {
00689 new TFile(el->GetString(), "update");
00690 }
00691 sel_name = fi.fFilename;
00692
00693 if( sel_name.IsNull() ){ return 0; }
00694
00695 Printf("...Selected file is \"%s\"",sel_name.Data());
00696 return sel_name;
00697
00698 }
00699
00700
00701 void TFndPreanGUI::LoadHistos(){
00702
00703 TString nam = BrowseCurDir();
00704
00705 if( nam.IsNull() ){
00706 Info("LoadHistos","Load operation cancelled");
00707 return;
00708 }
00709
00710 Printf("...Loading histograms from file \"%s\"",nam.Data());
00711 PreanHistosRef->LoadHistosFromFile(nam);
00712 Printf("...histograms loadedfrom file \"%s\"",nam.Data());
00713
00714
00715
00716 }
00717
00718
00719 void TFndPreanGUI::StartGUI_SaveFilename(E_savemode mode){
00720
00721
00722 fStrSaveFilename.Form("Prean_%s_%s_%u_%u%s",
00723 FidaVer_Name( (E_FndFidaVersion)(fFidaVer_Combo->GetSelected()) ).Data(),
00724 RunType_Name(fSteer_Combo->GetSelected()).Data(),
00725 (UInt_t)(fSteer_Num1->GetNumber()),
00726 (UInt_t)(fSteer_Num2->GetNumber()),
00727 GetExtFromMode(mode).Data()
00728 );
00729
00730
00731
00732 fTrsnFrm_SaveName = new TGTransientFrame(gClient->GetRoot(), fMainFrame, 400, 200);
00733 fTrsnFrm_SaveName->SetCleanup(kDeepCleanup);
00734
00735 Gui::MoveResizeSafe(10,90,385,120, fTrsnFrm_SaveName);
00736
00737 fSaveFnam_Trsn_Lbl = new TGLabel(fTrsnFrm_SaveName,"set filename (with ext)",
00738 fFontGC_LabNorm->GetGC(),
00739 fFont_LabEnl->GetFontStruct(),
00740 kSunkenFrame | kDoubleBorder | kOwnBackground);
00741
00742 fSaveFnam_Trsn_Lbl->SetTextJustify(36);
00743 fSaveFnam_Trsn_Lbl->SetTextFont("-adobe-helvetica-medium-r-*-*-16-*-*-*-*-*-iso8859-1");
00744 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_Lbl, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00745 Gui::MoveResizeSafe(10,10,135,25, fSaveFnam_Trsn_Lbl);
00746
00747 fSaveFnam_Trsn_Txt = new TGTextEntry(fTrsnFrm_SaveName, new TGTextBuffer(15),-1);
00748
00749
00750
00751
00752
00753 fSaveFnam_Trsn_Txt->SetMaxLength(255);
00754 fSaveFnam_Trsn_Txt->SetAlignment(kTextLeft);
00755 fSaveFnam_Trsn_Txt->SetText(fStrSaveFilename);
00756 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_Txt, new TGLayoutHints(kLHintsLeft | kLHintsTop,5,5,5,5));
00757 Gui::MoveResizeSafe(155,10,240,25,fSaveFnam_Trsn_Txt);
00758
00759 fSaveFnam_Trsn_ButOk = new TGTextButton(fTrsnFrm_SaveName,"OK");
00760 fSaveFnam_Trsn_ButOk->SetTextJustify(36);
00761 fSaveFnam_Trsn_ButOk->SetFont(fFont_But->GetName());
00762 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_ButOk, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00763 Gui::MoveResizeSafe(30,50,70,30, fSaveFnam_Trsn_ButOk);
00764
00765 fSaveFnam_Trsn_ButCancel = new TGTextButton(fTrsnFrm_SaveName,"CANCEL");
00766 fSaveFnam_Trsn_ButCancel->SetTextJustify(36);
00767 fSaveFnam_Trsn_ButCancel->SetFont(fFont_But->GetName());
00768 fTrsnFrm_SaveName->AddFrame(fSaveFnam_Trsn_ButCancel, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
00769 Gui::MoveResizeSafe(300,50,70,30, fSaveFnam_Trsn_ButCancel);
00770
00771 fTrsnFrm_SaveName->MapSubwindows();
00772
00773
00774 fTrsnFrm_SaveName->CenterOnParent();
00775 fTrsnFrm_SaveName->SetWindowName("Filename window");
00776 fTrsnFrm_SaveName->MapWindow();
00777
00778
00779 switch(mode){
00780 case Esave_pdf:
00781 fSaveFnam_Trsn_ButOk->Connect("Clicked()", "TFndPreanGUI", this, "Do_SaveDisplay()");
00782 break;
00783 case Esave_root:
00784 fSaveFnam_Trsn_ButOk->Connect("Clicked()", "TFndPreanGUI", this, "Do_SaveHistos()");
00785 break;
00786
00787 }
00788
00789 fSaveFnam_Trsn_ButCancel->Connect("Clicked()", "TFndPreanGUI", this, "CloseGUI_SaveFilename()");
00790 fMainFrame->Connect("CloseWindow()", "TGTransientFrame", fTrsnFrm_SaveName, "CloseWindow()");
00791 fTrsnFrm_SaveName->DontCallClose();
00792
00793 }
00794
00795
00796 void TFndPreanGUI::CloseGUI_SaveFilename(){
00797
00798 fTrsnFrm_SaveName->CloseWindow();
00799 if(fDebugLev > 0) Printf("Save window closed");
00800 }
00801
00802
00803 void TFndPreanGUI::Do_SaveDisplay(){
00804
00805 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
00806
00807 if(! Do_CheckCanWriteFile() ) return;
00808
00809
00810
00811
00812
00813
00814
00815 fStrSaveFilename = fSaveFnam_Trsn_Txt->GetText();
00816
00817 SetBackgroundColor( (Int_t)E_PreanBckCol_save );
00818
00819
00820 TString msg;
00821 TString canv_tit;
00822 canv_tit.Form("Preanalysis (%s) \"%s\" from %u to %u",
00823 FidaVer_Name( (E_FndFidaVersion)(fFidaVer_Combo->GetSelected()) ).Data(),
00824 RunType_Name(fSteer_Combo->GetSelected()).Data(),
00825 (UInt_t)(fSteer_Num1->GetNumber()),
00826 (UInt_t)(fSteer_Num2->GetNumber())
00827 );
00828
00829 Gui::SaveCanvasWithTitle(fShowCanvas,canv_tit,fStrSaveFilename,fTh1DrawOpt,"",0);
00830
00831 msg.Form("file \"%s\" created in current directory.",fStrSaveFilename.Data());
00832 WriteStatusMessage(msg);
00833
00834
00835 SetBackgroundColor( (Int_t)E_PreanBckCol_default );
00836
00837 CloseGUI_SaveFilename();
00838
00839 }
00840
00841
00842 void TFndPreanGUI::Do_SaveHistos(){
00843
00844 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
00845 Printf("Saving histograms to root-file... (overwrite flag: %d)",MustOverwrite);
00846
00847 if(! Do_CheckCanWriteFile() ){
00848 CloseGUI_SaveFilename();
00849 return;
00850 }
00851
00852 fStrSaveFilename = fSaveFnam_Trsn_Txt->GetText();
00853 PreanHistosRef->WriteHistosToFile(fStrSaveFilename);
00854
00855 CloseGUI_SaveFilename();
00856 Printf("histograms saved to root-file...");
00857 }
00858
00859
00860 Bool_t TFndPreanGUI::Do_CheckCanWriteFile(){
00861
00862 Bool_t MustOverwrite = (Bool_t) (fChkBox_Overwrite->GetState() );
00863
00864 if(!MustOverwrite && !gSystem->AccessPathName(fStrSaveFilename)){
00865 TString msg;
00866 msg.Form("file \"%s\" already existing: can not save (if you want to overwrite it check the dedicated box).",fStrSaveFilename.Data());
00867 WriteStatusMessage(msg);
00868 return kFALSE;
00869 }
00870
00871 return kTRUE;
00872 }
00873
00874
00875 void TFndPreanGUI::DisplayGes(E_SlaveMenuMode mode){
00876
00877 if(mode < E_SlMenu_Ges_Main || mode > E_SlMenu_Ges_End){
00878 Warning("DisplayGes","mode %d not accepted",(Int_t)mode);
00879 return;
00880 }
00881
00882 switch(mode){
00883 case E_SlMenu_Ges_Main:
00884 ResetDisplayPad();
00885 fShowCanvas->cd(1);
00886 PreanHistosRef->fH_GesTrigBit->Draw(fTh1DrawOpt);
00887 break;
00888 default:
00889 ResetDisplayPad();
00890 Error("DisplayGes","mode not available");
00891 return;
00892 }
00893
00894 UpdateDisplayPad();
00895
00896 DisplayInfo_Ges(mode);
00897
00898 }
00899
00900
00901 void TFndPreanGUI::DisplayBhabha(E_SlaveMenuMode mode){
00902
00903 if(mode < E_SlMenu_Bha_Part || mode > E_SlMenu_Bha_End){
00904 Warning("DisplayBhabha","mode %d not accepted",(Int_t)mode);
00905 return;
00906 }
00907
00908 TH1D *H_ElecMom;
00909 TH1D *H_PositMom;
00910 TH1D *H_Bha_Vert_X;
00911 TH1D *H_Bha_Vert_Y;
00912 TH1D *H_Bha_Vert_Z;
00913
00914 TH1D *H_ElecTof;
00915 TH1D *H_PositTof;
00916
00917 switch(mode){
00918 case E_SlMenu_Bha_Part:
00919 ResetDisplayPad(3,2);
00920
00921 fShowCanvas->cd(1);
00922
00923 PreanHistosRef->fH_BhaMom_2D->Draw("colz");
00924
00925
00926 fShowCanvas->cd(2);
00927 H_ElecMom = PreanHistosRef->fH_BhaMom_2D->ProjectionY("ElecMom");
00928 H_ElecMom->SetTitle("electron momentum (Gev/c)");
00929 H_ElecMom->Draw(fTh1DrawOpt);
00930
00931 fShowCanvas->cd(3);
00932 H_PositMom = PreanHistosRef->fH_BhaMom_2D->ProjectionX("PositMom");
00933 H_PositMom->SetTitle("positron momentum (Gev/c)");
00934 H_PositMom->Draw(fTh1DrawOpt);
00935
00936
00937 fShowCanvas->cd(4);
00938 PreanHistosRef->fH_InvMass_EpluEmin->Draw(fTh1DrawOpt);
00939
00940 fShowCanvas->cd(5);
00941 PreanHistosRef->fH_InvMass_PIpluPImin->Draw(fTh1DrawOpt);
00942
00943
00944 fShowCanvas->cd(6);
00945 PreanHistosRef->fH_BhaTracksAngle->Draw(fTh1DrawOpt);
00946
00947 break;
00948 case E_SlMenu_Bha_Int:
00949 ResetDisplayPad(3,2);
00950
00951 fShowCanvas->cd(1);
00952 PreanHistosRef->fH_BhaVert_XYZ->Draw();
00953
00954 fShowCanvas->cd(2);
00955 PreanHistosRef->fH_BhaVert_XY->Draw("cont");
00956
00957 fShowCanvas->cd(3);
00958 PreanHistosRef->fH_BhaVert_XZ->Draw("cont");
00959
00960
00961 fShowCanvas->cd(4);
00962 H_Bha_Vert_X = PreanHistosRef->fH_BhaVert_XY->ProjectionX("Bhabha_Vertex_X");
00963 H_Bha_Vert_X->SetTitle("Bhabha Vertex X");
00964 H_Bha_Vert_X->Draw(fTh1DrawOpt);
00965
00966 fShowCanvas->cd(5);
00967 H_Bha_Vert_Y = PreanHistosRef->fH_BhaVert_XY->ProjectionY("Bhabha_Vertex_Y");
00968 H_Bha_Vert_Y->SetTitle("Bhabha Vertex Y");
00969 H_Bha_Vert_Y->Draw(fTh1DrawOpt);
00970
00971 fShowCanvas->cd(6);
00972 H_Bha_Vert_Z = PreanHistosRef->fH_BhaVert_XZ->ProjectionY("Bhabha_Vertex_Z");
00973 H_Bha_Vert_Z->SetTitle("Bhabha Vertex Z");
00974 H_Bha_Vert_Z->Draw(fTh1DrawOpt);
00975
00976 break;
00977 case E_SlMenu_Bha_Tof:
00978 ResetDisplayPad(3,2);
00979
00980 fShowCanvas->cd(1);
00981 PreanHistosRef->fH_BhaParticleTOF_2D->Draw();
00982
00983 fShowCanvas->cd(2);
00984 H_ElecTof = PreanHistosRef->fH_BhaParticleTOF_2D->ProjectionY("ElectronTOF");
00985 H_ElecTof->SetTitle("e- TOF (ns)");
00986 H_ElecTof->Draw(fTh1DrawOpt);
00987
00988 fShowCanvas->cd(3);
00989 H_PositTof = PreanHistosRef->fH_BhaParticleTOF_2D->ProjectionX("PositronTOF");
00990 H_PositTof->SetTitle("e+ TOF (ns)");
00991 H_PositTof->Draw(fTh1DrawOpt);
00992
00993 fShowCanvas->cd(4);
00994 PreanHistosRef->fH_BhaTofi_TimeDiff->Draw(fTh1DrawOpt);
00995
00996 fShowCanvas->cd(5);
00997 PreanHistosRef->fH_BhaTofi_Time_2D->Draw();
00998
00999 fShowCanvas->cd(6);
01000 PreanHistosRef->fH_BhaTofo_TimeDiff->Draw(fTh1DrawOpt);
01001 break;
01002 default:
01003 ResetDisplayPad();
01004 Error("DisplayBhabha","mode not available");
01005 return;
01006 }
01007
01008 UpdateDisplayPad();
01009
01010 DisplayInfo_Bhabha(mode);
01011 }
01012
01013
01014 void TFndPreanGUI::DisplayHype(E_SlaveMenuMode mode){
01015
01016 if(mode < E_SlMenu_Hyp_Km_Stop_2D || mode >= E_SlMenu_Hyp_End){
01017 Warning("DisplayHype","mode %d not accepted",(Int_t)mode);
01018 return;
01019 }
01020
01021 switch(mode){
01022 case E_SlMenu_Hyp_Km_Stop_2D:
01023 ResetDisplayPad(3,2);
01024
01025
01026 fShowCanvas->cd(1);
01027 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Target]->Draw();
01028
01029 fShowCanvas->cd(2);
01030 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Isim]->Draw();
01031
01032 fShowCanvas->cd(3);
01033 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Upilex]->Draw();
01034 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Glass]->Draw("same");
01035
01036 fShowCanvas->cd(4);
01037 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Osim]->Draw();
01038
01039 fShowCanvas->cd(5);
01040 PreanHistosRef->fH_HypKmin_stop_XY[TFndPrean::E_Kaon_Stop_Other]->Draw();
01041
01042 fShowCanvas->cd(6);
01043 for(Int_t i=(Int_t)TFndPrean::E_Kaon_Stop_Target; i<=(Int_t)TFndPrean::E_Kaon_Stop_Other; i++){
01044 PreanHistosRef->fH_HypKmin_stop_XY[i]->Draw("same");
01045 }
01046 break;
01047 case E_SlMenu_Hyp_Kp_Stop_2D:
01048 ResetDisplayPad(3,2);
01049
01050
01051 fShowCanvas->cd(1);
01052 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Target]->Draw();
01053
01054 fShowCanvas->cd(2);
01055 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Isim]->Draw();
01056
01057 fShowCanvas->cd(3);
01058 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Upilex]->Draw();
01059 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Glass]->Draw("same");
01060
01061 fShowCanvas->cd(4);
01062 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Osim]->Draw();
01063
01064 fShowCanvas->cd(5);
01065 PreanHistosRef->fH_HypKplu_stop_XY[TFndPrean::E_Kaon_Stop_Other]->Draw();
01066
01067 fShowCanvas->cd(6);
01068 for(Int_t i=(Int_t)TFndPrean::E_Kaon_Stop_Target; i<=(Int_t)TFndPrean::E_Kaon_Stop_Other; i++){
01069 PreanHistosRef->fH_HypKplu_stop_XY[i]->Draw("same");
01070 }
01071 break;
01072 case E_SlMenu_Hyp_K_Stop:
01073 ResetDisplayPad(3,2);
01074
01075
01076 fShowCanvas->cd(1);
01077 PreanHistosRef->fH_Hyp_K_StopTgt_2D->Draw("colz");
01078
01079 fShowCanvas->cd(2);
01080 PreanHistosRef->fH_Hyp_Kmin_StopTgt->Draw(fTh1DrawOpt);
01081
01082 fShowCanvas->cd(3);
01083 PreanHistosRef->fH_Hyp_Kplu_StopTgt->Draw(fTh1DrawOpt);
01084
01085 fShowCanvas->cd(4);
01086 PreanHistosRef->fH_Hyp_K_StopVol_2D->Draw("colz");
01087
01088 fShowCanvas->cd(5);
01089 PreanHistosRef->fH_Hyp_Kmin_StopVol->Draw(fTh1DrawOpt);
01090
01091 fShowCanvas->cd(6);
01092 PreanHistosRef->fH_Hyp_Kplu_StopVol->Draw(fTh1DrawOpt);
01093 break;
01094 case E_SlMenu_Hyp_K_Stat:
01095 ResetDisplayPad(2,2);
01096 fShowCanvas->cd(1);
01097 PreanHistosRef->fH_Hyp_PattRecErr->Draw(fTh1DrawOpt);
01098
01099 fShowCanvas->cd(2);
01100 PreanHistosRef->fH_Hyp_Kmin_StopCode->Draw(fTh1DrawOpt);
01101
01102 fShowCanvas->cd(3);
01103 PreanHistosRef->fH_Hyp_Kplu_StopCode->Draw(fTh1DrawOpt);
01104 break;
01105 case E_SlMenu_Hyp_K_PhiPos:
01106 ResetDisplayPad(3,2);
01107
01108
01109 fShowCanvas->cd(1);
01110 PreanHistosRef->fH_Hyp_PhiDecPos_XYZ->Draw();
01111
01112 fShowCanvas->cd(2);
01113 PreanHistosRef->fH_Hyp_PhiDecPos_XY->Draw("cont");
01114
01115 fShowCanvas->cd(3);
01116 PreanHistosRef->fH_Hyp_PhiDecPos_XZ->Draw("cont");
01117
01118
01119 fShowCanvas->cd(4);
01120 PreanHistosRef->fH_PhiDecPos_X->Draw(fTh1DrawOpt);
01121
01122 fShowCanvas->cd(5);
01123 PreanHistosRef->fH_PhiDecPos_Y->Draw(fTh1DrawOpt);
01124
01125 fShowCanvas->cd(6);
01126 PreanHistosRef->fH_PhiDecPos_Z->Draw(fTh1DrawOpt);
01127 break;
01128 case E_SlMenu_Hyp_K_KpluPosTrk_All:
01129 ResetDisplayPad(2,1);
01130
01131 fShowCanvas->cd(1);
01132 PreanHistosRef->fH_HypTrk_KpluPosAll->Draw(fTh1DrawOpt);
01133
01134 fShowCanvas->cd(2);
01135 PreanHistosRef->fH_HypTrk_KpluPosPthAll->Draw(fTh1DrawOpt);
01136
01137 break;
01138 case E_SlMenu_Hyp_K_KpluPosTrk_Tgt:
01139 ResetDisplayPad(4,2);
01140 for(Int_t i=0;i<8;i++){
01141 fShowCanvas->cd(i+1);
01142 PreanHistosRef->fH_HypTrk_KpluPosTgt[i]->Draw(fTh1DrawOpt);
01143 }
01144 break;
01145 case E_SlMenu_Hyp_K_KpluPosTrk_Pth:
01146 ResetDisplayPad(4,2);
01147 for(Int_t i=0;i<8;i++){
01148 fShowCanvas->cd(i+1);
01149 PreanHistosRef->fH_HypTrk_KpluPosPth[i]->Draw(fTh1DrawOpt);
01150 }
01151 break;
01152 case E_SlMenu_Hyp_K_KpluPosTrk_Tof:
01153 ResetDisplayPad(2,2);
01154 fShowCanvas->cd(1);
01155 PreanHistosRef->fH_Hyp_KTofi_TimeDiff->Draw(fTh1DrawOpt);
01156 fShowCanvas->cd(2);
01157 PreanHistosRef->fH_Hyp_MuTof->Draw(fTh1DrawOpt);
01158 fShowCanvas->cd(3);
01159 PreanHistosRef->fH_Hyp_KTofi_Time_2D->Draw(fTh1DrawOpt);
01160 fShowCanvas->cd(4);
01161 PreanHistosRef->fH_Hyp_MuTofCorr->Draw(fTh1DrawOpt);
01162 break;
01163 default:
01164 ResetDisplayPad();
01165 Error("DisplayHype","mode not available");
01166 return;
01167 }
01168
01169 UpdateDisplayPad();
01170
01171 DisplayInfo_Hype(mode);
01172
01173 }
01174
01175
01176 void TFndPreanGUI::DrawFndGraph(Int_t pad_id,Option_t *opt,TFndGraph *graph1,TFndGraph *graph2,TFndGraph *graph3,TFndGraph *graph4){
01177
01178
01179
01180
01181 if(pad_id < 0){
01182 Error("DrawFndGraph","BUG detected: wrong pad_id (%d) in private method",pad_id);
01183 TerminateFroot();
01184 return;
01185 }
01186
01187 if(! graph1 || graph1->GetN() < 2){
01188 Info("DrawFndGraph","graph1 is empty (less than 2 points).");
01189 return;
01190 }
01191
01192 Int_t gr_id = (pad_id == 0) ? pad_id : pad_id -1 ;
01193 if( pad_id ==0 )fShowCanvas->cd();
01194 else fShowCanvas->cd(pad_id);
01195
01196 fFndMultiGraph[gr_id]->AddFndGraph( graph1 ,opt);
01197 if(graph2 && graph2->GetN() > 2) fFndMultiGraph[gr_id]->AddFndGraph( graph2 ,opt);
01198 if(graph3 && graph3->GetN() > 2) fFndMultiGraph[gr_id]->AddFndGraph( graph3 ,opt);
01199 if(graph4 && graph4->GetN() > 2) fFndMultiGraph[gr_id]->AddFndGraph( graph4 ,opt);
01200 fFndMultiGraph[gr_id]->DrawDefaults();
01201 }
01202
01203
01204 void TFndPreanGUI::DisplayStat(E_SlaveMenuMode mode){
01205
01206 if(mode < E_SlMenu_Stat_Events || mode >= E_SlMenu_Stat_End){
01207 Warning("DisplayStat","mode %d not accepted",(Int_t)mode);
01208 return;
01209 }
01210
01211 switch(mode){
01212 case E_SlMenu_Stat_Events:
01213 ResetDisplayPad();
01214 PreanHistosRef->fGR_Stat_Evs->SetMinDrawY(0);
01215 PreanHistosRef->fGR_Stat_Evs->SetMaxDrawY(30000);
01216 DrawFndGraph(0,"PB", PreanHistosRef->fGR_Stat_Evs );
01217 break;
01218 case E_SlMenu_Stat_Lumin:
01219 ResetDisplayPad();
01220 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_No] ->SetMinDrawY(0);
01221 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_Inj]->SetMinDrawY(0);
01222 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_All]->SetMinDrawY(0);
01223
01224 DrawFndGraph(0,"PB",
01225 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_No] ,
01226 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_Inj],
01227 PreanHistosRef->fGR_Stat_AvgLum[TFndPrean::E_Scal_Inhib_All]
01228 );
01229 break;
01230 case E_SlMenu_Stat_LuminInt_NoInh:
01231 ResetDisplayPad(1,2);
01232 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_No]->SetMinDrawY(0);
01233
01234 DrawFndGraph(1,"PB",
01235 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_No] );
01236 DrawFndGraph(2,"PBC",
01237 PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_No] );
01238 break;
01239 case E_SlMenu_Stat_LuminInt_InjInh:
01240 ResetDisplayPad(1,2);
01241 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_Inj]->SetMinDrawY(0);
01242
01243 DrawFndGraph(1,"PB",
01244 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_Inj] );
01245 DrawFndGraph(2,"PBC",
01246 PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_Inj] );
01247 break;
01248 case E_SlMenu_Stat_LuminInt_AllInh:
01249 ResetDisplayPad(1,2);
01250 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_All]->SetMinDrawY(0);
01251
01252 DrawFndGraph(1,"PB",
01253 PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_All] );
01254 DrawFndGraph(2,"PBC",
01255 PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_All] );
01256 break;
01257 case E_SlMenu_Stat_BhaCount:
01258 ResetDisplayPad();
01259 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_No] ->SetMinDrawY(0);
01260 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_Inj]->SetMinDrawY(0);
01261 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_All]->SetMinDrawY(0);
01262
01263 DrawFndGraph(0,"PB",
01264 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_No] ,
01265 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_Inj],
01266 PreanHistosRef->fGR_Stat_BhaNum[TFndPrean::E_Scal_Inhib_All]
01267 );
01268 break;
01269 case E_SlMenu_Stat_HypCount:
01270 ResetDisplayPad();
01271 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_No] ->SetMinDrawY(0);
01272 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_Inj]->SetMinDrawY(0);
01273 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_All]->SetMinDrawY(0);
01274
01275 DrawFndGraph(0,"PB",
01276 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_No] ,
01277 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_Inj],
01278 PreanHistosRef->fGR_Stat_HypNum[TFndPrean::E_Scal_Inhib_All]
01279 );
01280 break;
01281 case E_SlMenu_Stat_KaonsStop:
01282 ResetDisplayPad(1,2);
01283
01284
01285
01286 DrawFndGraph(1,"PCF",
01287 PreanHistosRef->fGR_Stat_KminStop_Num );
01288
01289 DrawFndGraph(2,"PCF",
01290 PreanHistosRef->fGR_Stat_KpluStop_Num );
01291 break;
01292 case E_SlMenu_Stat_MuPluAll:
01293 ResetDisplayPad(1,2);
01294 PreanHistosRef->fGR_Stat_MuPluAll_Num->SetMinDrawY(0);
01295
01296 PreanHistosRef->fGR_Stat_MuPluAll_Mom->SetMinDrawY(0.22);
01297 PreanHistosRef->fGR_Stat_MuPluAll_Mom->SetMaxDrawY(0.25);
01298
01299 DrawFndGraph(1,"PCF",
01300 PreanHistosRef->fGR_Stat_MuPluAll_Num );
01301
01302 DrawFndGraph(2,"PCF",
01303 PreanHistosRef->fGR_Stat_MuPluAll_Mom );
01304 break;
01305 case E_SlMenu_Stat_BhaECM:
01306 ResetDisplayPad(1,2);
01307 PreanHistosRef->fGR_Stat_BhaRec_Num->SetMinDrawY(0);
01308
01309 PreanHistosRef->fGR_Stat_BhaRec_ECMee->SetMinDrawY(0.9);
01310 PreanHistosRef->fGR_Stat_BhaRec_ECMee->SetMaxDrawY(1.1);
01311
01312 DrawFndGraph(1,"PCF",
01313 PreanHistosRef->fGR_Stat_BhaRec_Num );
01314
01315 DrawFndGraph(2,"PCF",
01316 PreanHistosRef->fGR_Stat_BhaRec_ECMee );
01317 break;
01318 case E_SlMenu_Stat_BhaKshort:
01319 ResetDisplayPad(1,2);
01320 PreanHistosRef->fGR_Stat_BhaRec_Kshort_Num->SetMinDrawY(0);
01321
01322 PreanHistosRef->fGR_Stat_BhaRec_Kshort_InvMass->SetMinDrawY(0.45);
01323 PreanHistosRef->fGR_Stat_BhaRec_Kshort_InvMass->SetMaxDrawY(0.53);
01324
01325 DrawFndGraph(1,"PCF",
01326 PreanHistosRef->fGR_Stat_BhaRec_Kshort_Num );
01327
01328 DrawFndGraph(2,"PCF",
01329 PreanHistosRef->fGR_Stat_BhaRec_Kshort_InvMass );
01330 break;
01331 case E_SlMenu_Stat_BhaRatio:
01332 ResetDisplayPad();
01333 PreanHistosRef->fGR_Stat_BhaRec_Ratio->SetMinDrawY(0);
01334
01335 DrawFndGraph(0,"PCF",
01336 PreanHistosRef->fGR_Stat_BhaRec_Ratio );
01337 break;
01338 default:
01339 ResetDisplayPad();
01340 Error("DisplayStat","mode not available");
01341 return;
01342 }
01343
01344 UpdateDisplayPad();
01345
01346 DisplayInfo_Stat(mode);
01347
01348 }
01349
01351
01352
01353 void TFndPreanGUI::DisplayInfo_Ges(E_SlaveMenuMode mode){
01354
01355
01356
01357
01358
01359
01360
01361 if(fDebugLev > 0) Info("DisplayInfo_Ges","Displaying information");
01362 ResetTextMessage();
01363 TString info_msg = "";
01364
01365 TString nam[5] = {
01366 "HYPE.... :",
01367 "BHA..... :",
01368 "COSM.... :",
01369 "HYPE+BHA :",
01370 "SING-TRK :"
01371 };
01372
01373 Float_t entries = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetEntries() );
01374 Float_t en[5] = {0};
01375
01376 en[0] = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetBinContent(2) );
01377 en[1] = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetBinContent(3) );
01378 en[2] = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetBinContent(4) );
01379 en[3] = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetBinContent(12) );
01380 en[4] = (Float_t) (PreanHistosRef->fH_GesTrigBit->GetBinContent(22) );
01381
01382 switch(mode){
01383 case E_SlMenu_Ges_Main:
01384 info_msg.Form("# events: %.0f",entries);
01385 AddTextMessage(info_msg,kTRUE);
01386 for(Int_t i=0;i<4;i++){
01387 info_msg.Form("# %s %.0f",nam[i].Data(),en[i]);
01388 AddTextMessage(info_msg,kFALSE);
01389 }
01390 return;
01391 default: return;
01392 }
01393
01394 }
01395
01396
01397 void TFndPreanGUI::DisplayInfo_Bhabha(E_SlaveMenuMode mode){
01398
01399 if(fDebugLev > 0) Info("DisplayInfo_Bhabha","Displaying information");
01400 ResetTextMessage();
01401 TString info_msg = "";
01402
01403 Double_t entries_p = 0;
01404 Double_t entries_e = 0;
01405 Float_t ratio = 0;
01406 switch(mode){
01407 case E_SlMenu_Bha_Part:
01408 entries_p = PreanHistosRef->fH_InvMass_PIpluPImin->Integral();
01409 entries_e = PreanHistosRef->fH_InvMass_EpluEmin->Integral();
01410
01411 ratio = ( (Float_t)(entries_p) ) / ( (Float_t)(entries_e) );
01412 info_msg.Form("#Inv(pi)/(e): %.3f",ratio);
01413 AddTextMessage(info_msg,kTRUE);
01414 return;
01415 case E_SlMenu_Bha_Int: return;
01416 case E_SlMenu_Bha_Tof: return;
01417 case E_SlMenu_Bha_End: return;
01418 default: return;
01419 }
01420
01421 }
01422
01423
01424 void TFndPreanGUI::DisplayInfo_Hype(E_SlaveMenuMode mode){
01425
01426 if(fDebugLev > 0) Info("DisplayInfo_Hype","Displaying information");
01427 ResetTextMessage();
01428
01429 TString info_msg = "";
01430
01431 switch(mode){
01432 case E_SlMenu_Hyp_Km_Stop_2D:
01433 break;
01434
01435 case E_SlMenu_Hyp_Kp_Stop_2D:
01436 break;
01437
01438 case E_SlMenu_Hyp_K_Stop:
01439
01440 info_msg.Form("Tot # K- stop: %i",PreanHistosRef->fEval_NumOfStoppedKmin_All);
01441 AddTextMessage(info_msg,kTRUE);
01442
01443 for(Int_t i=0; i<8; i++){
01444 info_msg.Form("Tgt %i K- stop: %i",i+1,PreanHistosRef->fEval_NumOfStoppedKmin[i]);
01445 AddTextMessage(info_msg,kFALSE);
01446 }
01447
01448 info_msg.Form("\n --- --- ---\n");
01449 AddTextMessage(info_msg,kFALSE);
01450
01451 info_msg.Form("Tot # K+ stop: %i",PreanHistosRef->fEval_NumOfStoppedKplu_All);
01452 AddTextMessage(info_msg,kFALSE);
01453
01454 for(Int_t i=0; i<8; i++){
01455 info_msg.Form("Tgt %i K+ stop: %i",i+1,PreanHistosRef->fEval_NumOfStoppedKplu[i]);
01456 AddTextMessage(info_msg,kFALSE);
01457 }
01458
01459 break;
01460
01461 case E_SlMenu_Hyp_K_Stat:
01462 break;
01463
01464 case E_SlMenu_Hyp_K_PhiPos:
01465 break;
01466
01467 case E_SlMenu_Hyp_K_KpluPosTrk_All:
01468 break;
01469
01470 case E_SlMenu_Hyp_K_KpluPosTrk_Tgt:
01471 break;
01472
01473 case E_SlMenu_Hyp_K_KpluPosTrk_Pth:
01474 break;
01475
01476 case E_SlMenu_Hyp_K_KpluPosTrk_Tof:
01477 break;
01478
01479 default: return;
01480 }
01481
01482 return;
01483 }
01484
01485
01486 void TFndPreanGUI::DisplayInfo_Stat(E_SlaveMenuMode mode){
01487
01488 if(fDebugLev > 0) Info("DisplayInfo_Stat","Displaying information");
01489 ResetTextMessage();
01490
01491 Float_t tmpscalvar[30]= {0};
01492
01493
01494 TString info_msg = "";
01495 switch(mode){
01496 case E_SlMenu_Stat_Events:
01497 info_msg.Form("Avg. # ev/run: %.2f",PreanHistosRef->fGR_Stat_Evs->GetMean(2));
01498 AddTextMessage(info_msg,kTRUE);
01499
01500 info_msg.Form("Tot. # ev/run: %.2f",PreanHistosRef->fGR_Stat_Evs->GetSum());
01501 AddTextMessage(info_msg,kFALSE);
01502 break;
01503 case E_SlMenu_Stat_Lumin:
01504 for(Int_t i=(Int_t)(TFndPrean::E_Scal_Inhib_No); i<(Int_t)TFndPrean::E_Scal_Inhib_End;i++ ){
01505 tmpscalvar[i] = (Float_t) ( (PreanHistosRef->fGR_Stat_AvgLum[i])->GetMean(2) );
01506 }
01507 AddTextMessage("Avg. Lum (e+32 cm-2 s-1)");
01508 info_msg.Form("no inh.: %.2f ",tmpscalvar[TFndPrean::E_Scal_Inhib_No]);
01509 AddTextMessage(info_msg,kFALSE);
01510 info_msg.Form("inj inh.: %.2f ",tmpscalvar[TFndPrean::E_Scal_Inhib_Inj]);
01511 AddTextMessage(info_msg,kFALSE);
01512 info_msg.Form("all inh.: %.2f ",tmpscalvar[TFndPrean::E_Scal_Inhib_All]);
01513 AddTextMessage(info_msg,kFALSE);
01514 break;
01515 case E_SlMenu_Stat_LuminInt_NoInh:
01516 tmpscalvar[0] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_No])->GetMean(2) );
01517 tmpscalvar[1] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_No])->GetMaxY() );
01518
01519 AddTextMessage("Avg. Lum/run (inv. nb)");
01520 info_msg.Form("(no inh.): %.2f \n",tmpscalvar[0]);
01521 AddTextMessage(info_msg,kFALSE);
01522
01523 if(tmpscalvar[1] < 1000){
01524 AddTextMessage("Tot. Lum (inv. nb)");
01525 info_msg.Form("(no inh.): %.2f ",tmpscalvar[1]);
01526 }
01527 else{
01528 AddTextMessage("Tot. Lum (inv. pb)");
01529 info_msg.Form("(no inh.): %.2f ",tmpscalvar[1] / 1000);
01530 }
01531 AddTextMessage(info_msg,kFALSE);
01532
01533 break;
01534 case E_SlMenu_Stat_LuminInt_InjInh:
01535 tmpscalvar[0] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_Inj])->GetMean(2) );
01536 tmpscalvar[1] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_Inj])->GetMaxY() );
01537
01538 AddTextMessage("Avg. Lum/run (inv. nb)");
01539 info_msg.Form("(inj inh.): %.2f \n",tmpscalvar[0]);
01540 AddTextMessage(info_msg,kFALSE);
01541
01542 if(tmpscalvar[1] < 1000){
01543 AddTextMessage("Tot. Lum (inv. nb)");
01544 info_msg.Form("(inj. inh.): %.2f ",tmpscalvar[1]);
01545 }
01546 else{
01547 AddTextMessage("Tot. Lum (inv. pb)");
01548 info_msg.Form("(inj. inh.): %.2f ",tmpscalvar[1] / 1000);
01549 }
01550 AddTextMessage(info_msg,kFALSE);
01551 break;
01552 case E_SlMenu_Stat_LuminInt_AllInh:
01553 tmpscalvar[0] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum[TFndPrean::E_Scal_Inhib_All])->GetMean(2) );
01554 tmpscalvar[1] = (Float_t) ( (PreanHistosRef->fGR_Stat_IntLum_Tot[TFndPrean::E_Scal_Inhib_All])->GetMaxY() );
01555
01556 AddTextMessage("Avg. Lum/run (inv. nb)");
01557 info_msg.Form("(all inh.): %.2f \n",tmpscalvar[0]);
01558 AddTextMessage(info_msg,kFALSE);
01559
01560 if(tmpscalvar[1] < 1000){
01561 AddTextMessage("Tot. Lum (inv. nb)");
01562 info_msg.Form("(all inh.): %.2f ",tmpscalvar[1]);
01563 }
01564 else{
01565 AddTextMessage("Tot. Lum (inv. pb)");
01566 info_msg.Form("(all inh.): %.2f ",tmpscalvar[1] / 1000);
01567 }
01568 AddTextMessage(info_msg,kFALSE);
01569 break;
01570 case E_SlMenu_Stat_BhaCount:
01571
01572
01573
01574 break;
01575 case E_SlMenu_Stat_HypCount:
01576
01577
01578
01579 break;
01580 case E_SlMenu_Stat_KaonsStop:
01581
01582 break;
01583 case E_SlMenu_Stat_MuPluAll:
01584
01585 break;
01586 case E_SlMenu_Stat_BhaECM:
01587
01588 break;
01589 case E_SlMenu_Stat_BhaKshort:
01590
01591 break;
01592 case E_SlMenu_Stat_BhaRatio:
01593
01594 break;
01595 default:
01596 ResetDisplayPad();
01597 Error("DisplayStat","mode not available");
01598 return;
01599 }
01600
01601
01602 }
01603
01607
01608
01609 void TFndPreanGUI::HandleMouseActionsDaughter(Int_t event, Int_t x, Int_t y, TObject *selected){
01610
01611
01612
01613
01614
01615
01616
01617
01618
01619
01620
01621
01622
01623
01624
01625
01626
01627
01628
01629
01630
01631
01632 TString msg = "";
01633
01634 switch(event){
01635
01636
01637 case 51:
01638
01639 break;
01640 case 53:
01641 break;
01642 case 52:
01643 break;
01644
01645
01646 case 1:
01647
01648 break;
01649
01650 case 11:
01651
01652 break;
01653
01654 case 61:
01655 cout << "Double-click received on object: \"" << selected->ClassName()
01656 << "\"; name: \"" << selected->GetName()
01657 << "\"; title: \"" << selected->GetTitle() << "\"." << endl;
01658
01659 msg.Form( "Double-click: %s (%s)",selected->GetName(),selected->GetTitle() );
01660
01661
01662 if(!strncmp(selected->ClassName(),"TH",2)) EnlargeHisto(selected);
01663 if(!strncmp(selected->ClassName(),"TProfile",8)) EnlargeHisto(selected);
01664 if(!strncmp(selected->ClassName(),"TPave",5)) PrintPaveInfo(selected);
01665 break;
01666
01667 default: break;
01668 }
01669
01670
01671 if( ! msg.IsNull() ) WriteStatusMessage(msg,1);
01672
01673 }
01674
01675
01676 void TFndPreanGUI::EnlargeHisto(TObject *selected){
01677
01678
01679 if(!selected){
01680 Warning("EnlargeHisto","selected object is NULL!");
01681 return;
01682 }
01683
01684
01685
01686
01687 ResetDisplayPad();
01688 fShowCanvas->cd();
01689 selected->Draw(fTh1DrawOpt);
01690
01691 UpdateDisplayPad();
01692
01693 }
01694
01695 void TFndPreanGUI::PrintPaveInfo(TObject *selected){
01696
01697 const Char_t *clnam = (Char_t *) selected->ClassName();
01698
01699 Printf("");
01700 Printf(" ----------------------------------------");
01701 Printf(" Selected object general properties:");
01702 Printf(" Object type: \"%s\"",clnam);
01703
01704
01705
01706 if(!strcmp(clnam,"TPaveText")){
01707 Printf(" Histogram title ====> \"%s\".",((TPaveText *)selected)->GetLine(0)->GetTitle());
01708 }
01709 else if(!strcmp(clnam,"TPaveStats")){
01710 for(Int_t i=0;i<50;i++){
01711 TText *curtxt = (TText*)(((TPaveText *)selected)->GetListOfLines())->At(i);
01712 if(!curtxt) break;
01713 Printf(" - %s",curtxt->GetTitle());
01714 }
01715 }
01716 if(fDebugLev > 1){
01717 cout << " Text Align =======> " << ((TPaveText *)selected)->GetTextAlign() << endl;
01718 cout << " Text Color =======> " << ((TPaveText *)selected)->GetTextColor() << endl;
01719 cout << " Text Font ========> " << ((TPaveText *)selected)->GetTextFont() << endl;
01720 }
01721 cout << " ----------------------------------------" << endl;
01722 }