58 #include <fastjet/ClusterSequence.hh>
59 #include <fastjet/tools/MassDropTagger.hh>
60 #include <fastjet/tools/Filter.hh>
85 class FlavourRecombiner :
public DefRecomb {
90 virtual std::string description()
const {
107 ostream & operator<<(ostream &,
const PseudoJet &);
115 vector<PseudoJet> particles;
122 while (getline(cin,line)) {
123 if (line.substr(0,1) ==
"#") {
continue;}
124 istringstream linestream(line);
126 linestream >> px >> py >> pz >> E;
130 if (! (linestream >> btag)) btag = 0;
134 particle.set_user_index(btag);
135 particles.push_back(particle);
145 FlavourRecombiner flav_recombiner;
146 JetDefinition jet_def(cambridge_algorithm, R, &flav_recombiner);
151 vector<PseudoJet> jets =
sorted_by_pt(cs.inclusive_jets());
153 cout <<
"Ran: " << jet_def.description() << endl << endl;
154 cout <<
"Hardest jet: " << jets[0] << endl << endl;
169 cout <<
"No substructure found" << endl;
175 cout <<
"Found suitable pair of subjets: " << endl;
176 cout <<
" " << parent1 << endl;
177 cout <<
" " << parent2 << endl;
178 cout <<
"Total = " << endl;
179 cout <<
" " << tagged << endl;
198 double Rbb = parent1.
delta_R(parent2);
199 double Rfilt = min(Rbb/2, 0.3);
201 cout <<
"Subjet separation (Rbb) = " << Rbb <<
", Rfilt = " << Rfilt << endl;
209 const vector<PseudoJet> & filtered_pieces = filtered.
pieces();
210 cout <<
"Filtered pieces are " << endl;
211 for (
unsigned i = 0; i < nfilt && i < filtered_pieces.size(); i++) {
212 cout <<
" " << filtered_pieces[i] << endl;
214 cout <<
"Filtered total is " << endl;
215 cout <<
" " << filtered << endl;
223 ostream & operator<<(ostream & ostr,
const PseudoJet & jet) {
224 ostr <<
"pt, y, phi ="
225 <<
" " << setw(10) << jet.
perp()
226 <<
" " << setw(6) << jet.
rap()
227 <<
" " << setw(6) << jet.
phi()
228 <<
", mass = " << setw(10) << jet.
m()