Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef DATAFORMATS_METRECO_ECALHALODATA_H
0002 #define DATAFORMATS_METRECO_ECALHALODATA_H
0003 /*
0004   [class]:  EcalHaloData
0005   [authors]: R. Remington, The University of Florida
0006   [description]: Container class to store beam halo data specific to the Ecal subdetector
0007   [date]: October 15, 2009
0008 */
0009 #include "DataFormats/METReco/interface/PhiWedge.h"
0010 #include <cmath>
0011 #include "DataFormats/Common/interface/RefVector.h"
0012 #include "DataFormats/Common/interface/Ref.h"
0013 #include "DataFormats/Common/interface/RefProd.h"
0014 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
0015 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
0016 #include "DataFormats/EgammaReco/interface/BasicCluster.h"
0017 #include "DataFormats/Common/interface/ValueMap.h"
0018 #include "DataFormats/METReco/interface/HaloClusterCandidateECAL.h"
0019 
0020 namespace reco {
0021   class EcalHaloData {
0022   public:
0023     //Constructor
0024     EcalHaloData();
0025     //Destructor
0026     ~EcalHaloData() {}
0027 
0028     // Number of Halo-like superclusters as a function of the roundness and angular cuts
0029     //int NumberOfHaloSuperClusters(int iRoundness=2, int iAngle=2) const;
0030     int NumberOfHaloSuperClusters(float roundness = 100., float angle = 4.0) const;
0031 
0032     // Return collection of 5-degree Phi Wedges built from Ecal RecHits
0033     const std::vector<PhiWedge>& GetPhiWedges() const { return PhiWedgeCollection; }
0034     std::vector<PhiWedge>& GetPhiWedges() { return PhiWedgeCollection; }
0035 
0036     // Get Reference to the SuperClusters
0037     edm::RefVector<reco::SuperClusterCollection>& GetSuperClusters() { return TheSuperClusterRefs; }
0038     const edm::RefVector<reco::SuperClusterCollection>& GetSuperClusters() const { return TheSuperClusterRefs; }
0039 
0040     // Store Shower Shape variables for SuperClusters
0041     edm::ValueMap<float>& GetShowerShapesRoundness() { return ShowerShapes_Roundness; }
0042     const edm::ValueMap<float>& GetShowerShapesRoundness() const { return ShowerShapes_Roundness; }
0043 
0044     edm::ValueMap<float>& GetShowerShapesAngle() { return ShowerShapes_Angle; }
0045     const edm::ValueMap<float>& GetShowerShapesAngle() const { return ShowerShapes_Angle; }
0046 
0047     const std::vector<HaloClusterCandidateECAL>& getHaloClusterCandidatesEB() const { return thehaloclustercands_eb; }
0048     std::vector<HaloClusterCandidateECAL>& getHaloClusterCandidatesEB() { return thehaloclustercands_eb; }
0049     const std::vector<HaloClusterCandidateECAL>& getHaloClusterCandidatesEE() const { return thehaloclustercands_ee; }
0050     std::vector<HaloClusterCandidateECAL>& getHaloClusterCandidatesEE() { return thehaloclustercands_ee; }
0051 
0052     void setHaloClusterCandidatesEB(const std::vector<HaloClusterCandidateECAL>& x) { thehaloclustercands_eb = x; }
0053     void setHaloClusterCandidatesEE(const std::vector<HaloClusterCandidateECAL>& x) { thehaloclustercands_ee = x; }
0054 
0055   private:
0056     std::vector<PhiWedge> PhiWedgeCollection;
0057     edm::RefVector<reco::SuperClusterCollection> TheSuperClusterRefs;
0058 
0059     edm::ValueMap<float> ShowerShapes_Roundness;
0060     edm::ValueMap<float> ShowerShapes_Angle;
0061 
0062     std::vector<HaloClusterCandidateECAL> thehaloclustercands_eb;
0063     std::vector<HaloClusterCandidateECAL> thehaloclustercands_ee;
0064   };
0065 }  // namespace reco
0066 
0067 #endif