ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/CmsHi/JetAnalysis/src/HiJetResponseAnalyzer.cc
(Generate patch)

Comparing UserCode/CmsHi/JetAnalysis/src/HiJetResponseAnalyzer.cc (file contents):
Revision 1.1 by yilmaz, Thu Sep 9 15:05:01 2010 UTC vs.
Revision 1.5 by yilmaz, Wed Sep 29 15:59:10 2010 UTC

# Line 20 | Line 20
20  
21   // system include files
22   #include <memory>
23 + #include <iostream>
24  
25   // user include files
26   #include "FWCore/Framework/interface/Frameworkfwd.h"
# Line 39 | Line 40
40   #include "DataFormats/JetReco/interface/CaloJetCollection.h"
41   #include "DataFormats/JetReco/interface/GenJetCollection.h"
42  
43 + #include "CommonTools/UtilAlgos/interface/TFileService.h"
44 + #include "FWCore/ServiceRegistry/interface/Service.h"
45 +
46 +
47   #include "TTree.h"
48  
49   using namespace std;
# Line 57 | Line 62 | struct JRA{
62     float b;
63     float hf;
64     float jtpt[MAXJETS];
65 +   float jtcorpt[MAXJETS];
66     float refpt[MAXJETS];
67     float jteta[MAXJETS];
68     float refeta[MAXJETS];
# Line 80 | Line 86 | class HiJetResponseAnalyzer : public edm
86        virtual void beginJob() ;
87        virtual void analyze(const edm::Event&, const edm::EventSetup&);
88        virtual void endJob() ;
89 +   bool selectJet(int i);
90  
91        // ----------member data ---------------------------
92  
93 <   double genJetPtMin_;
93 >   bool usePat_;
94 >   bool doMC_;
95 >   bool filterJets_;
96 >   bool diJetsOnly_;
97 >   bool matchDiJets_;
98 >
99 >   double genPtMin_;
100 >   double ptMin_;
101 >   double emfMin_;
102 >   double n90Min_;
103 >   double n90hitMin_;
104 >
105 >   edm::InputTag jetTag_;
106  
107     JRA jra_;
108     TTree* t;
# Line 92 | Line 111 | class HiJetResponseAnalyzer : public edm
111     edm::Handle<reco::Centrality> cent;
112  
113     edm::Handle<reco::JetView> jets;
114 +   edm::Handle<pat::JetCollection> patjets;
115  
116 +   edm::Service<TFileService> fs;
117  
118 + };
119 +
120 + bool HiJetResponseAnalyzer::selectJet(int i){
121 +  
122 +   const reco::Jet& jet = (*jets)[i];
123 +  
124 +   if(usePat_){
125 +      //      cout<<"a"<<endl;
126 +      const pat::Jet& patjet = (*patjets)[i];
127 +      //      cout<<"b"<<endl;
128 +      
129 +      if(patjet.emEnergyFraction() <= emfMin_) return false;
130 +      //      cout<<"c"<<endl;
131 +
132 +      if(patjet.jetID().n90Hits <= n90hitMin_) return false;
133 +      //      cout<<"d"<<endl;
134 +
135 +      if(doMC_){
136 +        
137 +      }
138 +
139 +   }
140 +
141 +   return true;
142 +
143 + }
144  
145  
99 };
146  
147   //
148   // constants, enums and typedefs
# Line 113 | Line 159 | HiJetResponseAnalyzer::HiJetResponseAnal
159  
160   {
161     //now do what ever initialization is needed
162 <   genJetPtMin_ = 0;
162 >
163 >   ptMin_ = iConfig.getUntrackedParameter<double>("ptMin",0);
164 >   genPtMin_ = iConfig.getUntrackedParameter<double>("genPtMin",0);
165 >   emfMin_ = iConfig.getUntrackedParameter<double>("emfMin",0);
166 >   n90Min_ = iConfig.getUntrackedParameter<double>("n90Min",0);
167 >   n90hitMin_ = iConfig.getUntrackedParameter<double>("n90hitMin",0);
168 >
169 >   filterJets_ = iConfig.getUntrackedParameter<bool>("filterJets",true);
170 >   diJetsOnly_ = iConfig.getUntrackedParameter<bool>("diJetsOnly",true);
171 >   matchDiJets_ = iConfig.getUntrackedParameter<bool>("usePat",true);
172 >   usePat_ = iConfig.getUntrackedParameter<bool>("usePat",true);
173 >   doMC_ = iConfig.getUntrackedParameter<bool>("doMC",true);
174 >   jetTag_ = iConfig.getUntrackedParameter<edm::InputTag>("src",edm::InputTag("selectedPatJets"));
175 >
176   }
177  
178  
# Line 136 | Line 195 | HiJetResponseAnalyzer::analyze(const edm
195   {
196     using namespace edm;
197  
198 +   iEvent.getByLabel(jetTag_,jets);
199 +   if(usePat_)iEvent.getByLabel(jetTag_,patjets);
200  
201 +   jra_.nref = 0;
202     for(unsigned int j = 0 ; j < jets->size(); ++j){
141
142      const pat::Jet jet = (pat::Jet)((*jets)[j]);
203        
204 <      if(jet.genJet() != 0){
204 >      //      const pat::Jet& jet = (*jets)[j];
205 >      if(filterJets_ && !selectJet(j)) continue;
206 >
207 >      const reco::Jet& jet = (*jets)[j];      
208  
209 <         if(jet.genJet()->pt() < genJetPtMin_) continue;
210 <         jra_.refpt[jra_.nref] = jet.genJet()->pt();
211 <         jra_.refeta[jra_.nref] = jet.genJet()->eta();
212 <         jra_.refphi[jra_.nref] = jet.genJet()->phi();
213 <          
214 <         jra_.jtpt[jra_.nref] = jet.pt();
215 <         jra_.jteta[jra_.nref] = jet.eta();
216 <         jra_.jtphi[jra_.nref] = jet.phi();
217 <          
218 <         jra_.nref++;
219 <          
209 >      jra_.jtpt[jra_.nref] = jet.pt();
210 >      jra_.jteta[jra_.nref] = jet.eta();
211 >      jra_.jtphi[jra_.nref] = jet.phi();
212 >      jra_.jtcorpt[jra_.nref] = jet.pt();
213 >
214 >      if(usePat_){
215 >         const pat::Jet& patjet = (*patjets)[j];
216 >
217 >         jra_.jtpt[jra_.nref] = patjet.correctedJet("raw").pt();
218 >         jra_.jtcorpt[jra_.nref] = patjet.pt();
219 >        
220 >         if(doMC_ && patjet.genJet() != 0){        
221 >            if(patjet.genJet()->pt() < genPtMin_) continue;
222 >            jra_.refpt[jra_.nref] = patjet.genJet()->pt();
223 >            jra_.refeta[jra_.nref] = patjet.genJet()->eta();
224 >            jra_.refphi[jra_.nref] = patjet.genJet()->phi();
225 >                            
226 >         }else{
227 >            jra_.refpt[jra_.nref] = -99;
228 >            jra_.refeta[jra_.nref] = -99;
229 >            jra_.refphi[jra_.nref] = -99;
230 >         }
231        }
232 +      
233 +      jra_.nref++;
234 +      
235     }
236  
237     t->Fill();
238  
162
163
164 #ifdef THIS_IS_AN_EVENT_EXAMPLE
165   Handle<ExampleData> pIn;
166   iEvent.getByLabel("example",pIn);
167 #endif
168  
169 #ifdef THIS_IS_AN_EVENTSETUP_EXAMPLE
170   ESHandle<SetupData> pSetup;
171   iSetup.get<SetupRecord>().get(pSetup);
172 #endif
239   }
240  
241  
# Line 177 | Line 243 | HiJetResponseAnalyzer::analyze(const edm
243   void
244   HiJetResponseAnalyzer::beginJob()
245   {
246 +
247 +   t= fs->make<TTree>("t","Jet Response Analyzer");
248 +   t->Branch("b",&jra_.b,"b/F");
249 +   t->Branch("hf",&jra_.hf,"hf/F");
250 +   t->Branch("nref",&jra_.nref,"nref/I");
251 +   t->Branch("jtpt",jra_.jtpt,"jtpt[nref]/F");
252 +   t->Branch("jtcorpt",jra_.jtcorpt,"jtcorpt[nref]/F");
253 +   t->Branch("refpt",jra_.refpt,"refpt[nref]/F");
254 +   t->Branch("jteta",jra_.jteta,"jteta[nref]/F");
255 +   t->Branch("refeta",jra_.refeta,"refeta[nref]/F");
256 +   t->Branch("jtphi",jra_.jtphi,"jtphi[nref]/F");
257 +   t->Branch("refphi",jra_.refphi,"refphi[nref]/F");
258 +   t->Branch("weight",&jra_.weight,"weight/F");
259 +   t->Branch("bin",&jra_.bin,"bin/I");
260 +
261 +
262 +
263   }
264  
265   // ------------ method called once each job just after ending the event loop  ------------

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines