![]() |
![]() |
Classes | |
class | filterChargedAndNeutralsByPt |
class | refVectorPtSorter |
class | sortByAscendingPt |
class | sortByDescendingPt |
class | sortByOpeningAngleAscending |
class | sortByOpeningAngleDescending |
class | sortRefsByOpeningDistance |
Functions | |
double | computeAngle (const math::XYZVector &vec1, const math::XYZVector &vec2) |
TFormula | computeConeSizeTFormula (const std::string &ConeSizeFormula, const char *errorMessage) |
TFormula | computeConeSizeTFormula (const string &ConeSizeFormula, const char *errorMessage) |
double | computeDeltaR (const math::XYZVector &vec1, const math::XYZVector &vec2) |
reco::PFCandidateRefVector | filteredPFChargedHadrCands (reco::PFCandidateRefVector theInitialPFCands, double ChargedHadrCand_tkminPt, int ChargedHadrCand_tkminPixelHitsn, int ChargedHadrCand_tkminTrackerHitsn, double ChargedHadrCand_tkmaxipt, double ChargedHadrCand_tkmaxChi2, reco::Vertex pV) |
reco::PFCandidateRefVector | filteredPFChargedHadrCands (reco::PFCandidateRefVector theInitialPFCands, double ChargedHadrCand_tkminPt, int ChargedHadrCand_tkminPixelHitsn, int ChargedHadrCand_tkminTrackerHitsn, double ChargedHadrCand_tkmaxipt, double ChargedHadrCand_tkmaxChi2, double ChargedHadrCand_tktorefpointmaxDZ, reco::Vertex pV, double refpoint_Z) |
reco::PFCandidateRefVector | filteredPFChargedHadrCandsByNumTrkHits (reco::PFCandidateRefVector theInitialPFCands, int ChargedHadrCand_tkminTrackerHitsn) |
reco::PFCandidateRefVector | filteredPFGammaCands (reco::PFCandidateRefVector theInitialPFCands, double GammaCand_EcalclusMinEt) |
reco::PFCandidateRefVector | filteredPFNeutrHadrCands (reco::PFCandidateRefVector theInitialPFCands, double NeutrHadrCand_HcalclusMinEt) |
reco::TrackRefVector | filteredTracks (reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, reco::Vertex pV) |
reco::TrackRefVector | filteredTracks (reco::TrackRefVector theInitialTracks, double tkminPt, int tkminPixelHitsn, int tkminTrackerHitsn, double tkmaxipt, double tkmaxChi2, double tktorefpointmaxDZ, reco::Vertex pV, double refpoint_Z) |
reco::TrackRefVector | filteredTracksByNumTrkHits (reco::TrackRefVector theInitialTracks, int tkminTrackerHitsn) |
math::XYZPoint | propagTrackECALSurfContactPoint (const MagneticField *, reco::TrackRef) |
void | replaceSubStr (std::string &s, const std::string &oldSubStr, const std::string &newSubStr) |
void | replaceSubStr (string &s, const string &oldSubStr, const string &newSubStr) |
void | sortRefVectorByPt (reco::PFCandidateRefVector &) |
double TauTagTools::computeAngle | ( | const math::XYZVector & | vec1, |
const math::XYZVector & | vec2 | ||
) |
Definition at line 13 of file TauTagTools.cc.
Referenced by PFTauElementsOperators::computeInsideOutContents().
{ Angle<math::XYZVector> myMetricAngle_; return myMetricAngle_(vec1, vec2); }
TFormula TauTagTools::computeConeSizeTFormula | ( | const std::string & | ConeSizeFormula, |
const char * | errorMessage | ||
) |
TFormula TauTagTools::computeConeSizeTFormula | ( | const string & | ConeSizeFormula, |
const char * | errorMessage | ||
) |
Definition at line 18 of file TauTagTools.cc.
References Exception, and replaceSubStr().
{ //--- check functional form // given as configuration parameter for matching and signal cone sizes; // // The size of a cone may depend on the energy "E" and/or transverse energy "ET" of the tau-jet candidate. // Alternatively one can additionally use "JetOpeningDR", which specifies the opening angle of the seed jet. // Any functional form that is supported by ROOT's TFormula class can be used (e.g. "3.0/E", "0.25/sqrt(ET)") // // replace "E" by TFormula variable "x" // "ET" "y" TFormula ConeSizeTFormula; string ConeSizeFormulaStr = ConeSizeFormula; replaceSubStr(ConeSizeFormulaStr,"JetOpeningDR", "z"); replaceSubStr(ConeSizeFormulaStr,"ET","y"); replaceSubStr(ConeSizeFormulaStr,"E","x"); ConeSizeTFormula.SetName("ConeSize"); ConeSizeTFormula.SetTitle(ConeSizeFormulaStr.data()); // the function definition is actually stored in the "Title" data-member of the TFormula object int errorFlag = ConeSizeTFormula.Compile(); if (errorFlag!= 0) { throw cms::Exception("") << "\n unsupported functional Form for " << errorMessage << " " << ConeSizeFormula << std::endl << "Please check that the Definition in \"" << ConeSizeTFormula.GetName() << "\" only contains the variables \"E\" or \"ET\"" << " and Functions that are supported by ROOT's TFormular Class." << std::endl; }else return ConeSizeTFormula; }
double TauTagTools::computeDeltaR | ( | const math::XYZVector & | vec1, |
const math::XYZVector & | vec2 | ||
) |
Definition at line 8 of file TauTagTools.cc.
Referenced by PFRecoTauAlgorithm::buildPFTau(), PFTauDiscriminants::PFTauDiscriminantManager::outlierObjectsSortedByDR(), and PFTauDiscriminants::PFTauDiscriminantManager::signalObjectsSortedByDR().
{ DeltaR<math::XYZVector> myMetricDR_; return myMetricDR_(vec1, vec2); }
PFCandidateRefVector TauTagTools::filteredPFChargedHadrCands | ( | reco::PFCandidateRefVector | theInitialPFCands, |
double | ChargedHadrCand_tkminPt, | ||
int | ChargedHadrCand_tkminPixelHitsn, | ||
int | ChargedHadrCand_tkminTrackerHitsn, | ||
double | ChargedHadrCand_tkmaxipt, | ||
double | ChargedHadrCand_tkmaxChi2, | ||
reco::Vertex | pV | ||
) |
Definition at line 119 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), reco::PFCandidate::e, edm::RefVector< C, T, F >::end(), reco::PFCandidate::h, reco::PFCandidate::mu, reco::Vertex::position(), and edm::RefVector< C, T, F >::push_back().
Referenced by PFRecoTauTagInfoAlgorithm::buildPFTauTagInfo(), filteredPFChargedHadrCands(), filteredPFChargedHadrCandsByNumTrkHits(), PFTauQualityCutWrapper::isolationChargedObjects(), and PFTauQualityCutWrapper::signalChargedObjects().
{ PFCandidateRefVector filteredPFChargedHadrCands; for(PFCandidateRefVector::const_iterator iPFCand=theInitialPFCands.begin();iPFCand!=theInitialPFCands.end();iPFCand++){ if (PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::h || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::mu || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::e){ // *** Whether the charged hadron candidate will be selected or not depends on its rec. tk properties. TrackRef PFChargedHadrCand_rectk = (**iPFCand).trackRef(); if (!PFChargedHadrCand_rectk)continue; if ((*PFChargedHadrCand_rectk).pt()>=ChargedHadrCand_tkminPt && (*PFChargedHadrCand_rectk).normalizedChi2()<=ChargedHadrCand_tkmaxChi2 && fabs((*PFChargedHadrCand_rectk).dxy(pv.position()))<=ChargedHadrCand_tkmaxipt && (*PFChargedHadrCand_rectk).numberOfValidHits()>=ChargedHadrCand_tkminTrackerHitsn && (*PFChargedHadrCand_rectk).hitPattern().numberOfValidPixelHits()>=ChargedHadrCand_tkminPixelHitsn) filteredPFChargedHadrCands.push_back(*iPFCand); } } return filteredPFChargedHadrCands; }
PFCandidateRefVector TauTagTools::filteredPFChargedHadrCands | ( | reco::PFCandidateRefVector | theInitialPFCands, |
double | ChargedHadrCand_tkminPt, | ||
int | ChargedHadrCand_tkminPixelHitsn, | ||
int | ChargedHadrCand_tkminTrackerHitsn, | ||
double | ChargedHadrCand_tkmaxipt, | ||
double | ChargedHadrCand_tkmaxChi2, | ||
double | ChargedHadrCand_tktorefpointmaxDZ, | ||
reco::Vertex | pV, | ||
double | refpoint_Z | ||
) |
Definition at line 138 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), reco::PFCandidate::e, edm::RefVector< C, T, F >::end(), filteredPFChargedHadrCands(), reco::PFCandidate::h, reco::Vertex::isFake(), reco::PFCandidate::mu, reco::Vertex::position(), and edm::RefVector< C, T, F >::push_back().
{ if(pv.isFake()) ChargedHadrCand_tktorefpointmaxDZ = 30.; PFCandidateRefVector filteredPFChargedHadrCands; for(PFCandidateRefVector::const_iterator iPFCand=theInitialPFCands.begin();iPFCand!=theInitialPFCands.end();iPFCand++){ if (PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::h || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::mu || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::e){ // *** Whether the charged hadron candidate will be selected or not depends on its rec. tk properties. TrackRef PFChargedHadrCand_rectk = (**iPFCand).trackRef(); if (!PFChargedHadrCand_rectk)continue; if ((*PFChargedHadrCand_rectk).pt()>=ChargedHadrCand_tkminPt && (*PFChargedHadrCand_rectk).normalizedChi2()<=ChargedHadrCand_tkmaxChi2 && fabs((*PFChargedHadrCand_rectk).dxy(pv.position()))<=ChargedHadrCand_tkmaxipt && (*PFChargedHadrCand_rectk).numberOfValidHits()>=ChargedHadrCand_tkminTrackerHitsn && (*PFChargedHadrCand_rectk).hitPattern().numberOfValidPixelHits()>=ChargedHadrCand_tkminPixelHitsn && fabs((*PFChargedHadrCand_rectk).dz(pv.position()))<=ChargedHadrCand_tktorefpointmaxDZ) filteredPFChargedHadrCands.push_back(*iPFCand); } } return filteredPFChargedHadrCands; }
PFCandidateRefVector TauTagTools::filteredPFChargedHadrCandsByNumTrkHits | ( | reco::PFCandidateRefVector | theInitialPFCands, |
int | ChargedHadrCand_tkminTrackerHitsn | ||
) |
Definition at line 104 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), reco::PFCandidate::e, edm::RefVector< C, T, F >::end(), filteredPFChargedHadrCands(), reco::PFCandidate::h, reco::PFCandidate::mu, and edm::RefVector< C, T, F >::push_back().
Referenced by PFRecoTauAlgorithm::buildPFTau().
{ PFCandidateRefVector filteredPFChargedHadrCands; for(PFCandidateRefVector::const_iterator iPFCand=theInitialPFCands.begin();iPFCand!=theInitialPFCands.end();iPFCand++){ if (PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::h || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::mu || PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::e){ // *** Whether the charged hadron candidate will be selected or not depends on its rec. tk properties. TrackRef PFChargedHadrCand_rectk = (**iPFCand).trackRef(); if (!PFChargedHadrCand_rectk)continue; if ( (*PFChargedHadrCand_rectk).numberOfValidHits()>=ChargedHadrCand_tkminTrackerHitsn ) filteredPFChargedHadrCands.push_back(*iPFCand); } } return filteredPFChargedHadrCands; }
PFCandidateRefVector TauTagTools::filteredPFGammaCands | ( | reco::PFCandidateRefVector | theInitialPFCands, |
double | GammaCand_EcalclusMinEt | ||
) |
Definition at line 171 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), reco::PFCandidate::gamma, and edm::RefVector< C, T, F >::push_back().
Referenced by PFRecoTauTagInfoAlgorithm::buildPFTauTagInfo(), PFTauQualityCutWrapper::isolationGammaObjects(), and PFTauQualityCutWrapper::signalGammaObjects().
{ PFCandidateRefVector filteredPFGammaCands; for(PFCandidateRefVector::const_iterator iPFCand=theInitialPFCands.begin();iPFCand!=theInitialPFCands.end();iPFCand++){ if (PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::gamma){ // *** Whether the gamma candidate will be selected or not depends on its rec. ECAL cluster properties. if ((**iPFCand).et()>=GammaCand_EcalclusMinEt){ filteredPFGammaCands.push_back(*iPFCand); } } } return filteredPFGammaCands; }
PFCandidateRefVector TauTagTools::filteredPFNeutrHadrCands | ( | reco::PFCandidateRefVector | theInitialPFCands, |
double | NeutrHadrCand_HcalclusMinEt | ||
) |
Definition at line 158 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), reco::PFCandidate::h0, and edm::RefVector< C, T, F >::push_back().
Referenced by PFRecoTauTagInfoAlgorithm::buildPFTauTagInfo().
{ PFCandidateRefVector filteredPFNeutrHadrCands; for(PFCandidateRefVector::const_iterator iPFCand=theInitialPFCands.begin();iPFCand!=theInitialPFCands.end();iPFCand++){ if (PFCandidate::ParticleType((**iPFCand).particleId())==PFCandidate::h0){ // *** Whether the neutral hadron candidate will be selected or not depends on its rec. HCAL cluster properties. if ((**iPFCand).et()>=NeutrHadrCand_HcalclusMinEt){ filteredPFNeutrHadrCands.push_back(*iPFCand); } } } return filteredPFNeutrHadrCands; }
TrackRefVector TauTagTools::filteredTracks | ( | reco::TrackRefVector | theInitialTracks, |
double | tkminPt, | ||
int | tkminPixelHitsn, | ||
int | tkminTrackerHitsn, | ||
double | tkmaxipt, | ||
double | tkmaxChi2, | ||
reco::Vertex | pV | ||
) |
Definition at line 77 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), reco::Vertex::position(), and edm::RefVector< C, T, F >::push_back().
Referenced by CaloRecoTauTagInfoAlgorithm::buildCaloTauTagInfo(), PFRecoTauTagInfoAlgorithm::buildPFTauTagInfo(), filteredTracks(), filteredTracksByNumTrkHits(), CaloRecoTauTagInfoAlgorithm::filterTracksByQualityBit(), PFTauQualityCutWrapper::isolationChargedObjects(), ConfigurableTertiaryTracksVertexFinder::reconstruct(), and PFTauQualityCutWrapper::signalChargedObjects().
{ TrackRefVector filteredTracks; for(TrackRefVector::const_iterator iTk=theInitialTracks.begin();iTk!=theInitialTracks.end();iTk++){ if ((**iTk).pt()>=tkminPt && (**iTk).normalizedChi2()<=tkmaxChi2 && fabs((**iTk).dxy(pv.position()))<=tkmaxipt && (**iTk).numberOfValidHits()>=tkminTrackerHitsn && (**iTk).hitPattern().numberOfValidPixelHits()>=tkminPixelHitsn) filteredTracks.push_back(*iTk); } return filteredTracks; }
TrackRefVector TauTagTools::filteredTracks | ( | reco::TrackRefVector | theInitialTracks, |
double | tkminPt, | ||
int | tkminPixelHitsn, | ||
int | tkminTrackerHitsn, | ||
double | tkmaxipt, | ||
double | tkmaxChi2, | ||
double | tktorefpointmaxDZ, | ||
reco::Vertex | pV, | ||
double | refpoint_Z | ||
) |
Definition at line 89 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), filteredTracks(), reco::Vertex::isFake(), reco::Vertex::position(), and edm::RefVector< C, T, F >::push_back().
{ TrackRefVector filteredTracks; for(TrackRefVector::const_iterator iTk=theInitialTracks.begin();iTk!=theInitialTracks.end();iTk++){ if(pv.isFake()) tktorefpointmaxDZ=30.; if ((**iTk).pt()>=tkminPt && (**iTk).normalizedChi2()<=tkmaxChi2 && fabs((**iTk).dxy(pv.position()))<=tkmaxipt && (**iTk).numberOfValidHits()>=tkminTrackerHitsn && (**iTk).hitPattern().numberOfValidPixelHits()>=tkminPixelHitsn && fabs((**iTk).dz(pv.position()))<=tktorefpointmaxDZ) filteredTracks.push_back(*iTk); } return filteredTracks; }
TrackRefVector TauTagTools::filteredTracksByNumTrkHits | ( | reco::TrackRefVector | theInitialTracks, |
int | tkminTrackerHitsn | ||
) |
Definition at line 68 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::begin(), edm::RefVector< C, T, F >::end(), filteredTracks(), and edm::RefVector< C, T, F >::push_back().
Referenced by CaloRecoTauAlgorithm::buildCaloTau(), and PFRecoTauAlgorithm::buildPFTau().
{ TrackRefVector filteredTracks; for(TrackRefVector::const_iterator iTk=theInitialTracks.begin();iTk!=theInitialTracks.end();iTk++){ if ( (**iTk).numberOfValidHits() >= tkminTrackerHitsn ) filteredTracks.push_back(*iTk); } return filteredTracks; }
math::XYZPoint TauTagTools::propagTrackECALSurfContactPoint | ( | const MagneticField * | theMagField, |
reco::TrackRef | theTrack | ||
) |
Definition at line 184 of file TauTagTools.cc.
References alongMomentum, ECALBounds::barrel_halfLength(), ECALBounds::barrel_innerradius(), ECALBounds::barrelBound(), PV3DBase< T, PVType, FrameType >::eta(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), ECALBounds::negativeEndcapDisk(), PV3DBase< T, PVType, FrameType >::perp(), GlobalTrajectoryParameters::position(), ECALBounds::positiveEndcapDisk(), AnalyticalPropagator::propagate(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by CaloRecoTauAlgorithm::buildCaloTau(), CaloRecoTauDiscriminationAgainstElectron::discriminate(), and CaloRecoTauTagInfoAlgorithm::getNeutralEcalBasicClusters().
{ AnalyticalPropagator thefwdPropagator(theMagField,alongMomentum); math::XYZPoint propTrack_XYZPoint(0.,0.,0.); // get the initial Track FreeTrajectoryState - at outermost point position if possible, else at innermost point position: GlobalVector theTrack_initialGV(0.,0.,0.); GlobalPoint theTrack_initialGP(0.,0.,0.); if(theTrack->outerOk()){ GlobalVector theTrack_initialoutermostGV(theTrack->outerMomentum().x(),theTrack->outerMomentum().y(),theTrack->outerMomentum().z()); GlobalPoint theTrack_initialoutermostGP(theTrack->outerPosition().x(),theTrack->outerPosition().y(),theTrack->outerPosition().z()); theTrack_initialGV=theTrack_initialoutermostGV; theTrack_initialGP=theTrack_initialoutermostGP; } else if(theTrack->innerOk()){ GlobalVector theTrack_initialinnermostGV(theTrack->innerMomentum().x(),theTrack->innerMomentum().y(),theTrack->innerMomentum().z()); GlobalPoint theTrack_initialinnermostGP(theTrack->innerPosition().x(),theTrack->innerPosition().y(),theTrack->innerPosition().z()); theTrack_initialGV=theTrack_initialinnermostGV; theTrack_initialGP=theTrack_initialinnermostGP; } else return (propTrack_XYZPoint); GlobalTrajectoryParameters theTrack_initialGTPs(theTrack_initialGP,theTrack_initialGV,theTrack->charge(),&*theMagField); // FIX THIS !!! // need to convert from perigee to global or helix (curvilinear) frame // for now just an arbitrary matrix. CLHEP::HepSymMatrix covM_HepSM(6,1); covM_HepSM*=1e-6; // initialize to sigma=1e-3 CartesianTrajectoryError cov_CTE(covM_HepSM); FreeTrajectoryState Track_initialFTS(theTrack_initialGTPs,cov_CTE); // *** // propagate to ECAL surface: double ECALcorner_tantheta=ECALBounds::barrel_innerradius()/ECALBounds::barrel_halfLength(); TrajectoryStateOnSurface Track_propagatedonECAL_TSOS=thefwdPropagator.propagate((Track_initialFTS),ECALBounds::barrelBound()); if(!Track_propagatedonECAL_TSOS.isValid() || fabs(Track_propagatedonECAL_TSOS.globalParameters().position().perp()/Track_propagatedonECAL_TSOS.globalParameters().position().z())<ECALcorner_tantheta) { if(Track_propagatedonECAL_TSOS.isValid() && fabs(Track_propagatedonECAL_TSOS.globalParameters().position().perp()/Track_propagatedonECAL_TSOS.globalParameters().position().z())<ECALcorner_tantheta){ if(Track_propagatedonECAL_TSOS.globalParameters().position().eta()>0.){ Track_propagatedonECAL_TSOS=thefwdPropagator.propagate((Track_initialFTS),ECALBounds::positiveEndcapDisk()); }else{ Track_propagatedonECAL_TSOS=thefwdPropagator.propagate((Track_initialFTS),ECALBounds::negativeEndcapDisk()); } } if(!Track_propagatedonECAL_TSOS.isValid()){ if((Track_initialFTS).position().eta()>0.){ Track_propagatedonECAL_TSOS=thefwdPropagator.propagate((Track_initialFTS),ECALBounds::positiveEndcapDisk()); }else{ Track_propagatedonECAL_TSOS=thefwdPropagator.propagate((Track_initialFTS),ECALBounds::negativeEndcapDisk()); } } } if(Track_propagatedonECAL_TSOS.isValid()){ math::XYZPoint validpropTrack_XYZPoint(Track_propagatedonECAL_TSOS.globalPosition().x(), Track_propagatedonECAL_TSOS.globalPosition().y(), Track_propagatedonECAL_TSOS.globalPosition().z()); propTrack_XYZPoint=validpropTrack_XYZPoint; } return (propTrack_XYZPoint); }
void TauTagTools::replaceSubStr | ( | std::string & | s, |
const std::string & | oldSubStr, | ||
const std::string & | newSubStr | ||
) |
Referenced by computeConeSizeTFormula().
void TauTagTools::replaceSubStr | ( | string & | s, |
const string & | oldSubStr, | ||
const string & | newSubStr | ||
) |
Definition at line 42 of file TauTagTools.cc.
{ //--- protect replacement algorithm // from case that oldSubStr and newSubStr are equal // (nothing to be done anyway) if ( oldSubStr == newSubStr ) return; //--- protect replacement algorithm // from case that oldSubStr contains no characters // (i.e. matches everything) if ( oldSubStr.empty() ) return; const string::size_type lengthOldSubStr = oldSubStr.size(); const string::size_type lengthNewSubStr = newSubStr.size(); string::size_type positionPreviousMatch = 0; string::size_type positionNextMatch = 0; //--- consecutively replace all occurences of oldSubStr by newSubStr; // keep iterating until no occurence of oldSubStr left while ( (positionNextMatch = s.find(oldSubStr, positionPreviousMatch)) != string::npos ) { s.replace(positionNextMatch, lengthOldSubStr, newSubStr); positionPreviousMatch = positionNextMatch + lengthNewSubStr; } }
void TauTagTools::sortRefVectorByPt | ( | reco::PFCandidateRefVector & | vec | ) |
Definition at line 242 of file TauTagTools.cc.
References edm::RefVector< C, T, F >::at(), i, edm::RefVector< C, T, F >::reserve(), edm::RefVector< C, T, F >::size(), python::multivaluedict::sort(), and MCScenario_CRAFT1_22X::sorter().
Referenced by HPSPFRecoTauAlgorithm::buildPFTau(), and PFCandidateStripMerger::mergeCandidates().
{ std::vector<size_t> indices; indices.reserve(vec.size()); for(unsigned int i=0;i<vec.size();++i) indices.push_back(i); refVectorPtSorter sorter(vec); std::sort(indices.begin(),indices.end(),sorter); reco::PFCandidateRefVector sorted; sorted.reserve(vec.size()); for(unsigned int i=0;i<indices.size();++i) sorted.push_back(vec.at(indices.at(i))); vec = sorted; }