Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-02 05:10:04

0001 /** \class MuonDetCleaner
0002  *
0003  * Clean collections of hits in muon detectors (CSC, DT and RPC)
0004  * for original Zmumu event and "embedded" simulated tau decay products
0005  *
0006  * \author Christian Veelken, LLR
0007  *
0008  * Clean Up from STefan Wayand, KIT
0009  *  Clean Up from Christian Winter & Sebastian Brommer, KIT
0010  *
0011  */
0012 #ifndef TauAnalysis_MCEmbeddingTools_MuonDetCleaner_H
0013 #define TauAnalysis_MCEmbeddingTools_MuonDetCleaner_H
0014 
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/Framework/interface/EventSetup.h"
0017 #include "FWCore/Framework/interface/MakerMacros.h"
0018 #include "FWCore/Framework/interface/stream/EDProducer.h"
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0021 #include "FWCore/Utilities/interface/Transition.h"
0022 
0023 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
0024 #include "DataFormats/Common/interface/Handle.h"
0025 #include "DataFormats/Common/interface/OwnVector.h"
0026 #include "DataFormats/Common/interface/RangeMap.h"
0027 #include "DataFormats/DTDigi/interface/DTDigiCollection.h"
0028 #include "DataFormats/PatCandidates/interface/Muon.h"
0029 
0030 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
0031 #include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h"
0032 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h"
0033 
0034 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
0035 #include "Geometry/DTGeometry/interface/DTGeometry.h"
0036 
0037 #include <map>
0038 #include <string>
0039 #include <vector>
0040 
0041 template <typename T1, typename T2>
0042 class MuonDetCleaner : public edm::stream::EDProducer<> {
0043 public:
0044   explicit MuonDetCleaner(const edm::ParameterSet &);
0045   ~MuonDetCleaner() override;
0046 
0047 private:
0048   typedef edm::RangeMap<T1, edm::OwnVector<T2>> RecHitCollection;
0049 
0050   void beginRun(const edm::Run &, const edm::EventSetup &) override;
0051   void produce(edm::Event &, const edm::EventSetup &) override;
0052   void fillVetoHits(const TrackingRecHit &, std::vector<uint32_t> *);
0053   uint32_t getRawDetId(const T2 &);
0054   bool checkrecHit(const TrackingRecHit &);
0055 
0056   const edm::EDGetTokenT<edm::View<pat::Muon>> mu_input_;
0057 
0058   std::map<std::string, edm::EDGetTokenT<RecHitCollection>> inputs_;
0059 
0060   TrackAssociatorParameters parameters_;
0061   TrackDetectorAssociator trackAssociator_;
0062   edm::EDGetTokenT<DTDigiCollection> m_dtDigisToken;
0063   edm::EDGetTokenT<CSCStripDigiCollection> m_cscDigisToken;
0064   edm::Handle<DTDigiCollection> m_dtDigis;
0065   edm::Handle<CSCStripDigiCollection> m_cscDigis;
0066   edm::ESHandle<DTGeometry> m_dtGeometry;
0067   edm::ESHandle<CSCGeometry> m_cscGeometry;
0068   edm::ESGetToken<DTGeometry, MuonGeometryRecord> m_dtGeometryToken;
0069   edm::ESGetToken<CSCGeometry, MuonGeometryRecord> m_cscGeometryToken;
0070   const edm::ESGetToken<Propagator, TrackingComponentsRecord> propagatorToken_;
0071   double m_digiMaxDistanceX;
0072 };
0073 
0074 #endif