00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014 #ifndef CANDSHOWERHANDLE_H
00015 #define CANDSHOWERHANDLE_H
00016
00017 #include "Navigation/XxxItr.h"
00018 #include "RecoBase/CandRecoHandle.h"
00019
00020 class CandShower;
00021
00022 class CandSliceHandle;
00023 class CandClusterHandle;
00024 class CandTrackHandle;
00025 class AlgConfig;
00026 class VldContext;
00027 class CandShowerHandle : public CandRecoHandle
00028 {
00029
00030 public:
00031 CandShowerHandle();
00032 CandShowerHandle(const CandShowerHandle &cdh);
00033 CandShowerHandle(CandShower *cd);
00034 virtual ~CandShowerHandle();
00035 virtual CandShowerHandle *DupHandle() const;
00036
00037 virtual void Trace(const char *c = "") const;
00038
00039 typedef enum EShowerType{
00040 kCC=0,
00041 kWtCC=1,
00042 kNC=2,
00043 kWtNC=3,
00044 kEM=4
00045 }ShowerType_t;
00046 void SetU(Int_t,Float_t);
00047 Float_t GetU(Int_t) const;
00048
00049 void SetV(Int_t,Float_t);
00050 Float_t GetV(Int_t) const;
00051
00052 Float_t GetZ(Int_t) const;
00053
00054 virtual void ClearUVT();
00055 Bool_t IsTPosValid(Int_t) const;
00056 Float_t GetMinU(Int_t plane, Double_t minPE=0) const;
00057 Float_t GetMaxU(Int_t plane, Double_t minPE=0) const;
00058 Float_t GetMinV(Int_t plane, Double_t minPE=0) const;
00059 Float_t GetMaxV(Int_t plane, Double_t minPE=0) const;
00060 Int_t GetNStrips(Int_t);
00061
00062 void SetMinStripPE(Double_t);
00063 Double_t GetMinStripPE() const;
00064
00065 void SetT(Int_t,StripEnd::StripEnd_t,Double_t);
00066 Double_t GetT(Int_t) const;
00067 Double_t GetT(Int_t,StripEnd::StripEnd_t) const;
00068 Double_t GetT(StripEnd::StripEnd_t,Int_t) const;
00069
00070 virtual Bool_t BelongsWithTrack(CandTrackHandle * trk,
00071 AlgConfig & ac,
00072 const VldContext * vldcptr,
00073 Double_t tolTPos2, Double_t tolZPos, Double_t tolTime);
00074 virtual Bool_t BelongsWithShower(CandShowerHandle * shw,
00075 AlgConfig & ac,
00076 const VldContext * vldcptr,
00077 Double_t tolTPos2, Double_t tolZPos, Double_t tolTime);
00078 void AddCluster(CandClusterHandle *);
00079 void RemoveCluster(CandClusterHandle *);
00080 const CandClusterHandle *GetCluster(Int_t) const;
00081 Int_t GetLastCluster() const;
00082 bool IsContained();
00083 virtual Bool_t IsUnphysical(Float_t xtalkFrac=0.660,
00084 Float_t xtalkCut=2.0);
00085
00086 void SetEnergy(Double_t, CandShowerHandle::EShowerType=kCC);
00087 Double_t GetEnergy(CandShowerHandle::EShowerType=kCC) const;
00088 void CalibrateEnergy(CandTrackHandle *associatedtrk, AlgConfig & ac);
00089 static NavKey KeyFromSlice(const CandShowerHandle *);
00090
00091 Double_t DeDx(Double_t);
00092
00093 ClassDef(CandShowerHandle,8)
00094
00095 };
00096
00097 XXXITRDEF(CandShowerHandle)
00098
00099 #endif