00001 #include "TAnalysedPulse.h"
00002 #include "TPulseIsland.h"
00003
00004 #include <TH1F.h>
00005 #include <cmath>
00006 #include <sstream>
00007 #include <string>
00008 #include <iostream>
00009
00010 using std::vector;
00011 using std::string;
00012
00013 #define PrintHelp std::cout<<__FILE__<<":"<<__LINE__<<": "
00014 #define PrintValue(value) PrintHelp<<#value "= |"<<value<<"|"<<std::endl;
00015
00016 TAnalysedPulse::TAnalysedPulse(const IDs::source& sourceID,
00017 const TPulseIslandID& parentID, const TPulseIsland* parentTPI):
00018 fParentID(fDefaultValue),
00019 fTPILength(fDefaultValue),
00020 fAmplitude(fDefaultValue),
00021 fTime(fDefaultValue),
00022 fIntegral(fDefaultValue),
00023 fEnergy(fDefaultValue),
00024 fPedestal(fDefaultValue),
00025 fTriggerTime(fDefaultValue),
00026 fSource(sourceID){
00027 SetParentTPIProperties(parentID, parentTPI);
00028 }
00029
00030 TAnalysedPulse::TAnalysedPulse():
00031 fParentID(fDefaultValue),
00032 fTPILength(fDefaultValue),
00033 fAmplitude(fDefaultValue),
00034 fTime(fDefaultValue),
00035 fIntegral(fDefaultValue),
00036 fEnergy(fDefaultValue),
00037 fPedestal(fDefaultValue),
00038 fTriggerTime(fDefaultValue){
00039
00040 }
00041
00042 void TAnalysedPulse::Reset(Option_t* o) {
00043 fParentID=fDefaultValue;
00044 fTPILength=fDefaultValue;
00045 fAmplitude=fDefaultValue;
00046 fTime=fDefaultValue;
00047 fIntegral=fDefaultValue;
00048 fEnergy=fDefaultValue;
00049 fPedestal=fDefaultValue;
00050 fTriggerTime=fDefaultValue;
00051 }
00052
00053 void TAnalysedPulse::Draw(const TH1F* tpi_pulse)const{
00054 if(tpi_pulse) {
00055 std::string name=tpi_pulse->GetName();
00056 int n_bins=tpi_pulse->GetXaxis()->GetNbins();
00057 double x_max=tpi_pulse->GetXaxis()->GetXmax();
00058 double x_min=tpi_pulse->GetXaxis()->GetXmin();
00059 TH1F* tap_pulse=new TH1F((name+"_AP").c_str(),("TAP for "+name).c_str(),n_bins,x_min,x_max);
00060 int bin=tap_pulse->FindBin(fTime);
00061 tap_pulse->SetBinContent(bin,fAmplitude);
00062 }
00063 }
00064
00065 void TAnalysedPulse::SetParentTPIProperties(const TPulseIslandID& id,
00066 const TPulseIsland* pulse){
00067 SetParentID(id);
00068 if(!pulse) {
00069 std::cerr<<"NULL pointer to TPulseIsland passed as parent for TAnalysedPulse."<<std::endl;
00070 return;
00071 }
00072 SetTPILength(pulse->GetPulseLength());
00073 SetTriggerTime(pulse->GetTimeStamp()*pulse->GetClockTickInNs());
00074 }