Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #include <iostream>
00009 #include "DataFormats/Common/interface/Handle.h"
00010 #include "FWCore/Framework/interface/ESHandle.h"
00011 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00012 #include "RecoEgamma/EgammaHFProducers/plugins/HFEMClusterProducer.h"
00013 using namespace reco;
00014 HFEMClusterProducer::HFEMClusterProducer(edm::ParameterSet const& conf): hfreco_(conf.getParameter<edm::InputTag>("hits")) {
00015 produces<reco::HFEMClusterShapeCollection>();
00016 produces<reco::BasicClusterCollection>();
00017 produces<reco::SuperClusterCollection>();
00018 produces<reco::HFEMClusterShapeAssociationCollection>();
00019 algo_.setup(conf.getParameter<double>("minTowerEnergy"),
00020 conf.getParameter<double>("seedThresholdET"),
00021 conf.getParameter<double>("maximumSL"),
00022 conf.getParameter<double>("maximumRenergy"),
00023 conf.getParameter<bool>("usePMTFlag"),
00024 conf.getParameter<bool>("usePulseFlag"),
00025 conf.getParameter<bool>("forcePulseFlagMC"),
00026 conf.getParameter<int>("correctionType"));
00027 }
00028
00029 void HFEMClusterProducer::produce(edm::Event & e, edm::EventSetup const& iSetup) {
00030
00031 edm::Handle<HFRecHitCollection> hf_hits;
00032
00033 e.getByLabel(hfreco_,hf_hits);
00034
00035 edm::ESHandle<CaloGeometry> geometry;
00036 iSetup.get<CaloGeometryRecord>().get(geometry);
00037
00038
00039 std::auto_ptr<reco::HFEMClusterShapeCollection> retdata1(new HFEMClusterShapeCollection());
00040 std::auto_ptr<reco::SuperClusterCollection> retdata2(new SuperClusterCollection());
00041 std::auto_ptr<reco::HFEMClusterShapeAssociationCollection> retdata3(new HFEMClusterShapeAssociationCollection());
00042
00043 algo_.isMC(!e.isRealData());
00044
00045
00046 algo_.clusterize(*hf_hits, *geometry, *retdata1, *retdata2);
00047 edm::OrphanHandle<reco::SuperClusterCollection> SupHandle;
00048 edm::OrphanHandle<reco::HFEMClusterShapeCollection> ShapeHandle;
00049
00050
00051 ShapeHandle=e.put(retdata1);
00052 SupHandle=e.put(retdata2);
00053 for (unsigned int i=0; i < ShapeHandle->size();i++){
00054 retdata3->insert(edm::Ref<reco::SuperClusterCollection>(SupHandle,i),edm::Ref<reco::HFEMClusterShapeCollection>(ShapeHandle,i));
00055 }
00056
00057
00058 e.put(retdata3);
00059
00060 }