00001 #ifndef DATAFORMATS_METRECO_BEAMHALOSUMMARY_H 00002 #define DATAFORMATS_METRECO_BEAMHALOSUMMARY_H 00003 00004 /* 00005 [class]: BeamHaloSummary 00006 [authors]: R. Remington, The University of Florida 00007 [description]: Container class that stores Ecal,CSC,Hcal, and Global BeamHalo data 00008 [date]: October 15, 2009 00009 */ 00010 00011 #include "DataFormats/Common/interface/RefVector.h" 00012 #include "DataFormats/Common/interface/Ref.h" 00013 #include "DataFormats/Common/interface/RefProd.h" 00014 00015 #include "DataFormats/METReco/interface/CSCHaloData.h" 00016 #include "DataFormats/METReco/interface/EcalHaloData.h" 00017 #include "DataFormats/METReco/interface/HcalHaloData.h" 00018 #include "DataFormats/METReco/interface/GlobalHaloData.h" 00019 00020 namespace reco { 00021 class BeamHaloInfoProducer; 00022 00023 class BeamHaloSummary{ 00024 friend class reco::BeamHaloInfoProducer; 00025 public: 00026 00027 //constructors 00028 BeamHaloSummary(); 00029 BeamHaloSummary(CSCHaloData& csc, EcalHaloData& ecal, HcalHaloData& hcal, GlobalHaloData& global); 00030 00031 //destructor 00032 virtual ~BeamHaloSummary() {} 00033 00034 const bool HcalLooseHaloId()const { return HcalHaloReport.size() ? HcalHaloReport[0] : false ; } 00035 const bool HcalTightHaloId()const { return HcalHaloReport.size() > 1 ? HcalHaloReport[1] : false ; } 00036 00037 const bool EcalLooseHaloId()const { return EcalHaloReport.size() ? EcalHaloReport[0] : false ; } 00038 const bool EcalTightHaloId()const { return EcalHaloReport.size() > 1 ? EcalHaloReport[1] : false ; } 00039 00040 const bool CSCLooseHaloId() const { return CSCHaloReport.size() ? CSCHaloReport[0] : false ; } 00041 const bool CSCTightHaloId() const { return CSCHaloReport.size() > 1 ? CSCHaloReport[1] : false ; } 00042 00043 const bool GlobalLooseHaloId() const { return GlobalHaloReport.size() ? GlobalHaloReport[0] : false ; } 00044 const bool GlobalTightHaloId() const { return GlobalHaloReport.size() > 1 ? GlobalHaloReport[1] : false ; } 00045 00046 const bool EventSmellsLikeHalo() const { return HcalLooseHaloId() || EcalLooseHaloId() || CSCLooseHaloId() || GlobalLooseHaloId() ; } 00047 const bool LooseId() const { return EventSmellsLikeHalo(); } 00048 const bool TightId() const { return HcalTightHaloId() || EcalTightHaloId() || CSCTightHaloId() || GlobalTightHaloId() ; } 00049 const bool ExtremeTightId ()const { return GlobalTightHaloId() ; } 00050 00051 // Getters 00052 std::vector<char>& GetHcalHaloReport(){return HcalHaloReport;} 00053 const std::vector<char>& GetHcalHaloReport() const { return HcalHaloReport;} 00054 00055 std::vector<char>& GetEcalHaloReport(){return EcalHaloReport;} 00056 const std::vector<char>& GetEcalHaloReport() const {return EcalHaloReport;} 00057 00058 std::vector<char>& GetCSCHaloReport() { return CSCHaloReport ;} 00059 const std::vector<char>& GetCSCHaloReport() const { return CSCHaloReport ; } 00060 00061 std::vector<char>& GetGlobalHaloReport() { return GlobalHaloReport ;} 00062 const std::vector<char>& GetGlobalHaloReport() const {return GlobalHaloReport ; } 00063 00064 std::vector<int>& GetHcaliPhiSuspects() { return HcaliPhiSuspects ; } 00065 const std::vector<int>& GetHcaliPhiSuspects() const { return HcaliPhiSuspects ; } 00066 00067 std::vector<int>& GetEcaliPhiSuspects() { return EcaliPhiSuspects ; } 00068 const std::vector<int>& GetEcaliPhiSuspects() const { return EcaliPhiSuspects ; } 00069 00070 std::vector<int>& GetGlobaliPhiSuspects() { return GlobaliPhiSuspects ;} 00071 const std::vector<int>& GetGlobaliPhiSuspects() const { return GlobaliPhiSuspects ;} 00072 00073 private: 00074 std::vector<char> HcalHaloReport; 00075 std::vector<char> EcalHaloReport; 00076 std::vector<char> CSCHaloReport; 00077 std::vector<char> GlobalHaloReport; 00078 00079 std::vector<int> HcaliPhiSuspects; 00080 std::vector<int> EcaliPhiSuspects; 00081 std::vector<int> GlobaliPhiSuspects; 00082 00083 }; 00084 00085 } 00086 00087 00088 #endif