File indexing completed on 2023-03-17 11:20:50
0001 #ifndef RecoMuon_SegSelector_H
0002 #define RecoMuon_SegSelector_H
0003
0004
0005
0006
0007
0008
0009 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0010 #include "FWCore/Framework/interface/ESHandle.h"
0011 #include <DataFormats/Common/interface/Handle.h>
0012
0013 #include <DataFormats/MuonDetId/interface/CSCDetId.h>
0014 #include <DataFormats/MuonDetId/interface/DTChamberId.h>
0015 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
0016 #include <DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h>
0017 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
0018 #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h>
0019 #include <DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h>
0020 #include <DataFormats/DTRecHit/interface/DTRecSegment4D.h>
0021 #include <DataFormats/DTRecHit/interface/DTRecSegment2DCollection.h>
0022 #include <DataFormats/DTRecHit/interface/DTRecSegment2D.h>
0023 #include <DataFormats/DTRecHit/interface/DTRecHitCollection.h>
0024 #include <DataFormats/DTRecHit/interface/DTRecHit1D.h>
0025
0026 #include <SimDataFormats/Track/interface/SimTrackContainer.h>
0027 #include <SimDataFormats/TrackingHit/interface/PSimHitContainer.h>
0028
0029 #include <Geometry/CSCGeometry/interface/CSCGeometry.h>
0030 #include <Geometry/CSCGeometry/interface/CSCChamber.h>
0031 #include <Geometry/CSCGeometry/interface/CSCLayer.h>
0032 #include <Geometry/CSCGeometry/interface/CSCLayerGeometry.h>
0033 #include <Geometry/DTGeometry/interface/DTGeometry.h>
0034 #include <Geometry/DTGeometry/interface/DTChamber.h>
0035 #include <Geometry/DTGeometry/interface/DTLayer.h>
0036 #include <Geometry/Records/interface/MuonGeometryRecord.h>
0037
0038 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0039 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0040 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0041 #include "DataFormats/GeometryVector/interface/LocalVector.h"
0042
0043 #include <vector>
0044 #include <map>
0045 #include <string>
0046 #include <utility>
0047
0048
0049 class CSCLayer;
0050 class CSCDetId;
0051 class DTLayerId;
0052 class DTSuperLayerId;
0053 class DTChamberId;
0054
0055
0056 struct SimSegment {
0057 int chamber_type;
0058 CSCDetId csc_DetId;
0059 DTChamberId dt_DetId;
0060 LocalPoint sLocalOrg;
0061 GlobalVector sGlobalVec;
0062 GlobalPoint sGlobalOrg;
0063 std::vector<PSimHit> simhit_v;
0064 };
0065
0066 class SegSelector {
0067 public:
0068
0069 explicit SegSelector(const edm::ParameterSet& pset);
0070
0071
0072
0073 virtual ~SegSelector();
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083 std::vector<SimSegment> Sim_CSCSegments(int trkId,
0084 const edm::Handle<edm::PSimHitContainer> simHits,
0085 edm::ESHandle<CSCGeometry> cscGeom);
0086 std::vector<SimSegment> Sim_DTSegments(int trkId,
0087 const edm::Handle<edm::PSimHitContainer> simHits,
0088 edm::ESHandle<DTGeometry> dtGeom);
0089
0090 std::vector<CSCSegment> Select_CSCSeg(edm::Handle<CSCSegmentCollection> cscSeg,
0091 edm::ESHandle<CSCGeometry> cscGeom,
0092 std::vector<SimSegment> simseg);
0093 std::vector<DTRecSegment4D> Select_DTSeg(edm::Handle<DTRecSegment4DCollection> dtSeg,
0094 edm::ESHandle<DTGeometry> dtGeom,
0095 std::vector<SimSegment> simseg);
0096
0097 protected:
0098 private:
0099
0100 void CSCSimHitFit(edm::ESHandle<CSCGeometry> cscGeom);
0101 void DTSimHitFit(edm::ESHandle<DTGeometry> dtGeom);
0102
0103 void LongCSCSegment(std::vector<CSCSegment> cscsegs);
0104 void LongDTSegment(std::vector<DTRecSegment4D> dtsegs);
0105
0106
0107 std::vector<SimSegment> sDT_v;
0108 std::vector<SimSegment> sCSC_v;
0109
0110
0111 std::vector<CSCSegment> longsegV;
0112 std::vector<DTRecSegment4D> longsegV1;
0113
0114
0115 std::vector<DTRecSegment4D> dtseg_V;
0116
0117 std::vector<CSCSegment> cscseg_V;
0118
0119
0120 LocalVector LSimVec1;
0121 LocalPoint LSimOrg1;
0122 GlobalVector GSimVec1;
0123 GlobalPoint GSimOrg1;
0124
0125
0126 std::vector<PSimHit> hit_V1;
0127 std::vector<PSimHit> hit_V;
0128 double par1[2];
0129 double par2[2];
0130 LocalVector LSimVec;
0131 LocalPoint LSimOrg;
0132 GlobalVector GSimVec;
0133 GlobalPoint GSimOrg;
0134
0135
0136 bool debug;
0137
0138 std::string cscSegmentLabel;
0139 std::string recHitLabel;
0140 std::string dtSegmentLabel;
0141 std::string dtrecHitLabel;
0142 std::string simHitLabel;
0143 std::string simTrackLabel;
0144 };
0145
0146 #endif