00001 #ifndef PFElecTkProducer_H 00002 #define PFElecTkProducer_H 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/Framework/interface/Event.h" 00006 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00007 #include "FWCore/Framework/interface/MakerMacros.h" 00008 #include "FWCore/Framework/interface/Frameworkfwd.h" 00009 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrackFwd.h" 00010 #include "DataFormats/ParticleFlowReco/interface/GsfPFRecTrack.h" 00011 #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h" 00012 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h" 00013 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateMode.h" 00014 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateTransform.h" 00015 class PFTrackTransformer; 00016 class GsfTrack; 00017 class MagneticField; 00018 class TrackerGeometry; 00019 class ConvBremPFTrackFinder; 00020 00022 00031 class PFElecTkProducer : public edm::EDProducer { 00032 public: 00033 00035 explicit PFElecTkProducer(const edm::ParameterSet&); 00036 00038 ~PFElecTkProducer(); 00039 00040 private: 00041 virtual void beginRun(edm::Run&,const edm::EventSetup&) ; 00042 virtual void endRun() ; 00043 00045 virtual void produce(edm::Event&, const edm::EventSetup&); 00046 00047 00048 int FindPfRef(const reco::PFRecTrackCollection & PfRTkColl, 00049 reco::GsfTrack, bool); 00050 00051 bool isFifthStep(reco::PFRecTrackRef pfKfTrack); 00052 00053 bool applySelection(reco::GsfTrack); 00054 00055 bool resolveGsfTracks(const std::vector<reco::GsfPFRecTrack> &GsfPFVec, 00056 unsigned int ngsf, 00057 std::vector<unsigned int> &secondaries); 00058 00059 float selectSecondaries(const reco::GsfPFRecTrack primGsf, 00060 const reco::GsfPFRecTrack secGsf); 00061 00062 // ----------member data --------------------------- 00063 reco::GsfPFRecTrack pftrack_; 00064 reco::GsfPFRecTrack secpftrack_; 00065 edm::ParameterSet conf_; 00066 edm::InputTag gsfTrackLabel_; 00067 edm::InputTag pfTrackLabel_; 00068 edm::InputTag primVtxLabel_; 00069 edm::InputTag pfEcalClusters_; 00070 edm::InputTag pfNuclear_; 00071 edm::InputTag pfConv_; 00072 edm::InputTag pfV0_; 00073 bool useNuclear_; 00074 bool useConversions_; 00075 bool useV0_; 00076 00077 00079 PFTrackTransformer *pfTransformer_; 00080 const MultiTrajectoryStateMode *mtsMode_; 00081 MultiTrajectoryStateTransform mtsTransform_; 00082 ConvBremPFTrackFinder *convBremFinder_; 00083 00084 00086 bool trajinev_; 00087 bool modemomentum_; 00088 bool applySel_; 00089 bool applyGsfClean_; 00090 bool useFifthStep_; 00091 bool useFifthStepSec_; 00092 double SCEne_; 00093 double detaGsfSC_; 00094 double dphiGsfSC_; 00095 double maxPtConvReco_; 00096 00098 bool useConvBremFinder_; 00099 double mvaConvBremFinderID_; 00100 std::string path_mvaWeightFileConvBrem_; 00101 }; 00102 #endif