CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTauTag/TauTagTools/interface/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 "DataFormats/Math/interface/deltaR.h"
00015 #include "CommonTools/Utils/interface/Angle.h"
00016 
00017 class CaloTauElementsOperators : public TauElementsOperators {
00018  public:
00019   CaloTauElementsOperators(reco::CaloTau&);
00020   ~CaloTauElementsOperators(){} 
00021   
00022   // return all Ecal RecHits in a cone of metric* "coneMetric" and size "coneSize" around a direction "coneAxis" 
00023   std::vector<std::pair<math::XYZPoint,float> > EcalRecHitsInCone(const math::XYZVector& coneAxis,const std::string coneMetric,const double coneSize,const double EcalRecHit_minEt,const std::vector<std::pair<math::XYZPoint,float> >& myEcalRecHits)const;
00024   // 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" 
00025   std::vector<std::pair<math::XYZPoint,float> > EcalRecHitsInAnnulus(const math::XYZVector& coneAxis,const std::string innerconeMetric,const double innerconeSize,const std::string outerconeMetric,const double outerconeSize,const double EcalRecHit_minEt,const std::vector<std::pair<math::XYZPoint,float> >& myEcalRecHits)const;
00026 
00027   // These function kept for out-of-box compatability with 2_2_X
00028   std::vector<std::pair<math::XYZPoint,float> > EcalRecHitsInCone(const math::XYZVector& coneAxis,const std::string coneMetric,const double coneSize,const double EcalRecHit_minEt)const;
00029   std::vector<std::pair<math::XYZPoint,float> > EcalRecHitsInAnnulus(const math::XYZVector& coneAxis,const std::string innerconeMetric,const double innerconeSize,const std::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   std::vector<std::pair<math::XYZPoint,float> > neutralEcalBasicClustersInCone(const math::XYZVector& coneAxis,const std::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   std::vector<std::pair<math::XYZPoint,float> > neutralEcalBasicClustersInAnnulus(const math::XYZVector& coneAxis,const std::string innerconeMetric,const double innerconeSize,const std::string outerconeMetric,const double outerconeSize,const double neutralEcalBasicCluster_minEt)const; 
00035   
00036   void setAreaMetricrecoElementsmaxabsEta(const double x) {AreaMetric_recoElements_maxabsEta_=x;}   
00037  private:
00038   reco::CaloTau& CaloTau_;
00039   std::vector<std::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>,std::pair<math::XYZPoint,float> > EcalRecHitsinCone_DRmetric_;
00045   ElementsInCone<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,std::pair<math::XYZPoint,float> > EcalRecHitsinCone_Anglemetric_; 
00046   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector,math::XYZPoint>,DeltaR<math::XYZVector,math::XYZPoint>,std::pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerDRouterDRmetrics_;
00047   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector,math::XYZPoint>,Angle<math::XYZVector,math::XYZPoint>,std::pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerDRouterAnglemetrics_; 
00048   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,Angle<math::XYZVector,math::XYZPoint>,std::pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerAngleouterAnglemetrics_;
00049   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector,math::XYZPoint>,DeltaR<math::XYZVector,math::XYZPoint>,std::pair<math::XYZPoint,float> > EcalRecHitsinAnnulus_innerAngleouterDRmetrics_; 
00050 };
00051 #endif
00052 
00053 // * different possible metrics for a cone : "DR", "angle", "area";