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.3 by andrey, Sat May 22 00:51:59 2010 UTC vs.
Revision 1.11 by devildog, Fri Jul 9 17:09:10 2010 UTC

# Line 1 | Line 1
1 /*
2 Description: <one line class summary>
3
4 Implementation:
5     n-tuple creator for jet studies
6 */
7 //
1   // Original Author:  "Nathaniel Odell"
2   // Secondary Author: Steven Won
3   // With contributions from: Andrey Pozdnyakov
4   //         Created:  Thurs April 22  2010
5   // $Id$
13 //
14 //
15
6  
7   // system include files
8   #include <memory>
# Line 25 | Line 15
15   #include "FWCore/Framework/interface/EventSetup.h"
16   #include "FWCore/Framework/interface/Event.h"
17   #include "FWCore/Framework/interface/MakerMacros.h"
28
18   #include "FWCore/ParameterSet/interface/ParameterSet.h"
30
19   #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
20   #include "Geometry/Records/interface/CaloGeometryRecord.h"
21 + #include "DataFormats/Math/interface/deltaPhi.h"
22  
23 + // Jet and vertex functions
24   #include "DataFormats/JetReco/interface/CaloJet.h"
25   #include "DataFormats/JetReco/interface/CaloJetCollection.h"
26   #include "DataFormats/JetReco/interface/PFJet.h"
# Line 40 | Line 30
30   #include "DataFormats/JetReco/interface/Jet.h"
31   #include "DataFormats/VertexReco/interface/Vertex.h"
32   #include "DataFormats/VertexReco/interface/VertexFwd.h"
33 + #include "DataFormats/BTauReco/interface/JetTag.h"
34 + //#include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
35 +
36 + //GenParticles
37 + #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
38 +
39 + // Need to get correctors
40 + #include "JetMETCorrections/Objects/interface/JetCorrector.h"
41 +
42 + // ntuple storage classes
43 + #include "TCJet.h"
44 + #include "TCPrimaryVtx.h"
45  
46   // Need for HLT trigger info:
47   #include "FWCore/Common/interface/TriggerNames.h"
48   #include "DataFormats/Common/interface/TriggerResults.h"
49   #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
48 //
50  
51 + //Root  stuff
52   #include "TROOT.h"
53   #include "TFile.h"
54   #include "TTree.h"
# Line 78 | Line 80 | class MPIntuple : public edm::EDAnalyzer
80        virtual void endJob() ;
81  
82    bool triggerDecision(edm::Handle<edm::TriggerResults> &hltR, int iTrigger);
83 +  double sumPtSquared(const Vertex & v);
84  
85        // ----------member data ---------------------------
86  
87    edm::InputTag PFJetHandle_;
85  edm::InputTag CaloJetHandle_;
86  edm::InputTag PFJetHandle_corr;
87  edm::InputTag CaloJetHandle_corr;
88    edm::InputTag GenJetHandle_;
89    edm::InputTag PrimaryVtxHandle_;
90 <
90 >  edm::InputTag triggerResultsTag_;
91 >  edm::InputTag genParticles_;
92  
93    //  Counting variables   //
94  
95 <  int eventNumber, runNumber, lumiSection;
95 >  int eventNumber, runNumber, lumiSection, bunchCross;
96  
97 <  TTree *sTree;
97 >  TTree* sTree;
98    TFile* ntupleFile;
99  
100 <  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;
100 >  TClonesArray* jet_ak5PF;
101    TClonesArray* jetP4_ak5Gen;
102 <  TClonesArray* jetVtx3_ak5Gen;
103 <  TClonesArray* PrimaryVtx3;
102 >  TClonesArray* genParticleP4;
103 >  TClonesArray* primaryVtx;
104  
105    bool doGenJets_;
112  bool doCaloJets_;
106    bool doPFJets_;
107 <
107 >  bool triggerHLT_;
108 >  bool isRealData;
109    string rootfilename;
110  
111    //Triggers
112 <  std::string hlTriggerResults_;
113 <  edm::TriggerNames triggerNames;
120 <  std::string hltName_;
121 <  std::string  triggerName_;
112 >  string hlTriggerResults_, hltName_, triggerName_;
113 >  TriggerNames triggerNames;
114    HLTConfigProvider hltConfig_;
115 <  edm::InputTag triggerResultsTag_;
116 <  std::vector<std::string>  hlNames;
115 >  vector<string>  hlNames;
116 >  unsigned int triggerStatus;
117  
118  
119   };
# Line 129 | Line 121 | class MPIntuple : public edm::EDAnalyzer
121   MPIntuple::MPIntuple(const edm::ParameterSet& iConfig):
122  
123    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")),
124    GenJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("GenJetTag")),
125    PrimaryVtxHandle_(iConfig.getUntrackedParameter<edm::InputTag>("PrimaryVtxTag")),
126 +  genParticles_(iConfig.getUntrackedParameter<edm::InputTag>("genParticleTag")),
127    doGenJets_(iConfig.getUntrackedParameter<bool>("doGenJets")),
138  doCaloJets_(iConfig.getUntrackedParameter<bool>("doCaloJets")),
128    doPFJets_(iConfig.getUntrackedParameter<bool>("doPFJets")),
129 +  triggerHLT_(iConfig.getUntrackedParameter<bool>("triggerHLT")),
130    rootfilename(iConfig.getUntrackedParameter<string>("rootfilename")),
131    hlTriggerResults_(iConfig.getUntrackedParameter<string>("HLTriggerResults","TriggerResults")),
132    hltName_(iConfig.getUntrackedParameter<string>("hltName","HLT"))
133   {
134 <  //edm::TriggerNames
145 <  // triggerNames(iConfig);
134 >
135  
136   }
137  
# Line 152 | Line 141 | MPIntuple::~MPIntuple()
141  
142   }
143  
144 + double MPIntuple::sumPtSquared(const Vertex & v)
145 + {
146 +  double sum = 0.;
147 +  double pT;
148 +  for (Vertex::trackRef_iterator it = v.tracks_begin(); it != v.tracks_end(); it++) {
149 +    pT = (**it).pt();
150 +    double epT=(**it).ptError(); pT=pT>epT ? pT-epT : 0;
151 +
152 +    sum += pT*pT;
153 +  }
154 +  return sum;
155 + }
156  
157   //
158   // member functions
# Line 161 | Line 162 | MPIntuple::~MPIntuple()
162   void MPIntuple::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
163   {
164  
165 <  eventNumber = iEvent.id().event();
166 <  runNumber   = iEvent.id().run();
165 >  eventNumber  = iEvent.id().event();
166 >  runNumber    = iEvent.id().run();
167    lumiSection  = (unsigned int)iEvent.getLuminosityBlock().luminosityBlock();
168 <  
169 <  int PFcount = 0;
170 <  int Calocount = 0;
171 <  int PFcount_corr = 0;
172 <  int Calocount_corr = 0;
173 <  int Gencount = 0;
174 <  int Vtxcount = 0;
168 >  bunchCross   = (unsigned int)iEvent.bunchCrossing();
169 >  isRealData   = iEvent.isRealData();
170 >
171 >  int PFcount   = 0;
172 >  int Gencount  = 0;
173 >  int GenPcount = 0;
174 >  int Vtxcount  = 0;
175  
176    if(doPFJets_){
177 <    
177 >
178 >    edm::Handle<reco::JetTagCollection> bTagHandle1;
179 >    iEvent.getByLabel("trackCountingHighEffBJetTags", bTagHandle1);
180 >    const reco::JetTagCollection & bTags1 = *(bTagHandle1.product());
181 >    reco::JetTagCollection::const_iterator jet_it_1;
182 >
183 >    edm::Handle<reco::JetTagCollection> bTagHandle2;
184 >    iEvent.getByLabel("trackCountingHighPurBJetTags", bTagHandle2);
185 >    const reco::JetTagCollection & bTags2 = *(bTagHandle2.product());
186 >    reco::JetTagCollection::const_iterator jet_it_2;
187 >
188 >    const JetCorrector* correctorL2 = JetCorrector::getJetCorrector ("ak5PFL2Relative",iSetup);
189 >    const JetCorrector* correctorL3 = JetCorrector::getJetCorrector ("ak5PFL3Absolute",iSetup);
190 >
191      Handle<reco::PFJetCollection> PFJets;
192      iEvent.getByLabel(PFJetHandle_, PFJets);
193      
# Line 182 | Line 196 | void MPIntuple::analyze(const edm::Event
196      for(PFJetCollection::const_iterator jet_iter = PFJets->begin(); jet_iter!= PFJets->end(); ++jet_iter){
197        
198        reco::PFJet myJet = reco::PFJet(*jet_iter);
199 <      
200 <      if(myJet.et() > 5){
201 <        
202 <        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 <      
199 >
200 > //      float scale2 = correctorL2->correction(myJet);
201 > //      float scale3 = correctorL3->correction(myJet);
202 >
203        if(myJet.et() > 5){
204 <        
205 <        new ((*jetP4_ak5Calo)[Calocount]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
206 <        new ((*jetVtx3_ak5Calo)[Calocount]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
207 <        
208 <        ++Calocount;
209 <        
210 <      }
211 <    }
212 <    
213 <    Handle<reco::CaloJetCollection> CaloJets_corr;
238 <    iEvent.getByLabel(CaloJetHandle_corr, CaloJets_corr);
239 <    
240 <    Calocount_corr = 0;
241 <    
242 <    for(CaloJetCollection::const_iterator jet_iter = CaloJets_corr->begin(); jet_iter!= CaloJets_corr->end(); ++jet_iter){
243 <      
244 <      reco::CaloJet myJet = reco::CaloJet(*jet_iter);
204 >
205 >        for(jet_it_1 = bTags1.begin(); jet_it_1 != bTags1.end(); jet_it_1++) {
206 >           if( (fabs(jet_it_1->first->eta() - myJet.eta()) < .005) && (deltaPhi(jet_it_1->first->phi(),myJet.phi()) < .005)) break;
207 >        }
208 >
209 >        for(jet_it_2 = bTags2.begin(); jet_it_2 != bTags2.end(); jet_it_2++) {
210 >           if( (fabs(jet_it_2->first->eta() - myJet.eta()) < .005) && (deltaPhi(jet_it_2->first->phi(),myJet.phi()) < .005)) break;
211 >        }
212 >                
213 >        TCJet* jetCon = new ((*jet_ak5PF)[PFcount]) TCJet;
214        
215 <      if(myJet.et() > 5){
216 <        
217 <        new ((*jetP4_ak5Calo_corr)[Calocount_corr]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
218 <        new ((*jetVtx3_ak5Calo_corr)[Calocount_corr]) TVector3(myJet.vx(), myJet.vy(), myJet.vz());
219 <        
220 <        ++Calocount_corr;
221 <      }
222 <    }
215 >        jetCon->SetP4(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
216 >        jetCon->SetVtx(myJet.vx(), myJet.vy(), myJet.vz());
217 >
218 >        jetCon->SetChHadFrac(myJet.chargedHadronEnergyFraction());
219 >        jetCon->SetNeuHadFrac(myJet.neutralHadronEnergyFraction());
220 >        jetCon->SetChEmFrac(myJet.chargedEmEnergyFraction());
221 >        jetCon->SetNeuEmFrac(myJet.neutralEmEnergyFraction());
222 >
223 >        jetCon->SetNumConstit(myJet.chargedMultiplicity() + myJet.neutralMultiplicity());
224 >        jetCon->SetNumChPart(myJet.chargedMultiplicity());
225 >
226 >        jetCon->SetNumChPart(myJet.chargedMultiplicity());
227 >
228 >        if(jet_it_2 != bTags2.end()) jetCon->SetBDiscrTrkCountHiPure(jet_it_2->second);
229 >        if(jet_it_1 != bTags1.end()) jetCon->SetBDiscrTrkCountHiEff(jet_it_1->second);
230 >
231 >        float scale2 = correctorL2->correction(myJet);
232 >        myJet.scaleEnergy(scale2);
233 >        float scale3 = correctorL3->correction(myJet);
234 >        myJet.scaleEnergy(scale3);
235 >
236 >        //more corrections?
237 >
238 >        jetCon->SetJetCorr(2, scale2);
239 >        jetCon->SetJetCorr(3, scale3);
240 >
241 >        ++PFcount;
242 >      }      
243 >    }  
244    }
245    
246 <  if(doGenJets_){
246 >  if(!isRealData){
247      
248 +    Handle<reco::GenParticleCollection > genpcoll;
249 +    iEvent.getByLabel(genParticles_, genpcoll);
250 +
251      Handle<reco::GenJetCollection> GenJets;
252      iEvent.getByLabel(GenJetHandle_, GenJets);
253      
# Line 263 | Line 256 | void MPIntuple::analyze(const edm::Event
256        
257        reco::GenJet myJet = reco::GenJet(*jet_iter);
258        
259 <      if(myJet.et() > 5){
259 >      if(myJet.pt() > 5){
260          
261          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());
262          
263          ++Gencount;
264          
265        }
266      }
267 +
268 +    for(reco::GenParticleCollection::const_iterator iGen = genpcoll->begin(); iGen!=genpcoll->end(); ++iGen) {
269 +    
270 +      reco::GenParticle p = reco::GenParticle(*iGen);
271 +            
272 +      new ((*genParticleP4)[GenPcount]) TLorentzVector(p.px(), p.py(), p.pz(), p.energy());
273 +    
274 +      ++GenPcount;
275 +
276 +    }
277 +    
278 +    
279    }
280    
281    
282 <  Handle<reco::VertexCollection> primaryVtx;
283 <  iEvent.getByLabel(PrimaryVtxHandle_, primaryVtx);
284 <
285 <  for(VertexCollection::const_iterator vtx_iter = primaryVtx->begin(); vtx_iter!= primaryVtx->end(); ++vtx_iter){
282 >  Handle<reco::VertexCollection> primaryVtcs;
283 >  iEvent.getByLabel(PrimaryVtxHandle_, primaryVtcs);
284 >  
285 >  for(VertexCollection::const_iterator vtx_iter = primaryVtcs->begin(); vtx_iter!= primaryVtcs->end(); ++vtx_iter){
286      
287      reco::Vertex myVtx = reco::Vertex(*vtx_iter);
288 <    
289 <    new ((*PrimaryVtx3)[Vtxcount]) TVector3(myVtx.x(), myVtx.y(), myVtx.z());
290 <    
288 >    if(!myVtx.isValid() || myVtx.isFake()) continue;
289 >    TCPrimaryVtx* vtxCon = new ((*primaryVtx)[Vtxcount]) TCPrimaryVtx;
290 >      
291 >    vtxCon->SetPosition(myVtx.x(), myVtx.y(), myVtx.z());
292 >    vtxCon->SetNDof(myVtx.ndof());
293 >    vtxCon->SetChi2(myVtx.chi2());
294 > //placeholders
295 > //    vtxCon->SetNTracks(myVtx.tracksSize());
296 > //    vtxCon->SetTracksSumPtSquared(sumPtSquared(*myVtx));
297 >    int test1 = myVtx.tracksSize();
298 >    double test2 = sumPtSquared(myVtx);
299      ++Vtxcount;
300      
301    }
290  
291  
292  if(Calocount > 0 || Calocount_corr >0 || PFcount_corr > 0 || PFcount > 0 || Gencount > 0)  sTree -> Fill();
293
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  
303
302  
305  //----------  Filling HLT trigger bits!  ------------
303  
304 <  edm::Handle<TriggerResults> hltR;
308 <  triggerResultsTag_ = InputTag(hlTriggerResults_,"",hltName_);
309 <  iEvent.getByLabel(triggerResultsTag_,hltR);
310 <  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltR);
311 <  hlNames=triggerNames.triggerNames();
312 <  bool triggerPassed = false;
313 <  
314 <  for (uint iT=0; iT<hlNames.size(); ++iT)
315 <    {
316 <      triggerPassed = triggerDecision(hltR, iT);
304 >  if(triggerHLT_){
305  
306 < if (hlNames[iT]=="HLT_PixelTracks_Multiplicity70")
319 < {
320 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
321 < //And fill the bit here
322 < }
306 >    //----------  Filling HLT trigger bits!  ------------
307  
308 < if (hlNames[iT]=="HLT_MinBiasBSC_NoBPTX")
309 < {
310 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
311 < //And fill the bit here
312 < }
313 <
314 < if (hlNames[iT]=="HLT_PixelTracks_Multiplicity40")
315 < {
316 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
317 < }
318 < if (hlNames[iT]=="HLT_L1Tech_HCAL_HF")
319 < {
320 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
337 < }
338 < if (hlNames[iT]=="HLT_IsoTrackHB_8E29")
339 < {
340 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
341 < }
342 < if (hlNames[iT]=="HLT_IsoTrackHE_8E29")
343 < {
344 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
345 < }
346 < if (hlNames[iT]=="HLT_L1Tech_RPC_TTU_RBst1_collisions")
347 < {
348 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
349 < }
350 < if (hlNames[iT]=="HLT_L1_BscMinBiasOR_BptxPlusORMinus")
351 < {
352 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
353 < }
354 < if (hlNames[iT]=="HLT_L1Tech_BSC_halo_forPhysicsBackground")
355 < {
356 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
357 < }
358 < if (hlNames[iT]=="HLT_L1Tech_BSC_HighMultiplicity")
359 < {
360 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
361 < }
362 < if (hlNames[iT]=="HLT_MinBiasPixel_DoubleIsoTrack5")
363 < {
364 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
365 < }
366 < if (hlNames[iT]=="HLT_MinBiasPixel_DoubleTrack")
367 < {
368 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
369 < }
370 < if (hlNames[iT]=="HLT_MinBiasPixel_SingleTrack")
371 < {
372 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
373 < }
374 < if (hlNames[iT]=="HLT_ZeroBiasPixel_SingleTrack")
375 < {
376 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
377 < }
378 < if (hlNames[iT]=="HLT_MinBiasBSC")
379 < {
380 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
381 < }
382 < if (hlNames[iT]=="HLT_StoppedHSCP_8E29")
383 < {
384 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
385 < }
386 < if (hlNames[iT]=="HLT_Jet15U_HcalNoiseFiltered")
387 < {
388 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
389 < }
390 < if (hlNames[iT]=="HLT_QuadJet15U")
391 < {
392 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
393 < }
394 < if (hlNames[iT]=="HLT_DiJetAve30U_8E29")
395 < {
396 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
397 < }
398 < if (hlNames[iT]=="HLT_DiJetAve15U_8E29")
399 < {
400 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
401 < }
402 < if (hlNames[iT]=="HLT_FwdJet20U")
403 < {
404 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
405 < }
406 < if (hlNames[iT]=="HLT_Jet50U")
407 < {
408 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
409 < }
410 < if (hlNames[iT]=="HLT_Jet30U")
411 < {
412 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
413 < }
414 < if (hlNames[iT]=="HLT_Jet15U")
415 < {
416 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
417 < }
418 < if (hlNames[iT]=="HLT_BTagMu_Jet10U")
419 < {
420 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
421 < }
422 < if (hlNames[iT]=="HLT_DoubleJet15U_ForwardBackward")
423 < {
424 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
425 < }
426 < if (hlNames[iT]=="HLT_BTagIP_Jet50U")
427 < {
428 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
429 < }
430 < if (hlNames[iT]=="HLT_DoubleLooseIsoTau15")
431 < {
432 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
433 < }
434 < if (hlNames[iT]=="HLT_SingleLooseIsoTau20")
435 < {
436 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
437 < }
438 < if (hlNames[iT]=="HLT_HT100U")
439 < {
440 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
441 < }
442 < if (hlNames[iT]=="HLT_MET100")
443 < {
444 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
445 < }
446 < if (hlNames[iT]=="HLT_MET45")
447 < {
448 <      cout<<"trigger name: "<<hlNames[iT]<<"  status: "<<triggerPassed<<endl;
449 < }
450 <        
308 >    edm::Handle<TriggerResults> hltR;
309 >    triggerResultsTag_ = InputTag(hlTriggerResults_,"",hltName_);
310 >    iEvent.getByLabel(triggerResultsTag_,hltR);
311 >    
312 >    const TriggerNames & triggerNames = iEvent.triggerNames(*hltR);
313 >    hlNames=triggerNames.triggerNames();
314 >    
315 >    string MPI_TriggerNames[] = {"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"};
316 >    
317 >    bool triggerPassed = false;
318 >    triggerStatus = 0x0;
319 >    
320 >    for (uint i=0; i<hlNames.size(); ++i) {
321        
322 <      // ----------->> Fill them Here! <<----------------------
323 <    }
324 <  //----------         ------------------   ---------------  
325 <
326 <
322 >      triggerPassed = triggerDecision(hltR, i);
323 >      
324 >      if(triggerPassed){
325 >        
326 >        for (uint j = 0; j != 32; ++j){
327 >          
328 >          if (hlNames[i] == MPI_TriggerNames[j])
329 >            {
330 >              //            cout<<"trigger name: "<<hlNames[i]<<"list: "<<dec<<j+1<<endl;
331 >              triggerStatus |= 0x01 << j;
332 >              
333 >            }
334 >        }
335 >      }
336 >    }
337 >  }
338 >  //  cout<< "total status: "<<hex<<triggerStatus<<endl;
339 >  
340 >  if(PFcount > 0 || Gencount > 0 || Vtxcount > 0);  sTree -> Fill();
341 >  
342 >  jet_ak5PF->Clear();
343 >  primaryVtx->Clear();
344 >  jetP4_ak5Gen->Clear();
345  
346   }
347  
# Line 463 | Line 351 | void  MPIntuple::beginJob()
351   {
352    
353    ntupleFile           = new TFile(rootfilename.c_str(), "RECREATE");
354 <  sTree                = new TTree("dpsTree", "Tree for Jets");
354 >  sTree                = new TTree("mpiTree", "Tree for Jets");
355    
356 <  jetP4_ak5PF          = new TClonesArray("TLorentzVector");
469 <  jetVtx3_ak5PF        = new TClonesArray("TVector3");
470 <  jetP4_ak5Calo        = new TClonesArray("TLorentzVector");
471 <  jetVtx3_ak5Calo      = new TClonesArray("TVector3");
472 <  jetP4_ak5PF_corr     = new TClonesArray("TLorentzVector");
473 <  jetVtx3_ak5PF_corr   = new TClonesArray("TVector3");
474 <  jetP4_ak5Calo_corr   = new TClonesArray("TLorentzVector");
475 <  jetVtx3_ak5Calo_corr = new TClonesArray("TVector3");
356 >  jet_ak5PF            = new TClonesArray("TCJet");
357    jetP4_ak5Gen         = new TClonesArray("TLorentzVector");
358 <  jetVtx3_ak5Gen       = new TClonesArray("TVector3");
359 <  PrimaryVtx3          = new TClonesArray("TVector3");
358 >  genParticleP4        = new TClonesArray("TLorentzVector");
359 >  primaryVtx           = new TClonesArray("TCPrimaryVtx");
360  
361 <  sTree->Branch("jetP4_ak5PF",&jetP4_ak5PF, 6400, 0);
481 <  sTree->Branch("jetP4_ak5PF_corr",&jetP4_ak5PF_corr, 6400, 0);
482 <  sTree->Branch("jetVtx3_ak5PF",&jetVtx3_ak5PF, 6400, 0);
483 <  sTree->Branch("jetVtx3_ak5PF_corr",&jetVtx3_ak5PF, 6400, 0);
484 <  sTree->Branch("jetP4_ak5Calo",&jetP4_ak5Calo, 6400, 0);
485 <  sTree->Branch("jetP4_ak5Calo_corr",&jetP4_ak5Calo_corr, 6400, 0);
486 <  sTree->Branch("jetVtx3_ak5Calo",&jetVtx3_ak5Calo, 6400, 0);
487 <  sTree->Branch("jetVtx3_ak5Calo_corr",&jetVtx3_ak5Calo, 6400, 0);
361 >  sTree->Branch("jet_ak5PF",&jet_ak5PF, 6400, 0);
362    sTree->Branch("jetP4_ak5Gen",&jetP4_ak5Gen, 6400, 0);
363 <  sTree->Branch("jetVtx3_ak5Gen",&jetVtx3_ak5Gen, 6400, 0);
364 <  sTree->Branch("PrimaryVtx",&PrimaryVtx3, 6400, 0);
363 >  sTree->Branch("genParticleP4",&genParticleP4, 6400, 0);
364 >  sTree->Branch("primaryVtx",&primaryVtx, 6400, 0);
365  
366    sTree->Branch("eventNumber",&eventNumber, "eventNumber/I");
367    sTree->Branch("runNumber",&runNumber, "runNumber/I");
368    sTree->Branch("lumiSection",&lumiSection, "lumiSection/I");
369 +  sTree->Branch("triggerStatus",&triggerStatus, "triggerStatus/i");
370 +  sTree->Branch("isRealData",&isRealData, "isRealData/i");
371 +  sTree->Branch("bunchCross",&bunchCross, "bunchCross/i");
372  
373   }
374  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines