00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014 #ifndef CANDTRACKHANDLE_H
00015 #define CANDTRACKHANDLE_H
00016
00017 #include "Conventions/PlaneView.h"
00018 #include "Navigation/XxxItr.h"
00019 #include "RecoBase/CandRecoHandle.h"
00020 class CandTrack;
00021 class AlgConfig;
00022 class VldContext;
00023 class CandShowerHandle;
00024
00025 class CandTrackHandle : public CandRecoHandle
00026 {
00027
00028 public:
00029 CandTrackHandle();
00030 CandTrackHandle(const CandTrackHandle &cdh);
00031 CandTrackHandle(CandTrack *cd);
00032 virtual ~CandTrackHandle();
00033 virtual CandTrackHandle *DupHandle() const;
00034
00035 virtual void Trace(const char *c = "") const;
00036
00037 static NavKey KeyFromSlice(const CandTrackHandle *);
00038
00039 void SetU(Int_t,Float_t);
00040 void SetV(Int_t,Float_t);
00041 void SetdS(Int_t,Float_t);
00042 void SetTrackPointError(Int_t,Float_t);
00043 void SetRange(Int_t plane,Float_t g_cm2);
00044 void SetT(Int_t,StripEnd::StripEnd_t,Double_t);
00045 Bool_t BelongsWithTrack(CandTrackHandle * trk,
00046 AlgConfig & ac,
00047 const VldContext * vldcptr,
00048 Double_t tolTPos2, Double_t tolZPos, Double_t tolTime);
00049 Bool_t BelongsWithShower(CandShowerHandle * shw,
00050 AlgConfig & ac,
00051 const VldContext * vldcptr,
00052 Double_t tolTPos2, Double_t tolZPos, Double_t tolTime);
00053 void SetVtxTrace(Double_t);
00054 void SetVtxTraceZ(Double_t);
00055 void SetVtxnActiveUpstream(Int_t);
00056 void SetEndTrace(Double_t);
00057 void SetEndTraceZ(Double_t);
00058 void SetEndnActiveDownstream(Int_t);
00059 void SetVtxDistToEdge(Double_t);
00060 void SetEndDistToEdge(Double_t);
00061
00062
00063 virtual void ClearMaps();
00064 virtual void ClearUVT();
00065
00066 Bool_t IsTPosValid(Int_t) const;
00067 Float_t GetU(Int_t) const;
00068 Float_t GetV(Int_t) const;
00069 Float_t GetZ(Int_t) const;
00070
00071 Int_t GetNTrackPlane(PlaneView::PlaneView_t = PlaneView::kUnknown) const;
00072
00073 Float_t GetTrackPointError(Int_t) const;
00074 Double_t GetT(Int_t) const;
00075 Double_t GetT(Int_t,StripEnd::StripEnd_t) const;
00076 Double_t GetT(StripEnd::StripEnd_t,Int_t) const;
00077 Float_t GetdS(Int_t = -1) const;
00078 Float_t GetRange(Int_t = -1) const;
00079
00080 Double_t GetVtxTrace() const;
00081 Double_t GetVtxTraceZ() const;
00082 Int_t GetVtxnActiveUpstream() const;
00083 Double_t GetEndTrace() const;
00084 Double_t GetEndTraceZ() const;
00085 Int_t GetEndnActiveDownstream() const;
00086 Double_t GetVtxDistToEdge() const;
00087 Double_t GetEndDistToEdge() const;
00088
00089 virtual Double_t GetScore() const;
00090
00091 Int_t IsInShower(CandStripHandle *) const;
00092 void SetInShower(CandStripHandle *, Int_t);
00093
00094 virtual Double_t GetMomentum() const;
00095 virtual void SetMomentum(Double_t);
00096
00097 Bool_t IsUnphysical(Float_t trkFrac=0.660,Float_t asymCut=0.500,
00098 Float_t xtalkFrac=0.660,Float_t xtalkCut=2.0);
00099 Bool_t IsContained();
00100
00101 void SetNTrackStrip(Int_t);
00102 void SetNTrackDigit(Int_t);
00103 void SetNTimeFitDigit(Int_t);
00104 void SetTimeFitChi2(Double_t);
00105 void SetTimeForwardFitRMS(Double_t);
00106 void SetTimeForwardFitNDOF(Int_t);
00107 void SetTimeBackwardFitRMS(Double_t);
00108 void SetTimeBackwardFitNDOF(Int_t);
00109
00110 Int_t GetNTrackStrip() const;
00111 Int_t GetNTrackDigit() const;
00112 Int_t GetNTimeFitDigit() const;
00113 Double_t GetTimeFitChi2() const;
00114 Double_t GetTimeForwardFitRMS() const;
00115 Int_t GetTimeForwardFitNDOF() const;
00116 Double_t GetTimeBackwardFitRMS() const;
00117 Int_t GetTimeBackwardFitNDOF() const;
00118
00119
00120 ClassDef(CandTrackHandle,7)
00121
00122 };
00123
00124 XXXITRDEF(CandTrackHandle)
00125
00126 #endif // CANDTRACKHANDLE_H