Go to the documentation of this file.00001 #ifndef ParticleFlowCandidate_PFCandidateElectronExtra_h
00002 #define ParticleFlowCandidate_PFCandidateElectronExtra_h
00003
00004 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00005 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h"
00006 #include "DataFormats/Math/interface/LorentzVector.h"
00007
00008 #include <iosfwd>
00009
00010 namespace reco {
00016 class PFCandidateElectronExtra {
00017 public:
00018 enum StatusFlag {
00019 X=0,
00020 Selected,
00021 ECALDrivenPreselected,
00022 MVASelected,
00023 Rejected
00024 };
00025
00026
00027 enum MvaVariable {
00028 MVA_FIRST=0,
00029 MVA_LnPtGsf=MVA_FIRST,
00030 MVA_EtaGsf,
00031 MVA_SigmaPtOverPt,
00032 MVA_Fbrem,
00033 MVA_Chi2Gsf,
00034 MVA_NhitsKf,
00035 MVA_Chi2Kf,
00036 MVA_EtotOverPin,
00037 MVA_EseedOverPout,
00038 MVA_EbremOverDeltaP,
00039 MVA_DeltaEtaTrackCluster,
00040 MVA_LogSigmaEtaEta,
00041 MVA_HOverHE,
00042 MVA_LateBrem,
00043 MVA_FirstBrem,
00044 MVA_MVA,
00045 MVA_LAST
00046 };
00047
00048
00049 public:
00051 PFCandidateElectronExtra();
00053 PFCandidateElectronExtra(const GsfTrackRef&);
00055 ~PFCandidateElectronExtra(){;}
00056
00058 void setGsfTrackRef(const reco::GsfTrackRef& ref);
00059
00061 void setKfTrackRef(const reco::TrackRef & ref);
00062
00064 reco::GsfTrackRef gsfTrackRef() const { return gsfTrackRef_; }
00065
00067 reco::TrackRef kfTrackRef() const { return kfTrackRef_; }
00068
00070 void setLateBrem(float val);
00072 void setEarlyBrem(float val);
00073
00075 void setGsfTrackPout(const math::XYZTLorentzVector& pout);
00076
00078 void setClusterEnergies(const std::vector<float>& energies);
00079
00081 void setSigmaEtaEta(float val);
00082
00084 void setDeltaEta(float val);
00085
00087 void setHadEnergy(float val);
00088
00090 void setMVA(float val);
00091
00093 void setStatus(StatusFlag type,bool status=true);
00094
00096 bool electronStatus(StatusFlag) const ;
00097
00099 bool mvaStatus(MvaVariable flag) const;
00100
00102 const std::vector<float> & mvaVariables() const {return mvaVariables_;}
00103
00105 float mvaVariable(MvaVariable var) const;
00106
00107 private:
00108 void setVariable(MvaVariable type,float var);
00109
00110 private:
00112 reco::GsfTrackRef gsfTrackRef_;
00114 reco::TrackRef kfTrackRef_;
00115
00117 std::vector<float> clusterEnergies_;
00118
00120 std::vector<float> mvaVariables_;
00121
00123 int mvaStatus_;
00124
00126 int status_;
00127
00129 math::XYZTLorentzVector pout_;
00130 float earlyBrem_;
00131 float lateBrem_;
00132 float sigmaEtaEta_;
00133 float hadEnergy_;
00134 float deltaEta_;
00135 };
00136
00138 std::ostream& operator<<( std::ostream& out, const PFCandidateElectronExtra& c );
00139
00140 }
00141 #endif