CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/QCDAnalysis/Skimming/src/QCDSingleJetFilter.cc

Go to the documentation of this file.
00001 /* \class QCDSingleJetFilter
00002  *
00003  * QCDSingleJetFilter for CSA07 Excercise 
00004  *
00005  * author:  Andreas Oehler (andreas.oehler@cern.ch)
00006  * see header
00007  */
00008 
00009 //MyHeadeR:
00010 #include <QCDAnalysis/Skimming/interface/QCDSingleJetFilter.h>
00011 
00012 // User include files
00013 
00014 #include <DataFormats/Common/interface/Handle.h>
00015 #include <FWCore/Framework/interface/ESHandle.h>
00016 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00017 #include <FWCore/MessageLogger/interface/MessageLogger.h> 
00018 #include <DataFormats/JetReco/interface/CaloJet.h>
00019 #include <FWCore/Utilities/interface/InputTag.h>
00020 
00021 
00022 #include "FWCore/Framework/interface/Frameworkfwd.h"
00023 #include "FWCore/Framework/interface/Event.h"
00024 #include "DataFormats/JetReco/interface/GenJet.h"
00025 
00026 //rand:
00027 //#include <FWCore/ServiceRegistry/interface/Service.h>
00028 //#include <FWCore/Utilities/interface/RandomNumberGenerator.h>
00029 //#include <CLHEP/Random/RandFlat.h>
00030 
00031 // C++
00032 #include <algorithm>
00033 #include <iostream>
00034 #include <vector>
00035 #include <math.h>
00036 
00037 using namespace std;
00038 using namespace edm;
00039 //using namespace reco;
00040 
00041 //detruktor
00042 QCDSingleJetFilter::~QCDSingleJetFilter(){
00043   //delete theFlatDistrib;
00044 }
00045 
00046 // Constructor
00047 //QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset):theFlatDistrib(0),theTriggerJetCollectionA(pset.getParameter<edm::InputTag>("TriggerJetCollectionA")),theTrigCollB(pset.getParameter<edm::InputTag>("TriggerJetCollectionB")){
00048 QCDSingleJetFilter::QCDSingleJetFilter(const edm::ParameterSet& pset):theTriggerJetCollectionA(pset.getParameter<edm::InputTag>("TriggerJetCollectionA")),theTrigCollB(pset.getParameter<edm::InputTag>("TriggerJetCollectionB")){
00049 
00050   // Local Debug flag
00051   //debug              = pset.getParameter<bool>("DebugHiggsToZZ4LeptonsSkim");
00052 
00053   //getConfigParameter:
00054   theMinPt = pset.getParameter<double>("MinPt");
00055   //prescale taken out for convenience
00056   //thePreScale = pset.getParameter<double>("PreScale");
00057   //thePreScale=fabs(thePreScale);
00058   //if (thePreScale<1) thePreScale=0;
00059 
00060   // Eventually, HLT objects:
00061   
00062   //get Random-Service running:
00063   //edm::Service<edm::RandomNumberGenerator> rng;
00064   //if (!rng.isAvailable()) {
00065   //  throw cms::Exception("QCDSingleJetFilter")<<"QCDSingleJetFilter requires RandomNumberGeneratorService\n"
00066   //    "--borked setup\n";
00067   //}
00068   //CLHEP::HepRandomEngine& engine = rng->getEngine();
00069   //theFlatDistrib = new CLHEP::RandFlat(engine,0.0,1.0);
00070 }
00071 
00072 
00073 
00074 
00075 // Filter event
00076 bool QCDSingleJetFilter::filter(edm::Event& event, const edm::EventSetup& setup) {
00077     bool keepEvent = false;
00078     using namespace edm;
00079     using namespace std;
00080 
00081     //now get right Jet-Collection:
00082     edm::Handle<reco::CaloJetCollection>  theTriggerCollectionJetsA;
00083     edm::Handle<reco::CaloJetCollection>  theTrigCollJetsB;
00084     
00085     event.getByLabel(theTriggerJetCollectionA,theTriggerCollectionJetsA);
00086     event.getByLabel(theTrigCollB,theTrigCollJetsB);
00087     
00088     for (reco::CaloJetCollection::const_iterator iter=theTriggerCollectionJetsA->begin();iter!=theTriggerCollectionJetsA->end();++iter){
00089       if ((*iter).pt()>=theMinPt) {
00090         keepEvent=true;
00091         break;
00092       }
00093     }
00094 
00095     for (reco::CaloJetCollection::const_iterator iter=theTrigCollJetsB->begin();iter!=theTrigCollJetsB->end();++iter){
00096       if ((*iter).pt()>=theMinPt) {
00097         keepEvent=true;
00098         break;
00099       }
00100     }
00101      
00102     
00103     //double randval = theFlatDistrib->fire();  
00104     //if (thePreScale<1) keepEvent=false;
00105     //else if ((randval>(1.0/thePreScale))&&keepEvent) keepEvent=false;
00106 //   cout<<"KeepEvent?: "<<keepEvent<<endl;
00107        
00108     return keepEvent;
00109       
00110 }
00111