File indexing completed on 2024-04-06 12:30:46
0001 #ifndef MCTruth_RPCHitAssociator_h
0002 #define MCTruth_RPCHitAssociator_h
0003
0004 #include "DataFormats/Common/interface/Handle.h"
0005 #include "DataFormats/MuonDetId/interface/RPCDetId.h"
0006 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0007 #include "FWCore/Framework/interface/ConsumesCollector.h"
0008 #include "FWCore/Framework/interface/ESHandle.h"
0009 #include "FWCore/Framework/interface/Event.h"
0010 #include "FWCore/Utilities/interface/InputTag.h"
0011 #include "SimDataFormats/EncodedEventId/interface/EncodedEventId.h"
0012 #include "SimDataFormats/RPCDigiSimLink/interface/RPCDigiSimLink.h"
0013 #include "SimDataFormats/TrackingHit/interface/PSimHit.h"
0014 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0015
0016 #include <map>
0017 #include <set>
0018 #include <string>
0019 #include <vector>
0020
0021 #include "DataFormats/Common/interface/DetSetVector.h"
0022 #include "DataFormats/DetId/interface/DetId.h"
0023 #include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
0024 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0025 #include "DataFormats/RPCRecHit/interface/RPCRecHitCollection.h"
0026 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0027 #include "Geometry/RPCGeometry/interface/RPCGeometry.h"
0028 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0029 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
0030 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0031
0032 class RPCHitAssociator {
0033 public:
0034 typedef edm::DetSetVector<RPCDigiSimLink> RPCDigiSimLinks;
0035 typedef std::pair<uint32_t, EncodedEventId> SimHitIdpr;
0036
0037 class Config {
0038 public:
0039 Config(const edm::ParameterSet &, edm::ConsumesCollector ic);
0040
0041 private:
0042 friend class RPCHitAssociator;
0043
0044 edm::InputTag RPCdigisimlinkTag;
0045
0046 edm::InputTag RPCsimhitsTag;
0047 edm::InputTag RPCsimhitsXFTag;
0048
0049 edm::EDGetTokenT<CrossingFrame<PSimHit>> RPCsimhitsXFToken_;
0050 edm::EDGetTokenT<edm::PSimHitContainer> RPCsimhitsToken_;
0051 edm::EDGetTokenT<edm::DetSetVector<RPCDigiSimLink>> RPCdigisimlinkToken_;
0052
0053 bool crossingframe;
0054 };
0055
0056
0057 RPCHitAssociator(const edm::Event &e, const Config &conf);
0058
0059 std::vector<SimHitIdpr> associateRecHit(const TrackingRecHit &hit) const;
0060 std::set<RPCDigiSimLink> findRPCDigiSimLink(uint32_t rpcDetId, int strip, int bx) const;
0061
0062
0063 private:
0064 void initEvent(const edm::Event &);
0065
0066 Config const &theConfig;
0067 edm::Handle<edm::DetSetVector<RPCDigiSimLink>> _thelinkDigis;
0068 std::map<unsigned int, edm::PSimHitContainer> _SimHitMap;
0069 };
0070
0071 #endif