00001
00002
00003
00004
00006
00007
00008
00009
00010
00011
00013
00014 #include <TROOT.h>
00015 #include <TSystem.h>
00016 #include <TStyle.h>
00017 #include <TLine.h>
00018 #include <TFile.h>
00019 #include <TThread.h>
00020
00021 #include "TFndSilMonFrame.h"
00022 #include "TFndRun.h"
00023
00024
00025
00026 ClassImp(TFndSilMonFrame)
00027
00028
00029 TFndSilMonFrame::TFndSilMonFrame(TString filename, TString filename2):
00030 TFndMonFrame(filename, filename2),
00031 fLayer(),fModNum(),fSide(),fSideHighlightCol(),
00032 fIsmMapFile(),fOsmMapFile(),
00033 fIsimPad(),fOsimPad(),fAllPadControl(),
00034 fModNumBut(),fAllButton(),
00035 fSideSelPad(),fModAllBut(),fSideBut(),
00036 fHisto(),
00037 fWhichGroup(-1),fAllId(-1)
00038 {
00039
00040
00041 Init();
00042 }
00043
00044
00045 TFndSilMonFrame::~TFndSilMonFrame() {
00046
00047 if(!fClosed) Close();
00048 }
00049
00050
00051 void TFndSilMonFrame::Init(){
00052
00053 SetStyle();
00054 fSideHighlightCol = 3;
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068 TString hnam = "";
00069
00070 TString CluHNam = "";
00071
00072 TString det_nam = "";
00073 for(Int_t lay_idx = 0; lay_idx <=1 ; lay_idx++){
00074 det_nam = (lay_idx == 0) ? "Isim" : "Osim";
00075
00076 for(Int_t mod = 0; mod < K_N_Sil_Modules; mod++){
00077 if(lay_idx ==0 && mod > 7) break;
00078 for(Int_t sid = 0; sid < K_N_Sil_Sides; sid++){
00079
00080 hnam.Form("%sNoise_%d_%s",det_nam.Data(),mod+1,SilSide_Name(sid).Data());
00081 fNam_Noise[lay_idx][mod][sid] = hnam;
00082
00083 hnam.Replace(4,5,"Mult");
00084 fNam_Mult[lay_idx][mod][sid] = hnam;
00085
00086 hnam.Replace(4,4,"ClustCharge");
00087 fNam_ClCh[lay_idx][mod][sid] = hnam;
00088
00089 hnam.Replace(4,11,"CM_sigma");
00090 fNam_CMsigma[lay_idx][mod][sid] = hnam;
00091
00092
00093
00094
00095 hnam.Replace(4,8,"CM_mean");
00096 fNam_CMmean[lay_idx][mod][sid] = hnam;
00098 if(sid < 2){
00099 TString sidnam = ( sid == 0 ) ? "PHI" : "Z";
00100
00101 CluHNam.Form("%s_CleanMult_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00102 fNam_CleanMult[lay_idx][mod][sid] = CluHNam;
00103
00104 CluHNam.Form("%s_ClustChClean_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00105 fNam_ClChClean[lay_idx][mod][sid] = CluHNam;
00106
00107 CluHNam.Form("%s_dEdx_%d_%s",det_nam.Data(),mod+1,sidnam.Data() );
00108 fNam_dEdx[lay_idx][mod][sid] = CluHNam;
00109 }
00110
00111 if(sid == 0){
00112 CluHNam.Form("%s_dEdx_PvsZ_%d",det_nam.Data(),mod+1 );
00113 fNam_dEdx_PvsZ[lay_idx][mod] = CluHNam;
00114
00115 CluHNam.Form("%s_Pos_PvsZ_%d",det_nam.Data(),mod+1 );
00116 fNam_Pos_PvsZ[lay_idx][mod] = CluHNam;
00117 }
00119
00120 }
00121 }
00122 }
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 }
00144
00145
00146 void TFndSilMonFrame::Open() {
00147
00148 if(!fClosed) return;
00149 if(!StartInterface()) return;
00150 fClosed = kFALSE;
00151 }
00152
00153
00154 Bool_t TFndSilMonFrame::StartInterface() {
00155
00156 Int_t BackgroundCol = 12;
00157 Int_t DisplayPadCol = 15;
00158
00159 Float_t sep = 0.001;
00160 Float_t smallsep = 0.0005;
00161
00162 Float_t Start_X_displaypad = 0.06;
00163 Float_t Stop_X_displaypad = 1.;
00164 Float_t Start_Y_displaypad = 0.05;
00165 Float_t Stop_Y_displaypad = 0.95;
00166
00167 Float_t Sep_IsmOsmPads = 0.5;
00168 Float_t Sep_SideChipPads = 0.35;
00169
00170
00171 if(!fCanStartGUI) return kFALSE;
00172
00173 fLayer=0;
00174 fSide=1;
00175 fModNum=1;
00176
00177 ReloadMapFiles();
00178
00179
00180
00181 if (fRF && fRF2) cout << "...source files found...starting GUI" << endl;
00182
00183 fMainCanvas[0] = new TCanvas("Sil_MainCanvas","SIL Main Canvas",
00184 fMainCanvCoord[0],fMainCanvCoord[1],
00185 fMainCanvCoord[2],fMainCanvCoord[3]);
00186 SetMonitorTitle(0,"SIL");
00187 fMainCanvas[0]->SetEditable(kFALSE);
00188
00189 fMainCanvas[0]->SetFillColor(BackgroundCol);
00190 fMainCanvas[0]->Draw();
00191
00192 fDisplayPad[0] = new TPad("SilMonFrameDisplayPad","SIL hist display",
00193 Start_X_displaypad+sep,Start_Y_displaypad+sep,Stop_X_displaypad,Stop_Y_displaypad-sep);
00194 fDisplayPad[0]->Draw();
00195 fDisplayPad[0]->SetFillColor(DisplayPadCol);
00196 fDisplayPad[0]->SetBorderSize(2);
00197
00198
00199 fAllPadControl=new TPad("allpadcontrol","allpadcontol",Start_X_displaypad+sep,0,Stop_X_displaypad,Start_Y_displaypad-sep);
00200 fAllPadControl->Draw();
00201
00202 fOsimPad=new TPad("ismSelectionpad","ismSelectionpad",0.,0.,Start_X_displaypad-sep,Sep_IsmOsmPads-smallsep);
00203 fOsimPad->SetFillColor(13);
00204 fOsimPad->Draw();
00205
00206 fIsimPad=new TPad("osmSelectionpad","osmSelectionpad",0.,Sep_IsmOsmPads+smallsep,Start_X_displaypad-sep,Stop_Y_displaypad-sep);
00207 fIsimPad->SetFillColor(13);
00208 fIsimPad->Draw();
00209
00210
00211 fMainCanvas[0]->cd();
00212
00213 fSideSelPad =new TPad("selectside","sd",0.,Stop_Y_displaypad+sep,Sep_SideChipPads-smallsep,1.);
00214 fSideSelPad->Draw();
00215
00216 DrawButtons();
00217 BuildConnections();
00218
00219
00220 return kTRUE;
00221
00222 }
00223
00224
00225 void TFndSilMonFrame::Close() {
00226
00227
00228
00229 if(!fClosed){
00230 delete fHisto;
00231
00232 cout << "...closing and re-initializing to zero all mapfiles..." << endl;
00233 if(fIsmMapFile) {fIsmMapFile->Close(); fIsmMapFile = 0; }
00234 if(fOsmMapFile) {fOsmMapFile->Close(); fOsmMapFile = 0; }
00235 cout << "...done (Close)" << endl;
00236
00237 for(Int_t i=0;i<8;i++) { delete fModNumBut[i]; fModNumBut[i] = 0; }
00238 for(Int_t i=8;i<18;i++){ delete fModNumBut[i]; fModNumBut[i] = 0; }
00239
00240 for(Int_t i=0;i<8;i++){ delete fAllButton[i]; fAllButton[i] = 0; }
00241
00242 delete fModAllBut;
00243 for(Int_t i=0;i<4;i++){ delete fSideBut[i]; fSideBut[i] = 0; }
00244
00245 fIsimPad->Close(); delete fIsimPad; fIsimPad = 0;
00246 fOsimPad->Close(); delete fOsimPad; fOsimPad = 0;
00247 fSideSelPad->Close(); delete fSideSelPad; fSideSelPad = 0;
00248 fAllPadControl->Close(); delete fAllPadControl; fAllPadControl = 0;
00249 }
00250
00251 fClosed = kTRUE;
00252 }
00253
00254
00255 Bool_t TFndSilMonFrame::ReloadMapFiles(){
00256
00257 Bool_t result = kTRUE;
00258 if(!fIsOnline) return result;
00259
00260 if( CheckProducerMessages() != 0 ) return kFALSE;
00261 TString shr_file_map_name[2] = 0;
00262
00263 #if defined _FND_ONL_USE_MAP_FILES_
00264 if(fndrun->GetDebug())cout << "...closing and re-initializing to zero all mapfiles..." << endl;
00265 if(fIsmMapFile) {fIsmMapFile->Close(); fIsmMapFile = 0; }
00266 if(fOsmMapFile) {fOsmMapFile->Close(); fOsmMapFile = 0; }
00267 if(fndrun->GetDebug())cout << "...done" << endl;
00268
00269 shr_file_map_name[0] = "$FND_SHR/ism.map";
00270 shr_file_map_name[1] = "$FND_SHR/osm.map";
00271 #elif defined _FND_ONL_USE_SHARED_FILES_
00272 if(fIsmMapFile) { if(fIsmMapFile->IsOpen()) fIsmMapFile->Close(); delete fIsmMapFile; fIsmMapFile = 0; }
00273 if(fOsmMapFile) { if(fOsmMapFile->IsOpen()) fOsmMapFile->Close(); delete fOsmMapFile; fOsmMapFile = 0; }
00274 if(fndrun->GetDebug())cout << "...done" << endl;
00275
00276 shr_file_map_name[0] = "$FND_SHR/ism.file.map";
00277 shr_file_map_name[1] = "$FND_SHR/osm.file.map";
00278 #endif
00279
00280 if(fndrun->GetDebug()) cout << endl << "Reloading shared memories..." << endl;
00281
00282 if(!gSystem->AccessPathName(FROOT::ExpandPathName(shr_file_map_name[0].Data()))){
00283 #if defined _FND_ONL_USE_MAP_FILES_
00284 fIsmMapFile = TMapFile::Create(FROOT::ExpandPathName(shr_file_map_name[0].Data()),"READ");
00285 if(fndrun->GetDebug()) fIsmMapFile->Print();
00286 #elif defined _FND_ONL_USE_SHARED_FILES_
00287 fIsmMapFile = new TFile(FROOT::ExpandPathName(shr_file_map_name[0].Data()),"READ");
00288 Info("TFndSilMonFrame::ReloadMapFiles","Reloading shared file \"%s\"",shr_file_map_name[0].Data());
00289 #endif
00290 }
00291 else result = kFALSE;
00292
00293 if(!gSystem->AccessPathName(FROOT::ExpandPathName(shr_file_map_name[1].Data()))){
00294 #if defined _FND_ONL_USE_MAP_FILES_
00295 fOsmMapFile = TMapFile::Create(FROOT::ExpandPathName(shr_file_map_name[1].Data()),"READ");
00296 if(fndrun->GetDebug()) fOsmMapFile->Print();
00297 #elif defined _FND_ONL_USE_SHARED_FILES_
00298 fOsmMapFile = new TFile(FROOT::ExpandPathName(shr_file_map_name[1].Data()),"READ");
00299 Info("TFndSilMonFrame::ReloadMapFiles","Reloading shared file \"%s\"",shr_file_map_name[1].Data());
00300 #endif
00301 }
00302 else result = kFALSE;
00303
00304 if(fndrun->GetDebug()) {
00305 if(result) cout << "...done" << endl << endl;
00306 else cout << "SIL - shared memories not found!" << endl << endl;
00307 }
00308 return result;
00309 }
00310
00311
00312 void TFndSilMonFrame::DrawButtons() {
00313
00314 fMainCanvas[0]->cd();
00315
00316 TString but_label = "";
00317 TString but_cmd = "";
00318
00319 fIsimPad->cd();
00320 for(Int_t j=0;j<8;j++){
00321 but_cmd = TString("fndrun->SilMonFrame()->SelectModule(1,");
00322 but_cmd+=j+1;
00323 but_cmd+="); ";
00324 but_cmd+="fndrun->SilMonFrame()->DisplayModuleDefault();";
00325
00326 but_label.Form("i_%i",j+1);
00327
00328
00329
00330 fModNumBut[j]=new TButton(but_label.Data(),but_cmd.Data(),0.00,0.125*j,1.0,0.125*(j+1));
00331 fModNumBut[j]->Draw();
00332 }
00333
00334
00335 fOsimPad->cd();
00336 for(Int_t j=0;j<10;j++){
00337 but_cmd = TString("fndrun->SilMonFrame()->SelectModule(2,");
00338 but_cmd+=j+1;
00339 but_cmd+="); ";
00340 but_cmd+="fndrun->SilMonFrame()->DisplayModuleDefault();";
00341
00342 but_label.Form("o_%i",j+1);
00343
00344
00345
00346 fModNumBut[8+j]=new TButton(but_label.Data(),but_cmd.Data(),0.00,0.10*j,1.0,0.10*(j+1));
00347 fModNumBut[8+j]->Draw();
00348 }
00349
00350
00351 fAllPadControl->cd();
00352
00353 Float_t step = 1./8.;
00354 Float_t xi = 0.;
00355 Float_t xf = step;
00356 fAllButton[0]=new TButton("ISM mult","fndrun->SilMonFrame()->DisplayAllHist(1,1);",xi,0,xf,1);
00357 fAllButton[0]->Draw();
00358 xi = xf;
00359 xf += step;
00360 fAllButton[1]=new TButton("OSM mult","fndrun->SilMonFrame()->DisplayAllHist(2,1);",xi,0,xf,1);
00361 fAllButton[1]->Draw();
00362 xi = xf;
00363 xf += step;
00364 fAllButton[2]=new TButton("ISM nois","fndrun->SilMonFrame()->DisplayAllHist(1,0);",xi,0,xf,1);
00365 fAllButton[2]->Draw();
00366 xi = xf;
00367 xf += step;
00368 fAllButton[3]=new TButton("OSM nois","fndrun->SilMonFrame()->DisplayAllHist(2,0);",xi,0,xf,1);
00369 fAllButton[3]->Draw();
00370 xi = xf;
00371 xf += step;
00372 fAllButton[4]=new TButton("ISM CM_s","fndrun->SilMonFrame()->DisplayAllHist(1,3);",xi,0,xf,1);
00373 fAllButton[4]->Draw();
00374 xi = xf;
00375 xf += step;
00376 fAllButton[5]=new TButton("OSM CM_s","fndrun->SilMonFrame()->DisplayAllHist(2,3);",xi,0,xf,1);
00377 fAllButton[5]->Draw();
00378 xi = xf;
00379 xf += step;
00380 fAllButton[6]=new TButton("ISM clu","fndrun->SilMonFrame()->DisplayAllHist(1,4);",xi,0,xf,1);
00381 fAllButton[6]->Draw();
00382 xi = xf;
00383 xf += step;
00384 fAllButton[7]=new TButton("OSM clu","fndrun->SilMonFrame()->DisplayAllHist(2,4);",xi,0,xf,1);
00385 fAllButton[7]->Draw();
00386
00387 ResetFrameColors();
00388 }
00389
00390
00391 void TFndSilMonFrame::ResetFrameColors(){
00392
00393 for(Int_t i=0;i<8;i++){
00394 fModNumBut[i]->SetFillColor(50);
00395 fModNumBut[i]->Modified();
00396 }
00397
00398 for(Int_t i=8;i<18;i++){
00399 fModNumBut[i]->SetFillColor(38);
00400 fModNumBut[i]->Modified();
00401 }
00402
00403 for(Int_t i=0;i<8;i++){
00404 if(i%2==0) fAllButton[i]->SetFillColor(42);
00405 else fAllButton[i]->SetFillColor(33);
00406 fAllButton[i]->Modified();
00407 }
00408
00409 if(fModAllBut){
00410 fModAllBut->SetFillColor(25);
00411 fModAllBut->Modified();
00412 }
00413 for(Int_t i=0;i<4;i++){
00414 if(fSideBut[i]){
00415 fSideBut[i]->SetFillColor(25);
00416 fSideBut[i]->Modified();
00417 }
00418 }
00419
00420 }
00421
00422
00423 TButton *TFndSilMonFrame::HighlightButtons(Int_t which_group,Int_t All_id){
00424
00425
00426
00427
00428
00429 fWhichGroup = which_group;
00430 fAllId = All_id;
00431
00432 Int_t mod_id = ( (fLayer-1) *8 + fModNum)-1;
00433
00434
00435 switch(which_group){
00436 case 0:
00437 fModNumBut[mod_id]->SetFillColor(fHighlightCol[fLayer]);
00438 fModNumBut[mod_id]->Modified();
00439 return fModNumBut[mod_id];
00440
00441 case 1:
00442 fModNumBut[mod_id]->SetFillColor(fHighlightCol[fLayer]);
00443 fModNumBut[mod_id]->Modified();
00444 if(fSide == -1){
00445 fModAllBut->SetFillColor(fSideHighlightCol);
00446 fModAllBut->Modified();
00447 return fModAllBut;
00448 }
00449 else{
00450 fSideBut[fSide]->SetFillColor(fSideHighlightCol);
00451 fSideBut[fSide]->Modified();
00452 return fSideBut[fSide];
00453 }
00454
00455 case 2:
00456 fAllButton[All_id]->SetFillColor(fHighlightCol[fLayer]);
00457 fAllButton[All_id]->Modified();
00458
00459 return fAllButton[All_id];
00460
00461 default: return 0;
00462 }
00463 }
00464
00465
00466 void TFndSilMonFrame::RefreshSingleMonView(){
00467
00468 if(fWhichGroup ==- 1 || fAllId == - 1) return;
00469 FlashDisplayPad();
00470 HighlightButtons(fWhichGroup,fAllId)->ExecuteEvent(11,0,0);
00471 }
00472
00473
00474 void TFndSilMonFrame::ClearSidePad(){
00475
00476 delete fModAllBut; fModAllBut = 0;
00477 for(Int_t i=0;i<4;i++) { delete fSideBut[i];fSideBut[i] = 0; }
00478 }
00479
00480
00481 void TFndSilMonFrame::RebuildSidePad() {
00482
00483 Bool_t rcheck = kTRUE;
00484 for(Int_t i=0;i<4;i++){
00485 rcheck = rcheck && fModAllBut;
00486 rcheck = rcheck && fSideBut[i];
00487 }
00488 if(rcheck) {
00489
00490 return;
00491 }
00492
00493
00494 fSideSelPad->cd();
00495 fModAllBut=new TButton("All-Sides",
00496 "fndrun->SilMonFrame()->DisplayHist(1);",
00497 0. , 0. , .2 , 1. );
00498 fModAllBut->Draw();
00499
00500 fSideBut[0]=new TButton("Phi",
00501 "fndrun->SilMonFrame()->SelectSide(0);fndrun->SilMonFrame()->DisplayHist(0);",
00502 .2 , 0. , .4 , 1. );
00503 fSideBut[0]->Draw();
00504
00505 fSideBut[1]=new TButton("ZA",
00506 "fndrun->SilMonFrame()->SelectSide(1);fndrun->SilMonFrame()->DisplayHist(0);",
00507 .4 , 0. , .6 , 1. );
00508 fSideBut[1]->Draw();
00509
00510 fSideBut[2]=new TButton("ZB",
00511 "fndrun->SilMonFrame()->SelectSide(2);fndrun->SilMonFrame()->DisplayHist(0);",
00512 .6 , 0. , .8 , 1. );
00513 fSideBut[2]->Draw();
00514
00515 fSideBut[3]=new TButton("Phi vs Z",
00516 "fndrun->SilMonFrame()->SelectSide(3);fndrun->SilMonFrame()->DisplayHist(0);",
00517 .8 , 0. , 1. , 1. );
00518 fSideBut[3]->Draw();
00519
00520 fSideSelPad->Modified();
00521
00522 }
00523
00524
00525 void TFndSilMonFrame::DisplayModuleDefault(){
00526
00527
00528 SelectSide(3);
00529 DisplayHist(0);
00530
00531 }
00532
00533
00534 void TFndSilMonFrame::DisplayHist(Int_t display_mode){
00535
00536 if(!ReloadMapFiles()){
00537 fDisplayPad[0]->Clear();
00538 fDisplayPad[0]->Modified();
00539 return;
00540 }
00541
00542 Int_t EachPadCol1 = 17;
00543 Float_t Margin1 = 0.007;
00544 Int_t EachPadCol2 = 19;
00545 Float_t Margin2 = 0.002;
00546
00547 fDisplayPad[0]->Clear();
00548
00549 if(display_mode == (Int_t)E_SilHist_Displ_SingleSide ){
00550 if(fSide == 3){
00551 fDisplayPad[0]->Divide(1,2,Margin1,Margin1,EachPadCol1);
00552 fDisplayPad[0]->GetPad(1)->Divide(2,2,Margin2,Margin2,EachPadCol2);;
00553 fDisplayPad[0]->GetPad(2)->Divide(2,1,Margin2,Margin2,EachPadCol2);;
00554
00555 for(Int_t si=0;si<2;si++){
00556 fSide = si;
00557 fDisplayPad[0]->GetPad(1)->cd(1 + si );
00558 DrawHist(E_SilHist_CluDeDx);
00559
00560 fDisplayPad[0]->GetPad(1)->cd(3 + si );
00561 DrawHist(E_SilHist_CluCleanMult);
00562 }
00563
00564 fDisplayPad[0]->GetPad(2)->cd(1);
00565 DrawHist(E_SilHist_CluDeDx2D);
00566
00567 fDisplayPad[0]->GetPad(2)->cd(2);
00568 DrawHist(E_SilHist_CluPos2D);
00569
00570
00571 fSide = 3;
00572 }
00573 else{
00574 fDisplayPad[0]->Divide(1,2,Margin1,Margin1,EachPadCol1);
00575 fDisplayPad[0]->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);
00576 fDisplayPad[0]->GetPad(2)->Divide(2,1,Margin2,Margin2,EachPadCol2);
00577 fDisplayPad[0]->GetPad(2)->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);
00578
00579 fDisplayPad[0]->GetPad(1)->cd(1);
00580 DrawHist(E_SilHist_Noise);
00581
00582 fDisplayPad[0]->GetPad(1)->cd(2);
00583 DrawHist(E_SilHist_Mult);
00584
00585 fDisplayPad[0]->GetPad(2)->GetPad(1)->cd(1);
00586 DrawHist(E_SilHist_CMmean);
00587
00588 fDisplayPad[0]->GetPad(2)->GetPad(1)->cd(2);
00589 DrawHist(E_SilHist_CMsigma);
00590
00591 fDisplayPad[0]->GetPad(2)->cd(2);
00592 DrawHist(E_SilHist_CluCrg);
00593 }
00594 }
00595 else if(display_mode == (Int_t)E_SilHist_Displ_AllSides){
00596 fDisplayPad[0]->Divide(3,2,Margin1,Margin1,EachPadCol1);
00597 fDisplayPad[0]->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00598 fDisplayPad[0]->GetPad(2)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00599 fDisplayPad[0]->GetPad(3)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00600
00601 fDisplayPad[0]->GetPad(4)->Divide(2,1,Margin2,Margin2,EachPadCol2);;
00602 fDisplayPad[0]->GetPad(5)->Divide(2,1,Margin2,Margin2,EachPadCol2);;
00603 fDisplayPad[0]->GetPad(6)->Divide(2,1,Margin2,Margin2,EachPadCol2);;
00604
00605 fDisplayPad[0]->GetPad(4)->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00606 fDisplayPad[0]->GetPad(5)->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00607 fDisplayPad[0]->GetPad(6)->GetPad(1)->Divide(1,2,Margin2,Margin2,EachPadCol2);;
00608
00609 for(Int_t k=0;k<3;k++){
00610 SelectSide(k);
00611
00612 fDisplayPad[0]->GetPad(k+1)->cd(1);
00613 DrawHist(E_SilHist_Noise);
00614
00615 fDisplayPad[0]->GetPad(k+1)->cd(2);
00616 DrawHist(E_SilHist_Mult);
00617
00618 fDisplayPad[0]->GetPad(k+4)->GetPad(1)->cd(1);
00619 DrawHist(E_SilHist_CMmean);
00620
00621 fDisplayPad[0]->GetPad(k+4)->GetPad(1)->cd(2);
00622 DrawHist(E_SilHist_CMsigma);
00623
00624 fDisplayPad[0]->GetPad(k+4)->cd(2);
00625 DrawHist(E_SilHist_CluCrg);
00626 }
00627 SelectSide(-1);
00628 }
00629 RebuildSidePad();
00630 ResetFrameColors();
00631
00632 HighlightButtons(1);
00633 }
00634
00635
00636 void TFndSilMonFrame::DisplayAllHist(Int_t layer, Int_t type){
00637
00638 if(!ReloadMapFiles()){
00639 fDisplayPad[0]->Clear();
00640 fDisplayPad[0]->Modified();
00641 return;
00642 }
00643 Int_t EachPadCol = 19;
00644 Float_t Margin = 0.002;
00645
00646 fDisplayPad[0]->Clear();
00647 Int_t kmax = 0;
00648
00649 fLayer = layer;
00650 switch(fLayer){
00651 case (Int_t)E_FIN_INNER_LAYER:
00652 kmax = 8;
00653 fDisplayPad[0]->Divide(4,6,Margin,Margin,EachPadCol);
00654 break;
00655 case (Int_t)E_FIN_OUTER_LAYER:
00656 kmax = 10;
00657 fDisplayPad[0]->Divide(5,6,Margin,Margin,EachPadCol);
00658 break;
00659 default: break;
00660 }
00661
00662 for(Int_t k=0;k<kmax;k++){
00663 for(Int_t s=0;s<3;s++){
00664 fDisplayPad[0]->cd(k*3+s+1);
00665 fModNum = k+1;
00666 SelectSide(s);
00667 DrawHist((E_SilHist) type);
00668 }
00669 }
00670
00671
00672
00673 ClearSidePad();
00674 ResetFrameColors();
00675 Int_t all_id = -1;
00676 if (fLayer == (Int_t)E_FIN_INNER_LAYER && type == (Int_t) E_SilHist_Mult) all_id = 0;
00677 else if(fLayer == (Int_t)E_FIN_OUTER_LAYER && type == (Int_t) E_SilHist_Mult) all_id = 1;
00678 else if(fLayer == (Int_t)E_FIN_INNER_LAYER && type == (Int_t) E_SilHist_Noise) all_id = 2;
00679 else if(fLayer == (Int_t)E_FIN_OUTER_LAYER && type == (Int_t) E_SilHist_Noise) all_id = 3;
00680 else if(fLayer == (Int_t)E_FIN_INNER_LAYER && type == (Int_t) E_SilHist_CMsigma) all_id = 4;
00681 else if(fLayer == (Int_t)E_FIN_OUTER_LAYER && type == (Int_t) E_SilHist_CMsigma) all_id = 5;
00682 else if(fLayer == (Int_t)E_FIN_INNER_LAYER && type == (Int_t) E_SilHist_CluCrg) all_id = 6;
00683 else if(fLayer == (Int_t)E_FIN_OUTER_LAYER && type == (Int_t) E_SilHist_CluCrg) all_id = 7;
00684 else{
00685 Error("DisplayAllHist","\"all_id\" out of range!");
00686 return;
00687 }
00688 HighlightButtons(2,all_id);
00689 }
00690
00691
00692 void TFndSilMonFrame::SelectModule(Int_t layer,Int_t module) {
00693
00694 fLayer = layer;
00695 fModNum = module;
00696
00697 }
00698
00699
00700 void TFndSilMonFrame::SelectSide(Int_t side){
00701
00702 fSide=side;
00703
00704
00705 }
00706
00707
00708 void TFndSilMonFrame::DrawHist(E_SilHist which_type){
00709
00710
00711
00712
00713 TString hnam = "";
00714 TString hopt = "";
00715
00716 switch(which_type) {
00717 case E_SilHist_Noise : hnam = fNam_Noise[fLayer-1][fModNum-1][fSide]; break;
00718 case E_SilHist_Mult : hnam = fNam_Mult[fLayer-1][fModNum-1][fSide]; break;
00719 case E_SilHist_CMmean : hnam = fNam_CMmean[fLayer-1][fModNum-1][fSide]; break;
00720 case E_SilHist_CMsigma: hnam = fNam_CMsigma[fLayer-1][fModNum-1][fSide]; break;
00721 case E_SilHist_CluCrg : hnam = fNam_ClCh[fLayer-1][fModNum-1][fSide]; break;
00722 case E_SilHist_CluCleanMult : hnam = fNam_CleanMult[fLayer-1][fModNum-1][fSide]; break;
00723 case E_SilHist_CluCrgClean : hnam = fNam_ClChClean[fLayer-1][fModNum-1][fSide]; break;
00724 case E_SilHist_CluDeDx : hnam = fNam_dEdx[fLayer-1][fModNum-1][fSide]; break;
00725 case E_SilHist_CluDeDx2D : hnam = fNam_dEdx_PvsZ[fLayer-1][fModNum-1]; break;
00726 case E_SilHist_CluPos2D : hnam = fNam_Pos_PvsZ[fLayer-1][fModNum-1]; hopt = "colz"; break;
00727 default:
00728 Error("DrawHist","Type not available");
00729 return;
00730 }
00731
00732
00733
00734
00735 if(fLayer == (Int_t)E_FIN_INNER_LAYER){
00736 if(fIsOnline) fHisto =(TH1F*) fIsmMapFile->Get(hnam.Data());
00737 else fHisto =(TH1F*) fRF->Get(hnam.Data());
00738 }
00739 else if(fLayer == (Int_t)E_FIN_OUTER_LAYER){
00740 if(fIsOnline) fHisto =(TH1F*) fOsmMapFile->Get(hnam.Data());
00741 else fHisto =(TH1F*) fRF2->Get(hnam.Data());
00742 }
00743
00744 if(!fHisto) return;
00745 fHisto->GetXaxis()->SetLabelSize(0.08);
00746 fHisto->GetYaxis()->SetLabelSize(0.08);
00747 fHisto->Draw(hopt);
00748
00749 return;
00750 }
00751