00001 #ifndef HLTMUON_H
00002 #define HLTMUON_H
00003
00004 #include "TH1.h"
00005 #include "TH2.h"
00006 #include "TFile.h"
00007 #include "TNamed.h"
00008 #include <vector>
00009 #include <map>
00010 #include "TROOT.h"
00011 #include "TChain.h"
00012
00013 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00014 #include "FWCore/Framework/interface/Event.h"
00015 #include "FWCore/Framework/interface/EventSetup.h"
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "DataFormats/Common/interface/Handle.h"
00018 #include "DataFormats/MuonReco/interface/Muon.h"
00019 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00020 #include "DataFormats/Candidate/interface/Candidate.h"
00021 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00022
00023 #include "DataFormats/TrackReco/interface/Track.h"
00024 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00025 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
00026 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
00027 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
00028 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h"
00029
00030 #include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeed.h"
00031 #include "DataFormats/MuonSeed/interface/L3MuonTrajectorySeedCollection.h"
00032 #include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeed.h"
00033 #include "DataFormats/MuonSeed/interface/L2MuonTrajectorySeedCollection.h"
00034 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
00035 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
00036 #include "DataFormats/VertexReco/interface/Vertex.h"
00037 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00038
00039 #include "HLTrigger/HLTanalyzers/interface/JetUtil.h"
00040 #include "HLTrigger/HLTanalyzers/interface/CaloTowerBoundries.h"
00041
00042 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00043
00044 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
00045 #include "DataFormats/Math/interface/Point3D.h"
00046
00047 #include "TrackingTools/PatternTools/interface/ClosestApproachInRPhi.h"
00048 #include "DataFormats/Common/interface/RefToBase.h"
00049 #include "DataFormats/Math/interface/Error.h"
00050 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00051 #include "MagneticField/Engine/interface/MagneticField.h"
00052
00053 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00054 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h"
00055 #include "TMath.h"
00056 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00057
00058
00059 typedef std::vector<std::string> MyStrings;
00060
00067 class HLTMuon {
00068 public:
00069 HLTMuon();
00070
00071 void setup(const edm::ParameterSet& pSet, TTree* tree);
00072
00074 void analyze(const edm::Handle<reco::MuonCollection> & muon,
00075 const edm::Handle<l1extra::L1MuonParticleCollection> & mucands1,
00076 const edm::Handle<reco::RecoChargedCandidateCollection> & mucands2,
00077 const edm::Handle<edm::ValueMap<bool> > & isoMap2,
00078 const edm::Handle<reco::RecoChargedCandidateCollection> & mucands3,
00079 const edm::Handle<edm::ValueMap<bool> > & isoMap3,
00080 const edm::Handle<edm::ValueMap<bool> > & isoTrk10Map3,
00081 const edm::Handle<reco::RecoChargedCandidateCollection> & oniaPixelCands,
00082 const edm::Handle<reco::RecoChargedCandidateCollection> & oniaTrackCands,
00083 const edm::Handle<reco::VertexCollection> & dimuvtxcands3,
00084 const edm::Handle<reco::RecoChargedCandidateCollection> & munovtxcands2,
00085 const edm::Handle<reco::MuonCollection> & trkmucands,
00086
00087 const edm::ESHandle<MagneticField> & theMagField,
00088 const edm::Handle<reco::BeamSpot> & recoBeamSpotHandle,
00089 TTree* tree);
00090
00091
00092 private:
00093
00094 int validChambers(const reco::TrackRef & track);
00095
00096
00097 float *muonpt, *muonphi, *muoneta, *muonet, *muone, *muonchi2NDF, *muoncharge,
00098 *muonTrkIsoR03, *muonECalIsoR03, *muonHCalIsoR03, *muonD0;
00099 int *muontype, *muonNValidTrkHits, *muonNValidMuonHits;
00100 float *muonl2pt, *muonl2eta, *muonl2phi, *muonl2dr, *muonl2dz, *muonl2vtxz;
00101 float *muonl3pt, *muonl3eta, *muonl3phi, *muonl3dr, *muonl3dz, *muonl3vtxz, *muonl3normchi2;
00102 float *muonl2novtxpt, *muonl2novtxeta, *muonl2novtxphi, *muonl2novtxdr, *muonl2novtxdz;
00103 float *muonl2pterr, *muonl3pterr, *muonl2novtxpterr;
00104 int nmuon, nmu2cand, nmu3cand, nmu2novtxcand, ntrackermuoncand;
00105 int *muonl2chg, *muonl2iso, *muonl2nhits, *muonl2nchambers, *muonl2nstat, *muonl3chg, *muonl3iso, *muonl32idx, *muonl3nhits, *muonl21idx, *muonl2novtxchg, *muonl2novtxiso, *muonl2novtx1idx, *muonl2novtxnhits, *muonl2novtxnchambers;
00106 int *muonl3ntrackerhits, *muonl3nmuonhits, *muonl3trk10iso;
00107 float *trackermuonpt, *trackermuonphi, *trackermuoneta;
00108 int *trackermuonchg, *trackermuonnhits;
00109
00110
00111 int nOniaPixelCand, nOniaTrackCand;
00112 float *oniaPixelpt, *oniaPixeleta, *oniaPixelphi, *oniaPixeldr, *oniaPixeldz, *oniaPixelNormChi2;
00113 float *oniaTrackpt, *oniaTracketa, *oniaTrackphi, *oniaTrackdr, *oniaTrackdz, *oniaTrackNormChi2;
00114 int *oniaPixelchg, *oniaTrackchg, *oniaPixelHits, *oniaTrackHits;
00115 int nDiMu,nDiMuVtx;
00116 float *dimudca;
00117 int *dimu1st,*dimu2nd,*dimuvtx1st,*dimuvtx2nd;
00118 float *dimuvtxchi2,*dimuvtxr,*dimuvtxrsig,*dimuvtxroversig,*dimuvtxcosalpha;
00119 float *dimuvtxmu2dipmax, *dimuvtxmu2dipmin, *dimuvtxmu2dipsigmax, *dimuvtxmu2dipsigmin;
00120
00121
00122
00123 bool _Monte,_Debug;
00124
00125 int evtCounter;
00126
00127 static float etaBarrel() { return 1.4; }
00128
00129 };
00130
00131 #endif