CMS 3D CMS Logo

TauElementsOperators.h

Go to the documentation of this file.
00001 #ifndef RecoTauTag_RecoTau_TauElementsOperators_H_
00002 #define RecoTauTag_RecoTau_TauElementsOperators_H_
00003 
00004 #include "DataFormats/TauReco/interface/BaseTau.h"
00005 #include "DataFormats/TrackReco/interface/Track.h"
00006 
00007 #include "RecoTauTag/TauTagTools/interface/ElementsInCone.h"
00008 #include "RecoTauTag/TauTagTools/interface/ElementsInAnnulus.h"
00009 
00010 #include "PhysicsTools/IsolationUtils/interface/FixedAreaIsolationCone.h"
00011 #include "PhysicsTools/Utilities/interface/deltaR.h"
00012 #include "PhysicsTools/Utilities/interface/Angle.h"
00013 
00014 #include "TFormula.h"
00015 
00016 using namespace edm;
00017 using namespace std;
00018 using namespace reco;
00019 
00020 class TauElementsOperators{
00021  public:
00022   TauElementsOperators();
00023   TauElementsOperators(BaseTau&);
00024   ~TauElementsOperators(){}   
00025   // compute size of signal cone possibly depending on E(energy) and/or ET(transverse energy) of the tau-jet candidate
00026   double computeConeSize(const TFormula& ConeSizeTFormula,double ConeSizeMin,double ConeSizeMax);
00027   double computeConeSize(const TFormula& ConeSizeTFormula,double ConeSizeMin,double ConeSizeMax, double transverseEnergy, double energy);
00028   TFormula computeConeSizeTFormula(const string& ConeSizeFormula,const char* errorMessage);
00029   void replaceSubStr(string& s,const string& oldSubStr,const string& newSubStr); 
00030   //return the leading (i.e. highest Pt) Track in a given cone around the jet axis or a given direction
00031   const TrackRef leadTk(string matchingConeMetric,double matchingConeSize,double ptTrackMin)const;
00032   const TrackRef leadTk(const math::XYZVector& jetAxis,string matchingConeMetric,double matchingConeSize,double ptTrackMin)const;
00033   
00034   // return all Tracks in a cone of metric* "coneMetric" and size "coneSize" around a direction "coneAxis" 
00035   const TrackRefVector tracksInCone(const math::XYZVector& coneAxis,const string coneMetric,const double coneSize,const double ptTrackMin)const;
00036   const TrackRefVector tracksInCone(const math::XYZVector& coneAxis,const string coneMetric,const double coneSize,const double ptTrackMin,const double tracktorefpoint_maxDZ,const double refpoint_Z)const;
00037   // return all Tracks in an annulus defined by inner(metric* "innerconeMetric" and size "innerconeSize") and outer(metric* "outerconeMetric" and size "outerconeSize") cones around a direction "coneAxis" 
00038   const TrackRefVector tracksInAnnulus(const math::XYZVector& coneAxis,const string innerconeMetric,const double innerconeSize,const string outerconeMetric,const double outerconeSize,const double ptTrackMin)const;  
00039   const TrackRefVector tracksInAnnulus(const math::XYZVector& coneAxis,const string innerconeMetric,const double innerconeSize,const string outerconeMetric,const double outerconeSize,const double ptTrackMin,const double tracktorefpoint_maxDZ,const double refpoint_Z)const;  
00040   // return 1 if no/low Tracks activity in an isolation annulus around a leading Track, 0 otherwise; 
00041   // different possible metrics* for the matching, signal and isolation cones; 
00042   double discriminatorByIsolTracksN(unsigned int isolationAnnulus_Tracksmaxn)const;
00043   double discriminatorByIsolTracksN(const math::XYZVector& coneAxis, 
00044                                     string matchingConeMetric,double matchingConeSize, double ptLeadingTrackMin, double ptOtherTracksMin, 
00045                                     string signalConeMetric,double signalConeSize,string isolationConeMetric,double isolationConeSize, 
00046                                     unsigned int isolationAnnulus_Tracksmaxn)const;
00047   // matching cone axis is the jet axis, signal and isolation cones axes are a leading Track axis;
00048   double discriminatorByIsolTracksN(string matchingConeMetric,double matchingConeSize, double ptLeadingTrackMin, double ptOtherTracksMin, 
00049                                     string signalConeMetric,double signalConeSize,string isolationConeMetric,double isolationConeSize, 
00050                                     unsigned int isolationAnnulus_Tracksmaxn)const;
00051  protected:
00052     TFormula ConeSizeTFormula;
00053 
00054   BaseTau& BaseTau_;
00055   double AreaMetric_recoElements_maxabsEta_;
00056   TrackRefVector Tracks_;  // track selection criteria applied
00057   TrackRefVector IsolTracks_;  // tracks in an isolation annulus, track selection criteria applied; 
00058   // template objects for DR and Angle metrics
00059   DeltaR<math::XYZVector> metricDR_;
00060   Angle<math::XYZVector> metricAngle_;
00061   ElementsInCone<math::XYZVector,DeltaR<math::XYZVector>,reco::TrackCollection> TracksinCone_DRmetric_;
00062   ElementsInCone<math::XYZVector,Angle<math::XYZVector>,reco::TrackCollection> TracksinCone_Anglemetric_; 
00063   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector>,DeltaR<math::XYZVector>,reco::TrackCollection> TracksinAnnulus_innerDRouterDRmetrics_;
00064   ElementsInAnnulus<math::XYZVector,DeltaR<math::XYZVector>,Angle<math::XYZVector>,reco::TrackCollection> TracksinAnnulus_innerDRouterAnglemetrics_; 
00065   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector>,Angle<math::XYZVector>,reco::TrackCollection> TracksinAnnulus_innerAngleouterAnglemetrics_;
00066   ElementsInAnnulus<math::XYZVector,Angle<math::XYZVector>,DeltaR<math::XYZVector>,reco::TrackCollection> TracksinAnnulus_innerAngleouterDRmetrics_; 
00067 };
00068 
00069 
00070 #endif
00071 
00072 // * different possible metrics for a cone : "DR", "angle", "area"; 

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