File indexing completed on 2023-10-29 11:57:40
0001 #ifndef DataFormats_HGCalReco_TICLCandidate_h
0002 #define DataFormats_HGCalReco_TICLCandidate_h
0003
0004 #include "DataFormats/Candidate/interface/LeafCandidate.h"
0005 #include "DataFormats/Common/interface/Ref.h"
0006 #include "DataFormats/HGCalReco/interface/Trackster.h"
0007 #include "DataFormats/Math/interface/Point3D.h"
0008 #include "DataFormats/TrackReco/interface/Track.h"
0009 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0010
0011
0012
0013 class TICLCandidate : public reco::LeafCandidate {
0014 public:
0015 typedef ticl::Trackster::ParticleType ParticleType;
0016
0017 TICLCandidate(Charge q, const LorentzVector& p4)
0018 : LeafCandidate(q, p4), time_(0.f), timeError_(-1.f), rawEnergy_(0.f), idProbabilities_{} {}
0019
0020 TICLCandidate() : LeafCandidate(), time_(0.f), timeError_(-1.f), rawEnergy_(0.f), idProbabilities_{} {}
0021
0022 TICLCandidate(const edm::Ptr<ticl::Trackster>& trackster)
0023 : LeafCandidate(),
0024 time_(trackster->time()),
0025 timeError_(trackster->timeError()),
0026 rawEnergy_(0.f),
0027 tracksters_({trackster}),
0028 idProbabilities_{} {}
0029
0030 inline float time() const { return time_; }
0031 inline float timeError() const { return timeError_; }
0032
0033 void setTime(float time) { time_ = time; };
0034 void setTimeError(float timeError) { timeError_ = timeError; }
0035
0036 inline const edm::Ptr<reco::Track> trackPtr() const { return trackPtr_; }
0037 void setTrackPtr(const edm::Ptr<reco::Track>& trackPtr) { trackPtr_ = trackPtr; }
0038
0039 inline float rawEnergy() const { return rawEnergy_; }
0040 void setRawEnergy(float rawEnergy) { rawEnergy_ = rawEnergy; }
0041
0042 inline const std::vector<edm::Ptr<ticl::Trackster> > tracksters() const { return tracksters_; };
0043
0044 void setTracksters(const std::vector<edm::Ptr<ticl::Trackster> >& tracksters) { tracksters_ = tracksters; }
0045 void addTrackster(const edm::Ptr<ticl::Trackster>& trackster) {
0046 tracksters_.push_back(trackster);
0047 time_ = trackster->time();
0048 timeError_ = trackster->timeError();
0049 }
0050
0051 inline float id_probability(ParticleType type) const {
0052
0053 return idProbabilities_[(int)type];
0054 }
0055
0056 inline const std::array<float, 8>& idProbabilities() const { return idProbabilities_; }
0057
0058 void zeroProbabilities() {
0059 for (auto& p : idProbabilities_) {
0060 p = 0.f;
0061 }
0062 }
0063
0064 void setIdProbabilities(const std::array<float, 8>& idProbs) { idProbabilities_ = idProbs; }
0065 inline void setIdProbability(ParticleType type, float value) { idProbabilities_[int(type)] = value; }
0066
0067 private:
0068 float time_;
0069 float timeError_;
0070 edm::Ptr<reco::Track> trackPtr_;
0071
0072 float rawEnergy_;
0073
0074
0075
0076 std::vector<edm::Ptr<ticl::Trackster> > tracksters_;
0077
0078
0079 std::array<float, 8> idProbabilities_;
0080 };
0081 #endif