Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:11

0001 #ifndef RecoMuon_MuonSeedParametrization_H
0002 #define RecoMuon_MuonSeedParametrization_H
0003 
0004 /** \class SeedParametrization
0005  *
0006  *  Author: S.C. Kao  - UC Riverside
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 }  // namespace edm
0061 
0062 //class PSimHit;
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   /// Constructor
0076   MuonSeedParametrization(const edm::ParameterSet &pset);
0077 
0078   /// Destructor
0079   virtual ~MuonSeedParametrization();
0080 
0081   // Operations
0082   /// Perform the real analysis
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   // Utility functions
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   // Histograms
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   // The file which will store the histos
0127   TFile *theFile;
0128 
0129   //cscsegment_stat output
0130   int cscseg_stat[6];
0131   int cscseg_stat1[6];
0132   //dtsegment_stat output
0133   int dtseg_stat[6];
0134   int dtseg_stat1[6];
0135   int dt2Dseg_stat[6];
0136 
0137   // SeedfromRecHit
0138   //std::vector<CSCRecHit2D> csc_rh;
0139   int cscrh_sum[6];
0140   int dtrh_sum[6];
0141 
0142   // Sim info
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   // dPhi and dEta for CSC
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   /// dphi and eta for CSC single segment
0165   bool MEPath[2][5][4];
0166   double ME_phi[2][5][4];
0167   double ME_eta[2][5][4];
0168 
0169   // dPhi and dEta for DT
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   /// dphi and eta for DT single segment
0180   bool MBPath[2][5][3];
0181   double MB_phi[2][5][3];
0182   double MB_eta[2][5][3];
0183 
0184   // dphi & Eta for Overlap region
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   // Switch for debug output
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