ARA ROOT v3.13 Software

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