File indexing completed on 2024-04-06 12:06:45
0001 #ifndef DPGAnalysisSkims_CSCSkim_H
0002 #define DPGAnalysisSkims_CSCSkim_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <memory>
0012 #include <iostream>
0013 #include <vector>
0014 #include <map>
0015 #include <string>
0016 #include <iomanip>
0017 #include <fstream>
0018
0019 #include "FWCore/Framework/interface/ConsumesCollector.h"
0020 #include "FWCore/Framework/interface/MakerMacros.h"
0021 #include "FWCore/Framework/interface/Frameworkfwd.h"
0022 #include "FWCore/Framework/interface/one/EDFilter.h"
0023 #include "FWCore/Framework/interface/Event.h"
0024 #include "DataFormats/Common/interface/Handle.h"
0025 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0026 #include "FWCore/Framework/interface/EventSetup.h"
0027 #include "FWCore/Framework/interface/ESHandle.h"
0028 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0029
0030 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
0031 #include "DataFormats/CSCDigi/interface/CSCWireDigi.h"
0032 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
0033 #include "DataFormats/CSCDigi/interface/CSCStripDigi.h"
0034 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
0035 #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h>
0036 #include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h"
0037 #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h>
0038
0039 #include "DataFormats/DTRecHit/interface/DTRecSegment4D.h"
0040 #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"
0041
0042 #include "DataFormats/MuonReco/interface/Muon.h"
0043 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0044 #include "DataFormats/TrackReco/interface/Track.h"
0045 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0046 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0047 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0048
0049 #include "Geometry/DTGeometry/interface/DTGeometry.h"
0050 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
0051 #include "Geometry/CSCGeometry/interface/CSCChamber.h"
0052 #include "Geometry/CSCGeometry/interface/CSCLayer.h"
0053 #include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
0054 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0055
0056 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0057 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0058 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0059 #include "DataFormats/GeometryVector/interface/LocalVector.h"
0060 #include "DataFormats/CLHEP/interface/AlgebraicObjects.h"
0061
0062
0063
0064 #include "TVector3.h"
0065 #include "TH1F.h"
0066 #include "TH2F.h"
0067 #include "TFile.h"
0068 #include "TString.h"
0069 #include "TTree.h"
0070
0071 class CSCSkim : public edm::one::EDFilter<> {
0072 public:
0073
0074 explicit CSCSkim(const edm::ParameterSet &pset);
0075
0076
0077 ~CSCSkim() override;
0078
0079
0080 void beginJob() override;
0081 bool filter(edm::Event &event, const edm::EventSetup &eventSetup) override;
0082 void endJob() override;
0083
0084 protected:
0085 private:
0086
0087 bool doCSCSkimming(edm::Handle<CSCRecHit2DCollection> cscRecHits, edm::Handle<CSCSegmentCollection> cscSegments);
0088
0089
0090 bool doOverlapSkimming(edm::Handle<CSCSegmentCollection> cscSegments);
0091
0092
0093 bool doMessyEventSkimming(edm::Handle<CSCRecHit2DCollection> cscRecHits,
0094 edm::Handle<CSCSegmentCollection> cscSegments);
0095
0096
0097 bool doCertainChamberSelection(edm::Handle<CSCWireDigiCollection> wires, edm::Handle<CSCStripDigiCollection> strips);
0098
0099
0100 bool doDTOverlap(edm::Handle<CSCSegmentCollection> cscSegments);
0101
0102
0103 bool doHaloLike(edm::Handle<CSCSegmentCollection> cscSegments);
0104
0105
0106 bool doLongSATrack(edm::Handle<reco::TrackCollection> saTracks);
0107
0108
0109 bool doBFieldStudySelection(edm::Handle<reco::TrackCollection> saTracks,
0110 edm::Handle<reco::TrackCollection> Tracks,
0111 edm::Handle<reco::MuonCollection> gMuons);
0112
0113
0114 int chamberSerial(int kE, int kS, int kR, int kCh);
0115
0116
0117 int nEventsAnalyzed;
0118 int nEventsSelected;
0119 int nEventsChambersBothSides;
0120 int nEventsOverlappingChambers;
0121 int nEventsMessy;
0122 int nEventsCertainChamber;
0123 int nEventsDTOverlap;
0124 int nEventsHaloLike;
0125 int nEventsLongSATrack;
0126 int nEventsForBFieldStudies;
0127
0128
0129 int iRun;
0130 int iEvent;
0131
0132
0133 TFile *theHistogramFile;
0134
0135
0136 std::string outputFileName;
0137 std::string histogramFileName;
0138
0139
0140 const edm::ESGetToken<CSCGeometry, MuonGeometryRecord> m_CSCGeomToken;
0141
0142
0143 edm::EDGetTokenT<CSCWireDigiCollection> wds_token;
0144 edm::EDGetTokenT<CSCStripDigiCollection> sds_token;
0145 edm::EDGetTokenT<CSCWireDigiCollection> wdr_token;
0146 edm::EDGetTokenT<CSCStripDigiCollection> sdr_token;
0147
0148 edm::EDGetTokenT<CSCRecHit2DCollection> rh_token;
0149 edm::EDGetTokenT<CSCSegmentCollection> seg_token;
0150 edm::EDGetTokenT<reco::TrackCollection> sam_token;
0151 edm::EDGetTokenT<reco::TrackCollection> trk_token;
0152 edm::EDGetTokenT<reco::MuonCollection> glm_token;
0153
0154
0155 bool isSimulation;
0156 int typeOfSkim;
0157 int nLayersWithHitsMinimum;
0158 int minimumHitChambers;
0159 int minimumSegments;
0160 bool demandChambersBothSides;
0161 bool makeHistograms;
0162 bool makeHistogramsForMessyEvents;
0163 int whichEndcap;
0164 int whichStation;
0165 int whichRing;
0166 int whichChamber;
0167
0168 float pMin;
0169 float zLengthMin;
0170 int nCSCHitsMin;
0171 float zInnerMax;
0172 int nTrHitsMin;
0173 float zLengthTrMin;
0174 float rExtMax;
0175 float redChiSqMax;
0176 int nValidHitsMin;
0177
0178
0179 TH1F *hxnRecHits;
0180 TH1F *hxnSegments;
0181 TH1F *hxnHitChambers;
0182 TH1F *hxnRecHitsSel;
0183 TH1F *mevnRecHits0;
0184 TH1F *mevnChambers0;
0185 TH1F *mevnSegments0;
0186 TH1F *mevnRecHits1;
0187 TH1F *mevnChambers1;
0188 TH1F *mevnSegments1;
0189
0190 TH1F *xxP, *xxnValidHits, *xxnCSCHits, *xxredChiSq, *xxnTrackerHits;
0191 };
0192 #endif