CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FastJetAlgo.cc
Go to the documentation of this file.
2 
6 
8 
9 #include "fastjet/ClusterSequence.hh"
10 
11 
12 using namespace pf2pat;
13 using namespace fastjet;
14 using namespace std;
15 
16 
18  : clusterSequence_(0) {
19  setJetDefinition( ps );
20 }
21 
23  // here extract parameter set info to make the jet definition
24 
25  unsigned algorithm = ps.getParameter<unsigned>("algorithm");
26  double distance = ps.getParameter<double>("distance");
27 
28  JetDefinition jetDef( static_cast<JetAlgorithm>(algorithm), distance);
29  setJetDefinition( jetDef );
30 }
31 
32 
33 void FastJetAlgo::setJetDefinition( const fastjet::JetDefinition& jetDef) {
34  cout<<jetDef.description()<<endl;
35  jetDefinition_ = jetDef;
36 }
37 
38 
40 
41  // the input handle will be necessary to build the Ptrs to the jet constituents.
42  inputHandle_ = inputHandle;
43  const InputCollection& inputColl = *inputHandle;
44  recoToFastJet( inputColl );
46  return fastJetToReco();
47 }
48 
50  input_.clear();
51  typedef InputCollection::const_iterator II;
52 
53  unsigned index = 0;
54  for(II i=inputColl.begin(); i!=inputColl.end(); ++i, ++index) {
55  input_.push_back( PseudoJet( i->px(), i->py(), i->pz(), i->energy() ) );
56  input_.back().set_user_index( index );
57  }
58 }
59 
61  output_.clear();
63  clusterSequence_ = new ClusterSequence(input_, jetDefinition_);
64 
65  double ptMin_=2;//COLIN make it an attribute
66  output_ = clusterSequence_->inclusive_jets( ptMin_ );
67 }
68 
69 
70 
72 
73  jetCollection_.clear();
74 
75  for(PJI i=output_.begin(); i!=output_.end(); ++i) {
76  jetCollection_.push_back( makeJet( *i ) );
77  }
78 
79  return jetCollection_;
80 }
81 
82 
83 FastJetAlgo::JetType FastJetAlgo::makeJet( const PseudoJet& pseudoJet) const {
84 
85  reco::Particle::LorentzVector p4( pseudoJet.px(),
86  pseudoJet.py(),
87  pseudoJet.pz(),
88  pseudoJet.E() );
89  reco::Particle::Point vertex;
90  JetType::Specific specific;
91 
92  // need to add the constituents as well (see base Jet, or CompositePtrCandidate)
93  reco::Jet::Constituents ptrsToConstituents = makeConstituents( pseudoJet );
94 
95  makeSpecific( ptrsToConstituents, &specific );
96  return JetType(p4, vertex, specific, ptrsToConstituents);
97 }
98 
99 
100 reco::Jet::Constituents FastJetAlgo::makeConstituents(const fastjet::PseudoJet& pseudoJet) const {
101 
102  reco::Jet::Constituents ptrsToConstituents;
103 
104  const PseudoJetCollection& constituents
105  = clusterSequence_->constituents(pseudoJet);
106  for(PJI jc=constituents.begin(); jc!=constituents.end(); ++jc) {
107  ptrsToConstituents.push_back( edm::Ptr<reco::Candidate>(inputHandle_, jc->user_index() ) );
108  }
109 
110  return ptrsToConstituents;
111 }
112 
113 
114 void FastJetAlgo::printPseudoJets( ostream& out) const {
115 
116 // cout<<"Jet Definition:"<<endl;
117 // cout<<jetDefinition_;
118  cout<<"Pseudo jets:"<<endl;
119  unsigned index = 0;
120  for(PJI i=output_.begin(); i!=output_.end(); ++i, ++index) {
121  cout<<index<<" "<<i->Et()<<endl;
122 
123  const PseudoJetCollection& constituents = clusterSequence_->constituents( *i );
124  for(PJI jc=constituents.begin(); jc!=constituents.end(); ++jc) {
125  cout<<"\t"<<jc->user_index()<<" "<<jc->Et()<<endl;
126  }
127  }
128 }
129 
130 
131 void FastJetAlgo::printJets( ostream& out) const {
132 
133 // cout<<"Jet Definition:"<<endl;
134 // cout<<jetDefinition_;
135  cout<<"Jets:"<<endl;
136  unsigned index = 0;
137  for(JI i=jetCollection_.begin(); i!=jetCollection_.end(); ++i, ++index) {
138  cout<<index<<" "<<(*i)<<endl;
139  cout<<i->print()<<endl;
140  }
141 }
142 
143 
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< InputType > InputCollection
Definition: FastJetAlgo.h:27
const JetCollection & produce(const InputHandle &inputColl)
run the jet clustering on the input collection, and produce the reco jets
Definition: FastJetAlgo.cc:39
void runJetClustering()
run fast jet
Definition: FastJetAlgo.cc:60
bool makeSpecific(std::vector< reco::CandidatePtr > const &towers, const CaloSubdetectorGeometry &towerGeometry, reco::CaloJet::Specific *caloJetSpecific)
Make CaloJet specifics. Assumes PseudoJet is made from CaloTowerCandidates.
Definition: JetSpecific.cc:123
FastJetAlgo(const edm::ParameterSet &ps)
Definition: FastJetAlgo.cc:17
std::vector< Constituent > Constituents
Definition: Jet.h:24
fastjet::JetDefinition jetDefinition_
definition of the algorithm, and of the algorithm parameters
Definition: FastJetAlgo.h:86
void setJetDefinition(const edm::ParameterSet &ps)
get jet definition from parameter set
Definition: FastJetAlgo.cc:22
const JetCollection & fastJetToReco()
convert fastjet output to RECO data format (e.g. PFJet)
Definition: FastJetAlgo.cc:71
Jets made from PFObjects.
Definition: PFJet.h:22
void printJets(std::ostream &out=std::cout) const
print output jets
Definition: FastJetAlgo.cc:131
void printPseudoJets(std::ostream &out=std::cout) const
print internal pseudojets
Definition: FastJetAlgo.cc:114
InputHandle inputHandle_
keep track of the input handle - set in the produce function.
Definition: FastJetAlgo.h:74
double p4[4]
Definition: TauolaWrapper.h:92
math::XYZPoint Point
point in the space
Definition: Particle.h:30
JetType makeJet(const fastjet::PseudoJet &pseudoJet) const
Definition: FastJetAlgo.cc:83
std::vector< fastjet::PseudoJet > PseudoJetCollection
Definition: FastJetAlgo.h:22
fastjet::ClusterSequence * clusterSequence_
cluster sequence
Definition: FastJetAlgo.h:89
std::vector< JetType > JetCollection
Definition: FastJetAlgo.h:32
void recoToFastJet(const InputCollection &inputColl)
Definition: FastJetAlgo.cc:49
tuple out
Definition: dbtoconf.py:99
reco::PFJet JetType
Definition: FastJetAlgo.h:31
reco::Jet::Constituents makeConstituents(const fastjet::PseudoJet &pseudoJet) const
Definition: FastJetAlgo.cc:100
JetCollection::const_iterator JI
Definition: FastJetAlgo.h:33
JetCollection jetCollection_
output jet collection
Definition: FastJetAlgo.h:83
PseudoJetCollection output_
fastjet output
Definition: FastJetAlgo.h:80
tuple cout
Definition: gather_cfg.py:41
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:26
PseudoJetCollection input_
fastjet input
Definition: FastJetAlgo.h:77
PseudoJetCollection::const_iterator PJI
Definition: FastJetAlgo.h:23