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
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
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
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
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
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
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