00001 #ifndef RecoBTag_SecondaryVertex_CombinedSVComputer_h 00002 #define RecoBTag_SecondaryVertex_CombinedSVComputer_h 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 00006 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00007 #include "DataFormats/BTauReco/interface/TrackIPTagInfo.h" 00008 #include "DataFormats/BTauReco/interface/SecondaryVertexTagInfo.h" 00009 #include "DataFormats/BTauReco/interface/TaggingVariable.h" 00010 00011 #include "RecoBTag/SecondaryVertex/interface/TrackSelector.h" 00012 #include "RecoBTag/SecondaryVertex/interface/V0Filter.h" 00013 00014 class CombinedSVComputer { 00015 public: 00016 CombinedSVComputer(const edm::ParameterSet ¶ms); 00017 00018 reco::TaggingVariableList 00019 operator () (const reco::TrackIPTagInfo &ipInfo, 00020 const reco::SecondaryVertexTagInfo &svInfo) const; 00021 00022 private: 00023 struct IterationRange; 00024 00025 double flipValue(double value, bool vertex) const; 00026 IterationRange flipIterate(int size, bool vertex) const; 00027 00028 const reco::TrackIPTagInfo::TrackIPData & 00029 threshTrack(const reco::TrackIPTagInfo &trackIPTagInfo, 00030 const reco::TrackIPTagInfo::SortCriteria sort, 00031 const reco::Jet &jet, 00032 const GlobalPoint &pv) const; 00033 00034 bool trackFlip; 00035 bool vertexFlip; 00036 double charmCut; 00037 reco::TrackIPTagInfo::SortCriteria sortCriterium; 00038 reco::TrackSelector trackSelector; 00039 reco::TrackSelector trackNoDeltaRSelector; 00040 reco::TrackSelector trackPseudoSelector; 00041 unsigned int pseudoMultiplicityMin; 00042 unsigned int trackMultiplicityMin; 00043 double minTrackWeight; 00044 bool useTrackWeights; 00045 bool vertexMassCorrection; 00046 reco::V0Filter pseudoVertexV0Filter; 00047 reco::V0Filter trackPairV0Filter; 00048 }; 00049 00050 #endif // RecoBTag_SecondaryVertex_CombinedSVComputer_h