ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/CmsHi/JetAnalysis/modifiedFiles/PileUpSubtractor.h
Revision: 1.1
Committed: Tue Jul 12 14:13:07 2011 UTC (13 years, 10 months ago) by frankma
Content type: text/plain
Branch: MAIN
CVS Tags: tag_d20110915, cmssw39x_base, cmssw39X_base
Branch point for: cmssw39x_branch
Log Message:
pf and calo jet analysis in 39X

File Contents

# User Rev Content
1 frankma 1.1 #ifndef __PUSubtractor__
2     #define __PUSubtractor__
3    
4     #include <vector>
5     #include "fastjet/PseudoJet.hh"
6     #include "fastjet/ClusterSequence.hh"
7     #include "fastjet/ClusterSequenceArea.hh"
8     #include "fastjet/ActiveAreaSpec.hh"
9    
10     #include "FWCore/Framework/interface/Event.h"
11     #include "FWCore/Framework/interface/EventSetup.h"
12     #include "FWCore/ParameterSet/interface/ParameterSet.h"
13    
14     #include "DataFormats/JetReco/interface/CaloJet.h"
15     #include "DataFormats/HcalDetId/interface/HcalDetId.h"
16     #include "DataFormats/Candidate/interface/CandidateFwd.h"
17     #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
18    
19     class PileUpSubtractor{
20    
21     public:
22    
23     typedef boost::shared_ptr<fastjet::ClusterSequence> ClusterSequencePtr;
24     typedef boost::shared_ptr<fastjet::ActiveAreaSpec> ActiveAreaSpecPtr;
25     typedef boost::shared_ptr<fastjet::RangeDefinition> RangeDefPtr;
26    
27     PileUpSubtractor(const edm::ParameterSet& iConfig);
28     ~PileUpSubtractor(){;}
29    
30     virtual void setAlgorithm(ClusterSequencePtr& algorithm);
31     virtual void reset(std::vector<edm::Ptr<reco::Candidate> >& input,
32     std::vector<fastjet::PseudoJet>& towers,
33     std::vector<fastjet::PseudoJet>& output);
34     virtual void setupGeometryMap(edm::Event& iEvent,const edm::EventSetup& iSetup);
35     virtual void calculatePedestal(std::vector<fastjet::PseudoJet> const & coll);
36     virtual void subtractPedestal(std::vector<fastjet::PseudoJet> & coll);
37     virtual void calculateOrphanInput(std::vector<fastjet::PseudoJet> & orphanInput);
38     virtual void offsetCorrectJets();
39     virtual double getMeanAtTower(const reco::CandidatePtr & in) const;
40     virtual double getSigmaAtTower(const reco::CandidatePtr & in) const;
41     virtual double getPileUpAtTower(const reco::CandidatePtr & in) const;
42     virtual double getPileUpEnergy(int ijet) const {return jetOffset_[ijet];}
43     int ieta(const reco::CandidatePtr & in) const;
44     int iphi(const reco::CandidatePtr & in) const;
45    
46     protected:
47    
48     // From jet producer
49     ClusterSequencePtr fjClusterSeq_; // fastjet cluster sequence
50     std::vector<edm::Ptr<reco::Candidate> >* inputs_; // input candidates
51     std::vector<fastjet::PseudoJet>* fjInputs_; // fastjet inputs
52     std::vector<fastjet::PseudoJet>* fjJets_; // fastjet jets
53     std::vector<fastjet::PseudoJet> fjOriginalInputs_; // to back-up unsubtracted fastjet inputs
54    
55     // PU subtraction parameters
56     bool reRunAlgo_;
57     bool doAreaFastjet_;
58     bool doRhoFastjet_;
59     double jetPtMin_;
60     double puPtMin_;
61    
62     double nSigmaPU_; // number of sigma for pileup
63     double radiusPU_; // pileup radius
64     ActiveAreaSpecPtr fjActiveArea_; // fastjet active area definition
65     RangeDefPtr fjRangeDef_; // range definition
66    
67     CaloGeometry const * geo_; // geometry
68     int ietamax_; // maximum eta in geometry
69     int ietamin_; // minimum eta in geometry
70     std::vector<HcalDetId> allgeomid_; // all det ids in the geometry
71     std::map<int,int> geomtowers_; // map of geometry towers to det id
72     std::map<int,int> ntowersWithJets_; // number of towers with jets
73     std::map<int,double> esigma_; // energy sigma
74     std::map<int,double> emean_; // energy mean
75    
76     std::vector<double> jetOffset_;
77    
78     };
79    
80     #include "FWCore/PluginManager/interface/PluginFactory.h"
81     namespace edm {class ParameterSet; class EventSetup; }
82     typedef edmplugin::PluginFactory<PileUpSubtractor *(const edm::ParameterSet & )> PileUpSubtractorFactory;
83    
84     #endif