File indexing completed on 2024-04-06 12:27:11
0001 #ifndef RecoMuon_MuonSeedParametrization_H
0002 #define RecoMuon_MuonSeedParametrization_H
0003
0004
0005
0006
0007
0008
0009 #include "SegSelector.h"
0010 #include "MuonSeedParameterHisto.h"
0011 #include "MuonSeedParaFillHisto.h"
0012 #include "MuonSeeddPhiScale.h"
0013
0014 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0015 #include "FWCore/Framework/interface/ESHandle.h"
0016 #include <DataFormats/Common/interface/Handle.h>
0017
0018 #include <DataFormats/MuonDetId/interface/CSCDetId.h>
0019 #include <DataFormats/MuonDetId/interface/DTChamberId.h>
0020 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
0021 #include <DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h>
0022 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
0023 #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h>
0024 #include <DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h>
0025 #include <DataFormats/DTRecHit/interface/DTRecSegment4D.h>
0026 #include <DataFormats/DTRecHit/interface/DTRecSegment2DCollection.h>
0027 #include <DataFormats/DTRecHit/interface/DTRecSegment2D.h>
0028 #include <DataFormats/DTRecHit/interface/DTChamberRecSegment2D.h>
0029 #include <DataFormats/DTRecHit/interface/DTRecHitCollection.h>
0030 #include <DataFormats/DTRecHit/interface/DTRecHit1D.h>
0031
0032 #include <SimDataFormats/Track/interface/SimTrackContainer.h>
0033 #include <SimDataFormats/TrackingHit/interface/PSimHitContainer.h>
0034
0035 #include <Geometry/CSCGeometry/interface/CSCGeometry.h>
0036 #include <Geometry/CSCGeometry/interface/CSCChamber.h>
0037 #include <Geometry/CSCGeometry/interface/CSCLayer.h>
0038 #include <Geometry/CSCGeometry/interface/CSCLayerGeometry.h>
0039 #include <Geometry/DTGeometry/interface/DTGeometry.h>
0040 #include <Geometry/DTGeometry/interface/DTChamber.h>
0041 #include <Geometry/DTGeometry/interface/DTLayer.h>
0042 #include <Geometry/Records/interface/MuonGeometryRecord.h>
0043
0044 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0045 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0046 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0047 #include "DataFormats/GeometryVector/interface/LocalVector.h"
0048 #include <DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h>
0049 #include <DataFormats/TrajectorySeed/interface/TrajectorySeed.h>
0050
0051 #include <vector>
0052 #include <map>
0053 #include <string>
0054 #include <utility>
0055
0056 namespace edm {
0057 class ParameterSet;
0058 class Event;
0059 class EventSetup;
0060 }
0061
0062
0063 class TFile;
0064 class CSCLayer;
0065 class CSCDetId;
0066 class DTLayerId;
0067 class DTSuperLayerId;
0068 class DTChamberId;
0069 class SegSelector;
0070 class MuonSeedParaFillHisto;
0071 class MuonSeeddPhiScale;
0072
0073 class MuonSeedParametrization : public edm::one::EDAnalyzer<> {
0074 public:
0075
0076 MuonSeedParametrization(const edm::ParameterSet &pset);
0077
0078
0079 virtual ~MuonSeedParametrization();
0080
0081
0082
0083 void analyze(const edm::Event &event, const edm::EventSetup &eventSetup);
0084
0085 protected:
0086 private:
0087 SegSelector *recsegSelector;
0088 MuonSeedParaFillHisto *HistoFill;
0089 MuonSeeddPhiScale *ScaledPhi;
0090
0091
0092 void CSCsegment_stat(edm::Handle<CSCSegmentCollection> cscSeg);
0093 void DTsegment_stat(edm::Handle<DTRecSegment4DCollection> dtSeg);
0094
0095 void CSCRecHit_stat(edm::Handle<CSCRecHit2DCollection> cscrechit, edm::ESHandle<CSCGeometry> cscGeom);
0096 void DTRecHit_stat(edm::Handle<DTRecHitCollection> dtrechit, edm::ESHandle<DTGeometry> dtGeom);
0097
0098 bool SameChamber(CSCDetId SimDetId, CSCDetId SegDetId);
0099
0100 void SimInfo(const edm::Handle<edm::SimTrackContainer> simTracks,
0101 const edm::Handle<edm::PSimHitContainer> dsimHits,
0102 const edm::Handle<edm::PSimHitContainer> csimHits,
0103 edm::ESHandle<DTGeometry> dtGeom,
0104 edm::ESHandle<CSCGeometry> cscGeom);
0105
0106 void FromCSCSeg(std::vector<CSCSegment> cscSeg, edm::ESHandle<CSCGeometry> cscGeom, std::vector<SimSegment> seg);
0107 void FromCSCSingleSeg(std::vector<CSCSegment> cscSeg,
0108 edm::ESHandle<CSCGeometry> cscGeom,
0109 std::vector<SimSegment> seg);
0110 void FromDTSeg(std::vector<DTRecSegment4D> dtSeg, edm::ESHandle<DTGeometry> dtGeom, std::vector<SimSegment> seg);
0111 void FromDTSingleSeg(std::vector<DTRecSegment4D> dtSeg,
0112 edm::ESHandle<DTGeometry> dtGeom,
0113 std::vector<SimSegment> seg);
0114 void FromOverlap();
0115
0116
0117 H2DRecHit1 *h_all;
0118 H2DRecHit2 *h_csc;
0119 H2DRecHit3 *h_dt;
0120 H2DRecHit4 *hME1[15];
0121 H2DRecHit5 *hMB1[26];
0122 H2DRecHit6 *hME2[8];
0123 H2DRecHit7 *hMB2[12];
0124 H2DRecHit10 *hOL1[6];
0125
0126
0127 TFile *theFile;
0128
0129
0130 int cscseg_stat[6];
0131 int cscseg_stat1[6];
0132
0133 int dtseg_stat[6];
0134 int dtseg_stat1[6];
0135 int dt2Dseg_stat[6];
0136
0137
0138
0139 int cscrh_sum[6];
0140 int dtrh_sum[6];
0141
0142
0143 double pt1[5];
0144 double pa[5];
0145 double eta_c;
0146 double eta_d;
0147 double eta_trk;
0148 double theQ;
0149 double etaLc[5];
0150 double etaLd[5];
0151 double ptLossC[5];
0152 double ptLossD[5];
0153
0154
0155 double PhiV1[2][5];
0156 double EtaV1[2][5];
0157 double PhiP1[2][5];
0158 double EtaP1[2][5];
0159 double dPhiV1[2][5][5];
0160 double dEtaV1[2][5][5];
0161 double dPhiP1[2][5][5];
0162 double dEtaP1[2][5][5];
0163 double chi2_dof1[5];
0164
0165 bool MEPath[2][5][4];
0166 double ME_phi[2][5][4];
0167 double ME_eta[2][5][4];
0168
0169
0170 double PhiV3[2][5];
0171 double EtaV3[2][5];
0172 double dPhiV3[2][5][5];
0173 double dEtaV3[2][5][5];
0174 double PhiP3[2][5];
0175 double EtaP3[2][5];
0176 double dPhiP3[2][5][5];
0177 double dEtaP3[2][5][5];
0178 double chi2_dof3[5];
0179
0180 bool MBPath[2][5][3];
0181 double MB_phi[2][5][3];
0182 double MB_eta[2][5][3];
0183
0184
0185 double dPhiV2[2][5][5];
0186 double dEtaV2[2][5][5];
0187 double dPhiP2[2][5][5];
0188 double dEtaP2[2][5][5];
0189
0190
0191 bool debug;
0192 bool scale;
0193
0194 std::string rootFileName;
0195 std::string cscSegmentLabel;
0196 std::string recHitLabel;
0197 std::string dtSegmentLabel;
0198 std::string dt2DSegmentLabel;
0199 std::string dtrecHitLabel;
0200 std::string simHitLabel;
0201 std::string simTrackLabel;
0202 std::string muonseedLabel;
0203
0204 edm::ESGetToken<CSCGeometry, MuonGeometryRecord> cscGeomToken;
0205 edm::ESGetToken<DTGeometry, MuonGeometryRecord> dtGeomToken;
0206 };
0207
0208 #endif