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