00001 // -*- C++ -*- 00002 // 00003 // Package: EcalIsolation 00004 // Class: EcalIsolation 00005 // 00013 // 00014 // Original Author: Artur Kalinowski 00015 // Created: Mon Sep 11 12:48:02 CEST 2006 00016 // $Id: EcalIsolation.cc,v 1.6 2007/06/03 18:30:37 gennai Exp $ 00017 // 00018 // 00019 #include <string> 00020 00021 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00022 00023 #include "RecoTauTag/EcalIsolation/interface/EcalIsolation.h" 00024 00025 #include "DataFormats/JetReco/interface/CaloJetCollection.h" 00026 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00027 #include "DataFormats/CaloTowers/interface/CaloTower.h" 00028 #include "DataFormats/RecoCandidate/interface/RecoCaloTowerCandidate.h" 00029 #include "DataFormats/BTauReco/interface/EMIsolatedTauTagInfo.h" 00030 00031 // Math 00032 #include "Math/GenVector/VectorUtil.h" 00033 #include "Math/GenVector/PxPyPzE4D.h" 00034 00035 // 00036 // constructors and destructor 00037 // 00038 EcalIsolation::EcalIsolation(const edm::ParameterSet& iConfig): 00039 mJetForFilter(iConfig.getParameter<edm::InputTag>("JetForFilter")), 00040 mSmallCone(iConfig.getParameter<double>("SmallCone")), 00041 mBigCone(iConfig.getParameter<double>("BigCone")), 00042 pIsolCut(iConfig.getParameter<double>("Pisol")){ 00043 00044 00045 produces<reco::EMIsolatedTauTagInfoCollection>(); 00046 00047 } 00048 00049 00050 EcalIsolation::~EcalIsolation() 00051 { 00052 00053 // do anything here that needs to be done at desctruction time 00054 // (e.g. close files, deallocate resources etc.) 00055 00056 } 00057 00058 00059 // 00060 // member functions 00061 // 00062 00063 // ------------ method called to produce the data ------------ 00064 void 00065 EcalIsolation::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) 00066 { 00067 using namespace edm; 00068 using namespace reco; 00069 using namespace std; 00070 00071 // get calo jetHLT collection 00072 Handle<JetCrystalsAssociationCollection> jets; 00073 JetCrystalsAssociationCollection::const_iterator CI; 00074 iEvent.getByLabel(mJetForFilter, jets); 00075 CI = (jets.product())->begin(); 00076 00077 EMIsolatedTauTagInfoCollection* myColl = new EMIsolatedTauTagInfoCollection(); 00078 00079 00080 int i =0; 00081 00082 for(;CI!=(jets.product())->end();CI++){ 00083 EMIsolatedTauTagInfo myTag(0,edm::Ref<JetCrystalsAssociationCollection>(jets,i)); 00084 double discriminator = myTag.discriminator(mBigCone,mSmallCone,pIsolCut); 00085 myTag.setDiscriminator(discriminator); 00086 myColl->push_back(myTag); 00087 i++; 00088 } 00089 auto_ptr<EMIsolatedTauTagInfoCollection> myEMIsolTaus(myColl); 00090 iEvent.put(myEMIsolTaus); 00091 00092 } 00093 00094 00095 00096 //define this as a plug-in 00097 DEFINE_FWK_MODULE(EcalIsolation);