CMS 3D CMS Logo

CSCSegmentProducer.cc

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

Generated on Tue Jun 9 17:43:52 2009 for CMSSW by  doxygen 1.5.4