00001 #ifndef TTEMPLATECONVOLVEANALYSEDPULSE_H 00002 #define TTEMPLATECONVOLVEANALYSEDPULSE_H 00003 00004 #include "TAnalysedPulse.h" 00005 #include "TTemplate.h" 00006 #include <TRef.h> 00007 #include <TObject.h> 00008 #ifndef __CINT__ 00009 #include "debug_tools.h" 00010 #include <iostream> 00011 #endif// __CINT__ 00012 00013 class TTemplateConvolveAnalysedPulse:public TAnalysedPulse{ 00014 00015 public: 00016 typedef std::vector<double> SamplesVector; 00017 00018 public: 00020 TTemplateConvolveAnalysedPulse(); 00021 00025 TTemplateConvolveAnalysedPulse(const IDs::source& sourceID, 00026 const TPulseIslandID& parentID, const TPulseIsland* parentTPI); 00027 00028 // defined in .cpp file to force vtable to be built 00029 virtual ~TTemplateConvolveAnalysedPulse(); 00030 00031 virtual void Copy(TObject& rhs)const{ 00032 TAnalysedPulse::Copy(rhs); 00033 if(rhs.InheritsFrom(Class())){ 00034 TTemplateConvolveAnalysedPulse* tap=static_cast<TTemplateConvolveAnalysedPulse*>(&rhs); 00035 tap->fNPeaks =fNPeaks; 00036 tap->fPeakRank =fPeakRank; 00037 tap->fIntegralRatio=fIntegralRatio; 00038 tap->fQuad=fQuad; 00039 tap->fLinear=fLinear; 00040 tap->fConstant=fConstant; 00041 tap->fTimeOffset=fTimeOffset; 00042 tap->fAmplitudeScale=fAmplitudeScale; 00043 } 00044 } 00045 00048 double GetIntegralRatio()const{return fIntegralRatio;} 00049 int GetNPeaks()const{return fNPeaks;} 00050 int GetPeakRank()const{return fPeakRank;} 00051 const TTemplate* GetTemplate()const{return (const TTemplate*) fTemplate.GetObject();} 00053 00056 void SetNPeaks(int val){fNPeaks=val;} 00057 void SetPeakRank(int val){ fPeakRank=val; } 00058 void SetTimeOffset(double val){ fTimeOffset=val; } 00059 void SetAmplitudeScale(double val){ fAmplitudeScale=val; } 00060 void SetIntegralRatio(double val){fIntegralRatio=val;} 00061 void SetQuadraticFit(double a, double b, double c){fQuad=a; fLinear=b; fConstant=c;}; 00062 void SetEnergyConvolve(const SamplesVector& r){fEnergySamples=r;}; 00063 void SetTimeConvolve(const SamplesVector& r){fTimeSamples=r;}; 00064 void SetTemplate(TTemplate* val){fTemplate=val;} 00066 00068 virtual void Draw(const TH1F* tpi_pulse)const; 00069 00070 private: 00071 int fNPeaks; 00072 int fPeakRank; 00073 double fIntegralRatio; 00074 double fQuad, fLinear, fConstant; 00075 double fTimeOffset, fAmplitudeScale; 00076 TRef fTemplate; 00077 SamplesVector fEnergySamples; 00078 SamplesVector fTimeSamples; 00079 00080 ClassDef(TTemplateConvolveAnalysedPulse,2); 00081 }; 00082 00083 #endif // TTEMPLATECONVOLVEANALYSEDPULSE_H