TV1730DppWaveform.cxx
Go to the documentation of this file.00001 #include "TV1730DppWaveform.h"
00002
00003 #include "TV1730DppData.hxx"
00004 #include "TDirectory.h"
00005
00006
00007
00008 TV1730DppWaveform::TV1730DppWaveform(){
00009
00010 SetNumSamples(64);
00011 SetNanosecsPerSample(2);
00012
00013 CreateHistograms();
00014 }
00015
00016
00017 void TV1730DppWaveform::CreateHistograms(){
00018
00019
00020 char tname[100];
00021 sprintf(tname,"V1730Dpp_%i_%i",0,0);
00022
00023 TH1D *tmp = (TH1D*)gDirectory->Get(tname);
00024 if (tmp) return;
00025
00026
00027 clear();
00028
00029 for(int i = 0; i < 16; i++){
00030
00031 char name[100];
00032 char title[100];
00033 sprintf(name,"V1730Dpp_%i",i);
00034
00035 sprintf(title,"V1730 Waveform for channel=%i",i);
00036
00037 TH1D *tmp = new TH1D(name, title, this->numSamples, 0, this->numSamples);
00038 tmp->GetXaxis()->SetLimits(0, this->numSamples*this->nanosecsPerSample);
00039 tmp->SetXTitle("ns");
00040 tmp->SetYTitle("ADC value");
00041
00042 push_back(tmp);
00043 }
00044
00045
00046 }
00047
00048
00049
00050
00051 void TV1730DppWaveform::UpdateHistograms(TDataContainer& dataContainer){
00052
00053 int eventid = dataContainer.GetMidasData().GetEventId();
00054 int timestamp = dataContainer.GetMidasData().GetTimeStamp();
00055
00056 TV1730DppData *v1730 = dataContainer.GetEventData<TV1730DppData>("V730");
00057
00058
00059 if(v1730 ){
00060
00061
00062 std::vector<ChannelMeasurement> measurements = v1730->GetMeasurements();
00063
00064 for(int i = 0; i < measurements.size(); i++){
00065
00066 int chan = measurements[i].GetChannel();
00067
00068
00069 for(int ib = 0; ib < this->numSamples; ib++)
00070 GetHistogram(chan)->SetBinContent(ib+1,0);
00071
00072
00073 float offset = 0;
00074 if(chan == 1)
00075 offset = 35;
00076
00077 for(int ib = 0; ib < measurements[i].GetNSamples(); ib++){
00078
00079
00080 GetHistogram(chan)->SetBinContent(ib+1, measurements[i].GetSample(ib)-offset);
00081
00082
00083 }
00084
00085 }
00086
00087 }
00088
00089 }
00090
00091
00092 void TV1730DppWaveform::Reset(){
00093
00094
00095 for(int iBoard=0; iBoard<32; iBoard++){
00096 for(int i = 0; i < 8; i++){
00097 int index = iBoard*8 + i;
00098
00099
00100 for(int ib = 0; ib < 2500; ib++)
00101 GetHistogram(index)->SetBinContent(ib,0);
00102 GetHistogram(index)->Reset();
00103 }
00104 }
00105 }
00106
00107
00108 void TV1730DppWaveform::BeginRun(int transition,int run,int time){
00109
00110 CreateHistograms();
00111
00112 }
00113
00114
00115 void TV1730DppWaveform::EndRun(int transition,int run,int time){
00116
00117 }