CMS 3D CMS Logo

PileUpSubtractor.h
Go to the documentation of this file.
1 #ifndef __PUSubtractor__
2 #define __PUSubtractor__
3 
4 #include <vector>
5 
6 #include "fastjet/PseudoJet.hh"
7 #include "fastjet/ClusterSequence.hh"
8 #include "fastjet/ClusterSequenceArea.hh"
9 #include "fastjet/GhostedAreaSpec.hh"
10 
17 
22 
24 public:
25  typedef std::shared_ptr<fastjet::ClusterSequence> ClusterSequencePtr;
26  typedef std::shared_ptr<fastjet::GhostedAreaSpec> ActiveAreaSpecPtr;
27  typedef std::shared_ptr<fastjet::RangeDefinition> RangeDefPtr;
28  typedef std::shared_ptr<fastjet::JetDefinition> JetDefPtr;
29 
31  virtual ~PileUpSubtractor() { ; }
32 
33  virtual void setDefinition(JetDefPtr const& jetDef);
34  virtual void reset(std::vector<edm::Ptr<reco::Candidate> >& input,
35  std::vector<fastjet::PseudoJet>& towers,
36  std::vector<fastjet::PseudoJet>& output);
37  virtual void setupGeometryMap(edm::Event& iEvent, const edm::EventSetup& iSetup);
38  virtual void calculatePedestal(std::vector<fastjet::PseudoJet> const& coll);
39  virtual void subtractPedestal(std::vector<fastjet::PseudoJet>& coll);
40  virtual void calculateOrphanInput(std::vector<fastjet::PseudoJet>& orphanInput);
41  virtual void offsetCorrectJets();
42  virtual double getMeanAtTower(const reco::CandidatePtr& in) const;
43  virtual double getSigmaAtTower(const reco::CandidatePtr& in) const;
44  virtual double getPileUpAtTower(const reco::CandidatePtr& in) const;
45  virtual double getPileUpEnergy(int ijet) const { return jetOffset_[ijet]; }
46  virtual double getCone(double cone, double eta, double phi, double& et, double& pu);
47  int getN(const reco::CandidatePtr& in) const;
48  int getNwithJets(const reco::CandidatePtr& in) const;
49 
50  int ieta(const reco::CandidatePtr& in) const;
51  int iphi(const reco::CandidatePtr& in) const;
52 
53 protected:
54  // From jet producer
55  JetDefPtr fjJetDefinition_; // fastjet jet definition
56  ClusterSequencePtr fjClusterSeq_; // fastjet cluster sequence
57  std::vector<edm::Ptr<reco::Candidate> >* inputs_; // input candidates
58  std::vector<fastjet::PseudoJet>* fjInputs_; // fastjet inputs
59  std::vector<fastjet::PseudoJet>* fjJets_; // fastjet jets
60  std::vector<fastjet::PseudoJet> fjOriginalInputs_; // to back-up unsubtracted fastjet inputs
61 
62  // PU subtraction parameters
63  bool reRunAlgo_;
66  double jetPtMin_;
67  double puPtMin_;
68 
69  double ghostEtaMax;
71  double ghostArea;
72 
73  double nSigmaPU_; // number of sigma for pileup
74  double radiusPU_; // pileup radius
75  ActiveAreaSpecPtr fjActiveArea_; // fastjet active area definition
76  CaloGeometry const* geo_; // geometry
77  int ietamax_; // maximum eta in geometry
78  int ietamin_; // minimum eta in geometry
79  std::vector<HcalDetId> allgeomid_; // all det ids in the geometry
80  std::map<int, int> geomtowers_; // map of geometry towers to det id
81  std::map<int, int> ntowersWithJets_; // number of towers with jets
82  std::map<int, double> esigma_; // energy sigma
83  std::map<int, double> emean_; // energy mean
84 
85  std::vector<double> jetOffset_;
86 };
87 
89 namespace edm {
90  class ParameterSet;
91  class EventSetup;
92  class ConsumesCollector;
93 } // namespace edm
96 
97 #endif
virtual void calculateOrphanInput(std::vector< fastjet::PseudoJet > &orphanInput)
std::vector< double > jetOffset_
std::map< int, double > esigma_
virtual double getMeanAtTower(const reco::CandidatePtr &in) const
int getNwithJets(const reco::CandidatePtr &in) const
std::vector< fastjet::PseudoJet > * fjJets_
std::vector< fastjet::PseudoJet > fjOriginalInputs_
virtual double getPileUpEnergy(int ijet) const
virtual double getPileUpAtTower(const reco::CandidatePtr &in) const
edmplugin::PluginFactory< PileUpSubtractor *(const edm::ParameterSet &, edm::ConsumesCollector &&)> PileUpSubtractorFactory
static std::string const input
Definition: EdmProvDump.cc:48
int ieta(const reco::CandidatePtr &in) const
std::map< int, int > geomtowers_
virtual void offsetCorrectJets()
std::vector< fastjet::PseudoJet > * fjInputs_
std::map< int, double > emean_
int iEvent
Definition: GenABIO.cc:224
std::map< int, int > ntowersWithJets_
std::shared_ptr< fastjet::RangeDefinition > RangeDefPtr
virtual void subtractPedestal(std::vector< fastjet::PseudoJet > &coll)
int iphi(const reco::CandidatePtr &in) const
JetCorrectorParametersCollection coll
Definition: classes.h:10
ActiveAreaSpecPtr fjActiveArea_
virtual double getSigmaAtTower(const reco::CandidatePtr &in) const
ClusterSequencePtr fjClusterSeq_
virtual void setDefinition(JetDefPtr const &jetDef)
std::shared_ptr< fastjet::ClusterSequence > ClusterSequencePtr
HLT enums.
std::shared_ptr< fastjet::GhostedAreaSpec > ActiveAreaSpecPtr
CaloGeometry const * geo_
PileUpSubtractor(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
virtual void calculatePedestal(std::vector< fastjet::PseudoJet > const &coll)
virtual void setupGeometryMap(edm::Event &iEvent, const edm::EventSetup &iSetup)
virtual double getCone(double cone, double eta, double phi, double &et, double &pu)
virtual void reset(std::vector< edm::Ptr< reco::Candidate > > &input, std::vector< fastjet::PseudoJet > &towers, std::vector< fastjet::PseudoJet > &output)
std::shared_ptr< fastjet::JetDefinition > JetDefPtr
std::vector< HcalDetId > allgeomid_
JetDefPtr fjJetDefinition_
std::vector< edm::Ptr< reco::Candidate > > * inputs_
int getN(const reco::CandidatePtr &in) const
virtual ~PileUpSubtractor()