CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CATopJetAlgorithm.h
Go to the documentation of this file.
1 #ifndef RecoJets_JetAlgorithms_CATopJetAlgorithm_h
2 #define RecoJets_JetAlgorithms_CATopJetAlgorithm_h
3 
4 
5 
6 /* *********************************************************
7  * \class CATopJetAlgorithm
8  * Jet producer to produce top jets using the C-A algorithm to break
9  * jets into subjets as described here:
10  * "Top-tagging: A Method for Identifying Boosted Hadronic Tops"
11  * David E. Kaplan, Keith Rehermann, Matthew D. Schwartz, Brock Tweedie
12  * arXiv:0806.0848v1 [hep-ph]
13  *
14  ************************************************************/
15 
16 #include <vector>
17 #include <list>
18 #include <functional>
19 #include <TMath.h>
20 #include <iostream>
21 
34 
36 
37 
38 #include <fastjet/JetDefinition.hh>
39 #include <fastjet/PseudoJet.hh>
40 #include <fastjet/ClusterSequence.hh>
41 #include <fastjet/GhostedAreaSpec.hh>
42 #include <fastjet/ClusterSequenceArea.hh>
43 
45  public:
49  bool verbose,
50  int algorithm,
51  int useAdjacency,
52  double centralEtaCut,
53  double ptMin,
54  const std::vector<double> & sumEtBins,
55  const std::vector<double> & rBins,
56  const std::vector<double> & ptFracBins,
57  const std::vector<double> & deltarBins,
58  const std::vector<double> & nCellBins,
59  double seedThreshold,
60  bool useMaxTower,
61  double sumEtEtaCut,
62  double etFrac) :
63  mSrc_ (mSrc ),
64  verbose_ (verbose ),
65  algorithm_ (algorithm ),
66  useAdjacency_ (useAdjacency ),
67  centralEtaCut_ (centralEtaCut ),
68  ptMin_ (ptMin ),
69  sumEtBins_ (sumEtBins ),
70  rBins_ (rBins ),
71  ptFracBins_ (ptFracBins ),
72  deltarBins_ (deltarBins ),
73  nCellBins_ (nCellBins ),
74  seedThreshold_ (seedThreshold ),
75  useMaxTower_ (useMaxTower ),
76  sumEtEtaCut_ (sumEtEtaCut ),
77  etFrac_ (etFrac )
78 
79  { }
80 
82  void run( const std::vector<fastjet::PseudoJet> & cell_particles,
83  std::vector<fastjet::PseudoJet> & hardjetsOutput ,
84  boost::shared_ptr<fastjet::ClusterSequence> & fjClusterSeq
85  );
86 
87  private:
88 
89  edm::InputTag mSrc_; //<! calo tower input source
90  bool verbose_; //<!
91  int algorithm_; //<! 0 = KT, 1 = CA, 2 = anti-KT
92  int useAdjacency_; //<! choose adjacency requirement:
93  //<! 0 = no adjacency
94  //<! 1 = deltar adjacency
95  //<! 2 = modified adjacency
96  //<! 3 = calotower neirest neigbor based adjacency (untested)
97  double centralEtaCut_; //<! eta for defining "central" jets
98  double ptMin_; //<! lower pt cut on which jets to reco
99  std::vector<double> sumEtBins_; //<! sumEt bins over which cuts vary. vector={bin 0 lower bound, bin 1 lower bound, ...}
100  std::vector<double> rBins_; //<! Jet distance paramter R. R values depend on sumEt bins.
101  std::vector<double> ptFracBins_; //<! deltap = fraction of full jet pt for a subjet to be consider "hard".
102  std::vector<double> deltarBins_; //<! Applicable only if useAdjacency=1. deltar adjacency values for each sumEtBin
103  std::vector<double> nCellBins_; //<! Applicable only if useAdjacency=3. number of cells apart for two subjets to be considered "independent"
104  // NOT USED:
105  double seedThreshold_; //<! calo tower seed threshold - NOT USED
106  bool useMaxTower_; //<! use max tower for jet adjacency criterion, false is to use the centroid - NOT USED
107  double sumEtEtaCut_; //<! eta for event SumEt - NOT USED
108  double etFrac_; //<! fraction of event sumEt / 2 for a jet to be considered "hard" - NOT USED
109  std::string jetType_; //<! CaloJets or GenJets - NOT USED
110 
111 
112  // Decide if the two jets are in adjacent cells
113  bool adjacentCells(const fastjet::PseudoJet & jet1, const fastjet::PseudoJet & jet2,
114  const std::vector<fastjet::PseudoJet> & cell_particles,
115  const fastjet::ClusterSequence & theClusterSequence,
116  double nCellMin ) const;
117 
118 
119  // Attempt to break up one "hard" jet into two "soft" jets
120 
121  bool decomposeJet(const fastjet::PseudoJet & theJet,
122  const fastjet::ClusterSequence & theClusterSequence,
123  const std::vector<fastjet::PseudoJet> & cell_particles,
124  double ptHard, double nCellMin, double deltarcut,
125  fastjet::PseudoJet & ja, fastjet::PseudoJet & jb,
126  std::vector<fastjet::PseudoJet> & leftovers) const;
127 
128 };
129 
130 
131 
132 #endif
< trclass="colgroup">< tdclass="colgroup"colspan=5 > Ecal cluster collections</td ></tr >< tr >< td >< ahref="classreco_1_1BasicCluster.html"> reco::BasicCluster</a ></td >< td >< ahref="DataFormats_EgammaReco.html"> reco::BasicClusterCollection</a ></td >< td >< ahref="#"> hybridSuperClusters</a ></td >< tdclass="description"> Basic clusters reconstructed with hybrid algorithm(barrel only)</td >< td >S.Rahatlou</td ></tr >< tr >< td >< a href
std::vector< double > sumEtBins_
std::vector< double > rBins_
edm::InputTag mSrc_
bool adjacentCells(const fastjet::PseudoJet &jet1, const fastjet::PseudoJet &jet2, const std::vector< fastjet::PseudoJet > &cell_particles, const fastjet::ClusterSequence &theClusterSequence, double nCellMin) const
bool decomposeJet(const fastjet::PseudoJet &theJet, const fastjet::ClusterSequence &theClusterSequence, const std::vector< fastjet::PseudoJet > &cell_particles, double ptHard, double nCellMin, double deltarcut, fastjet::PseudoJet &ja, fastjet::PseudoJet &jb, std::vector< fastjet::PseudoJet > &leftovers) const
CATopJetAlgorithm(edm::InputTag mSrc, bool verbose, int algorithm, int useAdjacency, double centralEtaCut, double ptMin, const std::vector< double > &sumEtBins, const std::vector< double > &rBins, const std::vector< double > &ptFracBins, const std::vector< double > &deltarBins, const std::vector< double > &nCellBins, double seedThreshold, bool useMaxTower, double sumEtEtaCut, double etFrac)
std::vector< double > ptFracBins_
std::vector< double > deltarBins_
std::vector< double > nCellBins_
void run(const std::vector< fastjet::PseudoJet > &cell_particles, std::vector< fastjet::PseudoJet > &hardjetsOutput, boost::shared_ptr< fastjet::ClusterSequence > &fjClusterSeq)
Find the ProtoJets from the collection of input Candidates.