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
00008 TDT724Waveform::TDT724Waveform(){
00009
00010 SetNanosecsPerSample(10);
00011
00012 CreateHistograms();
00013
00014 }
00015
00016
00017 void TDT724Waveform::CreateHistograms(){
00018
00019
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;
00027 int numSamples = fWFLength / nanosecsPerSample;
00028
00029
00030 clear();
00031
00032 for(int i = 0; i < 2; i++){
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
00070 for(int ib = 0; ib < GetHistogram(chan)->GetNbinsX(); ib++)
00071 GetHistogram(chan)->SetBinContent(ib+1,0);
00072
00073
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++){
00089 int index = i;
00090
00091
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 }