This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
users:clange [2013/09/20 21:06] – created clange | users:clange [2014/05/07 18:25] (current) – clange | ||
---|---|---|---|
Line 11: | Line 11: | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | ==== useful stuff ==== | ||
+ | |||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | ==== teaching and seminars ==== | ||
+ | |||
+ | * [[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()) { | ||
+ | // | ||
+ | // } | ||
+ | // } | ||
+ | | ||
+ | } |