1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include "CommonTools/CandUtils/interface/cloneDecayTree.h"
#include "DataFormats/Candidate/interface/CompositeCandidate.h"
using namespace std;
using namespace reco;
unique_ptr<Candidate> cloneDecayTree(const Candidate &c) {
size_t n = c.numberOfDaughters();
if (n == 1)
return unique_ptr<Candidate>(c.clone());
// pass a particle, not a candidate, to avoid cloning daughters
const Candidate &p = c;
auto cmp = std::make_unique<CompositeCandidate>(p);
for (size_t i = 0; i < n; ++i)
cmp->addDaughter(cloneDecayTree(*c.daughter(i)));
return cmp;
}
|