00001 00005 #include <RecoLocalMuon/CSCSegment/src/CSCSegmentProducer.h> 00006 #include <RecoLocalMuon/CSCSegment/src/CSCSegmentBuilder.h> 00007 00008 #include <DataFormats/Common/interface/Handle.h> 00009 #include <FWCore/Framework/interface/ESHandle.h> 00010 #include <FWCore/MessageLogger/interface/MessageLogger.h> 00011 00012 #include <Geometry/Records/interface/MuonGeometryRecord.h> 00013 00014 #include <DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h> 00015 #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h> 00016 #include <DataFormats/CSCRecHit/interface/CSCSegment.h> 00017 00018 CSCSegmentProducer::CSCSegmentProducer(const edm::ParameterSet& pas) : iev(0) { 00019 00020 inputObjectsTag = pas.getParameter<edm::InputTag>("inputObjects"); 00021 segmentBuilder_ = new CSCSegmentBuilder(pas); // pass on the PS 00022 00023 // register what this produces 00024 produces<CSCSegmentCollection>(); 00025 } 00026 00027 CSCSegmentProducer::~CSCSegmentProducer() { 00028 00029 LogDebug("CSCSegment|CSC") << "deleting CSCSegmentBuilder after " << iev << " events w/csc data."; 00030 delete segmentBuilder_; 00031 } 00032 00033 void CSCSegmentProducer::produce(edm::Event& ev, const edm::EventSetup& setup) { 00034 00035 LogDebug("CSCSegment|CSC") << "start producing segments for " << ++iev << "th event with csc data"; 00036 00037 // find the geometry (& conditions?) for this event & cache it in the builder 00038 00039 edm::ESHandle<CSCGeometry> h; 00040 setup.get<MuonGeometryRecord>().get(h); 00041 const CSCGeometry* pgeom = &*h; 00042 segmentBuilder_->setGeometry(pgeom); 00043 00044 // get the collection of CSCRecHit2D 00045 edm::Handle<CSCRecHit2DCollection> cscRecHits; 00046 ev.getByLabel(inputObjectsTag, cscRecHits); 00047 00048 // create empty collection of Segments 00049 std::auto_ptr<CSCSegmentCollection> oc( new CSCSegmentCollection ); 00050 00051 // fill the collection 00052 segmentBuilder_->build(cscRecHits.product(), *oc); //@@ FILL oc 00053 00054 // put collection in event 00055 ev.put(oc); 00056 }