TDT724Waveform.cxx

Go to the documentation of this file.
00001 #include "TDT724Waveform.h"
00002 
00003 #include "TDT724RawData.hxx"
00004 #include "TDirectory.h"
00005 
00006 
00007 /// Reset the histograms for this canvas
00008 TDT724Waveform::TDT724Waveform(){
00009 
00010   SetNanosecsPerSample(10); //ADC clock runs at 100Mhz on the 724 = units of 10 nsecs
00011         
00012         CreateHistograms();
00013 
00014 }
00015 
00016 
00017 void TDT724Waveform::CreateHistograms(){
00018 
00019   // check if we already have histogramss.
00020   char tname[100];
00021   sprintf(tname,"DT724_%i",0);
00022 
00023   TH1D *tmp = (TH1D*)gDirectory->Get(tname);
00024   if (tmp) return;
00025 
00026         int fWFLength = 2000; // Need a better way of detecting this...
00027   int numSamples = fWFLength / nanosecsPerSample;
00028 
00029   // Otherwise make histograms
00030   clear();
00031 
00032         for(int i = 0; i < 2; i++){ // loop over 2 channels
00033                 
00034                 char name[100];
00035                 char title[100];
00036                 sprintf(name,"DT724_%i",i);
00037 
00038                 sprintf(title,"DT724 Waveform for channel=%i",i);       
00039                 
00040                 TH1D *tmp = new TH1D(name, title, numSamples, 0, fWFLength);
00041                 tmp->SetXTitle("ns");
00042                 tmp->SetYTitle("ADC value");
00043                 
00044                 push_back(tmp);
00045         }
00046         std::cout << "TDT724Waveform done init...... " << std::endl;
00047 
00048 }
00049 
00050 
00051 void TDT724Waveform::UpdateHistograms(TDataContainer& dataContainer){
00052 
00053   int eventid = dataContainer.GetMidasData().GetEventId();
00054   int timestamp = dataContainer.GetMidasData().GetTimeStamp();
00055 
00056         TDT724RawData *dt724 = dataContainer.GetEventData<TDT724RawData>("D724");
00057         
00058         if(dt724){      
00059                 
00060 
00061                 std::vector<RawChannelMeasurement> measurements = dt724->GetMeasurements();
00062 
00063                 for(int i = 0; i < measurements.size(); i++){
00064                         
00065                         int chan = measurements[i].GetChannel();
00066                         
00067                         std::cout << "TDT724Waveform Handling first... " << std::endl;
00068 
00069                         // Reset the histogram...
00070                         for(int ib = 0; ib < GetHistogram(chan)->GetNbinsX(); ib++)
00071                                 GetHistogram(chan)->SetBinContent(ib+1,0);
00072 
00073                         //std::cout << "Nsamples " <<  measurements[i].GetNSamples() << std::endl;
00074                         for(int ib = 0; ib < measurements[i].GetNSamples(); ib++){
00075                                 GetHistogram(chan)->SetBinContent(ib+1, measurements[i].GetSample(ib));
00076                         }
00077 
00078                 }
00079   }
00080 
00081 }
00082 
00083 
00084 
00085 void TDT724Waveform::Reset(){
00086 
00087 
00088         for(int i = 0; i < 8; i++){ // loop over channels
00089                 int index =  i;
00090 
00091                 // Reset the histogram...
00092                 for(int ib = 0; ib < GetHistogram(index)->GetNbinsX(); ib++) {
00093                         GetHistogram(index)->SetBinContent(ib, 0);
00094                 }
00095 
00096                 GetHistogram(index)->Reset();
00097     
00098   }
00099 }

Generated on 12 Feb 2016 for ROOT Analyzer by  doxygen 1.6.1