CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_7_hltpatch2/src/RecoMET/METAlgorithms/interface/EcalHaloAlgo.h

Go to the documentation of this file.
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