Go to the documentation of this file.00001 #include <memory>
00002
00003
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
00028 class ConvBremPFTrackFinder {
00029
00030 public:
00031 ConvBremPFTrackFinder(const TransientTrackBuilder& builder,
00032 double mvaBremConvCut,
00033 std::string mvaWeightFileConvBrem);
00034 ~ConvBremPFTrackFinder();
00035
00036 bool foundConvBremPFRecTrack(const edm::Handle<reco::PFRecTrackCollection>& thePfRecTrackCol,
00037 const edm::Handle<reco::VertexCollection>& primaryVertex,
00038 const edm::Handle<reco::PFDisplacedTrackerVertexCollection>& pfNuclears,
00039 const edm::Handle<reco::PFConversionCollection >& pfConversions,
00040 const edm::Handle<reco::PFV0Collection >& pfV0,
00041 bool useNuclear,
00042 bool useConversions,
00043 bool useV0,
00044 const reco::PFClusterCollection & theEClus,
00045 reco::GsfPFRecTrack gsfpfrectk)
00046 {
00047 found_ = false;
00048 runConvBremFinder(thePfRecTrackCol,primaryVertex,
00049 pfNuclears,pfConversions,
00050 pfV0,useNuclear,
00051 useConversions,useV0,
00052 theEClus,gsfpfrectk);
00053 return found_;};
00054
00055
00056 const std::vector<reco::PFRecTrackRef>& getConvBremPFRecTracks() {return pfRecTrRef_vec_;};
00057
00058 private:
00059 void runConvBremFinder(const edm::Handle<reco::PFRecTrackCollection>& thePfRecTrackCol,
00060 const edm::Handle<reco::VertexCollection>& primaryVertex,
00061 const edm::Handle<reco::PFDisplacedTrackerVertexCollection>& pfNuclears,
00062 const edm::Handle<reco::PFConversionCollection >& pfConversions,
00063 const edm::Handle<reco::PFV0Collection >& pfV0,
00064 bool useNuclear,
00065 bool useConversions,
00066 bool useV0,
00067 const reco::PFClusterCollection & theEClus,
00068 reco::GsfPFRecTrack gsfpfrectk);
00069
00070
00071
00072 bool found_;
00073 TransientTrackBuilder builder_;
00074 double mvaBremConvCut_;
00075 std::string mvaWeightFileConvBrem_;
00076 TMVA::Reader *tmvaReader_;
00077 std::vector<reco::PFRecTrackRef> pfRecTrRef_vec_;
00078 float secR,secPout,ptRatioGsfKF,sTIP,Epout,detaBremKF,secPin;
00079
00080 float nHITS1;
00081
00082 };