00001 #ifndef InvariantMassAlgorithm_H 00002 #define InvariantMassAlgorithm_H 00003 00004 #include "FWCore/Framework/interface/Event.h" 00005 00006 #include "DataFormats/BTauReco/interface/TauMassTagInfo.h" 00007 #include "DataFormats/BTauReco/interface/JetTag.h" 00008 #include "DataFormats/VertexReco/interface/Vertex.h" 00009 #include "DataFormats/JetReco/interface/Jet.h" 00010 #include "DataFormats/TrackReco/interface/Track.h" 00011 #include "DataFormats/JetReco/interface/JetTracksAssociation.h" 00012 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00013 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00014 #include "DataFormats/EgammaReco/interface/BasicCluster.h" 00015 #include "DataFormats/EgammaReco/interface/BasicClusterFwd.h" 00016 #include "TrackingTools/TrackAssociator/interface/TrackDetectorAssociator.h" 00017 #include "TrackingTools/TrackAssociator/interface/TrackAssociatorParameters.h" 00018 #include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h" 00019 #include "RecoTracker/TrackProducer/interface/TrackProducerBase.h" 00020 #include "TrackingTools/TransientTrack/interface/TransientTrack.h" 00021 00022 //Math 00023 #include "Math/GenVector/VectorUtil.h" 00024 #include "Math/GenVector/PxPyPzE4D.h" 00025 00026 class InvariantMassAlgorithm { 00027 00028 public: 00029 00030 InvariantMassAlgorithm(const edm::ParameterSet & parameters ); 00031 InvariantMassAlgorithm(); 00032 00033 // For out of framework usage we may need a different constructor 00034 // so we keep datamember as builtin types (instead of ParameterSet) 00035 //InvariantMassAlgorithm (int,float,....); 00036 00037 ~InvariantMassAlgorithm(); 00038 00039 std::pair<double, reco::TauMassTagInfo> tag(edm::Event& theEvent, const edm::EventSetup& theEventSetup,const reco::IsolatedTauTagInfoRef& tauRef, const edm::Handle<reco::BasicClusterCollection>& clus_handle); 00040 00041 float getMinimumClusterDR(edm::Event& theEvent, const edm::EventSetup& theEventSetup,const reco::IsolatedTauTagInfoRef& tauRef, const math::XYZVector& cluster_3vec); 00042 00043 private: 00044 00045 //algorithm parameters 00046 00047 double matching_cone; 00048 double leading_trk_pt; 00049 double signal_cone; 00050 double cluster_jet_matching_cone; 00051 double cluster_track_matching_cone; 00052 double inv_mass_cut; 00053 00054 TrackDetectorAssociator* trackAssociator_; 00055 TrackAssociatorParameters trackAssociatorParameters_; 00056 00057 }; 00058 00059 #endif 00060