Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:49

0001 #ifndef ParticleFlowCandidate_PFCandidatePhotonExtra_h
0002 #define ParticleFlowCandidate_PFCandidatePhotonExtra_h
0003 
0004 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0005 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
0006 #include "DataFormats/EgammaCandidates/interface/ConversionFwd.h"
0007 
0008 #include <iosfwd>
0009 
0010 namespace reco {
0011   /** \class reco::PFCandidatePhotonExtra
0012  *
0013  * extra information on the photon particle candidate from particle flow
0014  *
0015  */
0016   class PFCandidatePhotonExtra {
0017   public:
0018     /// constructor
0019     PFCandidatePhotonExtra();
0020     /// constructor
0021     PFCandidatePhotonExtra(const reco::SuperClusterRef&);
0022     /// destructor
0023     ~PFCandidatePhotonExtra() { ; }
0024 
0025     // variables for the single conversion identification
0026 
0027     /// return a reference to the corresponding supercluster
0028     reco::SuperClusterRef superClusterRef() const { return scRef_; }
0029 
0030     /// add Single Leg Conversion TrackRef
0031     void addSingleLegConvTrackRef(const reco::TrackRef& trackref);
0032 
0033     /// return vector of Single Leg Conversion TrackRef from
0034     const std::vector<reco::TrackRef>& singleLegConvTrackRef() const { return assoSingleLegRefTrack_; }
0035 
0036     /// add Single Leg Conversion mva
0037     void addSingleLegConvMva(float& mvasingleleg);
0038 
0039     /// return Single Leg Conversion mva
0040     const std::vector<float>& singleLegConvMva() const { return assoSingleLegMva_; }
0041 
0042     /// add Conversions from PF
0043     void addConversionRef(const reco::ConversionRef& convref);
0044 
0045     /// return Conversions from PF
0046     reco::ConversionRefVector conversionRef() const { return assoConversionsRef_; }
0047 
0048     //from Mustache Id:
0049     void setMustache_Et(float Must_Et) { Mustache_Et_ = Must_Et; }
0050     void setExcludedClust(int excluded) { Excluded_clust_ = excluded; }
0051     float Mustache_Et() const { return Mustache_Et_; }
0052     int ExcludedClust() const { return Excluded_clust_; }
0053 
0054     //MVA Energy Regression:
0055     void setMVAGlobalCorrE(float GCorr) { GlobalCorr_ = GCorr; }
0056     float MVAGlobalCorrE() const { return GlobalCorr_; }
0057 
0058     void setMVAGlobalCorrEError(float GCorr) { GlobalCorrEError_ = GCorr; }
0059     float MVAGlobalCorrEError() const { return GlobalCorrEError_; }
0060 
0061     void addLCorrClusEnergy(float LCorrE);
0062     const std::vector<float>& LCorrClusEnergy() const { return LocalCorr_; }
0063 
0064     void SetPFPhotonRes(float Res) { MVAResolution_ = Res; }
0065     float PFPhotonRes() const { return MVAResolution_; }
0066 
0067   private:
0068     /// Ref to supercluster
0069     reco::SuperClusterRef scRef_;
0070 
0071     ///  vector of TrackRef from Single Leg conversions
0072     std::vector<reco::TrackRef> assoSingleLegRefTrack_;
0073 
0074     ///  vector of Mvas from Single Leg conversions
0075     std::vector<float> assoSingleLegMva_;
0076 
0077     /// vector of ConversionRef from PF
0078     reco::ConversionRefVector assoConversionsRef_;
0079 
0080     //for Mustache_Id
0081     float Mustache_Et_;
0082     int Excluded_clust_;
0083 
0084     //for MVA Regression Energy
0085     std::vector<float> LocalCorr_;
0086     float GlobalCorr_;
0087     float GlobalCorrEError_;
0088     float MVAResolution_;
0089   };
0090 }  // namespace reco
0091 #endif