13 #include "fastjet/PseudoJet.hh"
23 using PtMap = std::vector<double>;
34 enum ParType {
UNDEF, IPART, MUSEG };
40 int JetConstituentFiller::
42 const fastjet::PseudoJet* ppj2) {
45 const fastjet::PseudoJet* ppseudojet =
nullptr;
48 if ( ppseudojet ==
nullptr ) {
51 if ( ppseudojet ==
nullptr )
return -1;
59 for ( PseudoJetVector::const_iterator icon=cons.begin(); icon!=cons.end(); ++icon ) {
63 if ( pli ==
nullptr ) {
65 if ( pli ==
nullptr )
return -2;
66 unsigned int maxli = pli->
size() + 1;
69 for (
unsigned int ili=0; ili<maxli; ++ili ) {
72 for ( ParType& partype : partypes ) partype =
UNDEF;
73 for (
unsigned int idx=0;
idx<maxli; ++
idx ) {
76 partypes.push_back(
UNDEF);
78 }
else if ( lab.find(
"MuonSegment") != std::string::npos ) {
79 partypes.push_back(MUSEG);
81 partypes.push_back(IPART);
85 if ( pli != cui.
labelMap() )
return -4;
89 unsigned int icui = cui.
index();
90 ParType partype = partypes[icui];
91 if ( ppar ==
nullptr ) {
93 if ( pmscui ==
nullptr )
return -5;
95 if ( partype != MUSEG )
return -6;
97 if ( partype != IPART )
return -7;
102 jet.addConstituent(ppar);
105 if ( partype == MUSEG ) {
106 outms[icui].push_back(pms);
107 }
else if ( partype == IPART ) {
108 out[icui].push_back(ppar);
118 for (
size_t i=1;
i<
out.size(); ++
i ) {
120 const NameList& ghostlabs = *pghostlabs;
121 if (
find(ghostlabs.begin(), ghostlabs.end(), pli->
label(
i)) == ghostlabs.end() ) {
122 nbad +=
out[
i].size();
126 ParType& partype = partypes[
i];
127 std::string cname = pli->
label(
i) +
"Count";
128 std::string ptname = pli->
label(
i) +
"Pt";
134 if(!(*cacc_parent(
jet))->getAttribute(cname,count_test)) {
135 nbad +=
out[
i].size();
140 if ( partype == MUSEG ) {
142 jet.setAssociatedObjects(pli->
label(
i) , outms[
i]);
143 jet.setAttribute<
int>(cname, outms[
i].size());
144 }
else if ( partype == IPART ) {
147 jet.setAttribute<
int>(cname,
out[
i].size());
148 jet.setAttribute<
float>(ptname, ptout[
i]);
149 if ( ! outms[
i].empty() )
return -9;
167 const fastjet::PseudoJet* jet_pj =
nullptr;
172 if(jet_pj && !ignoreGhosts ){
173 constituents = jet_pj->constituents();
182 if(jet_pj && requireJetStructure){
186 constituents.reserve(
jet.numConstituents() );
187 for(
size_t i = 0;
i < constituents_all.size();
i++){
188 for(
size_t j = 0; j < constituents_tmp.
size(); j++){
189 if(std::abs((constituents_all[
i].
px()-constituents_tmp[j].Px())/constituents_tmp[j].Px()) < 0.0001 &&
190 std::abs((constituents_all[
i].
py()-constituents_tmp[j].Py())/constituents_tmp[j].Py()) < 0.0001 &&
191 std::abs((constituents_all[
i].
pz()-constituents_tmp[j].Pz())/constituents_tmp[j].Pz()) < 0.0001){
192 constituents.push_back(constituents_all[
i]);
200 constituents.reserve(
jet.numConstituents() );
201 for(
size_t i = 0;
i < constituents_tmp.
size();
i++){
202 constituents.emplace_back( constituents_tmp[
i].Px(), constituents_tmp[
i].Py(), constituents_tmp[
i].Pz(), constituents_tmp[
i].
E() );