CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DQM/HLTEvF/interface/HLTTauDQMLitePathPlotter.h

Go to the documentation of this file.
00001 /* HLTTau Path  Analyzer
00002 Michail Bachtis
00003 University of Wisconsin - Madison
00004 bachtis@hep.wisc.edu
00005 */
00006 
00007 
00008 
00009 
00010 #include "FWCore/Framework/interface/Event.h"
00011 #include "FWCore/Framework/interface/EDAnalyzer.h"
00012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00013 #include "DataFormats/Math/interface/LorentzVector.h"
00014 #include "FWCore/ServiceRegistry/interface/Service.h"
00015 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00016 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
00017 #include "DataFormats/L1Trigger/interface/L1JetParticle.h"
00018 #include "DataFormats/L1Trigger/interface/L1JetParticleFwd.h"
00019 #include "DataFormats/L1Trigger/interface/L1EmParticle.h"
00020 #include "DataFormats/L1Trigger/interface/L1EmParticleFwd.h"
00021 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
00022 #include "DataFormats/L1Trigger/interface/L1MuonParticleFwd.h"
00023 #include "DataFormats/EgammaCandidates/interface/Electron.h"
00024 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
00025 //Include DQM core
00026 #include "DQMServices/Core/interface/DQMStore.h"
00027 #include "DQMServices/Core/interface/MonitorElement.h"
00028 
00029 
00030 typedef math::XYZTLorentzVectorD   LV;
00031 typedef std::vector<LV>            LVColl;
00032 
00033 class HLTTauDQMLitePathPlotter  {
00034  public:
00035   
00036    HLTTauDQMLitePathPlotter(const edm::ParameterSet&,int,int,int,double,bool,double);
00037   ~HLTTauDQMLitePathPlotter();
00038   void analyze(const edm::Event&, const edm::EventSetup&, const std::vector<LVColl>&);
00039   
00040  private:
00041   void endJob() ;
00042   LVColl getFilterCollection(size_t,int,const trigger::TriggerEvent&);
00043   LVColl getObjectCollection(int,const trigger::TriggerEvent&);
00044 
00045 
00046   //helper functions
00047   std::pair<bool,LV> match(const LV&,const LVColl&,double);
00048 
00050   edm::InputTag triggerEvent_;
00051 
00052   //Just a tag for better file organization
00053   std::string triggerTag_;
00054 
00055   //The  filters
00056   std::vector<edm::InputTag> filter_;
00057   std::vector<std::string> name_;
00058   std::vector<int> TauType_;
00059   std::vector<int> LeptonType_;
00060 
00061   //Parameters(Note that the first entry is for the reference events)
00062   std::vector<unsigned> nTriggeredTaus_;
00063   std::vector<unsigned> nTriggeredLeptons_;
00064 
00065   bool doRefAnalysis_;
00066   double matchDeltaR_;
00067 
00068   //MonitorElements for paths
00069   MonitorElement *accepted_events;
00070   MonitorElement *accepted_events_matched;
00071   MonitorElement *ref_events;
00072 
00073   std::vector<MonitorElement*> mass_distribution;
00074 
00075   //MonitorElements for Objects
00076   MonitorElement *tauEt;
00077   MonitorElement *tauEta;
00078   MonitorElement *tauPhi;
00079 
00080   MonitorElement *tauEtEffNum;
00081   MonitorElement *tauEtaEffNum;
00082   MonitorElement *tauPhiEffNum;
00083 
00084   MonitorElement *tauEtEffDenom;
00085   MonitorElement *tauEtaEffDenom;
00086   MonitorElement *tauPhiEffDenom;
00087 
00088   double minEt_;
00089   double maxEt_;
00090   int binsEt_;
00091   int binsEta_;
00092   int binsPhi_;
00093 
00094   double refTauPt_;
00095   double refLeptonPt_;
00096 
00097   class LVSorter {
00098   public:
00099     LVSorter()  {}
00100     ~LVSorter() {}
00101     
00102     bool operator()(LV p1, LV p2)
00103     {
00104       return p1.Et() < p2.Et();
00105     }
00106       
00107 
00108   };
00109 
00110 
00111 };
00112