File indexing completed on 2024-04-06 12:30:46
0001 #ifndef MCTruth_CSCHitAssociator_h
0002 #define MCTruth_CSCHitAssociator_h
0003
0004 #include "CondFormats/CSCObjects/interface/CSCBadChambers.h"
0005 #include "CondFormats/DataRecord/interface/CSCBadChambersRcd.h"
0006 #include "DataFormats/CSCDigi/interface/CSCStripDigi.h"
0007 #include "DataFormats/CSCDigi/interface/CSCWireDigi.h"
0008 #include "DataFormats/CSCRecHit/interface/CSCRecHit2D.h"
0009 #include "DataFormats/Common/interface/DetSetVector.h"
0010 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0011 #include "FWCore/Framework/interface/ConsumesCollector.h"
0012 #include "FWCore/Framework/interface/Event.h"
0013 #include "FWCore/Framework/interface/EventSetup.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015 #include "FWCore/Utilities/interface/InputTag.h"
0016 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
0017 #include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
0018 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h"
0019 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h"
0020 #include "SimDataFormats/Track/interface/SimTrackContainer.h"
0021 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h"
0022 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h"
0023
0024 class MuonGeometryRecord;
0025
0026 class CSCHitAssociator {
0027 public:
0028 typedef edm::DetSetVector<StripDigiSimLink> DigiSimLinks;
0029 typedef edm::DetSetVector<StripDigiSimLink> WireDigiSimLinks;
0030 typedef edm::DetSet<StripDigiSimLink> LayerLinks;
0031 typedef std::pair<uint32_t, EncodedEventId> SimHitIdpr;
0032
0033 class Config {
0034 public:
0035 Config(const edm::ParameterSet &, edm::ConsumesCollector iC);
0036
0037 private:
0038 friend class CSCHitAssociator;
0039 const edm::InputTag linksTag_;
0040 const edm::EDGetTokenT<DigiSimLinks> linksToken_;
0041 const edm::ESGetToken<CSCGeometry, MuonGeometryRecord> geomToken_;
0042 };
0043
0044 CSCHitAssociator(const edm::Event &, const edm::EventSetup &, const Config &);
0045
0046 std::vector<SimHitIdpr> associateHitId(const TrackingRecHit &) const;
0047 std::vector<SimHitIdpr> associateCSCHitId(const CSCRecHit2D *) const;
0048
0049 private:
0050 void initEvent(const edm::Event &, const edm::EventSetup &);
0051
0052 const Config &theConfig;
0053 const DigiSimLinks *theDigiSimLinks;
0054
0055 const CSCGeometry *cscgeom;
0056 };
0057
0058 #endif