File indexing completed on 2024-04-06 12:23:26
0001 #ifndef PhysicsTools_Heppy_ReclusterJets_h
0002 #define PhysicsTools_Heppy_ReclusterJets_h
0003
0004 #include <vector>
0005 #include <iostream>
0006 #include <cmath>
0007 #include <TLorentzVector.h>
0008 #include <TMath.h>
0009 #include "DataFormats/Math/interface/LorentzVector.h"
0010
0011 #include <fastjet/internal/base.hh>
0012 #include "fastjet/PseudoJet.hh"
0013 #include "fastjet/JetDefinition.hh"
0014 #include "fastjet/ClusterSequence.hh"
0015 #include "fastjet/Selector.hh"
0016 #include "fastjet/PseudoJet.hh"
0017
0018 namespace heppy {
0019 class ReclusterJets {
0020 public:
0021 typedef math::XYZTLorentzVector LorentzVector;
0022
0023 ReclusterJets(const std::vector<LorentzVector> &objects, double ktpower, double rparam);
0024
0025
0026 std::vector<LorentzVector> getGrouping(double ptMin = 0.0);
0027
0028
0029 std::vector<LorentzVector> getGroupingExclusive(int njets);
0030
0031
0032 std::vector<LorentzVector> getGroupingExclusive(double dcut);
0033
0034
0035 LorentzVector getPruned(double zcut, double rcutFactor);
0036
0037
0038 LorentzVector getPrunedSubjetExclusive(unsigned int isubjet, double zcut, double rcutFactor);
0039
0040
0041 LorentzVector getPrunedSubjetInclusive(unsigned int isubjet, double zcut, double rcutFactor);
0042
0043 private:
0044
0045 std::vector<LorentzVector> makeP4s(const std::vector<fastjet::PseudoJet> &jets);
0046
0047
0048 LorentzVector getPruned(const fastjet::PseudoJet &jet, double zcut, double rcutFactor);
0049
0050
0051 std::vector<fastjet::PseudoJet> fjInputs_;
0052
0053 double ktpower_;
0054 double rparam_;
0055
0056
0057 typedef std::shared_ptr<fastjet::ClusterSequence> ClusterSequencePtr;
0058 ClusterSequencePtr fjClusterSeq_;
0059 std::vector<fastjet::PseudoJet> inclusiveJets_;
0060 std::vector<fastjet::PseudoJet> exclusiveJets_;
0061 };
0062 }
0063 #endif