00001 #ifndef TAnalysedPulse_h 00002 #define TAnalysedPulse_h 00003 00004 #include <TObject.h> 00005 #include "TSetupData.h" 00006 #include "definitions.h" 00007 #include "IdSource.h" 00008 #include <map> 00009 #include <vector> 00010 #include "FlyWeight.h" 00011 class TH1F; 00012 class TPulseIsland; 00013 00030 class TAnalysedPulse : public TObject { 00031 public: 00032 struct Tag{}; 00033 00034 public: 00038 TAnalysedPulse(); 00039 00040 virtual void Copy(TObject& rhs)const{ 00041 TObject::Copy(rhs); 00042 if(rhs.InheritsFrom(Class())){ 00043 TAnalysedPulse* tap=static_cast<TAnalysedPulse*>(&rhs); 00044 tap->fParentID=fParentID; 00045 tap->fTPILength=fTPILength; 00046 tap->fAmplitude=fAmplitude; 00047 tap->fTime=fTime; 00048 tap->fIntegral=fIntegral; 00049 tap->fEnergy=fEnergy; 00050 tap->fPedestal=fPedestal; 00051 tap->fTriggerTime=fTriggerTime; 00052 tap->fSource=fSource; 00053 } 00054 } 00055 00056 public: 00072 TAnalysedPulse(const IDs::source& sourceID,const TPulseIslandID& parentID, const TPulseIsland* parentTPI); 00073 virtual ~TAnalysedPulse() {}; 00074 00077 void Reset(Option_t* o = ""); 00078 00094 virtual void Draw(const TH1F* tpi_pulse)const; 00095 00097 00098 TPulseIslandID GetParentID()const{return fParentID;}; 00099 int GetTPILength()const{return fTPILength;}; 00100 double GetAmplitude()const{return fAmplitude;}; 00101 double GetTime()const{return fTime;}; 00102 double GetIntegral()const{return fIntegral;}; 00103 double GetEnergy()const{return fEnergy;}; 00104 double GetPedestal()const{return fPedestal;}; 00105 double GetTriggerTime()const{return fTriggerTime;}; 00106 const IDs::source& GetSource()const{return fSource.GetValue();}; 00108 00117 00118 void SetParentID(const TPulseIslandID& val){ fParentID=val;}; 00119 void SetTPILength(const int& val){ fTPILength=val;}; 00120 void SetAmplitude(const double& val){ fAmplitude=val;}; 00121 void SetTime(const double& val){ fTime=val;}; 00122 void SetIntegral(const double& val){ fIntegral=val;}; 00123 void SetEnergy(const double& val){ fEnergy=val;}; 00124 void SetPedestal(const double& val){ fPedestal=val;}; 00125 void SetTriggerTime(const double& val){ fTriggerTime=val;}; 00126 void SetParentTPIProperties(const TPulseIslandID& id, 00127 const TPulseIsland* parent); 00129 00130 public: 00132 00133 bool IsParentIDSet()const{return fParentID!=fDefaultValue;}; 00134 bool IsTPILengthSet()const{return fTPILength!=fDefaultValue;}; 00135 bool IsAmplitudeSet()const{return fAmplitude!=fDefaultValue;}; 00136 bool IsTimeSet()const{return fTime!=fDefaultValue;}; 00137 bool IsIntegralSet()const{return fIntegral!=fDefaultValue;}; 00138 bool IsEnergySet()const{return fEnergy!=fDefaultValue;}; 00139 bool IsPedestalSet()const{return fPedestal!=fDefaultValue;}; 00140 bool IsTriggerTimeSet()const{return fTriggerTime!=fDefaultValue;}; 00142 00143 private: 00144 00145 00146 private: 00147 TPulseIslandID fParentID; 00148 int fTPILength; 00149 double fAmplitude; 00150 double fTime; 00151 double fIntegral; 00152 double fEnergy; 00153 double fPedestal; 00154 double fTriggerTime; 00155 //IDs::source fSource; 00156 FlyWeight<IDs::source,Tag> fSource; 00157 00161 static const int fDefaultValue = definitions::DefaultValue; 00162 00163 ClassDef(TAnalysedPulse, 5); 00164 }; 00165 00166 #endif