File indexing completed on 2024-04-06 12:05:07
0001 #ifndef RecoCandidate_RecoChargedRefCandidate_h
0002 #define RecoCandidate_RecoChargedRefCandidate_h
0003
0004 #include "DataFormats/Candidate/interface/LeafRefCandidateT.h"
0005 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0006 #include "DataFormats/TrackReco/interface/Track.h"
0007
0008 namespace reco {
0009
0010 typedef LeafRefCandidateT RecoChargedRefCandidateBase;
0011
0012 class RecoChargedRefCandidate : public LeafRefCandidateT {
0013 public:
0014 RecoChargedRefCandidate() {}
0015 RecoChargedRefCandidate(TrackRef ref, float m) : LeafRefCandidateT(ref, m) {}
0016
0017 ~RecoChargedRefCandidate() override {}
0018
0019 RecoChargedRefCandidate* clone() const override { return new RecoChargedRefCandidate(*this); }
0020
0021 reco::TrackRef track() const { return getRef<reco::TrackRef>(); }
0022
0023
0024 const reco::Track* bestTrack() const override {
0025 if (track().isNonnull() && track().isAvailable())
0026 return &(*track());
0027 else
0028 return nullptr;
0029 }
0030
0031
0032 float dzError() const override {
0033 const Track* tr = bestTrack();
0034 if (tr != nullptr)
0035 return tr->dzError();
0036 else
0037 return 0;
0038 }
0039
0040 float dxyError() const override {
0041 const Track* tr = bestTrack();
0042 if (tr != nullptr)
0043 return tr->dxyError();
0044 else
0045 return 0;
0046 }
0047 };
0048 }
0049
0050 #endif