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