![]() |
![]() |
00001 // -*- C++ -*- 00002 // 00003 // Package: ElectronProducers 00004 // Class: GlobalSeedProducer 00005 // 00013 // 00014 // Original Author: Ursula Berthon, Claude Charlot 00015 // Created: Mon Mar 27 13:22:06 CEST 2006 00016 // $Id: GlobalSeedProducer.cc,v 1.1 2008/04/21 09:50:47 uberthon Exp $ 00017 // 00018 // 00019 00020 // user include files 00021 #include "FWCore/Framework/interface/Frameworkfwd.h" 00022 #include "FWCore/Framework/interface/EDProducer.h" 00023 #include "FWCore/Framework/interface/Event.h" 00024 #include "FWCore/Framework/interface/MakerMacros.h" 00025 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00026 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00027 00028 //#include "Geometry/Records/interface/IdealGeometryRecord.h" 00029 //#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00030 00031 #include "RecoEgamma/EgammaElectronAlgos/interface/SubSeedGenerator.h" 00032 00033 #include "DataFormats/EgammaReco/interface/ElectronPixelSeed.h" 00034 #include "DataFormats/EgammaReco/interface/ElectronPixelSeedFwd.h" 00035 00036 #include "GlobalSeedProducer.h" 00037 00038 #include <string> 00039 00040 using namespace reco; 00041 00042 GlobalSeedProducer::GlobalSeedProducer(const edm::ParameterSet& iConfig) : conf_(iConfig) 00043 { 00044 00045 // edm::ParameterSet pset = iConfig.getParameter<edm::ParameterSet>("SeedConfiguration"); 00046 // SCEtCut_=pset.getParameter<double>("SCEtCut"); 00047 // maxHOverE_=pset.getParameter<double>("maxHOverE"); 00048 00049 matcher_= new SubSeedGenerator(iConfig); 00050 00051 // get collections from config' 00052 superClusters_[0]=iConfig.getParameter<edm::InputTag>("barrelSuperClusters"); 00053 superClusters_[1]=iConfig.getParameter<edm::InputTag>("endcapSuperClusters"); 00054 00055 //register your products 00056 produces<ElectronPixelSeedCollection>(); 00057 } 00058 00059 00060 GlobalSeedProducer::~GlobalSeedProducer() 00061 { 00062 // do anything here that needs to be done at desctruction time 00063 // (e.g. close files, deallocate resources etc.) 00064 delete matcher_; 00065 } 00066 00067 void GlobalSeedProducer::beginJob(edm::EventSetup const&iSetup) 00068 { 00069 } 00070 00071 void GlobalSeedProducer::produce(edm::Event& e, const edm::EventSetup& iSetup) 00072 { 00073 LogDebug("GlobalSeedProducer"); 00074 LogDebug("GlobalSeedProducer") <<"[GlobalSeedProducer::produce] entering " ; 00075 00076 ElectronPixelSeedCollection *seeds= new ElectronPixelSeedCollection; 00077 std::auto_ptr<ElectronPixelSeedCollection> pSeeds; 00078 00079 // loop over barrel + endcap 00080 00081 for (unsigned int i=0; i<2; i++) { 00082 // invoke algorithm 00083 edm::Handle<SuperClusterCollection> clusters; 00084 if (e.getByLabel(superClusters_[i],clusters)) matcher_->run(e,iSetup,clusters,*seeds); 00085 } 00086 00087 // store the accumulated result 00088 pSeeds= std::auto_ptr<ElectronPixelSeedCollection>(seeds); 00089 for (ElectronPixelSeedCollection::iterator is=pSeeds->begin(); is!=pSeeds->end();is++) { 00090 LogDebug("ElectronPixelSeedProducer") << "new seed with " << (*is).nHits() << " hits, charge " << (*is).getCharge() << 00091 " and cluster energy " << (*is).superCluster()->energy() << " PID "<<(*is).superCluster().id(); 00092 } 00093 e.put(pSeeds); 00094 }