This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| users:clange [2013/09/20 21:10] – clange | users:clange [2014/05/07 18:25] (current) – clange | ||
|---|---|---|---|
| Line 20: | Line 20: | ||
| * [[http:// | * [[http:// | ||
| - | | + | |
| + | |||
| + | ==== Code ==== | ||
| + | |||
| + | Sorting a vector based on another vector: http:// | ||
| + | |||
| + | struct tlvordering { | ||
| + | bool operator ()(std:: | ||
| + | return (*(a.second)).Pt() > (b.second-> | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | |||
| + | template < | ||
| + | std:: | ||
| + | std:: | ||
| + | std:: | ||
| + | ) { | ||
| + | std:: | ||
| + | |||
| + | size_t const size = in.size(); | ||
| + | for (size_t i = 0; i < size; ++i) | ||
| + | ret[i] = in[reference[i].first]; | ||
| + | |||
| + | return ret; | ||
| + | } | ||
| + | |||
| + | |||
| + | void sortJetsByPt(std:: | ||
| + | std:: | ||
| + | std:: | ||
| + | std:: | ||
| + | std:: | ||
| + | std:: | ||
| + | |||
| + | // make a pair of index order and TLorentzVector | ||
| + | std:: | ||
| + | size_t n = 0; | ||
| + | for (std:: | ||
| + | order[n] = std:: | ||
| + | } | ||
| + | // sort order pair by jet Pt | ||
| + | sort(order.begin(), | ||
| + | // user order pair as reference for sorting all vectors | ||
| + | selJets = sort_from_tlvref(selJets, | ||
| + | selJetsP4 = sort_from_tlvref(selJetsP4, | ||
| + | selJetsSVMassBins = sort_from_tlvref(selJetsSVMassBins, | ||
| + | selJetsSVMassSum = sort_from_tlvref(selJetsSVMassSum, | ||
| + | selJetsBTags = sort_from_tlvref(selJetsBTags, | ||
| + | selJetsFlav = sort_from_tlvref(selJetsFlav, | ||
| + | |||
| + | // loop over jets and change order | ||
| + | // for (size_t iJ = 0; iJ < selJets.size()-1; | ||
| + | // | ||
| + | // if (selJetsP4[iJ].Pt() < selJetsP4[iJ+1].Pt()) { | ||
| + | // | ||
| + | // } | ||
| + | // } | ||
| + | |||
| + | } | ||