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