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 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
00081 float nHITS1;
00082
00083 PFEnergyCalibration* pfcalib_;
00084
00085 };