CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10/src/RecoParticleFlow/PFTracking/interface/ConvBremPFTrackFinder.h

Go to the documentation of this file.
00001 #include <memory>
00002 
00003 // user include files
00004 #include "FWCore/Framework/interface/Frameworkfwd.h"
00005 
00006 #include "FWCore/Framework/interface/Event.h"
00007 #include "FWCore/Framework/interface/MakerMacros.h"
00008 #include "DataFormats/Common/interface/Handle.h"
00009 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h"
00010 #include "DataFormats/ParticleFlowReco/interface/PFRecTrackFwd.h"
00011 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
00012 #include "DataFormats/ParticleFlowReco/interface/PFClusterFwd.h"
00013 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h"
00014 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h"
00015 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
00016 #include "DataFormats/VertexReco/interface/Vertex.h"
00017 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00018 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedTrackerVertex.h"
00019 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedVertexFwd.h"
00020 #include "DataFormats/ParticleFlowReco/interface/PFDisplacedVertex.h"
00021 #include "DataFormats/ParticleFlowReco/interface/PFConversionFwd.h"
00022 #include "DataFormats/ParticleFlowReco/interface/PFConversion.h"
00023 #include "DataFormats/ParticleFlowReco/interface/PFV0Fwd.h"
00024 #include "DataFormats/ParticleFlowReco/interface/PFV0.h"
00025 #include "TMVA/Reader.h"
00026 
00027 class PFEnergyCalibration;
00028 
00029 class ConvBremPFTrackFinder {
00030   
00031  public:
00032   ConvBremPFTrackFinder(const TransientTrackBuilder& builder,
00033                         double mvaBremConvCut,
00034                         std::string mvaWeightFileConvBrem);  
00035   ~ConvBremPFTrackFinder();
00036   
00037   bool foundConvBremPFRecTrack(const edm::Handle<reco::PFRecTrackCollection>& thePfRecTrackCol,
00038                                const edm::Handle<reco::VertexCollection>& primaryVertex,
00039                                const edm::Handle<reco::PFDisplacedTrackerVertexCollection>& pfNuclears,
00040                                const edm::Handle<reco::PFConversionCollection >& pfConversions,
00041                                const edm::Handle<reco::PFV0Collection >& pfV0,
00042                                bool useNuclear,
00043                                bool useConversions,
00044                                bool useV0,
00045                                const reco::PFClusterCollection & theEClus,
00046                                reco::GsfPFRecTrack gsfpfrectk)
00047   {
00048     found_ = false;
00049     runConvBremFinder(thePfRecTrackCol,primaryVertex,
00050                       pfNuclears,pfConversions,
00051                       pfV0,useNuclear,
00052                       useConversions,useV0,
00053                       theEClus,gsfpfrectk);
00054     return found_;};
00055   
00056   
00057   const std::vector<reco::PFRecTrackRef>& getConvBremPFRecTracks() {return  pfRecTrRef_vec_;};
00058 
00059  private:
00060   void runConvBremFinder(const edm::Handle<reco::PFRecTrackCollection>& thePfRecTrackCol,
00061                          const edm::Handle<reco::VertexCollection>& primaryVertex,
00062                          const edm::Handle<reco::PFDisplacedTrackerVertexCollection>& pfNuclears,
00063                          const edm::Handle<reco::PFConversionCollection >& pfConversions,
00064                          const edm::Handle<reco::PFV0Collection >& pfV0,
00065                          bool useNuclear,
00066                          bool useConversions,
00067                          bool useV0,
00068                          const reco::PFClusterCollection & theEClus,
00069                          reco::GsfPFRecTrack gsfpfrectk);
00070   
00071 
00072 
00073   bool found_;
00074   TransientTrackBuilder builder_;
00075   double mvaBremConvCut_;
00076   std::string mvaWeightFileConvBrem_;
00077   TMVA::Reader    *tmvaReader_;
00078   std::vector<reco::PFRecTrackRef> pfRecTrRef_vec_;
00079   float secR,secPout,ptRatioGsfKF,sTIP,Epout,detaBremKF,secPin;
00080   //int nHITS1;
00081   float nHITS1;
00082 
00083   PFEnergyCalibration* pfcalib_;
00084 
00085 };