CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTauTag/RecoTau/plugins/CaloRecoTauTagInfoProducer.cc

Go to the documentation of this file.
00001 /* class CaloRecoTauTagInfoProducer 
00002  * returns a CaloTauTagInfo collection starting from a JetTrackAssociations <a CaloJet,a list of Track's> collection,
00003  * created: Aug 28 2007,
00004  * revised: ,
00005  * authors: Ludovic Houchu
00006  */
00007 
00008 #include "DataFormats/JetReco/interface/JetTracksAssociation.h"
00009 #include "DataFormats/TauReco/interface/CaloTauTagInfo.h"
00010 #include "DataFormats/VertexReco/interface/Vertex.h"
00011 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00012 
00013 #include "RecoTauTag/RecoTau/interface/CaloRecoTauTagInfoAlgorithm.h"
00014 
00015 #include "FWCore/Framework/interface/EventSetup.h"
00016 #include "FWCore/Framework/interface/ESHandle.h"
00017 #include "FWCore/Framework/interface/Event.h"
00018 #include "FWCore/Framework/interface/MakerMacros.h"
00019 #include "FWCore/Framework/interface/Frameworkfwd.h"
00020 #include "FWCore/Framework/interface/EDProducer.h"
00021 
00022 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00023 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00024 
00025 #include "DataFormats/DetId/interface/DetIdCollection.h"
00026 
00027 #include "CLHEP/Random/RandGauss.h"
00028 
00029 #include "Math/GenVector/VectorUtil.h"
00030 
00031 #include <memory>
00032 
00033 using namespace reco;
00034 using namespace edm;
00035 using namespace std;
00036 
00037 class CaloRecoTauTagInfoProducer : public EDProducer {
00038  public:
00039   explicit CaloRecoTauTagInfoProducer(const edm::ParameterSet&);
00040   ~CaloRecoTauTagInfoProducer();
00041   virtual void produce(edm::Event&,const edm::EventSetup&);
00042  private:
00043   CaloRecoTauTagInfoAlgorithm* CaloRecoTauTagInfoAlgo_;
00044   edm::InputTag CaloJetTracksAssociatorProducer_;
00045   edm::InputTag PVProducer_;
00046   double smearedPVsigmaX_;
00047   double smearedPVsigmaY_;
00048   double smearedPVsigmaZ_;  
00049 };
00050 
00051 
00052 CaloRecoTauTagInfoProducer::CaloRecoTauTagInfoProducer(const edm::ParameterSet& iConfig){
00053   CaloJetTracksAssociatorProducer_ = iConfig.getParameter<edm::InputTag>("CaloJetTracksAssociatorProducer");
00054   PVProducer_                    = iConfig.getParameter<edm::InputTag>("PVProducer");
00055   smearedPVsigmaX_               = iConfig.getParameter<double>("smearedPVsigmaX");
00056   smearedPVsigmaY_               = iConfig.getParameter<double>("smearedPVsigmaY");
00057   smearedPVsigmaZ_               = iConfig.getParameter<double>("smearedPVsigmaZ");     
00058   CaloRecoTauTagInfoAlgo_=new CaloRecoTauTagInfoAlgorithm(iConfig);
00059 
00060   produces<CaloTauTagInfoCollection>();  
00061   //produces<DetIdCollection>();
00062 }
00063 CaloRecoTauTagInfoProducer::~CaloRecoTauTagInfoProducer(){
00064   delete CaloRecoTauTagInfoAlgo_;
00065 }
00066 
00067 void CaloRecoTauTagInfoProducer::produce(edm::Event& iEvent,const edm::EventSetup& iSetup){
00068   edm::Handle<JetTracksAssociationCollection> theCaloJetTracksAssociatorCollection;
00069   iEvent.getByLabel(CaloJetTracksAssociatorProducer_,theCaloJetTracksAssociatorCollection);
00070   
00071   // query a rec/sim PV
00072   edm::Handle<VertexCollection> thePVs;
00073   iEvent.getByLabel(PVProducer_,thePVs);
00074   const VertexCollection vertCollection=*(thePVs.product());
00075   Vertex thePV;
00076   thePV=*(vertCollection.begin());
00077   
00078   //  auto_ptr<DetIdCollection> selectedDetIds(new DetIdCollection);
00079   CaloTauTagInfoCollection* extCollection=new CaloTauTagInfoCollection();
00080 
00081   for(JetTracksAssociationCollection::const_iterator iAssoc=theCaloJetTracksAssociatorCollection->begin();iAssoc!=theCaloJetTracksAssociatorCollection->end();iAssoc++){
00082 //    CaloTauTagInfo myCaloTauTagInfo=CaloRecoTauTagInfoAlgo_->buildCaloTauTagInfo(iEvent,iSetup,(*iAssoc).first.castTo<CaloJetRef>(),(*iAssoc).second,thePV);
00083     CaloTauTagInfo myCaloTauTagInfo=CaloRecoTauTagInfoAlgo_->buildCaloTauTagInfo(iEvent,iSetup,(*iAssoc).first,(*iAssoc).second,thePV);
00084     extCollection->push_back(myCaloTauTagInfo);
00085     //    std::vector<DetId> myDets = CaloRecoTauTagInfoAlgo_->getVectorDetId((*iAssoc).first.castTo<CaloJetRef>());
00086 
00087       //Saving the selectedDetIds
00088     //    for(unsigned int i=0; i<myDets.size();i++)
00089     //      selectedDetIds->push_back(myDets[i]);
00090   }
00091   
00092   auto_ptr<CaloTauTagInfoCollection> resultExt(extCollection);  
00093   iEvent.put(resultExt);  
00094   //  iEvent.put(selectedDetIds);
00095 }
00096 DEFINE_FWK_MODULE(CaloRecoTauTagInfoProducer );