AraDisplay/AraDisplay.cxx
00001 00002 00003 00004 00005 00006 00007 00008 00041 //System includes 00042 #include <fstream> 00043 #include <iostream> 00044 00045 //Magic Display Includes 00046 #include "AraDisplay.h" 00047 #include "AraWaveformGraph.h" 00048 #include "AraCanvasMaker.h" 00049 #include "AraTBCanvasMaker.h" 00050 #include "AraControlPanel.h" 00051 00052 //Event Reader Includes 00053 #include "UsefulIcrrStationEvent.h" 00054 #include "RawIcrrStationEvent.h" 00055 #include "UsefulAtriStationEvent.h" 00056 #include "RawAtriStationEvent.h" 00057 00058 //ROOT Includes 00059 #include "TROOT.h" 00060 #include "TCanvas.h" 00061 #include "TTree.h" 00062 #include "TFile.h" 00063 #include "TTree.h" 00064 #include "TTreeIndex.h" 00065 #include "TButton.h" 00066 #include "TGroupButton.h" 00067 #include "TThread.h" 00068 #include "TEventList.h" 00069 #include <TGClient.h> 00070 00071 using namespace std; 00072 00073 AraDisplay* AraDisplay::fgInstance = 0; 00074 //Leave these as global variables for now 00075 00076 00077 00078 void AraDisplay::zeroPointers() 00079 { 00080 fTBEventCanMaker=0; 00081 fEventCanMaker=0; 00082 fCurrentRun=0; 00083 fApplyEventCut=0; 00084 fEventCutListEntry=-1; 00085 fEventTreeIndexEntry=-1; 00086 fEventEntry=0; 00087 fEventFile=0; 00088 fTBUsefulEventPtr=0; 00089 fTBRawEventPtr=0; 00090 fUsefulEventPtr=0; 00091 fRawEventPtr=0; 00092 fTBData=0; 00093 00094 00095 fAraCanvas=0; 00096 fAraEventInfoPad=0; 00097 fAraMainPad=0; 00098 00099 00100 fgInstance=this; 00101 fEventTree=0; 00102 fEventPlaySleepMs=0; 00103 00104 fCanvasLayout=AraDisplayCanvasLayoutOption::kElectronicsView; 00105 fWaveformFormat=AraDisplayFormatOption::kWaveform; 00106 00107 } 00108 00109 AraDisplay::AraDisplay() 00110 { 00111 //Default constructor 00112 zeroPointers(); 00113 } 00114 00115 AraDisplay::~AraDisplay() 00116 { 00117 //Default destructor 00118 } 00119 00120 00121 AraDisplay::AraDisplay(char *baseDir, unsigned int time, AraCalType::AraCalType_t calType) 00122 { 00123 //Offline constructor 00124 zeroPointers(); 00125 cout << "AraDisplay::AraDisplay(" << baseDir << " , " << time 00126 << ")" << endl; 00127 fCurrentFileTime=time; 00128 strncpy(fCurrentBaseDir,baseDir,179); 00129 fCalType=calType; 00130 00131 } 00132 00133 AraDisplay::AraDisplay(char *eventFile, AraCalType::AraCalType_t calType) 00134 { 00135 //Offline constructor 00136 zeroPointers(); 00137 cout << "AraDisplay::AraDisplay(" << eventFile 00138 << ")" << endl; 00139 fCurrentFileTime=-1; 00140 // strncpy(fCurrentBaseDir,gSystem->DirName(eventFile),FILENAME_MAX); 00141 fCalType=calType; 00142 loadEventTree(eventFile); 00143 00144 } 00145 00146 00147 //______________________________________________________________________________ 00148 AraDisplay* AraDisplay::Instance() 00149 { 00150 //static function 00151 return (fgInstance) ? (AraDisplay*) fgInstance : new AraDisplay(); 00152 } 00153 00154 void AraDisplay::startControlPanel() 00155 { 00156 fControlPanel=AraControlPanel::Instance(); 00157 // 00158 // fControlPanel=new AraControlPanel(gClient->GetRoot(), 400, 200); 00159 // fControlPanel->DrawControlPanel(); 00160 // fControlPanel->Draw(); 00161 } 00162 00163 00164 void AraDisplay::startEventDisplay() 00165 { 00166 00167 00168 00169 if(fTBData) 00170 fTBEventCanMaker=new AraTBCanvasMaker(this->fCalType); 00171 else 00172 fEventCanMaker = new AraCanvasMaker(this->fCalType); 00173 int retVal=this->getEventEntry(); 00174 if(retVal==0) 00175 this->refreshEventDisplay(); 00176 } 00177 00178 int AraDisplay::getEventEntry() 00179 { 00180 if(!fEventTree) { 00181 if(loadEventTree()<0) { 00182 std::cout << "Couldn't open event file\n"; 00183 return -1; 00184 } 00185 } 00186 if(fEventEntry<fEventTree->GetEntries()) 00187 fEventTree->GetEntry(fEventEntry); 00188 else { 00189 std::cout << "No more entries in event tree " << fEventEntry << "\t" << fEventTree->GetEntries() << endl; 00190 return -1; 00191 } 00192 00193 00194 if(fTBData) { 00195 if(fTBUsefulEventPtr) 00196 delete fTBUsefulEventPtr; 00197 fTBUsefulEventPtr = new UsefulIcrrStationEvent(fTBRawEventPtr,fCalType); 00198 } 00199 else { 00200 if(fUsefulEventPtr) 00201 delete fUsefulEventPtr; 00202 fUsefulEventPtr = new UsefulAtriStationEvent(fRawEventPtr,fCalType); 00203 } 00204 00205 //Need to make configurable at some point 00206 //This will also need to be modifed to make realEvent accessible outside here 00207 return 0; 00208 } 00209 00210 00211 void AraDisplay::closeCurrentFile() 00212 { 00213 00214 if(fEventFile) 00215 fEventFile->Close(); 00216 00217 fEventFile=0; 00218 fEventTree=0; 00219 } 00220 00221 00222 int AraDisplay::loadEventTree(char *eventFile) 00223 { 00224 //Try and open file or chain 00225 if(!fEventTree) 00226 fEventTree = new TChain("eventTree"); 00227 char eventName[FILENAME_MAX]; 00228 if(!eventFile) { 00229 //Step one try calEventFile 00230 sprintf(eventName,"%s/event_%d.root",fCurrentBaseDir,fCurrentFileTime); 00231 std::cout << eventName << "\n"; 00232 fEventTree->Add(eventName); 00233 // std::cout << fEventTree->GetEntries() << "\n"; 00234 if(fEventTree->GetEntries()>0) { 00235 for(int extra=1;extra<100;extra++) { 00236 sprintf(eventName,"%s/event_%d_%d.root",fCurrentBaseDir,fCurrentFileTime,extra); 00237 TFile *fpTest = TFile::Open(eventName); 00238 if(!fpTest) 00239 break; 00240 else { 00241 delete fpTest; 00242 fEventTree->Add(eventName); 00243 } 00244 } 00245 } 00246 } 00247 else { 00248 fEventTree->Add(eventFile); 00249 strncpy(eventName,eventFile,FILENAME_MAX); 00250 } 00251 00252 if(fEventTree->GetEntries()<1) { 00253 cout << "Couldn't open: " << eventName << "\n"; 00254 return -1; 00255 } 00256 // std::cout << "Here\n"; 00257 00258 //jpd now let's make a better decision about what type of event's we have 00259 00260 00261 00262 fEventTree->SetBranchAddress("event",&fRawStationEventPtr); 00263 fEventTree->GetEntry(1); 00264 if(fRawStationEventPtr->stationId<2) fTBData=1; 00265 else fTBData=0; 00266 00267 fEventTree->ResetBranchAddresses(); 00268 00269 //jpd that should clear that up 00270 00271 if(fTBData) 00272 fEventTree->SetBranchAddress("event",&fTBRawEventPtr); 00273 else 00274 fEventTree->SetBranchAddress("event",&fRawEventPtr); 00275 fEventTree->SetBranchAddress("run",&fCurrentRun); 00276 fEventEntry=0; 00277 00278 //jdp this is where we will build the tree index on 00279 00280 fEventTree->BuildIndex("event.head.eventNumber"); 00281 fEventIndex = (TTreeIndex*) fEventTree->GetTreeIndex(); 00282 00283 return 0; 00284 } 00285 00286 void AraDisplay::refreshEventDisplay() 00287 { 00288 if(!fAraCanvas) { 00289 fAraCanvas = new TCanvas("canAra","canAra",1200,800); 00290 fAraCanvas->cd(); 00291 drawEventButtons(); 00292 } 00293 if(!fAraMainPad) { 00294 fAraCanvas->cd(); 00295 fAraMainPad= new TPad("canAraMain","canAraMain",0,0,1,0.9); 00296 fAraMainPad->Draw(); 00297 fAraCanvas->Update(); 00298 } 00299 if(!fAraEventInfoPad) { 00300 fAraCanvas->cd(); 00301 fAraEventInfoPad= new TPad("canAraEventInfo","canAraEventInfo",0.2,0.91,0.8,0.99); 00302 fAraEventInfoPad->Draw(); 00303 fAraCanvas->Update(); 00304 } 00305 // fAraMainPad->Clear(); 00306 00307 00308 //This will need to change 00309 if(fTBData) { 00310 fTBEventCanMaker->getEventInfoCanvas(fTBUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00311 fTBEventCanMaker->setWaveformFormat(fWaveformFormat); 00312 fTBEventCanMaker->setCanvasLayout(fCanvasLayout); 00313 fTBEventCanMaker->getEventViewerCanvas(fTBUsefulEventPtr,fAraMainPad); 00314 } 00315 else { 00316 fEventCanMaker->getEventInfoCanvas(fUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00317 fEventCanMaker->setWaveformFormat(fWaveformFormat); 00318 fEventCanMaker->setCanvasLayout(fCanvasLayout); 00319 fEventCanMaker->getEventViewerCanvas(fUsefulEventPtr,fAraMainPad); 00320 } 00321 fAraCanvas->Update(); 00322 } 00323 00324 void AraDisplay::applyCut(char *cutString) 00325 { 00326 if(cutString==0) 00327 fApplyEventCut=0; 00328 00329 if(!fEventTree) { 00330 if(loadEventTree()<0) { 00331 std::cout << "Couldn't open event file\n"; 00332 return; 00333 } 00334 } 00335 00336 TCanvas tempCan; 00337 tempCan.cd(); 00338 fEventTree->Draw(">>elist1",cutString); 00339 fCutEventList = (TEventList*)gDirectory->Get("elist1"); 00340 fApplyEventCut=1; 00341 fCutEventList->Print(); 00342 00343 00344 } 00345 00346 int AraDisplay::displayNextEvent() 00347 { 00348 // static Int_t fEventTreeIndexEntry=-1; 00349 // static Int_t listNumber=-1; 00350 if(fApplyEventCut==1) { 00351 fEventCutListEntry++; 00352 if(fEventCutListEntry<fCutEventList->GetN()) { 00353 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00354 int retVal=getEventEntry(); 00355 if(fTBData) 00356 fTBEventCanMaker->fNewEvent=1; 00357 else 00358 fEventCanMaker->fNewEvent=1; 00359 if(retVal==0) { 00360 refreshEventDisplay(); 00361 } 00362 return retVal; 00363 } 00364 else { 00365 fEventCutListEntry=fCutEventList->GetN()-1; 00366 return -1; 00367 } 00368 } 00369 else { 00370 fEventEntry++; 00371 int retVal=getEventEntry(); 00372 if(fTBData) 00373 fTBEventCanMaker->fNewEvent=1; 00374 else 00375 fEventCanMaker->fNewEvent=1; 00376 if(retVal==0) { 00377 refreshEventDisplay(); 00378 } 00379 else { 00380 fEventEntry--; 00381 } 00382 return retVal; 00383 } 00384 } 00385 00386 00387 int AraDisplay::displayFirstEvent() 00388 { 00389 00390 if(fApplyEventCut==1) { 00391 fEventCutListEntry=0; 00392 if(fEventCutListEntry<fCutEventList->GetN()) { 00393 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00394 int retVal=getEventEntry(); 00395 if(fTBData) 00396 fTBEventCanMaker->fNewEvent=1; 00397 else 00398 fEventCanMaker->fNewEvent=1; 00399 if(retVal==0) { 00400 refreshEventDisplay(); 00401 } 00402 return retVal; 00403 } 00404 else { 00405 fEventCutListEntry=0; 00406 return -1; 00407 } 00408 } 00409 else { 00410 fEventEntry=0; 00411 int retVal=getEventEntry(); 00412 if(fTBData) 00413 fTBEventCanMaker->fNewEvent=1; 00414 else 00415 fEventCanMaker->fNewEvent=1; 00416 if(retVal==0) { 00417 refreshEventDisplay(); 00418 } 00419 else fEventEntry--; 00420 return retVal; 00421 } 00422 return -1; 00423 } 00424 00425 00426 int AraDisplay::displayLastEvent() 00427 { 00428 // fEventTree->Refresh(); 00429 00430 Long64_t eventEnts=fEventTree->GetEntries(); 00431 00432 if(fApplyEventCut==1) { 00433 fEventCutListEntry=fCutEventList->GetN()-1; 00434 if(fEventCutListEntry<fCutEventList->GetN() && fEventCutListEntry>=0) { 00435 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00436 int retVal=getEventEntry(); 00437 if(fTBData) 00438 fTBEventCanMaker->fNewEvent=1; 00439 else 00440 fEventCanMaker->fNewEvent=1; 00441 if(retVal==0) { 00442 refreshEventDisplay(); 00443 } 00444 return retVal; 00445 } 00446 else { 00447 fEventCutListEntry=0; 00448 return -1; 00449 } 00450 } 00451 else { 00452 fEventEntry=eventEnts-1; 00453 int retVal=getEventEntry(); 00454 if(fTBData) 00455 fTBEventCanMaker->fNewEvent=1; 00456 else 00457 fEventCanMaker->fNewEvent=1; 00458 if(retVal==0) { 00459 refreshEventDisplay(); 00460 } 00461 else fEventEntry--; 00462 return retVal; 00463 } 00464 return -1; 00465 } 00466 00467 00468 int AraDisplay::displayPreviousEvent() 00469 { 00470 // static Int_t fEventTreeIndexEntry=-1; 00471 // static Int_t fEventCutListEntry=-1; 00472 00473 if(fApplyEventCut==1) { 00474 // std::cout << fApplyEventCut << "\t" << fEventCutListEntry << "\t" << fCutEventList->GetN() << "\n"; 00475 fEventCutListEntry--; 00476 if(fEventCutListEntry>=0 && fEventCutListEntry<fCutEventList->GetN()) { 00477 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00478 int retVal=getEventEntry(); 00479 if(fTBData) 00480 fTBEventCanMaker->fNewEvent=1; 00481 else 00482 fEventCanMaker->fNewEvent=1; 00483 if(retVal==0) { 00484 refreshEventDisplay(); 00485 } 00486 else { 00487 fEventCutListEntry++; 00488 } 00489 return retVal; 00490 } 00491 else { 00492 fEventCutListEntry++; 00493 return -1; 00494 } 00495 } 00496 else { 00497 if(fEventEntry>0) 00498 fEventEntry--; 00499 else 00500 return -1; 00501 int retVal=getEventEntry(); 00502 if(fTBData) 00503 fTBEventCanMaker->fNewEvent=1; 00504 else 00505 fEventCanMaker->fNewEvent=1; 00506 if(retVal==0) { 00507 refreshEventDisplay(); 00508 } 00509 return retVal; 00510 } 00511 } 00512 00513 00514 int AraDisplay::displayThisEvent(UInt_t eventNumber) 00515 { 00516 cout << "displayThisEvent: " << eventNumber <<endl; 00517 00518 if(!fTBEventCanMaker && !fEventCanMaker) startEventDisplay(); 00519 00520 00521 if(eventNumber==0) { 00522 fEventEntry=0; 00523 } 00524 else { 00525 fEventEntry=fEventTree->GetEntryNumberWithIndex(eventNumber); 00526 if(fEventEntry<0) 00527 return -1; 00528 } 00529 cout << "fEventEntry: " << fEventEntry << endl; 00530 int retVal=getEventEntry(); 00531 if(retVal==0) 00532 refreshEventDisplay(); 00533 else { 00534 cout << "retVal: " << retVal << endl; 00535 } 00536 return retVal; 00537 } 00538 00539 void AraDisplay::drawEventButtons() { 00540 TButton *butNext = new TButton("Next ","AraDisplay::Instance()->displayNextEvent();",0.95,0.975,1,1); 00541 butNext->SetTextSize(0.5); 00542 butNext->SetFillColor(kGreen-10); 00543 butNext->Draw(); 00544 TButton *butPrev = new TButton("Prev.","AraDisplay::Instance()->displayPreviousEvent();",0.95,0.95,1,0.975); 00545 butPrev->SetTextSize(0.5); 00546 butPrev->SetFillColor(kBlue-10); 00547 butPrev->Draw(); 00548 TButton *butFirst = new TButton("First ","AraDisplay::Instance()->displayFirstEvent();",0.95,0.925,1,0.95); 00549 butFirst->SetTextSize(0.5); 00550 butFirst->SetFillColor(kOrange+10); 00551 butFirst->Draw(); 00552 TButton *butLast = new TButton("Last.","AraDisplay::Instance()->displayLastEvent();",0.95,0.90,1,0.925); 00553 butLast->SetTextSize(0.5); 00554 butLast->SetFillColor(kViolet-10); 00555 butLast->Draw(); 00556 00557 00558 TButton *butPlay = new TButton("Play","AraDisplay::Instance()->startEventPlaying();",0.9,0.97,0.95,1); 00559 butPlay->SetTextSize(0.5); 00560 butPlay->SetFillColor(kGreen-10); 00561 butPlay->Draw(); 00562 TButton *butPlayRev = new TButton("Rev ","AraDisplay::Instance()->startEventPlayingReverse();",0.9,0.94,0.95,0.97); 00563 butPlayRev->SetTextSize(0.5); 00564 butPlayRev->SetFillColor(kBlue-10); 00565 butPlayRev->Draw(); 00566 TButton *butStop = new TButton("Stop","AraDisplay::Instance()->stopEventPlaying();",0.90,0.90,0.95,0.94); 00567 butStop->SetTextSize(0.5); 00568 butStop->SetFillColor(kRed-10); 00569 butStop->Draw(); 00570 TButton *butReset; 00571 if(fTBData) { 00572 butReset = new TButton("Reset Avg","AraTBCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00573 } 00574 else { 00575 butReset = new TButton("Reset Avg","AraCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00576 00577 } 00578 butReset->SetTextSize(0.5); 00579 butReset->SetFillColor(kViolet-10); 00580 butReset->Draw();; 00581 TButton *butGoto = new TButton("Go to Event","AraDisplay::Instance()->startControlPanel();",0.85,0.95,0.9,0.975); 00582 butGoto->SetTextSize(0.5); 00583 butGoto->SetFillColor(kOrange); 00584 butGoto->Draw(); 00585 // fTimeEntryButton= new TButton("Event#","AraDisplay::Instance()->toggleTimeEventOrdering();",0.85,0.925,0.9,0.95); 00586 // fTimeEntryButton->SetTextSize(0.5); 00587 // fTimeEntryButton->SetFillColor(kGray); 00588 // fTimeEntryButton->Draw(); 00589 00590 00591 fElecViewButton = new TButton("Elec. View","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kElectronicsView); AraDisplay::Instance()->refreshEventDisplay();",0,0.975,0.1,1); 00592 fElecViewButton->SetTextSize(0.5); 00593 fElecViewButton->SetFillColor(kGray); 00594 fElecViewButton->Draw(); 00595 fRFViewButton = new TButton("RF Chan#","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kRFChanView); AraDisplay::Instance()->refreshEventDisplay();",0,0.95,0.1,0.975); 00596 fRFViewButton->SetTextSize(0.5); 00597 fRFViewButton->SetFillColor(kGray); 00598 fRFViewButton->Draw(); 00599 fAntViewButton = new TButton("Antenna","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kAntennaView); AraDisplay::Instance()->refreshEventDisplay();",0,0.925,0.1,0.95); 00600 fAntViewButton->SetTextSize(0.5); 00601 fAntViewButton->SetFillColor(kGray+3); 00602 fAntViewButton->Draw(); 00603 fMapViewButton = new TButton("Int. Map","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kIntMapView); AraDisplay::Instance()->refreshEventDisplay();",0,0.90,0.1,0.925); 00604 fMapViewButton->SetTextSize(0.5); 00605 fMapViewButton->SetFillColor(kGray); 00606 fMapViewButton->Draw(); 00607 00608 //NEW BUTTONS 00609 fWaveformButton = new TButton("Waveform","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kWaveform); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.975,0.2,1); 00610 fWaveformButton->SetTextSize(0.4); 00611 fWaveformButton->SetFillColor(kGray+3); 00612 fWaveformButton->Draw(); 00613 fPowerButton = new TButton("FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.95,0.2,0.975); 00614 fPowerButton->SetTextSize(0.4); 00615 fPowerButton->SetFillColor(kGray); 00616 fPowerButton->Draw(); 00617 fHilbertButton = new TButton("Hilbert","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kHilbertEnvelope); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.925,0.2,0.95); 00618 fHilbertButton->SetTextSize(0.4); 00619 fHilbertButton->SetFillColor(kGray); 00620 fHilbertButton->Draw(); 00621 fAverageFFTButton = new TButton("Average FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kAveragedFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.9,0.2,0.925); 00622 fAverageFFTButton->SetTextSize(0.4); 00623 fAverageFFTButton->SetFillColor(kGray); 00624 fAverageFFTButton->Draw(); 00625 00626 00627 } 00628 00629 void AraDisplay::setCanvasLayout(AraDisplayCanvasLayoutOption::AraDisplayCanvasLayoutOption_t option) 00630 { 00631 fCanvasLayout=option; 00632 switch(option) { 00633 case AraDisplayCanvasLayoutOption::kElectronicsView: 00634 fElecViewButton->SetFillColor(kGray+3); 00635 fRFViewButton->SetFillColor(kGray); 00636 fAntViewButton->SetFillColor(kGray); 00637 fMapViewButton->SetFillColor(kGray); 00638 break; 00639 case AraDisplayCanvasLayoutOption::kAntennaView: 00640 fElecViewButton->SetFillColor(kGray); 00641 fRFViewButton->SetFillColor(kGray); 00642 fAntViewButton->SetFillColor(kGray+3); 00643 fMapViewButton->SetFillColor(kGray); 00644 break; 00645 case AraDisplayCanvasLayoutOption::kRFChanView: 00646 fRFViewButton->SetFillColor(kGray+3); 00647 fElecViewButton->SetFillColor(kGray); 00648 fAntViewButton->SetFillColor(kGray); 00649 fMapViewButton->SetFillColor(kGray); 00650 break; 00651 case AraDisplayCanvasLayoutOption::kIntMapView: 00652 fRFViewButton->SetFillColor(kGray); 00653 fElecViewButton->SetFillColor(kGray); 00654 fAntViewButton->SetFillColor(kGray); 00655 fMapViewButton->SetFillColor(kGray+3); 00656 break; 00657 default: 00658 break; 00659 } 00660 fElecViewButton->Modified(); 00661 fRFViewButton->Modified(); 00662 fAntViewButton->Modified(); 00663 fMapViewButton->Modified(); 00664 } 00665 00666 00667 00668 void AraDisplay::setWaveformFormat(AraDisplayFormatOption::AraDisplayFormatOption_t waveformOption) 00669 { 00670 fWaveformFormat=waveformOption; 00671 if(waveformOption==AraDisplayFormatOption::kWaveform) { 00672 //Turn on fft view off 00673 fWaveformButton->SetFillColor(kGray+3); 00674 fPowerButton->SetFillColor(kGray); 00675 fHilbertButton->SetFillColor(kGray); 00676 fAverageFFTButton->SetFillColor(kGray); 00677 fWaveformButton->Modified(); 00678 fPowerButton->Modified(); 00679 fHilbertButton->Modified(); 00680 fAverageFFTButton->Modified(); 00681 } 00682 else if(waveformOption==AraDisplayFormatOption::kFFT) { 00683 //Turn fft view on 00684 fWaveformButton->SetFillColor(kGray); 00685 fPowerButton->SetFillColor(kGray+3); 00686 fHilbertButton->SetFillColor(kGray); 00687 fAverageFFTButton->SetFillColor(kGray); 00688 fWaveformButton->Modified(); 00689 fPowerButton->Modified(); 00690 fHilbertButton->Modified(); 00691 fAverageFFTButton->Modified(); 00692 } 00693 else if(waveformOption==AraDisplayFormatOption::kHilbertEnvelope) { 00694 //Turn fft view on 00695 fWaveformButton->SetFillColor(kGray); 00696 fPowerButton->SetFillColor(kGray); 00697 fHilbertButton->SetFillColor(kGray+3); 00698 fAverageFFTButton->SetFillColor(kGray); 00699 fWaveformButton->Modified(); 00700 fPowerButton->Modified(); 00701 fHilbertButton->Modified(); 00702 fAverageFFTButton->Modified(); 00703 } 00704 else if(waveformOption==AraDisplayFormatOption::kAveragedFFT) { 00705 //Turn fft view on 00706 fWaveformButton->SetFillColor(kGray); 00707 fPowerButton->SetFillColor(kGray); 00708 fHilbertButton->SetFillColor(kGray); 00709 fAverageFFTButton->SetFillColor(kGray+3); 00710 fWaveformButton->Modified(); 00711 fPowerButton->Modified(); 00712 fHilbertButton->Modified(); 00713 fAverageFFTButton->Modified(); 00714 } 00715 00716 } 00717 00718 00719 UInt_t AraDisplay::getCurrentEvent() 00720 { 00721 if(fTBData) { 00722 if(fTBUsefulEventPtr) return fTBUsefulEventPtr->head.eventNumber; 00723 } 00724 else { 00725 if(fUsefulEventPtr) return fUsefulEventPtr->eventNumber; 00726 } 00727 return 0; 00728 } 00729 00730 00731 void AraDisplay::startEventPlaying() 00732 { 00733 00734 fInEventPlayMode=1; 00735 do { 00736 gSystem->ProcessEvents(); 00737 if(!fInEventPlayMode) break; 00738 if(fEventPlaySleepMs>0) 00739 gSystem->Sleep(fEventPlaySleepMs); 00740 } 00741 while(this->displayNextEvent()==0); 00742 if(fInEventPlayMode) { 00743 Long64_t Entries=fEventTree->GetEntries(); 00744 if(fEventTree->GetEntries()!=Entries) { 00745 std::cout << Entries << "\n"; 00746 startEventPlaying(); 00747 } 00748 } 00749 } 00750 00751 00752 00753 void AraDisplay::startEventPlayingReverse() 00754 { 00755 fInEventPlayMode=1; 00756 do { 00757 gSystem->ProcessEvents(); 00758 if(!fInEventPlayMode) break; 00759 if(fEventPlaySleepMs>0) 00760 gSystem->Sleep(fEventPlaySleepMs); 00761 } 00762 while(this->displayPreviousEvent()==0); 00763 } 00764 00765 void AraDisplay::stopEventPlaying() 00766 { 00767 fInEventPlayMode=0; 00768 } 00769
Generated on Wed Aug 8 16:20:07 2012 for ARA ROOT Test Bed Software by
