CMS 3D CMS Logo

PFRecoTauProducer.cc

Go to the documentation of this file.
00001 #include "RecoTauTag/RecoTau/interface/PFRecoTauProducer.h"
00002 
00003 PFRecoTauProducer::PFRecoTauProducer(const ParameterSet& iConfig){
00004   PFTauTagInfoProducer_   = iConfig.getParameter<InputTag>("PFTauTagInfoProducer");
00005   ElectronPreIDProducer_  = iConfig.getParameter<InputTag>("ElectronPreIDProducer");
00006   PVProducer_             = iConfig.getParameter<string>("PVProducer");
00007   smearedPVsigmaX_        = iConfig.getParameter<double>("smearedPVsigmaX");
00008   smearedPVsigmaY_        = iConfig.getParameter<double>("smearedPVsigmaY");
00009   smearedPVsigmaZ_        = iConfig.getParameter<double>("smearedPVsigmaZ");    
00010   JetMinPt_               = iConfig.getParameter<double>("JetPtMin");
00011   PFRecoTauAlgo_=new PFRecoTauAlgorithm(iConfig);
00012   produces<PFTauCollection>();      
00013 }
00014 PFRecoTauProducer::~PFRecoTauProducer(){
00015   delete PFRecoTauAlgo_;
00016 }
00017 
00018 void PFRecoTauProducer::produce(Event& iEvent,const EventSetup& iSetup){
00019   auto_ptr<PFTauCollection> resultPFTau(new PFTauCollection);
00020   
00021   ESHandle<TransientTrackBuilder> myTransientTrackBuilder;
00022   iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",myTransientTrackBuilder);
00023   PFRecoTauAlgo_->setTransientTrackBuilder(myTransientTrackBuilder.product());
00024 
00025   //ESHandle<MagneticField> myMF;
00026   //iSetup.get<IdealMagneticFieldRecord>().get(myMF);
00027   //PFRecoTauAlgo_->setMagneticField(myMF.product());
00028 
00029   // Electron PreID tracks: Temporary until integrated to PFCandidate
00030   /*
00031   edm::Handle<PFRecTrackCollection> myPFelecTk; 
00032   iEvent.getByLabel(ElectronPreIDProducer_,myPFelecTk); 
00033   const PFRecTrackCollection theElecTkCollection=*(myPFelecTk.product()); 
00034   */
00035   // query a rec/sim PV
00036   Handle<VertexCollection> thePVs;
00037   iEvent.getByLabel(PVProducer_,thePVs);
00038   const VertexCollection vertCollection=*(thePVs.product());
00039   Vertex thePV;
00040   if(vertCollection.size()) thePV=*(vertCollection.begin());
00041   else{
00042     Vertex::Error SimPVError;
00043     SimPVError(0,0)=smearedPVsigmaX_*smearedPVsigmaX_;
00044     SimPVError(1,1)=smearedPVsigmaY_*smearedPVsigmaY_;
00045     SimPVError(2,2)=smearedPVsigmaZ_*smearedPVsigmaZ_;
00046     Vertex::Point SimPVPoint(RandGauss::shoot(0.,smearedPVsigmaX_),  
00047                              RandGauss::shoot(0.,smearedPVsigmaY_),  
00048                              RandGauss::shoot(0.,smearedPVsigmaZ_));
00049     thePV=Vertex(SimPVPoint,SimPVError,1,1,1);    
00050   }
00051   
00052   Handle<PFTauTagInfoCollection> thePFTauTagInfoCollection;
00053   iEvent.getByLabel(PFTauTagInfoProducer_,thePFTauTagInfoCollection);
00054   int iinfo=0;
00055   for(PFTauTagInfoCollection::const_iterator i_info=thePFTauTagInfoCollection->begin();i_info!=thePFTauTagInfoCollection->end();i_info++) { 
00056     if((*i_info).pfjetRef()->pt()>JetMinPt_){
00057       //        PFTau myPFTau=PFRecoTauAlgo_->buildPFTau(Ref<PFTauTagInfoCollection>(thePFTauTagInfoCollection,iinfo),thePV,theElecTkCollection);
00058         PFTau myPFTau=PFRecoTauAlgo_->buildPFTau(Ref<PFTauTagInfoCollection>(thePFTauTagInfoCollection,iinfo),thePV);
00059        resultPFTau->push_back(myPFTau);
00060     }
00061     ++iinfo;
00062   }
00063   iEvent.put(resultPFTau);
00064 }

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