CMS 3D CMS Logo

CaloTauElementsOperators.h

Go to the documentation of this file.
00001 #ifndef RecoTauTag_RecoTau_CaloTauElementsOperators_H_
00002 #define RecoTauTag_RecoTau_CaloTauElementsOperators_H_
00003 
00004 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00005 #include "DataFormats/Math/interface/Point3D.h"
00006 #include "DataFormats/TauReco/interface/CaloTau.h"
00007 #include "DataFormats/TrackReco/interface/Track.h"
00008 #include "DataFormats/JetReco/interface/Jet.h"
00009 
00010 #include "RecoTauTag/TauTagTools/interface/TauElementsOperators.h"
00011 #include "RecoTauTag/TauTagTools/interface/ElementsInCone.h"
00012 #include "RecoTauTag/TauTagTools/interface/ElementsInAnnulus.h"
00013 #include "PhysicsTools/IsolationUtils/interface/FixedAreaIsolationCone.h"
00014 #include "PhysicsTools/Utilities/interface/deltaR.h"
00015 #include "PhysicsTools/Utilities/interface/Angle.h"
00016 
00017 using namespace edm;
00018 using namespace std;
00019 using namespace reco;
00020 
00021 class CaloTauElementsOperators : public TauElementsOperators {
00022  public:
00023   CaloTauElementsOperators(CaloTau&);
00024   ~CaloTauElementsOperators(){} 
00025   
00026   // return all Ecal RecHits in a cone of metric* "coneMetric" and size "coneSize" around a direction "coneAxis" 
00027   vector<pair<math::XYZPoint,float> > EcalRecHitsInCone(const math::XYZVector& coneAxis,const string coneMetric,const double coneSize,const double EcalRecHit_minEt)const;
00028   // return all Ecal RecHits in an annulus defined by inner(metric* "innerconeMetric" and size "innerconeSize") and outer(metric* "outerconeMetric" and size "outerconeSize") cones around a direction "coneAxis" 
00029   vector<pair<math::XYZPoint,float> > EcalRecHitsInAnnulus(const math::XYZVector& coneAxis,const string innerconeMetric,const double innerconeSize,const string outerconeMetric,const double outerconeSize,const double EcalRecHit_minEt)const; 
00030   
00031   // return all neutral Ecal BasicClusters in a cone of metric* "coneMetric" and size "coneSize" around a direction "coneAxis" 
00032   vector<pair<math::XYZPoint,float> > neutralEcalBasicClustersInCone(const math::XYZVector& coneAxis,const string coneMetric,const double coneSize,const double neutralEcalBasicCluster_minEt)const;
00033   // return all neutral Ecal BasicClusters in an annulus defined by inner(metric* "innerconeMetric" and size "innerconeSize") and outer(metric* "outerconeMetric" and size "outerconeSize") cones around a direction "coneAxis" 
00034   vector<pair<math::XYZPoint,float> > neutralEcalBasicClustersInAnnulus(const math::XYZVector& coneAxis,const string innerconeMetric,const double innerconeSize,const string outerconeMetric,const double outerconeSize,const double neutralEcalBasicCluster_minEt)const; 
00035   
00036   void setAreaMetricrecoElementsmaxabsEta(const double x) {AreaMetric_recoElements_maxabsEta_=x;}   
00037  private:
00038   CaloTau& CaloTau_;
00039   vector<pair<math::XYZPoint,float> > EcalRecHits_;
00040   double AreaMetric_recoElements_maxabsEta_;
00041   // template objects for DR and Angle metrics
00042   DeltaR<math::XYZVector,math::XYZPoint> metricDR_;
00043   Angle<math::XYZVector,math::XYZPoint> metricAngle_;
00044   ElementsInCone<math::XYZVector,DeltaR<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinCone_DRmetric_;
00045   ElementsInCone<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinCone_Anglemetric_; 
00046   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector,math::XYZPoint>,DeltaR<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerDRouterDRmetrics_;
00047   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector,math::XYZPoint>,Angle<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerDRouterAnglemetrics_; 
00048   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,Angle<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_;
00049   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,DeltaR<math::XYZVector,math::XYZPoint>,pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerAngleouterDRmetrics_; 
00050 };
00051 #endif
00052 
00053 // * different possible metrics for a cone : "DR", "angle", "area"; 

Generated on Tue Jun 9 17:45:03 2009 for CMSSW by  doxygen 1.5.4