CMS 3D CMS Logo

ReclusterJets.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_Heppy_ReclusterJets_h
2 #define PhysicsTools_Heppy_ReclusterJets_h
3 
4 #include <vector>
5 #include <iostream>
6 #include <cmath>
7 #include <TLorentzVector.h>
8 #include <TMath.h>
10 
11 #include <boost/shared_ptr.hpp>
12 #include <fastjet/internal/base.hh>
13 #include "fastjet/PseudoJet.hh"
14 #include "fastjet/JetDefinition.hh"
15 #include "fastjet/ClusterSequence.hh"
16 #include "fastjet/Selector.hh"
17 #include "fastjet/PseudoJet.hh"
18 
19 namespace heppy{
21 
22  public:
24 
25  ReclusterJets(const std::vector<LorentzVector> & objects, double ktpower, double rparam);
26 
28  std::vector<LorentzVector> getGrouping(double ptMin = 0.0);
29 
31  std::vector<LorentzVector> getGroupingExclusive(int njets);
32 
34  std::vector<LorentzVector> getGroupingExclusive(double dcut);
35 
37  LorentzVector getPruned(double zcut, double rcutFactor) ;
38 
40  LorentzVector getPrunedSubjetExclusive(unsigned int isubjet, double zcut, double rcutFactor) ;
41 
43  LorentzVector getPrunedSubjetInclusive(unsigned int isubjet, double zcut, double rcutFactor) ;
44 
45 
46  private:
47  // pack the returns in a fwlite-friendly way
48  std::vector<LorentzVector> makeP4s(const std::vector<fastjet::PseudoJet> &jets) ;
49 
50  // prune and return in fa fwlite-friendly way
51  LorentzVector getPruned(const fastjet::PseudoJet & jet, double zcut, double rcutFactor) ;
52 
53  // used to handle the inputs
54  std::vector<fastjet::PseudoJet> fjInputs_; // fastjet inputs
55 
56  double ktpower_;
57  double rparam_;
58 
60  typedef boost::shared_ptr<fastjet::ClusterSequence> ClusterSequencePtr;
61  ClusterSequencePtr fjClusterSeq_;
62  std::vector<fastjet::PseudoJet> inclusiveJets_;
63  std::vector<fastjet::PseudoJet> exclusiveJets_;
64 };
65 }
66 #endif
67 
math::XYZTLorentzVector LorentzVector
Definition: ReclusterJets.h:23
std::vector< fastjet::PseudoJet > fjInputs_
Definition: ReclusterJets.h:54
std::vector< LorentzVector > getGroupingExclusive(int njets)
get grouping (exclusive jets, until n are left)
LorentzVector getPrunedSubjetInclusive(unsigned int isubjet, double zcut, double rcutFactor)
get pruned 4-vector for a given subject (must be called after getGroupingInclusive) ...
std::vector< LorentzVector > getGrouping(double ptMin=0.0)
get grouping (inclusive jets)
std::vector< fastjet::PseudoJet > exclusiveJets_
Definition: ReclusterJets.h:63
ClusterSequencePtr fjClusterSeq_
Definition: ReclusterJets.h:61
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
ReclusterJets(const std::vector< LorentzVector > &objects, double ktpower, double rparam)
boost::shared_ptr< fastjet::ClusterSequence > ClusterSequencePtr
fastjet outputs
Definition: ReclusterJets.h:60
vector< PseudoJet > jets
TAKEN FROM http://cmssw.cvs.cern.ch/cgi-bin/cmssw.cgi/CMSSW/ElectroWeakAnalysis/Utilities/src/PdfWeig...
Definition: AlphaT.h:17
LorentzVector getPruned(double zcut, double rcutFactor)
get pruned 4-vector
LorentzVector getPrunedSubjetExclusive(unsigned int isubjet, double zcut, double rcutFactor)
get pruned 4-vector for a given subject (must be called after getGroupingExclusive) ...
std::vector< fastjet::PseudoJet > inclusiveJets_
Definition: ReclusterJets.h:62
std::vector< LorentzVector > makeP4s(const std::vector< fastjet::PseudoJet > &jets)