96 cout << __func__ <<
' ' << slice <<
" start" << endl;
100 auto tIn1 = flow1.GetInputTree(slice);
101 auto tIn2 = flow2.GetInputTree(slice);
102 auto tOut2 = flow2.GetOutputTree(output);
103 auto tOut1 = flow1.GetOutputTree(output);
110 auto isMC = metainfo1.Get<
bool>(
"flags",
"isMC");
114 auto recEvent1 = flow1.GetBranchReadWrite<RecEvent>(
"recEvent");
115 auto recEvent2 = flow2.GetBranchReadOnly <RecEvent>(
"recEvent");
116 auto genEvent1 =
isMC ? flow1.GetBranchReadWrite<GenEvent>(
"genEvent") :
nullptr;
117 auto genEvent2 =
isMC ? flow2.GetBranchReadOnly <GenEvent>(
"genEvent") :
nullptr;
118 auto recJets1 = flow1.GetBranchReadWrite<vector<RecJet>>(
"recJets");
119 auto recJets2 = flow2.GetBranchReadOnly <vector<RecJet>>(
"recJets");
120 auto genJets1 =
isMC ? flow1.GetBranchReadWrite<vector<GenJet>>(
"genJets") :
nullptr;
121 auto genJets2 =
isMC ? flow2.GetBranchReadOnly <vector<GenJet>>(
"genJets") :
nullptr;
123 for (
DT::Looper looper1(tIn1), looper2(tIn2); looper1() && looper2(); ++looper1, ++looper2) {
127 if (recJets1 && recJets2) {
131 recJets1->insert(recJets1->end(), recJets2->begin(), recJets2->end());
132 recEvent1->weights.front() *= recEvent2->weights.front();
134 sort(recJets1->begin(), recJets1->end(),
pt_sort);
136 if (
isMC && genJets1 && genJets2) {
140 genJets1->insert(genJets1->end(), genJets2->begin(), genJets2->end());
141 genEvent1->weights.front() *= genEvent2->weights.front();
143 sort(genJets1->begin(), genJets1->end(),
pt_sort);
146 if (steering &
DT::fill) tOut1->Fill();
149 metainfo1.Set<
bool>(
"git",
"complete",
true);
150 cout << __func__ <<
' ' << slice <<
" stop" << endl;