00001 #ifndef RECOMET_METALGORITHMS_ECALHALOALGO_H 00002 #define RECOMET_METALGORITHMS_ECALHALOALGO_H 00003 /* 00004 [class]: EcalHaloAlgo 00005 [authors]: R. Remington, The University of Florida 00006 [description]: Algorithm to calculate quantities relevant to EcalHaloData object 00007 [date]: October 15, 2009 00008 */ 00009 #include "DataFormats/METReco/interface/EcalHaloData.h" 00010 00011 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00012 #include "DataFormats/GeometrySurface/interface/BoundPlane.h" 00013 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00014 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00015 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00016 #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" 00017 #include "Geometry/Records/interface/CaloGeometryRecord.h" 00018 00019 #include "DataFormats/DetId/interface/DetId.h" 00020 #include "DataFormats/CaloRecHit/interface/CaloRecHit.h" 00021 00022 #include "Geometry/CaloTopology/interface/EcalBarrelTopology.h" 00023 #include "Geometry/CaloTopology/interface/EcalEndcapTopology.h" 00024 #include "DataFormats/CaloRecHit/interface/CaloID.h" 00025 #include "DataFormats/EcalDetId/interface/EBDetId.h" 00026 #include "DataFormats/EcalDetId/interface/EEDetId.h" 00027 #include "DataFormats/EcalDetId/interface/ESDetId.h" 00028 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" 00029 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h" 00030 #include "DataFormats/EgammaReco/interface/SuperCluster.h" 00031 #include "DataFormats/EgammaReco/interface/BasicCluster.h" 00032 //#include "RecoEcal/EgammaCoreTools/interface/EcalClusterLazyTools.h" 00033 #include "RecoEcal/EgammaCoreTools/interface/EcalClusterTools.h" 00034 #include "DataFormats/EgammaReco/interface/SuperCluster.h" 00035 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h" 00036 #include "DataFormats/EgammaReco/interface/BasicCluster.h" 00037 #include "DataFormats/EgammaCandidates/interface/Conversion.h" 00038 #include "DataFormats/EgammaCandidates/interface/ConversionFwd.h" 00039 #include "DataFormats/EgammaCandidates/interface/Photon.h" 00040 #include "DataFormats/EgammaCandidates/interface/PhotonFwd.h" 00041 00042 class EcalHaloAlgo 00043 { 00044 public: 00045 // constructor 00046 EcalHaloAlgo(); 00047 // destructor 00048 ~EcalHaloAlgo(){} 00049 00050 // Run algorithm 00051 reco::EcalHaloData Calculate(const CaloGeometry& TheCaloGeometry, edm::Handle<reco::PhotonCollection>& ThePhotons, edm::Handle<reco::SuperClusterCollection>& TheSuperClusters,edm::Handle<EBRecHitCollection>& TheEBRecHits, edm::Handle<EERecHitCollection>& TheEERecHits, edm::Handle<ESRecHitCollection>& TheESRecHits); 00052 // Set Roundness cuts 00053 void SetRoundnessCut( float r = 100.){ RoundnessCut=r; } 00054 // Set Angle cuts 00055 void SetAngleCut(float a = 4.){ AngleCut =a;} 00056 00057 // Set RecHit Energy Thresholds 00058 void SetRecHitEnergyThresholds( float EB, float EE, float ES){ EBRecHitEnergyThreshold = EB; EERecHitEnergyThreshold = EE ; ESRecHitEnergyThreshold = ES;} 00059 // Set Phi Wedge Thresholds 00060 void SetPhiWedgeEnergyThreshold( float SumE ){ SumEnergyThreshold = SumE ;} 00061 void SetPhiWedgeNHitsThreshold( int nhits ) { NHitsThreshold = nhits ; } 00062 void SetPhiWedgeThresholds(float SumE, int nhits) { SumEnergyThreshold = SumE ; NHitsThreshold = nhits ;} 00063 00064 // Get Roundness cut 00065 float GetRoundnessCut(){return RoundnessCut ;} 00066 // Get Angle cut 00067 float GetAngleCut(){return AngleCut ;} 00068 00069 // Get RecHit Energy Threshold 00070 float GetEBRecHitEnergyThreshold(){ return EBRecHitEnergyThreshold;} 00071 float GetEERecHitEnergyThreshold(){ return EERecHitEnergyThreshold;} 00072 float GetESRecHitEnergyThreshold(){ return ESRecHitEnergyThreshold;} 00073 00074 // Get Phi Wedge Threhsolds 00075 float GetPhiWedgeEnergyThreshold() { return SumEnergyThreshold;} 00076 int GetPhiWedgeNHitsThreshold() { return NHitsThreshold;} 00077 00078 00079 private: 00080 00081 // Cut Value for Supercluster "roundness" variable 00082 float RoundnessCut; 00083 // Cut Value for Supercluster "angle" variable 00084 float AngleCut; 00085 00086 // Invidiual RecHit Threhsolds 00087 float EBRecHitEnergyThreshold; 00088 float EERecHitEnergyThreshold; 00089 float ESRecHitEnergyThreshold; 00090 00091 // Phi Wedge Thresholds 00092 float SumEnergyThreshold; 00093 int NHitsThreshold; 00094 }; 00095 00096 00097 00098 #endif