CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/RecoEcal/EgammaCoreTools/interface/Mustache.h

Go to the documentation of this file.
00001 #ifndef RecoEcal_EgammaCoreTools_Mustache_h
00002 #define RecoEcal_EgammaCoreTools_Mustache_h
00003 
00004 #include <vector>
00005 #include "DataFormats/CaloRecHit/interface/CaloCluster.h"
00006 #include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h"
00007 #include "DataFormats/EgammaReco/interface/SuperCluster.h"
00008 
00009 
00010 
00011 namespace reco {
00012   namespace MustacheKernel {    
00013       bool inMustache(const float maxEta, const float maxPhi, 
00014                       const float ClustE, const float ClusEta, 
00015                       const float ClusPhi);
00016       bool inDynamicDPhiWindow(const bool isEE, const float seedPhi,
00017                                const float ClustE, const float ClusEta,
00018                                const float clusPhi);
00019      
00020   }
00021 
00022   class Mustache {
00023     
00024   public:
00025     void MustacheID(const CaloClusterPtrVector& clusters, 
00026                     int & nclusters, float & EoutsideMustache);
00027     void MustacheID(const std::vector<const CaloCluster*>&, 
00028                     int & nclusers,
00029                     float & EoutsideMustache); 
00030     void MustacheID(const reco::SuperCluster& sc, 
00031                     int & nclusters, 
00032                     float & EoutsideMustache);
00033 
00034 
00035     void MustacheClust(const std::vector<CaloCluster>& clusters, 
00036                        std::vector<unsigned int>& insideMust, 
00037                        std::vector<unsigned int>& outsideMust);
00038     
00039     void FillMustacheVar(const std::vector<CaloCluster>& clusters);
00040     //return Functions for Mustache Variables:
00041     float MustacheE(){return Energy_In_Mustache_;}
00042     float MustacheEOut(){return Energy_Outside_Mustache_;}
00043     float MustacheEtOut(){return Et_Outside_Mustache_;}
00044     float LowestMustClust(){return LowestClusterEInMustache_;}
00045     int InsideMust(){return included_;}
00046     int OutsideMust(){return excluded_;}
00047   private:
00048     template<class RandomAccessPtrIterator>
00049       void MustacheID(const RandomAccessPtrIterator&,
00050                       const RandomAccessPtrIterator&,
00051                       int& nclusters,
00052                       float& EoutsideMustache);
00053     
00054     float Energy_In_Mustache_;
00055     float Energy_Outside_Mustache_;
00056     float Et_Outside_Mustache_;
00057     float LowestClusterEInMustache_;
00058     int excluded_;
00059     int included_;
00060   };
00061 
00062   
00063 }
00064 
00065 #endif