CMS 3D CMS Logo

DAFTrackProducer.cc

Go to the documentation of this file.
00001 #include "RecoTracker/TrackProducer/plugins/DAFTrackProducer.h"
00002 // system include files
00003 #include <memory>
00004 // user include files
00005 #include "FWCore/Framework/interface/Frameworkfwd.h"
00006 #include "FWCore/Framework/interface/MakerMacros.h"
00007 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00008 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00009 #include "TrackingTools/PatternTools/interface/Trajectory.h"
00010 
00011 #include "RecoTracker/Record/interface/MultiRecHitRecord.h"
00012 #include "RecoTracker/SiTrackerMRHTools/interface/MultiRecHitCollector.h"
00013 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
00014 #include "RecoTracker/Record/interface/MultiRecHitRecord.h"
00015 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
00016 
00017 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00018 
00019 
00020 DAFTrackProducer::DAFTrackProducer(const edm::ParameterSet& iConfig):
00021   KfTrackProducerBase(iConfig.getParameter<bool>("TrajectoryInEvent"),false),
00022   theAlgo(iConfig)
00023 {
00024   setConf(iConfig);
00025   setSrc( iConfig.getParameter<edm::InputTag>( "src" ), iConfig.getParameter<edm::InputTag>( "beamSpot" ));
00026   setAlias( iConfig.getParameter<std::string>( "@module_label" ) );
00027   //register your products
00028   produces<reco::TrackCollection>().setBranchAlias( alias_ + "Tracks" );
00029   produces<reco::TrackExtraCollection>().setBranchAlias( alias_ + "TrackExtras" );
00030   produces<TrackingRecHitCollection>().setBranchAlias( alias_ + "RecHits" );
00031   produces<std::vector<Trajectory> >() ;
00032   produces<TrajTrackAssociationCollection>();
00033 }
00034 
00035 
00036 void DAFTrackProducer::produce(edm::Event& theEvent, const edm::EventSetup& setup)
00037 {
00038   edm::LogInfo("DAFTrackProducer") << "Analyzing event number: " << theEvent.id() << "\n";
00039   //
00040   // create empty output collections
00041   //
00042   std::auto_ptr<TrackingRecHitCollection>    outputRHColl (new TrackingRecHitCollection);
00043   std::auto_ptr<reco::TrackCollection>       outputTColl(new reco::TrackCollection);
00044   std::auto_ptr<reco::TrackExtraCollection>  outputTEColl(new reco::TrackExtraCollection);
00045   std::auto_ptr<std::vector<Trajectory> >    outputTrajectoryColl(new std::vector<Trajectory>);
00046 
00047   //
00048   //declare and get stuff to be retrieved from ES
00049   //
00050   edm::ESHandle<TrackerGeometry> theG;
00051   edm::ESHandle<MagneticField> theMF;
00052   edm::ESHandle<TrajectoryFitter> theFitter;
00053   edm::ESHandle<Propagator> thePropagator;
00054   edm::ESHandle<TransientTrackingRecHitBuilder> theBuilder;
00055   getFromES(setup,theG,theMF,theFitter,thePropagator,theBuilder);
00056   //get additional es_modules needed by the DAF 
00057   edm::ESHandle<MultiRecHitCollector> measurementCollectorHandle;
00058   edm::ESHandle<SiTrackerMultiRecHitUpdator> updatorHandle;     
00059   std::string measurementCollectorName = getConf().getParameter<std::string>("MeasurementCollector");
00060   setup.get<MultiRecHitRecord>().get(measurementCollectorName, measurementCollectorHandle);
00061   std::string  updatorName = getConf().getParameter<std::string>("UpdatorName");        
00062   setup.get<MultiRecHitRecord>().get(updatorName, updatorHandle);        
00063   //
00064   //declare and get TrackColection to be retrieved from the event
00065   //
00066   AlgoProductCollection algoResults;
00067   try{  
00068     edm::Handle<TrackCandidateCollection> theTCCollection;
00069     reco::BeamSpot bs;
00070     getFromEvt(theEvent,theTCCollection,bs);
00071     measurementCollectorHandle->updateEvent(theEvent);  
00072     //
00073     //run the algorithm  
00074     //
00075     LogDebug("DAFTrackProducer") << "run the algorithm" << "\n";
00076     theAlgo.runWithCandidate(theG.product(), theMF.product(), *theTCCollection, 
00077                              theFitter.product(), theBuilder.product(), measurementCollectorHandle.product(), updatorHandle.product(),bs,algoResults);
00078   } catch (cms::Exception &e){ edm::LogInfo("DAFTrackProducer") << "cms::Exception caught!!!" << "\n" << e << "\n";}
00079   //
00080   //put everything in the event
00081   putInEvt(theEvent, outputRHColl, outputTColl, outputTEColl, outputTrajectoryColl, algoResults);
00082   LogDebug("DAFTrackProducer") << "end" << "\n";
00083 }

Generated on Tue Jun 9 17:45:59 2009 for CMSSW by  doxygen 1.5.4