00001 // -*- C++ -*- 00002 // 00003 // Package: HSCParticleProducer 00004 // Class: HSCParticleProducer 00005 // 00013 // 00014 // Original Author: Rizzi Andrea 00015 // Reworked and Ported to CMSSW_3_0_0 by Christophe Delaere 00016 // Created: Wed Oct 10 12:01:28 CEST 2007 00017 // $Id: HSCParticleProducer.h,v 1.6 2011/04/20 09:17:15 querten Exp $ 00018 00019 00020 // system include files 00021 #include <memory> 00022 00023 // user include files 00024 #include "FWCore/Framework/interface/Frameworkfwd.h" 00025 #include "FWCore/Framework/interface/EDFilter.h" 00026 #include "FWCore/Framework/interface/Event.h" 00027 #include "FWCore/Framework/interface/MakerMacros.h" 00028 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00029 #include "FWCore/ServiceRegistry/interface/Service.h" 00030 #include "FWCore/Framework/interface/ESHandle.h" 00031 00032 #include "CommonTools/UtilAlgos/interface/DeltaR.h" 00033 00034 00035 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00036 #include "DataFormats/TrackReco/interface/Track.h" 00037 #include "SUSYBSMAnalysis/HSCP/interface/BetaCalculatorTK.h" 00038 #include "SUSYBSMAnalysis/HSCP/interface/BetaCalculatorMUON.h" 00039 #include "SUSYBSMAnalysis/HSCP/interface/BetaCalculatorRPC.h" 00040 #include "SUSYBSMAnalysis/HSCP/interface/BetaCalculatorECAL.h" 00041 #include "SUSYBSMAnalysis/HSCP/interface/CandidateSelector.h" 00042 00043 #include "CommonTools/UtilAlgos/interface/TFileService.h" 00044 #include "AnalysisDataFormats/SUSYBSMObjects/interface/HSCParticle.h" 00045 #include "Math/GenVector/VectorUtil.h" 00046 00047 #include <TNtuple.h> 00048 #include <TF1.h> 00049 00050 #include <vector> 00051 #include <iostream> 00052 00053 // 00054 // class decleration 00055 // 00056 class HSCParticleProducer : public edm::EDFilter { 00057 public: 00058 explicit HSCParticleProducer(const edm::ParameterSet&); 00059 ~HSCParticleProducer(); 00060 00061 private: 00062 virtual void beginJob() ; 00063 virtual bool filter(edm::Event&, const edm::EventSetup&); 00064 virtual void endJob() ; 00065 00066 std::vector<susybsm::HSCParticle> getHSCPSeedCollection(edm::Handle<reco::TrackCollection>& trackCollectionHandle, edm::Handle<reco::MuonCollection>& muonCollectionHandle); 00067 00068 // ----------member data --------------------------- 00069 bool Filter_; 00070 00071 edm::InputTag m_trackTag; 00072 edm::InputTag m_trackIsoTag; 00073 edm::InputTag m_muonsTag; 00074 00075 bool useBetaFromTk; 00076 bool useBetaFromMuon; 00077 bool useBetaFromRpc; 00078 bool useBetaFromEcal; 00079 00080 float minTkP; 00081 float maxTkChi2; 00082 unsigned int minTkHits; 00083 float minMuP; 00084 float minDR; 00085 float maxInvPtDiff; 00086 00087 BetaCalculatorTK* beta_calculator_TK; 00088 BetaCalculatorMUON* beta_calculator_MUON; 00089 BetaCalculatorRPC* beta_calculator_RPC; 00090 BetaCalculatorECAL* beta_calculator_ECAL; 00091 00092 std::vector<CandidateSelector*> Selectors; 00093 }; 00094 00095