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 fIsUsefulEvent=0; 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 && !fIsUsefulEvent) { 00300 if(fIcrrUsefulEventPtr) 00301 delete fIcrrUsefulEventPtr; 00302 fIcrrUsefulEventPtr = new UsefulIcrrStationEvent(fIcrrRawEventPtr,fCalType); 00303 } 00304 if(!fIcrrData && !fIsUsefulEvent){ 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 std::string className(fEventTree->GetBranch("event")->GetClassName()); 00374 if(className == "UsefulIcrrStationEvent") fIsUsefulEvent=1; 00375 00376 if(fIsUsefulEvent) fEventTree->SetBranchAddress("event",&fIcrrUsefulEventPtr); 00377 else fEventTree->SetBranchAddress("event",&fIcrrRawEventPtr); 00378 } 00379 else{ 00380 std::string className(fEventTree->GetBranch("event")->GetClassName()); 00381 if(className == "UsefulAtriStationEvent") fIsUsefulEvent=1; 00382 00383 if(fIsUsefulEvent) fEventTree->SetBranchAddress("event",&fAtriUsefulEventPtr); 00384 else fEventTree->SetBranchAddress("event",&fAtriRawEventPtr); 00385 } 00386 fEventTree->SetBranchAddress("run",&fCurrentRun); 00387 fEventEntry=0; 00388 00389 fEventTree->BuildIndex("event.head.eventNumber"); 00390 fEventIndex = (TTreeIndex*) fEventTree->GetTreeIndex(); 00391 00392 return 0; 00393 } 00394 00395 void AraDisplay::refreshEventDisplay() 00396 { 00397 if(!fAraCanvas) { 00398 fAraCanvas = new TCanvas("canAra","canAra",1200,800); 00399 fAraCanvas->cd(); 00400 drawEventButtons(); 00401 } 00402 if(!fAraMainPad) { 00403 fAraCanvas->cd(); 00404 fAraMainPad= new TPad("canAraMain","canAraMain",0,0,1,0.9); 00405 fAraMainPad->Draw(); 00406 fAraCanvas->Update(); 00407 } 00408 if(!fAraEventInfoPad) { 00409 fAraCanvas->cd(); 00410 fAraEventInfoPad= new TPad("canAraEventInfo","canAraEventInfo",0.2,0.91,0.8,0.99); 00411 fAraEventInfoPad->Draw(); 00412 fAraCanvas->Update(); 00413 } 00414 // fAraMainPad->Clear(); 00415 00416 00417 //This will need to change 00418 if(fIcrrData) { 00419 fIcrrEventCanMaker->getEventInfoCanvas(fIcrrUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00420 fIcrrEventCanMaker->setWaveformFormat(fWaveformFormat); 00421 fIcrrEventCanMaker->setCanvasLayout(fCanvasLayout); 00422 fIcrrEventCanMaker->getEventViewerCanvas(fIcrrUsefulEventPtr,fAraMainPad); 00423 } 00424 else { 00425 fAtriEventCanMaker->getEventInfoCanvas(fAtriUsefulEventPtr,fAraEventInfoPad,fCurrentRun); 00426 fAtriEventCanMaker->setWaveformFormat(fWaveformFormat); 00427 fAtriEventCanMaker->setCanvasLayout(fCanvasLayout); 00428 fAtriEventCanMaker->getEventViewerCanvas(fAtriUsefulEventPtr,fAraMainPad); 00429 } 00430 fAraCanvas->Update(); 00431 } 00432 00433 void AraDisplay::applyCut(char *cutString) 00434 { 00435 if(cutString==0) 00436 fApplyEventCut=0; 00437 00438 if(!fEventTree) { 00439 if(loadEventTree()<0) { 00440 std::cout << "Couldn't open event file\n"; 00441 return; 00442 } 00443 } 00444 00445 TCanvas tempCan; 00446 tempCan.cd(); 00447 fEventTree->Draw(">>elist1",cutString); 00448 fCutEventList = (TEventList*)gDirectory->Get("elist1"); 00449 fApplyEventCut=1; 00450 fCutEventList->Print(); 00451 00452 00453 } 00454 00455 int AraDisplay::displayNextEvent() 00456 { 00457 // static Int_t fEventTreeIndexEntry=-1; 00458 // static Int_t listNumber=-1; 00459 if(fApplyEventCut==1) { 00460 fEventCutListEntry++; 00461 if(fEventCutListEntry<fCutEventList->GetN()) { 00462 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00463 int retVal=getEventEntry(); 00464 if(fIcrrData) 00465 fIcrrEventCanMaker->fNewEvent=1; 00466 else 00467 fAtriEventCanMaker->fNewEvent=1; 00468 if(retVal==0) { 00469 refreshEventDisplay(); 00470 } 00471 return retVal; 00472 } 00473 else { 00474 fEventCutListEntry=fCutEventList->GetN()-1; 00475 return -1; 00476 } 00477 } 00478 else { 00479 fEventEntry++; 00480 int retVal=getEventEntry(); 00481 if(fIcrrData) 00482 fIcrrEventCanMaker->fNewEvent=1; 00483 else 00484 fAtriEventCanMaker->fNewEvent=1; 00485 if(retVal==0) { 00486 refreshEventDisplay(); 00487 } 00488 else { 00489 fEventEntry--; 00490 } 00491 return retVal; 00492 } 00493 } 00494 00495 00496 int AraDisplay::displayFirstEvent() 00497 { 00498 00499 if(fApplyEventCut==1) { 00500 fEventCutListEntry=0; 00501 if(fEventCutListEntry<fCutEventList->GetN()) { 00502 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00503 int retVal=getEventEntry(); 00504 if(fIcrrData) 00505 fIcrrEventCanMaker->fNewEvent=1; 00506 else 00507 fAtriEventCanMaker->fNewEvent=1; 00508 if(retVal==0) { 00509 refreshEventDisplay(); 00510 } 00511 return retVal; 00512 } 00513 else { 00514 fEventCutListEntry=0; 00515 return -1; 00516 } 00517 } 00518 else { 00519 fEventEntry=0; 00520 int retVal=getEventEntry(); 00521 if(fIcrrData) 00522 fIcrrEventCanMaker->fNewEvent=1; 00523 else 00524 fAtriEventCanMaker->fNewEvent=1; 00525 if(retVal==0) { 00526 refreshEventDisplay(); 00527 } 00528 else fEventEntry--; 00529 return retVal; 00530 } 00531 return -1; 00532 } 00533 00534 00535 int AraDisplay::displayLastEvent() 00536 { 00537 // fEventTree->Refresh(); 00538 00539 Long64_t eventEnts=fEventTree->GetEntries(); 00540 00541 if(fApplyEventCut==1) { 00542 fEventCutListEntry=fCutEventList->GetN()-1; 00543 if(fEventCutListEntry<fCutEventList->GetN() && fEventCutListEntry>=0) { 00544 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00545 int retVal=getEventEntry(); 00546 if(fIcrrData) 00547 fIcrrEventCanMaker->fNewEvent=1; 00548 else 00549 fAtriEventCanMaker->fNewEvent=1; 00550 if(retVal==0) { 00551 refreshEventDisplay(); 00552 } 00553 return retVal; 00554 } 00555 else { 00556 fEventCutListEntry=0; 00557 return -1; 00558 } 00559 } 00560 else { 00561 fEventEntry=eventEnts-1; 00562 int retVal=getEventEntry(); 00563 if(fIcrrData) 00564 fIcrrEventCanMaker->fNewEvent=1; 00565 else 00566 fAtriEventCanMaker->fNewEvent=1; 00567 if(retVal==0) { 00568 refreshEventDisplay(); 00569 } 00570 else fEventEntry--; 00571 return retVal; 00572 } 00573 return -1; 00574 } 00575 00576 00577 int AraDisplay::displayPreviousEvent() 00578 { 00579 // static Int_t fEventTreeIndexEntry=-1; 00580 // static Int_t fEventCutListEntry=-1; 00581 00582 if(fApplyEventCut==1) { 00583 // std::cout << fApplyEventCut << "\t" << fEventCutListEntry << "\t" << fCutEventList->GetN() << "\n"; 00584 fEventCutListEntry--; 00585 if(fEventCutListEntry>=0 && fEventCutListEntry<fCutEventList->GetN()) { 00586 fEventEntry=fCutEventList->GetEntry(fEventCutListEntry); 00587 int retVal=getEventEntry(); 00588 if(fIcrrData) 00589 fIcrrEventCanMaker->fNewEvent=1; 00590 else 00591 fAtriEventCanMaker->fNewEvent=1; 00592 if(retVal==0) { 00593 refreshEventDisplay(); 00594 } 00595 else { 00596 fEventCutListEntry++; 00597 } 00598 return retVal; 00599 } 00600 else { 00601 fEventCutListEntry++; 00602 return -1; 00603 } 00604 } 00605 else { 00606 if(fEventEntry>0) 00607 fEventEntry--; 00608 else 00609 return -1; 00610 int retVal=getEventEntry(); 00611 if(fIcrrData) 00612 fIcrrEventCanMaker->fNewEvent=1; 00613 else 00614 fAtriEventCanMaker->fNewEvent=1; 00615 if(retVal==0) { 00616 refreshEventDisplay(); 00617 } 00618 return retVal; 00619 } 00620 } 00621 00622 00623 int AraDisplay::displayThisEvent(UInt_t eventNumber) 00624 { 00625 cout << "displayThisEvent: " << eventNumber <<endl; 00626 00627 if(!fIcrrEventCanMaker && !fAtriEventCanMaker) startEventDisplay(); 00628 00629 00630 if(eventNumber==0) { 00631 fEventEntry=0; 00632 } 00633 else { 00634 fEventEntry=fEventTree->GetEntryNumberWithIndex(eventNumber); 00635 if(fEventEntry<0) 00636 return -1; 00637 } 00638 cout << "fEventEntry: " << fEventEntry << endl; 00639 int retVal=getEventEntry(); 00640 if(retVal==0) 00641 refreshEventDisplay(); 00642 else { 00643 cout << "retVal: " << retVal << endl; 00644 } 00645 return retVal; 00646 } 00647 00648 void AraDisplay::drawEventButtons() { 00649 TButton *butNext = new TButton("Next ","AraDisplay::Instance()->displayNextEvent();",0.95,0.975,1,1); 00650 butNext->SetTextSize(0.5); 00651 butNext->SetFillColor(kGreen-10); 00652 butNext->Draw(); 00653 TButton *butPrev = new TButton("Prev.","AraDisplay::Instance()->displayPreviousEvent();",0.95,0.95,1,0.975); 00654 butPrev->SetTextSize(0.5); 00655 butPrev->SetFillColor(kBlue-10); 00656 butPrev->Draw(); 00657 TButton *butFirst = new TButton("First ","AraDisplay::Instance()->displayFirstEvent();",0.95,0.925,1,0.95); 00658 butFirst->SetTextSize(0.5); 00659 butFirst->SetFillColor(kOrange+10); 00660 butFirst->Draw(); 00661 TButton *butLast = new TButton("Last.","AraDisplay::Instance()->displayLastEvent();",0.95,0.90,1,0.925); 00662 butLast->SetTextSize(0.5); 00663 butLast->SetFillColor(kViolet-10); 00664 butLast->Draw(); 00665 00666 00667 TButton *butPlay = new TButton("Play","AraDisplay::Instance()->startEventPlaying();",0.9,0.97,0.95,1); 00668 butPlay->SetTextSize(0.5); 00669 butPlay->SetFillColor(kGreen-10); 00670 butPlay->Draw(); 00671 TButton *butPlayRev = new TButton("Rev ","AraDisplay::Instance()->startEventPlayingReverse();",0.9,0.94,0.95,0.97); 00672 butPlayRev->SetTextSize(0.5); 00673 butPlayRev->SetFillColor(kBlue-10); 00674 butPlayRev->Draw(); 00675 TButton *butStop = new TButton("Stop","AraDisplay::Instance()->stopEventPlaying();",0.90,0.90,0.95,0.94); 00676 butStop->SetTextSize(0.5); 00677 butStop->SetFillColor(kRed-10); 00678 butStop->Draw(); 00679 TButton *butReset; 00680 if(fIcrrData) { 00681 butReset = new TButton("Reset Avg","AraIcrrCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00682 } 00683 else { 00684 butReset = new TButton("Reset Avg","AraAtriCanvasMaker::Instance()->resetAverage();",0.85,0.975,0.90,1); 00685 00686 } 00687 butReset->SetTextSize(0.5); 00688 butReset->SetFillColor(kViolet-10); 00689 butReset->Draw();; 00690 TButton *butGoto = new TButton("Go to Event","AraDisplay::Instance()->startControlPanel();",0.85,0.95,0.9,0.975); 00691 butGoto->SetTextSize(0.5); 00692 butGoto->SetFillColor(kOrange); 00693 butGoto->Draw(); 00694 // fTimeEntryButton= new TButton("Event#","AraDisplay::Instance()->toggleTimeEventOrdering();",0.85,0.925,0.9,0.95); 00695 // fTimeEntryButton->SetTextSize(0.5); 00696 // fTimeEntryButton->SetFillColor(kGray); 00697 // fTimeEntryButton->Draw(); 00698 00699 00700 fElecViewButton = new TButton("Elec. View","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kElectronicsView); AraDisplay::Instance()->refreshEventDisplay();",0,0.975,0.1,1); 00701 fElecViewButton->SetTextSize(0.5); 00702 fElecViewButton->SetFillColor(kGray+3); 00703 fElecViewButton->Draw(); 00704 fRFViewButton = new TButton("RF Chan#","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kRFChanView); AraDisplay::Instance()->refreshEventDisplay();",0,0.95,0.1,0.975); 00705 fRFViewButton->SetTextSize(0.5); 00706 fRFViewButton->SetFillColor(kGray); 00707 fRFViewButton->Draw(); 00708 fAntViewButton = new TButton("Antenna","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kAntennaView); AraDisplay::Instance()->refreshEventDisplay();",0,0.925,0.1,0.95); 00709 fAntViewButton->SetTextSize(0.5); 00710 fAntViewButton->SetFillColor(kGray); 00711 fAntViewButton->Draw(); 00712 fMapViewButton = new TButton("Int. Map","AraDisplay::Instance()->setCanvasLayout(AraDisplayCanvasLayoutOption::kIntMapView); AraDisplay::Instance()->refreshEventDisplay();",0,0.90,0.1,0.925); 00713 fMapViewButton->SetTextSize(0.5); 00714 fMapViewButton->SetFillColor(kGray); 00715 fMapViewButton->Draw(); 00716 00717 //NEW BUTTONS 00718 fWaveformButton = new TButton("Waveform","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kWaveform); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.975,0.2,1); 00719 fWaveformButton->SetTextSize(0.4); 00720 fWaveformButton->SetFillColor(kGray+3); 00721 fWaveformButton->Draw(); 00722 fPowerButton = new TButton("FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.95,0.2,0.975); 00723 fPowerButton->SetTextSize(0.4); 00724 fPowerButton->SetFillColor(kGray); 00725 fPowerButton->Draw(); 00726 fHilbertButton = new TButton("Hilbert","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kHilbertEnvelope); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.925,0.2,0.95); 00727 fHilbertButton->SetTextSize(0.4); 00728 fHilbertButton->SetFillColor(kGray); 00729 fHilbertButton->Draw(); 00730 fAverageFFTButton = new TButton("Average FFT","AraDisplay::Instance()->setWaveformFormat(AraDisplayFormatOption::kAveragedFFT); AraDisplay::Instance()->refreshEventDisplay();",0.1,0.9,0.2,0.925); 00731 fAverageFFTButton->SetTextSize(0.4); 00732 fAverageFFTButton->SetFillColor(kGray); 00733 fAverageFFTButton->Draw(); 00734 00735 00736 } 00737 00738 void AraDisplay::setCanvasLayout(AraDisplayCanvasLayoutOption::AraDisplayCanvasLayoutOption_t option) 00739 { 00740 fCanvasLayout=option; 00741 switch(option) { 00742 case AraDisplayCanvasLayoutOption::kElectronicsView: 00743 fElecViewButton->SetFillColor(kGray+3); 00744 fRFViewButton->SetFillColor(kGray); 00745 fAntViewButton->SetFillColor(kGray); 00746 fMapViewButton->SetFillColor(kGray); 00747 break; 00748 case AraDisplayCanvasLayoutOption::kAntennaView: 00749 fElecViewButton->SetFillColor(kGray); 00750 fRFViewButton->SetFillColor(kGray); 00751 fAntViewButton->SetFillColor(kGray+3); 00752 fMapViewButton->SetFillColor(kGray); 00753 break; 00754 case AraDisplayCanvasLayoutOption::kRFChanView: 00755 fRFViewButton->SetFillColor(kGray+3); 00756 fElecViewButton->SetFillColor(kGray); 00757 fAntViewButton->SetFillColor(kGray); 00758 fMapViewButton->SetFillColor(kGray); 00759 break; 00760 case AraDisplayCanvasLayoutOption::kIntMapView: 00761 fRFViewButton->SetFillColor(kGray); 00762 fElecViewButton->SetFillColor(kGray); 00763 fAntViewButton->SetFillColor(kGray); 00764 fMapViewButton->SetFillColor(kGray+3); 00765 break; 00766 default: 00767 break; 00768 } 00769 fElecViewButton->Modified(); 00770 fRFViewButton->Modified(); 00771 fAntViewButton->Modified(); 00772 fMapViewButton->Modified(); 00773 } 00774 00775 00776 00777 void AraDisplay::setWaveformFormat(AraDisplayFormatOption::AraDisplayFormatOption_t waveformOption) 00778 { 00779 fWaveformFormat=waveformOption; 00780 if(waveformOption==AraDisplayFormatOption::kWaveform) { 00781 //Turn on fft view off 00782 fWaveformButton->SetFillColor(kGray+3); 00783 fPowerButton->SetFillColor(kGray); 00784 fHilbertButton->SetFillColor(kGray); 00785 fAverageFFTButton->SetFillColor(kGray); 00786 fWaveformButton->Modified(); 00787 fPowerButton->Modified(); 00788 fHilbertButton->Modified(); 00789 fAverageFFTButton->Modified(); 00790 } 00791 else if(waveformOption==AraDisplayFormatOption::kFFT) { 00792 //Turn fft view on 00793 fWaveformButton->SetFillColor(kGray); 00794 fPowerButton->SetFillColor(kGray+3); 00795 fHilbertButton->SetFillColor(kGray); 00796 fAverageFFTButton->SetFillColor(kGray); 00797 fWaveformButton->Modified(); 00798 fPowerButton->Modified(); 00799 fHilbertButton->Modified(); 00800 fAverageFFTButton->Modified(); 00801 } 00802 else if(waveformOption==AraDisplayFormatOption::kHilbertEnvelope) { 00803 //Turn fft view on 00804 fWaveformButton->SetFillColor(kGray); 00805 fPowerButton->SetFillColor(kGray); 00806 fHilbertButton->SetFillColor(kGray+3); 00807 fAverageFFTButton->SetFillColor(kGray); 00808 fWaveformButton->Modified(); 00809 fPowerButton->Modified(); 00810 fHilbertButton->Modified(); 00811 fAverageFFTButton->Modified(); 00812 } 00813 else if(waveformOption==AraDisplayFormatOption::kAveragedFFT) { 00814 //Turn fft view on 00815 fWaveformButton->SetFillColor(kGray); 00816 fPowerButton->SetFillColor(kGray); 00817 fHilbertButton->SetFillColor(kGray); 00818 fAverageFFTButton->SetFillColor(kGray+3); 00819 fWaveformButton->Modified(); 00820 fPowerButton->Modified(); 00821 fHilbertButton->Modified(); 00822 fAverageFFTButton->Modified(); 00823 } 00824 00825 } 00826 00827 00828 UInt_t AraDisplay::getCurrentEvent() 00829 { 00830 if(fIcrrData) { 00831 if(fIcrrUsefulEventPtr) return fIcrrUsefulEventPtr->head.eventNumber; 00832 } 00833 else { 00834 if(fAtriUsefulEventPtr) return fAtriUsefulEventPtr->eventNumber; 00835 } 00836 return 0; 00837 } 00838 00839 00840 void AraDisplay::startEventPlaying() 00841 { 00842 00843 fInEventPlayMode=1; 00844 do { 00845 gSystem->ProcessEvents(); 00846 if(!fInEventPlayMode) break; 00847 if(fEventPlaySleepMs>0) 00848 gSystem->Sleep(fEventPlaySleepMs); 00849 } 00850 while(this->displayNextEvent()==0); 00851 if(fInEventPlayMode) { 00852 Long64_t Entries=fEventTree->GetEntries(); 00853 if(fEventTree->GetEntries()!=Entries) { 00854 std::cout << Entries << "\n"; 00855 startEventPlaying(); 00856 } 00857 } 00858 } 00859 00860 00861 00862 void AraDisplay::startEventPlayingReverse() 00863 { 00864 fInEventPlayMode=1; 00865 do { 00866 gSystem->ProcessEvents(); 00867 if(!fInEventPlayMode) break; 00868 if(fEventPlaySleepMs>0) 00869 gSystem->Sleep(fEventPlaySleepMs); 00870 } 00871 while(this->displayPreviousEvent()==0); 00872 } 00873 00874 void AraDisplay::stopEventPlaying() 00875 { 00876 fInEventPlayMode=0; 00877 } 00878
Generated on Mon Dec 9 13:20:21 2013 for ARA ROOT v3.13 Software by
