ARA ROOT Test BEd Software

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 doxygen 1.4.7