AraDisplay/AraDisplay.cxx
00001 00002 00003 00004 00005 00006 00007 00008 00144 //System includes 00145 #include <fstream> 00146 #include <iostream> 00147 00148 //Magic Display Includes 00149 #include "AraDisplay.h" 00150 #include "AraWaveformGraph.h" 00151 #include "AraAtriCanvasMaker.h" 00152 #include "AraIcrrCanvasMaker.h" 00153 #include "AraControlPanel.h" 00154 #include "AraGeomTool.h" 00155 00156 //Event Reader Includes 00157 #include "UsefulIcrrStationEvent.h" 00158 #include "RawIcrrStationEvent.h" 00159 #include "UsefulAtriStationEvent.h" 00160 #include "RawAtriStationEvent.h" 00161 00162 //ROOT Includes 00163 #include "TROOT.h" 00164 #include "TCanvas.h" 00165 #include "TTree.h" 00166 #include "TFile.h" 00167 #include "TTree.h" 00168 #include "TTreeIndex.h" 00169 #include "TButton.h" 00170 #include "TGroupButton.h" 00171 #include "TThread.h" 00172 #include "TEventList.h" 00173 #include <TGClient.h> 00174 00175 using namespace std; 00176 00177 AraDisplay* AraDisplay::fgInstance = 0; 00178 //Leave these as global variables for now 00179 00180 00181 00182 void AraDisplay::zeroPointers() 00183 { 00184 fIcrrEventCanMaker=0; 00185 fAtriEventCanMaker=0; 00186 fCurrentRun=0; 00187 fApplyEventCut=0; 00188 fEventCutListEntry=-1; 00189 fEventTreeIndexEntry=-1; 00190 fEventEntry=0; 00191 fEventFile=0; 00192 fIcrrUsefulEventPtr=0; 00193 fIcrrRawEventPtr=0; 00194 fAtriUsefulEventPtr=0; 00195 fAtriRawEventPtr=0; 00196 fIcrrData=0; 00197 00198 00199 fAraCanvas=0; 00200 fAraEventInfoPad=0; 00201 fAraMainPad=0; 00202 00203 00204 fgInstance=this; 00205 fEventTree=0; 00206 fEventPlaySleepMs=0; 00207 00208 fCanvasLayout=AraDisplayCanvasLayoutOption::kElectronicsView; 00209 fWaveformFormat=AraDisplayFormatOption::kWaveform; 00210 00211 } 00212 00213 AraDisplay::AraDisplay() 00214 { 00215 //Default constructor 00216 zeroPointers(); 00217 } 00218 00219 AraDisplay::~AraDisplay() 00220 { 00221 //Default destructor 00222 } 00223 00224 00225 AraDisplay::AraDisplay(char *baseDir, unsigned int time, AraCalType::AraCalType_t calType) 00226 { 00227 //Offline constructor 00228 zeroPointers(); 00229 cout << "AraDisplay::AraDisplay(" << baseDir << " , " << time 00230 << ")" << endl; 00231 fCurrentFileTime=time; 00232 strncpy(fCurrentBaseDir,baseDir,179); 00233 fCalType=calType; 00234 } 00235 00236 AraDisplay::AraDisplay(char *eventFile, AraCalType::AraCalType_t calType) 00237 { 00238 //Offline constructor 00239 zeroPointers(); 00240 cout << "AraDisplay::AraDisplay(" << eventFile 00241 << ")" << endl; 00242 fCurrentFileTime=-1; 00243 // strncpy(fCurrentBaseDir,gSystem->DirName(eventFile),FILENAME_MAX); 00244 fCalType=calType; 00245 loadEventTree(eventFile); 00246 } 00247 00248 00249 //______________________________________________________________________________ 00250 AraDisplay* AraDisplay::Instance() 00251 { 00252 //static function 00253 return (fgInstance) ? (AraDisplay*) fgInstance : new AraDisplay(); 00254 } 00255 00256 void AraDisplay::startControlPanel() 00257 { 00258 fControlPanel=AraControlPanel::Instance(); 00259 // 00260 // fControlPanel=new AraControlPanel(gClient->GetRoot(), 400, 200); 00261 // fControlPanel->DrawControlPanel(); 00262 // fControlPanel->Draw(); 00263 } 00264 00265 00266 void AraDisplay::startEventDisplay() 00267 { 00268 00269 00270 00271 if(fIcrrData) 00272 fIcrrEventCanMaker=new AraIcrrCanvasMaker(this->fCalType); 00273 else 00274 fAtriEventCanMaker = new AraAtriCanvasMaker(this->fCalType); 00275 int retVal=this->getEventEntry(); 00276 if(retVal==0) 00277 this->refreshEventDisplay(); 00278 } 00279 00280 int AraDisplay::getEventEntry() 00281 { 00282 00283 00284 00285 if(!fEventTree) { 00286 if(loadEventTree()<0) { 00287 std::cout << "Couldn't open event file\n"; 00288 return -1; 00289 } 00290 } 00291 if(fEventEntry<fEventTree->GetEntries()) 00292 fEventTree->GetEntry(fEventEntry); 00293 else { 00294 std::cout << "No more entries in event tree " << fEventEntry << "\t" << fEventTree->GetEntries() << endl; 00295 return -1; 00296 } 00297 00298 00299 if(fIcrrData) { 00300 if(fIcrrUsefulEventPtr) 00301 delete fIcrrUsefulEventPtr; 00302 fIcrrUsefulEventPtr = new UsefulIcrrStationEvent(fIcrrRawEventPtr,fCalType); 00303 } 00304 else { 00305 if(fAtriUsefulEventPtr) 00306 delete fAtriUsefulEventPtr; 00307 fAtriUsefulEventPtr = new UsefulAtriStationEvent(fAtriRawEventPtr,fCalType); 00308 } 00309 00310 //Need to make configurable at some point 00311 //This will also need to be modifed to make realEvent accessible outside here 00312 return 0; 00313 } 00314 00315 00316 void AraDisplay::closeCurrentFile() 00317 { 00318 00319 if(fEventFile) 00320 fEventFile->Close(); 00321 00322 fEventFile=0; 00323 fEventTree=0; 00324 } 00325 00326 00327 int AraDisplay::loadEventTree(char *eventFile) 00328 { 00329 //Try and open file or chain 00330 if(!fEventTree) 00331 fEventTree = new TChain("eventTree"); 00332 char eventName[FILENAME_MAX]; 00333 if(!eventFile) { 00334 //Step one try calEventFile 00335 sprintf(eventName,"%s/event_%d.root",fCurrentBaseDir,fCurrentFileTime); 00336 std::cout << eventName << "\n"; 00337 fEventTree->Add(eventName); 00338 // std::cout << fEventTree->GetEntries() << "\n"; 00339 if(fEventTree->GetEntries()>0) { 00340 for(int extra=1;extra<100;extra++) { 00341 sprintf(eventName,"%s/event_%d_%d.root",fCurrentBaseDir,fCurrentFileTime,extra); 00342 TFile *fpTest = TFile::Open(eventName); 00343 if(!fpTest) 00344 break; 00345 else { 00346 delete fpTest; 00347 fEventTree->Add(eventName); 00348 } 00349 } 00350 } 00351 } 00352 else { 00353 fEventTree->Add(eventFile); 00354 strncpy(eventName,eventFile,FILENAME_MAX); 00355 } 00356 00357 00358 if(fEventTree->GetEntries()<1) { 00359 std::cerr << "Couldn't open: " << eventName << "\n"; 00360 return -1; 00361 } 00362 //JPD - Use the RawStationEvent base class to interogate the tree 00363 // and decide if this is a Icrr or Atri type station 00364 00365 fEventTree->ResetBranchAddresses(); 00366 fEventTree->SetBranchAddress("event",&fRawStationEventPtr); 00367 fEventTree->GetEntry(1); 00368 //std::cout << "fRawStationEventPtr->stationId: " << (int)fRawStationEventPtr->stationId << "\n"; 00369 fIcrrData=AraGeomTool::isIcrrStation(fRawStationEventPtr->stationId); 00370 00371 fEventTree->ResetBranchAddresses(); 00372 if(fIcrrData) 00373 fEventTree->SetBranchAddress("event",&fIcrrRawEventPtr); 00374 else 00375 fEventTree->SetBranchAddress("event",&fAtriRawEventPtr); 00376 00377 fEventTree->SetBranchAddress("run",&fCurrentRun); 00378 fEventEntry=0; 00379 00380 fEventTree->BuildIndex("event.head.eventNumber"); 00381 fEventIndex = (TTreeIndex*) fEventTree->GetTreeIndex(); 00382 00383 return 0; 00384 } 00385 00386 void AraDisplay::refreshEventDisplay() 00387 { 00388 if(!fAraCanvas) { 00389 fAraCanvas = new TCanvas("canAra","canAra",1200,800); 00390 fAraCanvas->cd(); 00391 drawEventButtons(); 00392 } 00393 if(!fAraMainPad) { 00394 fAraCanvas->cd(); 00395 fAraMainPad= new TPad("canAraMain","canAraMain",0,0,1,0.9); 00396 fAraMainPad->Draw(); 00397 fAraCanvas->Update(); 00398 } 00399 if(!fAraEventInfoPad) { 00400 fAraCanvas->cd(); 00401 fAraEventInfoPad= new TPad("canAraEventInfo","canAraEventInfo",0.2,0.91,0.8,0.99); 00402 fAraEventInfoPad->Draw(); 00403 fAraCanvas->Update(); 00404 } 00405 // fAraMainPad->Clear(); 00406 00407 00408 //This will need to change 00409 if(fIcrrData) { 00410 fIcrrEventCanMaker->getEventInfoCanvas(fIcrrUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00411 fIcrrEventCanMaker->setWaveformFormat(fWaveformFormat); 00412 fIcrrEventCanMaker->setCanvasLayout(fCanvasLayout); 00413 fIcrrEventCanMaker->getEventViewerCanvas(fIcrrUsefulEventPtr,fAraMainPad); 00414 } 00415 else { 00416 fAtriEventCanMaker->getEventInfoCanvas(fAtriUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00417 fAtriEventCanMaker->setWaveformFormat(fWaveformFormat); 00418 fAtriEventCanMaker->setCanvasLayout(fCanvasLayout); 00419 fAtriEventCanMaker->getEventViewerCanvas(fAtriUsefulEventPtr,fAraMainPad); 00420 } 00421 fAraCanvas->Update(); 00422 } 00423 00424 void AraDisplay::applyCut(char *cutString) 00425 { 00426 if(cutString==0) 00427 fApplyEventCut=0; 00428 00429 if(!fEventTree) { 00430 if(loadEventTree()<0) { 00431 std::cout << "Couldn't open event file\n"; 00432 return; 00433 } 00434 } 00435 00436 TCanvas tempCan; 00437 tempCan.cd(); 00438 fEventTree->Draw(">>elist1",cutString); 00439 fCutEventList = (TEventList*)gDirectory->Get("elist1"); 00440 fApplyEventCut=1; 00441 fCutEventList->Print(); 00442 00443 00444 } 00445 00446 int AraDisplay::displayNextEvent() 00447 { 00448 // static Int_t fEventTreeIndexEntry=-1; 00449 // static Int_t listNumber=-1; 00450 if(fApplyEventCut==1) { 00451 fEventCutListEntry++; 00452 if(fEventCutListEntry<fCutEventList->GetN()) { 00453 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00454 int retVal=getEventEntry(); 00455 if(fIcrrData) 00456 fIcrrEventCanMaker->fNewEvent=1; 00457 else 00458 fAtriEventCanMaker->fNewEvent=1; 00459 if(retVal==0) { 00460 refreshEventDisplay(); 00461 } 00462 return retVal; 00463 } 00464 else { 00465 fEventCutListEntry=fCutEventList->GetN()-1; 00466 return -1; 00467 } 00468 } 00469 else { 00470 fEventEntry++; 00471 int retVal=getEventEntry(); 00472 if(fIcrrData) 00473 fIcrrEventCanMaker->fNewEvent=1; 00474 else 00475 fAtriEventCanMaker->fNewEvent=1; 00476 if(retVal==0) { 00477 refreshEventDisplay(); 00478 } 00479 else { 00480 fEventEntry--; 00481 } 00482 return retVal; 00483 } 00484 } 00485 00486 00487 int AraDisplay::displayFirstEvent() 00488 { 00489 00490 if(fApplyEventCut==1) { 00491 fEventCutListEntry=0; 00492 if(fEventCutListEntry<fCutEventList->GetN()) { 00493 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00494 int retVal=getEventEntry(); 00495 if(fIcrrData) 00496 fIcrrEventCanMaker->fNewEvent=1; 00497 else 00498 fAtriEventCanMaker->fNewEvent=1; 00499 if(retVal==0) { 00500 refreshEventDisplay(); 00501 } 00502 return retVal; 00503 } 00504 else { 00505 fEventCutListEntry=0; 00506 return -1; 00507 } 00508 } 00509 else { 00510 fEventEntry=0; 00511 int retVal=getEventEntry(); 00512 if(fIcrrData) 00513 fIcrrEventCanMaker->fNewEvent=1; 00514 else 00515 fAtriEventCanMaker->fNewEvent=1; 00516 if(retVal==0) { 00517 refreshEventDisplay(); 00518 } 00519 else fEventEntry--; 00520 return retVal; 00521 } 00522 return -1; 00523 } 00524 00525 00526 int AraDisplay::displayLastEvent() 00527 { 00528 // fEventTree->Refresh(); 00529 00530 Long64_t eventEnts=fEventTree->GetEntries(); 00531 00532 if(fApplyEventCut==1) { 00533 fEventCutListEntry=fCutEventList->GetN()-1; 00534 if(fEventCutListEntry<fCutEventList->GetN() && fEventCutListEntry>=0) { 00535 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00536 int retVal=getEventEntry(); 00537 if(fIcrrData) 00538 fIcrrEventCanMaker->fNewEvent=1; 00539 else 00540 fAtriEventCanMaker->fNewEvent=1; 00541 if(retVal==0) { 00542 refreshEventDisplay(); 00543 } 00544 return retVal; 00545 } 00546 else { 00547 fEventCutListEntry=0; 00548 return -1; 00549 } 00550 } 00551 else { 00552 fEventEntry=eventEnts-1; 00553 int retVal=getEventEntry(); 00554 if(fIcrrData) 00555 fIcrrEventCanMaker->fNewEvent=1; 00556 else 00557 fAtriEventCanMaker->fNewEvent=1; 00558 if(retVal==0) { 00559 refreshEventDisplay(); 00560 } 00561 else fEventEntry--; 00562 return retVal; 00563 } 00564 return -1; 00565 } 00566 00567 00568 int AraDisplay::displayPreviousEvent() 00569 { 00570 // static Int_t fEventTreeIndexEntry=-1; 00571 // static Int_t fEventCutListEntry=-1; 00572 00573 if(fApplyEventCut==1) { 00574 // std::cout << fApplyEventCut << "\t" << fEventCutListEntry << "\t" << fCutEventList->GetN() << "\n"; 00575 fEventCutListEntry--; 00576 if(fEventCutListEntry>=0 && fEventCutListEntry<fCutEventList->GetN()) { 00577 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00578 int retVal=getEventEntry(); 00579 if(fIcrrData) 00580 fIcrrEventCanMaker->fNewEvent=1; 00581 else 00582 fAtriEventCanMaker->fNewEvent=1; 00583 if(retVal==0) { 00584 refreshEventDisplay(); 00585 } 00586 else { 00587 fEventCutListEntry++; 00588 } 00589 return retVal; 00590 } 00591 else { 00592 fEventCutListEntry++; 00593 return -1; 00594 } 00595 } 00596 else { 00597 if(fEventEntry>0) 00598 fEventEntry--; 00599 else 00600 return -1; 00601 int retVal=getEventEntry(); 00602 if(fIcrrData) 00603 fIcrrEventCanMaker->fNewEvent=1; 00604 else 00605 fAtriEventCanMaker->fNewEvent=1; 00606 if(retVal==0) { 00607 refreshEventDisplay(); 00608 } 00609 return retVal; 00610 } 00611 } 00612 00613 00614 int AraDisplay::displayThisEvent(UInt_t eventNumber) 00615 { 00616 cout << "displayThisEvent: " << eventNumber <<endl; 00617 00618 if(!fIcrrEventCanMaker && !fAtriEventCanMaker) startEventDisplay(); 00619 00620 00621 if(eventNumber==0) { 00622 fEventEntry=0; 00623 } 00624 else { 00625 fEventEntry=fEventTree->GetEntryNumberWithIndex(eventNumber); 00626 if(fEventEntry<0) 00627 return -1; 00628 } 00629 cout << "fEventEntry: " << fEventEntry << endl; 00630 int retVal=getEventEntry(); 00631 if(retVal==0) 00632 refreshEventDisplay(); 00633 else { 00634 cout << "retVal: " << retVal << endl; 00635 } 00636 return retVal; 00637 } 00638 00639 void AraDisplay::drawEventButtons() { 00640 TButton *butNext = new TButton("Next ","AraDisplay::Instance()->displayNextEvent();",0.95,0.975,1,1); 00641 butNext->SetTextSize(0.5); 00642 butNext->SetFillColor(kGreen-10); 00643 butNext->Draw(); 00644 TButton *butPrev = new TButton("Prev.","AraDisplay::Instance()->displayPreviousEvent();",0.95,0.95,1,0.975); 00645 butPrev->SetTextSize(0.5); 00646 butPrev->SetFillColor(kBlue-10); 00647 butPrev->Draw(); 00648 TButton *butFirst = new TButton("First ","AraDisplay::Instance()->displayFirstEvent();",0.95,0.925,1,0.95); 00649 butFirst->SetTextSize(0.5); 00650 butFirst->SetFillColor(kOrange+10); 00651 butFirst->Draw(); 00652 TButton *butLast = new TButton("Last.","AraDisplay::Instance()->displayLastEvent();",0.95,0.90,1,0.925); 00653 butLast->SetTextSize(0.5); 00654 butLast->SetFillColor(kViolet-10); 00655 butLast->Draw(); 00656 00657 00658 TButton *butPlay = new TButton("Play","AraDisplay::Instance()->startEventPlaying();",0.9,0.97,0.95,1); 00659 butPlay->SetTextSize(0.5); 00660 butPlay->SetFillColor(kGreen-10); 00661 butPlay->Draw(); 00662 TButton *butPlayRev = new TButton("Rev ","AraDisplay::Instance()->startEventPlayingReverse();",0.9,0.94,0.95,0.97); 00663 butPlayRev->SetTextSize(0.5); 00664 butPlayRev->SetFillColor(kBlue-10); 00665 butPlayRev->Draw(); 00666 TButton *butStop = new TButton("Stop","AraDisplay::Instance()->stopEventPlaying();",0.90,0.90,0.95,0.94); 00667 butStop->SetTextSize(0.5); 00668 butStop->SetFillColor(kRed-10); 00669 butStop->Draw(); 00670 TButton *butReset; 00671 if(fIcrrData) { 00672 butReset = new TButton("Reset Avg","AraIcrrCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00673 } 00674 else { 00675 butReset = new TButton("Reset Avg","AraAtriCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00676 00677 } 00678 butReset->SetTextSize(0.5); 00679 butReset->SetFillColor(kViolet-10); 00680 butReset->Draw();; 00681 TButton *butGoto = new TButton("Go to Event","AraDisplay::Instance()->startControlPanel();",0.85,0.95,0.9,0.975); 00682 butGoto->SetTextSize(0.5); 00683 butGoto->SetFillColor(kOrange); 00684 butGoto->Draw(); 00685 // fTimeEntryButton= new TButton("Event#","AraDisplay::Instance()->toggleTimeEventOrdering();",0.85,0.925,0.9,0.95); 00686 // fTimeEntryButton->SetTextSize(0.5); 00687 // fTimeEntryButton->SetFillColor(kGray); 00688 // fTimeEntryButton->Draw(); 00689 00690 00691 fElecViewButton = new TButton("Elec. View","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kElectronicsView); AraDisplay::Instance()->refreshEventDisplay();",0,0.975,0.1,1); 00692 fElecViewButton->SetTextSize(0.5); 00693 fElecViewButton->SetFillColor(kGray+3); 00694 fElecViewButton->Draw(); 00695 fRFViewButton = new TButton("RF Chan#","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kRFChanView); AraDisplay::Instance()->refreshEventDisplay();",0,0.95,0.1,0.975); 00696 fRFViewButton->SetTextSize(0.5); 00697 fRFViewButton->SetFillColor(kGray); 00698 fRFViewButton->Draw(); 00699 fAntViewButton = new TButton("Antenna","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kAntennaView); AraDisplay::Instance()->refreshEventDisplay();",0,0.925,0.1,0.95); 00700 fAntViewButton->SetTextSize(0.5); 00701 fAntViewButton->SetFillColor(kGray); 00702 fAntViewButton->Draw(); 00703 fMapViewButton = new TButton("Int. Map","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kIntMapView); AraDisplay::Instance()->refreshEventDisplay();",0,0.90,0.1,0.925); 00704 fMapViewButton->SetTextSize(0.5); 00705 fMapViewButton->SetFillColor(kGray); 00706 fMapViewButton->Draw(); 00707 00708 //NEW BUTTONS 00709 fWaveformButton = new TButton("Waveform","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kWaveform); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.975,0.2,1); 00710 fWaveformButton->SetTextSize(0.4); 00711 fWaveformButton->SetFillColor(kGray+3); 00712 fWaveformButton->Draw(); 00713 fPowerButton = new TButton("FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.95,0.2,0.975); 00714 fPowerButton->SetTextSize(0.4); 00715 fPowerButton->SetFillColor(kGray); 00716 fPowerButton->Draw(); 00717 fHilbertButton = new TButton("Hilbert","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kHilbertEnvelope); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.925,0.2,0.95); 00718 fHilbertButton->SetTextSize(0.4); 00719 fHilbertButton->SetFillColor(kGray); 00720 fHilbertButton->Draw(); 00721 fAverageFFTButton = new TButton("Average FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kAveragedFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.9,0.2,0.925); 00722 fAverageFFTButton->SetTextSize(0.4); 00723 fAverageFFTButton->SetFillColor(kGray); 00724 fAverageFFTButton->Draw(); 00725 00726 00727 } 00728 00729 void AraDisplay::setCanvasLayout(AraDisplayCanvasLayoutOption::AraDisplayCanvasLayoutOption_t option) 00730 { 00731 fCanvasLayout=option; 00732 switch(option) { 00733 case AraDisplayCanvasLayoutOption::kElectronicsView: 00734 fElecViewButton->SetFillColor(kGray+3); 00735 fRFViewButton->SetFillColor(kGray); 00736 fAntViewButton->SetFillColor(kGray); 00737 fMapViewButton->SetFillColor(kGray); 00738 break; 00739 case AraDisplayCanvasLayoutOption::kAntennaView: 00740 fElecViewButton->SetFillColor(kGray); 00741 fRFViewButton->SetFillColor(kGray); 00742 fAntViewButton->SetFillColor(kGray+3); 00743 fMapViewButton->SetFillColor(kGray); 00744 break; 00745 case AraDisplayCanvasLayoutOption::kRFChanView: 00746 fRFViewButton->SetFillColor(kGray+3); 00747 fElecViewButton->SetFillColor(kGray); 00748 fAntViewButton->SetFillColor(kGray); 00749 fMapViewButton->SetFillColor(kGray); 00750 break; 00751 case AraDisplayCanvasLayoutOption::kIntMapView: 00752 fRFViewButton->SetFillColor(kGray); 00753 fElecViewButton->SetFillColor(kGray); 00754 fAntViewButton->SetFillColor(kGray); 00755 fMapViewButton->SetFillColor(kGray+3); 00756 break; 00757 default: 00758 break; 00759 } 00760 fElecViewButton->Modified(); 00761 fRFViewButton->Modified(); 00762 fAntViewButton->Modified(); 00763 fMapViewButton->Modified(); 00764 } 00765 00766 00767 00768 void AraDisplay::setWaveformFormat(AraDisplayFormatOption::AraDisplayFormatOption_t waveformOption) 00769 { 00770 fWaveformFormat=waveformOption; 00771 if(waveformOption==AraDisplayFormatOption::kWaveform) { 00772 //Turn on fft view off 00773 fWaveformButton->SetFillColor(kGray+3); 00774 fPowerButton->SetFillColor(kGray); 00775 fHilbertButton->SetFillColor(kGray); 00776 fAverageFFTButton->SetFillColor(kGray); 00777 fWaveformButton->Modified(); 00778 fPowerButton->Modified(); 00779 fHilbertButton->Modified(); 00780 fAverageFFTButton->Modified(); 00781 } 00782 else if(waveformOption==AraDisplayFormatOption::kFFT) { 00783 //Turn fft view on 00784 fWaveformButton->SetFillColor(kGray); 00785 fPowerButton->SetFillColor(kGray+3); 00786 fHilbertButton->SetFillColor(kGray); 00787 fAverageFFTButton->SetFillColor(kGray); 00788 fWaveformButton->Modified(); 00789 fPowerButton->Modified(); 00790 fHilbertButton->Modified(); 00791 fAverageFFTButton->Modified(); 00792 } 00793 else if(waveformOption==AraDisplayFormatOption::kHilbertEnvelope) { 00794 //Turn fft view on 00795 fWaveformButton->SetFillColor(kGray); 00796 fPowerButton->SetFillColor(kGray); 00797 fHilbertButton->SetFillColor(kGray+3); 00798 fAverageFFTButton->SetFillColor(kGray); 00799 fWaveformButton->Modified(); 00800 fPowerButton->Modified(); 00801 fHilbertButton->Modified(); 00802 fAverageFFTButton->Modified(); 00803 } 00804 else if(waveformOption==AraDisplayFormatOption::kAveragedFFT) { 00805 //Turn fft view on 00806 fWaveformButton->SetFillColor(kGray); 00807 fPowerButton->SetFillColor(kGray); 00808 fHilbertButton->SetFillColor(kGray); 00809 fAverageFFTButton->SetFillColor(kGray+3); 00810 fWaveformButton->Modified(); 00811 fPowerButton->Modified(); 00812 fHilbertButton->Modified(); 00813 fAverageFFTButton->Modified(); 00814 } 00815 00816 } 00817 00818 00819 UInt_t AraDisplay::getCurrentEvent() 00820 { 00821 if(fIcrrData) { 00822 if(fIcrrUsefulEventPtr) return fIcrrUsefulEventPtr->head.eventNumber; 00823 } 00824 else { 00825 if(fAtriUsefulEventPtr) return fAtriUsefulEventPtr->eventNumber; 00826 } 00827 return 0; 00828 } 00829 00830 00831 void AraDisplay::startEventPlaying() 00832 { 00833 00834 fInEventPlayMode=1; 00835 do { 00836 gSystem->ProcessEvents(); 00837 if(!fInEventPlayMode) break; 00838 if(fEventPlaySleepMs>0) 00839 gSystem->Sleep(fEventPlaySleepMs); 00840 } 00841 while(this->displayNextEvent()==0); 00842 if(fInEventPlayMode) { 00843 Long64_t Entries=fEventTree->GetEntries(); 00844 if(fEventTree->GetEntries()!=Entries) { 00845 std::cout << Entries << "\n"; 00846 startEventPlaying(); 00847 } 00848 } 00849 } 00850 00851 00852 00853 void AraDisplay::startEventPlayingReverse() 00854 { 00855 fInEventPlayMode=1; 00856 do { 00857 gSystem->ProcessEvents(); 00858 if(!fInEventPlayMode) break; 00859 if(fEventPlaySleepMs>0) 00860 gSystem->Sleep(fEventPlaySleepMs); 00861 } 00862 while(this->displayPreviousEvent()==0); 00863 } 00864 00865 void AraDisplay::stopEventPlaying() 00866 { 00867 fInEventPlayMode=0; 00868 } 00869
Generated on Tue Jul 16 16:58:01 2013 for ARA ROOT v3.10 Software by
