CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/RecoTauTag/HLTProducers/interface/L2TauModularIsolationProducer.h

Go to the documentation of this file.
00001 /*
00002 L2 Tau Trigger Isolation Producer
00003 
00004 Author: Michail Bachtis
00005 University of Wisconsin-Madison
00006 e-mail: bachtis@hep.wisc.edu
00007 */
00008 
00009 // system include files
00010 #include <memory>
00011 #include <string>
00012 // user include files
00013 #include "FWCore/Framework/interface/Frameworkfwd.h"
00014 #include "FWCore/Framework/interface/EDProducer.h"
00015 #include "FWCore/Framework/interface/Event.h"
00016 #include "FWCore/Framework/interface/EventSetup.h"
00017 #include "FWCore/Framework/interface/MakerMacros.h"
00018 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00019 #include "FWCore/Framework/interface/ESHandle.h"
00020 #include "DataFormats/Math/interface/LorentzVector.h"
00021 #include "DataFormats/Math/interface/LorentzVectorFwd.h"
00022 #include "DataFormats/JetReco/interface/CaloJet.h"
00023 #include "DataFormats/TauReco/interface/L2TauInfoAssociation.h"
00024 
00025 //Calorimeter!!
00026 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
00027 #include "DataFormats/DetId/interface/DetId.h"
00028 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
00029 #include "DataFormats/EcalDetId/interface/EcalSubdetector.h"
00030 
00031 #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h" 
00032 #include "DataFormats/EcalDetId/interface/EBDetId.h"
00033 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00034 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00035 
00036 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00037 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
00038 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00039 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h"
00040 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00041 
00042 //PF
00043 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
00044 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
00045 
00046 
00047 // Math
00048 #include "Math/GenVector/VectorUtil.h"
00049 #include "Math/GenVector/PxPyPzE4D.h"
00050 
00051 
00052 
00053 class L2TauModularIsolationProducer : public edm::EDProducer {
00054    public:
00055       explicit L2TauModularIsolationProducer(const edm::ParameterSet&);
00056       ~L2TauModularIsolationProducer();
00057 
00058    private:
00059       virtual void beginJob() ;
00060       virtual void produce(edm::Event&, const edm::EventSetup&);
00061       virtual void endJob();
00062 
00063       //retrieve towers / crystals / clusters around the jet
00064       math::PtEtaPhiELorentzVectorCollection getECALHits(const reco::CaloJet&,const edm::Event&,const edm::EventSetup& iSetup);
00065       math::PtEtaPhiELorentzVectorCollection getHCALHits(const reco::CaloJet&,const edm::Event&);  
00066       math::PtEtaPhiELorentzVectorCollection getPFClusters(const reco::CaloJet&,const edm::Event&,const edm::InputTag&);  
00067 
00068       edm::InputTag l2CaloJets_;//label for the readout Collection
00069       edm::InputTag EBRecHits_;//Label for ECAL Barrel Hits
00070       edm::InputTag EERecHits_;//Label for ECAL EndCAP Hits
00071       edm::InputTag caloTowers_;//Label for ECAL EndCAP Hits
00072       edm::InputTag pfClustersECAL_;//Label for ECAL PF Clusters
00073       edm::InputTag pfClustersHCAL_;//Label for HCAL PF Clusters
00074 
00075       //Algorithm Configuration Variables
00076       std::string ecalIsolationAlg_;
00077       std::string hcalIsolationAlg_;
00078       std::string ecalClusteringAlg_;
00079       std::string hcalClusteringAlg_;
00080 
00081       double associationRadius_;
00082 
00083       double simpleClusterRadiusECAL_;
00084       double simpleClusterRadiusHCAL_;
00085       double innerConeECAL_;
00086       double outerConeECAL_;
00087       double innerConeHCAL_;
00088       double outerConeHCAL_;
00089 
00090       //Thresholding
00091       double crystalThresholdE_;
00092       double crystalThresholdB_;
00093       double towerThreshold_;
00094 
00095 
00096         struct RecHitPtComparator
00097         {
00098           bool operator()( const math::PtEtaPhiELorentzVector v1, const math::PtEtaPhiELorentzVector v2) const
00099             {
00100               return v1.pt() > v2.pt(); 
00101             }
00102         };
00103 
00104         RecHitPtComparator comparePt;
00105       
00106 
00107 
00108 
00109 };
00110