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

Comparing UserCode/MPIAnalyzer/src/MPIntuple.cc (file contents):
Revision 1.2 by andrey, Fri May 21 22:30:38 2010 UTC vs.
Revision 1.5 by naodell, Sun May 23 02:33:41 2010 UTC

# Line 31 | Line 31
31   #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
32   #include "Geometry/Records/interface/CaloGeometryRecord.h"
33  
34 + // Jet and vertex functions
35   #include "DataFormats/JetReco/interface/CaloJet.h"
36   #include "DataFormats/JetReco/interface/CaloJetCollection.h"
37   #include "DataFormats/JetReco/interface/PFJet.h"
# Line 41 | Line 42
42   #include "DataFormats/VertexReco/interface/Vertex.h"
43   #include "DataFormats/VertexReco/interface/VertexFwd.h"
44  
45 + // Need to get correctors
46 + #include "JetMETCorrections/Objects/interface/JetCorrector.h"
47 +
48 + // ntuple storage classes
49 + #include "TCJet.h"
50 + #include "TCPrimaryVtx.h"
51 +
52   // Need for HLT trigger info:
53   #include "FWCore/Common/interface/TriggerNames.h"
54   #include "DataFormats/Common/interface/TriggerResults.h"
55   #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
48 //
56  
57 + //Root  stuff
58   #include "TROOT.h"
59   #include "TFile.h"
60   #include "TTree.h"
# Line 82 | Line 90 | class MPIntuple : public edm::EDAnalyzer
90        // ----------member data ---------------------------
91  
92    edm::InputTag PFJetHandle_;
85  edm::InputTag CaloJetHandle_;
86  edm::InputTag PFJetHandle_corr;
87  edm::InputTag CaloJetHandle_corr;
93    edm::InputTag GenJetHandle_;
94    edm::InputTag PrimaryVtxHandle_;
95 +  edm::InputTag triggerResultsTag_;
96  
97  
98    //  Counting variables   //
# Line 96 | Line 102 | class MPIntuple : public edm::EDAnalyzer
102    TTree *sTree;
103    TFile* ntupleFile;
104  
105 <  TClonesArray* jetP4_ak5PF;
100 <  TClonesArray* jetP4_ak5PF_corr;
101 <  TClonesArray* jetVtx3_ak5PF;
102 <  TClonesArray* jetVtx3_ak5PF_corr;
103 <  TClonesArray* jetP4_ak5Calo;
104 <  TClonesArray* jetP4_ak5Calo_corr;
105 <  TClonesArray* jetVtx3_ak5Calo;
106 <  TClonesArray* jetVtx3_ak5Calo_corr;
105 >  TClonesArray* jet_ak5PF;
106    TClonesArray* jetP4_ak5Gen;
107 <  TClonesArray* jetVtx3_ak5Gen;
109 <  TClonesArray* PrimaryVtx3;
107 >  TClonesArray* primaryVtx;
108  
109    bool doGenJets_;
112  bool doCaloJets_;
110    bool doPFJets_;
111 +  bool isMC_;
112  
113    string rootfilename;
114  
115    //Triggers
116 <  std::string hlTriggerResults_;
117 <  edm::TriggerNames triggerNames;
120 <  std::string hltName_;
121 <  std::string  triggerName_;
116 >  string hlTriggerResults_, hltName_, triggerName_;
117 >  TriggerNames triggerNames;
118    HLTConfigProvider hltConfig_;
119 <  edm::InputTag triggerResultsTag_;
120 <  std::vector<std::string>  hlNames;
119 >  vector<string>  hlNames;
120 >  unsigned int triggerStatus;
121  
122  
123   };
# Line 129 | Line 125 | class MPIntuple : public edm::EDAnalyzer
125   MPIntuple::MPIntuple(const edm::ParameterSet& iConfig):
126  
127    PFJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("PFJetTag")),
132  CaloJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("CaloJetTag")),
133  PFJetHandle_corr(iConfig.getUntrackedParameter<edm::InputTag>("PFJetTag_corr")),
134  CaloJetHandle_corr(iConfig.getUntrackedParameter<edm::InputTag>("CaloJetTag_corr")),
128    GenJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("GenJetTag")),
129    PrimaryVtxHandle_(iConfig.getUntrackedParameter<edm::InputTag>("PrimaryVtxTag")),
130    doGenJets_(iConfig.getUntrackedParameter<bool>("doGenJets")),
138  doCaloJets_(iConfig.getUntrackedParameter<bool>("doCaloJets")),
131    doPFJets_(iConfig.getUntrackedParameter<bool>("doPFJets")),
132 +  isMC_(iConfig.getUntrackedParameter<bool>("isMC")),
133    rootfilename(iConfig.getUntrackedParameter<string>("rootfilename")),
134    hlTriggerResults_(iConfig.getUntrackedParameter<string>("HLTriggerResults","TriggerResults")),
135    hltName_(iConfig.getUntrackedParameter<string>("hltName","HLT"))
# Line 152 | Line 145 | MPIntuple::~MPIntuple()
145  
146   }
147  
155
148   //
149   // member functions
150   //
# Line 166 | Line 158 | void MPIntuple::analyze(const edm::Event
158    lumiSection  = (unsigned int)iEvent.getLuminosityBlock().luminosityBlock();
159    
160    int PFcount = 0;
169  int Calocount = 0;
170  int PFcount_corr = 0;
171  int Calocount_corr = 0;
161    int Gencount = 0;
162    int Vtxcount = 0;
163  
164    if(doPFJets_){
165 <    
165 >
166 >    const JetCorrector* correctorL2 = JetCorrector::getJetCorrector ("ak5PFL2Relative",iSetup);
167 >    const JetCorrector* correctorL3 = JetCorrector::getJetCorrector ("ak5PFL3Absolute",iSetup);
168 >
169      Handle<reco::PFJetCollection> PFJets;
170      iEvent.getByLabel(PFJetHandle_, PFJets);
171      
# Line 182 | Line 174 | void MPIntuple::analyze(const edm::Event
174      for(PFJetCollection::const_iterator jet_iter = PFJets->begin(); jet_iter!= PFJets->end(); ++jet_iter){
175        
176        reco::PFJet myJet = reco::PFJet(*jet_iter);
177 <      
178 <      if(myJet.et() > 5){
179 <        
180 <        new ((*jetP4_ak5PF)[PFcount]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
189 <        new ((*jetVtx3_ak5PF)[PFcount]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
190 <        
191 <        ++PFcount;
192 <      }
193 <      
194 <    }
195 <    
196 <    
197 <    PFcount_corr = 0;
198 <    
199 <    Handle<reco::PFJetCollection> PFJets_corr;
200 <    iEvent.getByLabel(PFJetHandle_corr, PFJets_corr);
201 <    
202 <    for(PFJetCollection::const_iterator jet_iter = PFJets_corr->begin(); jet_iter!= PFJets_corr->end(); ++jet_iter){
203 <      
204 <      reco::PFJet myJet = reco::PFJet(*jet_iter);
205 <      
206 <      if(myJet.et() > 5){
207 <        
208 <        new ((*jetP4_ak5PF_corr)[PFcount_corr]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
209 <        new ((*jetVtx3_ak5PF_corr)[PFcount_corr]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
210 <        
211 <        ++PFcount_corr;
212 <      }
213 <    }
214 <  }
215 <  
216 <  if(doCaloJets_){
217 <    
218 <    Calocount = 0;
219 <    
220 <    Handle<reco::CaloJetCollection> CaloJets;
221 <    iEvent.getByLabel(CaloJetHandle_, CaloJets);
222 <    
223 <    for(CaloJetCollection::const_iterator jet_iter = CaloJets->begin(); jet_iter!= CaloJets->end(); ++jet_iter){
224 <      
225 <      reco::CaloJet myJet = reco::CaloJet(*jet_iter);
226 <      
177 >
178 >      float scale2 = correctorL2->correction(myJet);
179 >      float scale3 = correctorL3->correction(myJet);
180 >
181        if(myJet.et() > 5){
182          
183 <        new ((*jetP4_ak5Calo)[Calocount]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
230 <        new ((*jetVtx3_ak5Calo)[Calocount]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
183 >        TCJet jetCon;
184          
185 <        ++Calocount;
186 <        
187 <      }
188 <    }
189 <    
190 <    Handle<reco::CaloJetCollection> CaloJets_corr;
191 <    iEvent.getByLabel(CaloJetHandle_corr, CaloJets_corr);
192 <    
193 <    Calocount_corr = 0;
194 <    
195 <    for(CaloJetCollection::const_iterator jet_iter = CaloJets_corr->begin(); jet_iter!= CaloJets_corr->end(); ++jet_iter){
196 <      
197 <      reco::CaloJet myJet = reco::CaloJet(*jet_iter);
198 <      
199 <      if(myJet.et() > 5){
247 <        
248 <        new ((*jetP4_ak5Calo_corr)[Calocount_corr]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
249 <        new ((*jetVtx3_ak5Calo_corr)[Calocount_corr]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
185 >        jetCon.SetP4(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
186 >        jetCon.SetVtx(myJet.vx(), myJet.vy(), myJet.vz());
187 >
188 >        jetCon.SetChHadFrac(myJet.chargedHadronEnergyFraction());
189 >        jetCon.SetNeuHadFrac(myJet.neutralHadronEnergyFraction());
190 >        jetCon.SetChEmFrac(myJet.chargedEmEnergyFraction());
191 >        jetCon.SetNeuEmFrac(myJet.neutralEmEnergyFraction());
192 >
193 >        jetCon.SetNumConstit(myJet.chargedMultiplicity() + myJet.neutralMultiplicity());
194 >        jetCon.SetNumChPart(myJet.chargedMultiplicity());
195 >
196 >        jetCon.SetNumChPart(myJet.chargedMultiplicity());
197 >
198 >        jetCon.SetJetCorr(2, scale2);
199 >        jetCon.SetJetCorr(3, scale3);
200          
201 <        ++Calocount_corr;
202 <      }
203 <    }
201 >        new ((*jet_ak5PF)[PFcount]) TCJet(jetCon);
202 >                
203 >        ++PFcount;
204 >      }      
205 >    }  
206    }
207    
208    if(doGenJets_){
# Line 263 | Line 215 | void MPIntuple::analyze(const edm::Event
215        
216        reco::GenJet myJet = reco::GenJet(*jet_iter);
217        
218 <      if(myJet.et() > 5){
218 >      if(myJet.pt() > 5){
219          
220          new ((*jetP4_ak5Gen)[Gencount]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
269        new ((*jetVtx3_ak5Gen)[Gencount]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
221          
222          ++Gencount;
223          
224        }
225      }
226    }
276  
277  
278  Handle<reco::VertexCollection> primaryVtx;
279  iEvent.getByLabel(PrimaryVtxHandle_, primaryVtx);
227  
228 <  for(VertexCollection::const_iterator vtx_iter = primaryVtx->begin(); vtx_iter!= primaryVtx->end(); ++vtx_iter){
228 >
229 >  Handle<reco::VertexCollection> primaryVtcs;
230 >  iEvent.getByLabel(PrimaryVtxHandle_, primaryVtcs);
231 >
232 >  for(VertexCollection::const_iterator vtx_iter = primaryVtcs->begin(); vtx_iter!= primaryVtcs->end(); ++vtx_iter){
233      
234      reco::Vertex myVtx = reco::Vertex(*vtx_iter);
235      
236 <    new ((*PrimaryVtx3)[Vtxcount]) TVector3(myVtx.x(), myVtx.y(), myVtx.z());
237 <    
236 >    TCPrimaryVtx vtxCon;
237 >      
238 >    vtxCon.SetPosition(myVtx.x(), myVtx.y(), myVtx.z());
239 >    vtxCon.SetNDof(myVtx.ndof());
240 >    vtxCon.SetChi2(myVtx.chi2());
241 >      
242 >    new ((*primaryVtx)[Vtxcount]) TCPrimaryVtx(vtxCon);
243 >      
244      ++Vtxcount;
245      
246    }
290  
291  
292  if(Calocount > 0 || Calocount_corr >0 || PFcount_corr > 0 || PFcount > 0 || Gencount > 0)  sTree -> Fill();
247  
294  jetP4_ak5PF->Clear();
295  jetP4_ak5PF_corr->Clear();
296  jetVtx3_ak5PF->Clear();
297  jetP4_ak5Calo->Clear();
298  jetP4_ak5Calo_corr->Clear();
299  jetVtx3_ak5Calo->Clear();
300  jetP4_ak5Gen->Clear();
301  jetVtx3_ak5Gen->Clear();
302  
248  
249  
250    //----------  Filling HLT trigger bits!  ------------
# Line 307 | Line 252 | void MPIntuple::analyze(const edm::Event
252    edm::Handle<TriggerResults> hltR;
253    triggerResultsTag_ = InputTag(hlTriggerResults_,"",hltName_);
254    iEvent.getByLabel(triggerResultsTag_,hltR);
255 <  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltR);
255 >
256 >  const TriggerNames & triggerNames = iEvent.triggerNames(*hltR);
257    hlNames=triggerNames.triggerNames();
258 +
259 +  string MPI_TriggerNames[32] = {"HLT_PixelTracks_Multiplicity70", "HLT_MinBiasBSC_NoBPTX", "HLT_PixelTracks_Multiplicity40","HLT_L1Tech_HCAL_HF", "HLT_IsoTrackHB_8E29", "HLT_IsoTrackHE_8E29", "HLT_L1Tech_RPC_TTU_RBst1_collisions", "HLT_L1_BscMinBiasOR_BptxPlusORMinus", "HLT_L1Tech_BSC_halo_forPhysicsBackground", "HLT_L1Tech_BSC_HighMultiplicity", "HLT_MinBiasPixel_DoubleIsoTrack5", "HLT_MinBiasPixel_DoubleTrack", "HLT_MinBiasPixel_SingleTrack", "HLT_ZeroBiasPixel_SingleTrack", "HLT_MinBiasBSC", "HLT_StoppedHSCP_8E29", "HLT_Jet15U_HcalNoiseFiltered", "HLT_QuadJet15U", "HLT_DiJetAve30U_8E29", "HLT_DiJetAve15U_8E29", "HLT_FwdJet20U", "HLT_Jet50U", "HLT_Jet30U", "HLT_Jet15U", "HLT_BTagMu_Jet10U", "HLT_DoubleJet15U_ForwardBackward", "HLT_BTagIP_Jet50U", "HLT_DoubleLooseIsoTau15", "HLT_SingleLooseIsoTau20", "HLT_HT100U", "HLT_MET100", "HLT_MET45"};
260 +
261    bool triggerPassed = false;
262 +  triggerStatus = 0x0;
263    
264 <  for (uint iT=0; iT<hlNames.size(); ++iT)
265 <    {
266 <      triggerPassed = triggerDecision(hltR, iT);
267 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
264 >  for (uint iT=0; iT<hlNames.size(); ++iT) {
265 >
266 >    triggerPassed = triggerDecision(hltR, iT);
267 >    
268 >    if(triggerPassed){
269        
270 <      // ----------->> Fill them Here! <<----------------------
270 >      for (int j = 0; j != 32; ++j){
271 >        
272 >        if (hlNames[iT] == MPI_TriggerNames[j])
273 >          {
274 >            cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
275 >            triggerStatus |= 0x01 << j;
276 >          }
277 >      }
278      }
279 <  //----------         ------------------   ---------------  
280 <
279 >  }
280 >  
281  
282 +  if(PFcount > 0 || Gencount > 0 || Vtxcount > 0);  sTree -> Fill();
283 +  
284 +  jet_ak5PF->Clear();
285 +  primaryVtx->Clear();
286 +  jetP4_ak5Gen->Clear();
287  
288   }
289  
# Line 330 | Line 293 | void  MPIntuple::beginJob()
293   {
294    
295    ntupleFile           = new TFile(rootfilename.c_str(), "RECREATE");
296 <  sTree                = new TTree("dpsTree", "Tree for Jets");
296 >  sTree                = new TTree("mpiTree", "Tree for Jets");
297    
298 <  jetP4_ak5PF          = new TClonesArray("TLorentzVector");
336 <  jetVtx3_ak5PF        = new TClonesArray("TVector3");
337 <  jetP4_ak5Calo        = new TClonesArray("TLorentzVector");
338 <  jetVtx3_ak5Calo      = new TClonesArray("TVector3");
339 <  jetP4_ak5PF_corr     = new TClonesArray("TLorentzVector");
340 <  jetVtx3_ak5PF_corr   = new TClonesArray("TVector3");
341 <  jetP4_ak5Calo_corr   = new TClonesArray("TLorentzVector");
342 <  jetVtx3_ak5Calo_corr = new TClonesArray("TVector3");
298 >  jet_ak5PF            = new TClonesArray("TCJet");
299    jetP4_ak5Gen         = new TClonesArray("TLorentzVector");
300 <  jetVtx3_ak5Gen       = new TClonesArray("TVector3");
345 <  PrimaryVtx3          = new TClonesArray("TVector3");
300 >  primaryVtx           = new TClonesArray("TCPrimaryVtx");
301  
302 <  sTree->Branch("jetP4_ak5PF",&jetP4_ak5PF, 6400, 0);
348 <  sTree->Branch("jetP4_ak5PF_corr",&jetP4_ak5PF_corr, 6400, 0);
349 <  sTree->Branch("jetVtx3_ak5PF",&jetVtx3_ak5PF, 6400, 0);
350 <  sTree->Branch("jetVtx3_ak5PF_corr",&jetVtx3_ak5PF, 6400, 0);
351 <  sTree->Branch("jetP4_ak5Calo",&jetP4_ak5Calo, 6400, 0);
352 <  sTree->Branch("jetP4_ak5Calo_corr",&jetP4_ak5Calo_corr, 6400, 0);
353 <  sTree->Branch("jetVtx3_ak5Calo",&jetVtx3_ak5Calo, 6400, 0);
354 <  sTree->Branch("jetVtx3_ak5Calo_corr",&jetVtx3_ak5Calo, 6400, 0);
302 >  sTree->Branch("jet_ak5PF",&jet_ak5PF, 6400, 0);
303    sTree->Branch("jetP4_ak5Gen",&jetP4_ak5Gen, 6400, 0);
304 <  sTree->Branch("jetVtx3_ak5Gen",&jetVtx3_ak5Gen, 6400, 0);
357 <  sTree->Branch("PrimaryVtx",&PrimaryVtx3, 6400, 0);
304 >  sTree->Branch("primaryVtx",&primaryVtx, 6400, 0);
305  
306    sTree->Branch("eventNumber",&eventNumber, "eventNumber/I");
307    sTree->Branch("runNumber",&runNumber, "runNumber/I");
308    sTree->Branch("lumiSection",&lumiSection, "lumiSection/I");
309 +  sTree->Branch("triggerStatus",&triggerStatus, "triggerStatus/I");
310 +  sTree->Branch("isMC_",&isMC_,"isMC_/B");
311 +
312  
313   }
314  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines