File indexing completed on 2024-12-05 02:47:30
0001 #ifndef HSCParticle_H
0002 #define HSCParticle_H
0003 #include "DataFormats/Common/interface/AssociationVector.h"
0004 #include "DataFormats/Common/interface/AssociationMap.h"
0005 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0006 #include "DataFormats/MuonReco/interface/Muon.h"
0007 #include "DataFormats/TrackReco/interface/Track.h"
0008 #include "DataFormats/TrackReco/interface/DeDxData.h"
0009 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0010 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0011 #include <vector>
0012
0013 #include "DataFormats/PatCandidates/interface/Muon.h"
0014 #include "DataFormats/PatCandidates/interface/PackedCandidate.h"
0015 #include "DataFormats/PatCandidates/interface/IsolatedTrack.h"
0016 #include "DataFormats/TrackReco/interface/DeDxHitInfo.h"
0017
0018 #include "DataFormats/MuonReco/interface/MuonTimeExtra.h"
0019 #include "AnalysisDataFormats/SUSYBSMObjects/interface/HSCPCaloInfo.h"
0020
0021 namespace susybsm {
0022
0023
0024 namespace HSCParticleType {
0025 enum Type { globalMuon, trackerMuon, matchedStandAloneMuon, standAloneMuon, innerTrack, unknown };
0026 }
0027
0028 class RPCHit4D {
0029 public:
0030 int id;
0031 int bx;
0032 GlobalPoint gp;
0033 bool operator<(const RPCHit4D& other) const { return gp.mag() < other.gp.mag(); }
0034 };
0035
0036 class RPCBetaMeasurement {
0037 public:
0038 bool isCandidate;
0039 float beta;
0040
0041 RPCBetaMeasurement() {
0042 isCandidate = false;
0043 beta = -9999;
0044 }
0045 };
0046
0047 class HSCParticle {
0048 public:
0049
0050 HSCParticle() {}
0051
0052
0053 bool hasTrack() const { return track_.packedCandRef().isNonnull(); }
0054 bool hasMuon() const { return muon_.isNonnull(); }
0055 bool hasMuonRef() const { return muonRef_.isNonnull(); }
0056 bool hasMTMuonRef() const { return MTMuonRef_.isNonnull(); }
0057 bool hasTrackRef() const { return trackRef_.isNonnull(); }
0058 bool hasTrackIsoRef() const { return trackIsoRef_.isNonnull(); }
0059 bool hasRpcInfo() const { return rpc_.beta != -9999; }
0060 bool hasCaloInfo() const { return caloInfoRef_.isNonnull(); }
0061
0062
0063 void setDeDxHitInfo(const reco::DeDxHitInfo* data) { dedxHitInfo_ = data; }
0064 void setTrack(const pat::IsolatedTrack& data) { track_ = data; }
0065 void setMuon(const pat::MuonRef& data) { muon_ = data; }
0066 void setMuon(const reco::MuonRef& data) { muonRef_ = data; }
0067 void setMTMuon(const reco::MuonRef& data) { MTMuonRef_ = data; }
0068 void setTrack(const reco::TrackRef& data) { trackRef_ = data; }
0069 void setTrackIso(const reco::TrackRef& data) { trackIsoRef_ = data; }
0070 void setRpc(const RPCBetaMeasurement& data) { rpc_ = data; }
0071 void setCaloInfo(const HSCPCaloInfoRef& data) { caloInfoRef_ = data; }
0072
0073
0074 const reco::DeDxHitInfo* dedxHitInfo() const { return dedxHitInfo_; }
0075 pat::IsolatedTrack track() const { return track_; }
0076 pat::MuonRef muon() const { return muon_; }
0077 reco::TrackRef trackRef() const { return trackRef_; }
0078 reco::TrackRef trackIsoRef() const { return trackIsoRef_; }
0079 reco::MuonRef muonRef() const { return muonRef_; }
0080 reco::MuonRef MTMuonRef() const { return MTMuonRef_; }
0081 HSCPCaloInfoRef caloInfoRef() const { return caloInfoRef_; }
0082 const RPCBetaMeasurement& rpc() const { return rpc_; }
0083
0084
0085 float p() const;
0086 float pt() const;
0087 int type() const;
0088
0089 private:
0090 const reco::DeDxHitInfo* dedxHitInfo_ = nullptr;
0091 pat::IsolatedTrack track_;
0092 pat::MuonRef muon_;
0093 reco::TrackRef trackRef_;
0094 reco::TrackRef trackIsoRef_;
0095 reco::MuonRef muonRef_;
0096 reco::MuonRef MTMuonRef_;
0097 HSCPCaloInfoRef caloInfoRef_;
0098
0099 RPCBetaMeasurement rpc_;
0100 };
0101
0102 typedef std::vector<HSCParticle> HSCParticleCollection;
0103 typedef edm::Ref<HSCParticleCollection> HSCParticleRef;
0104 typedef edm::RefProd<HSCParticleCollection> HSCParticleRefProd;
0105 typedef edm::RefVector<HSCParticleCollection> HSCParticleRefVector;
0106 typedef edm::AssociationMap<edm::OneToOne<reco::TrackCollection, EcalRecHitCollection> > TracksEcalRecHitsMap;
0107 }
0108 #endif