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.16 by naodell, Thu Oct 14 22:44:24 2010 UTC vs.
Revision 1.25 by naodell, Tue Nov 30 14:08:14 2010 UTC

# Line 33 | Line 33
33   #include "DataFormats/BTauReco/interface/JetTag.h"
34   #include "DataFormats/TrackReco/interface/Track.h"
35   #include "DataFormats/BeamSpot/interface/BeamSpot.h"
36 + #include "SimDataFormats/GeneratorProducts/interface/GenEventInfoProduct.h"
37 + #include "SimDataFormats/GeneratorProducts/interface/GenRunInfoProduct.h"
38 +
39   //#include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
40  
41   //GenParticles
42 < //#include "DataFormats/HepMCCandidate/interface/GenParticle.h"
42 > #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
43  
44   // Need to get correctors
45   #include "JetMETCorrections/Objects/interface/JetCorrector.h"
# Line 44 | Line 47
47   // ntuple storage classes
48   #include "TCJet.h"
49   #include "TCPrimaryVtx.h"
50 + #include "TCGenJet.h"
51  
52   // Need for HLT trigger info:
53   #include "FWCore/Common/interface/TriggerNames.h"
# Line 96 | Line 100 | class MPIntuple : public edm::EDAnalyzer
100    //  Counting variables   //
101  
102    int eventNumber, runNumber, lumiSection, bunchCross;
103 <
103 >  double ptHat, qScale, crossSection;
104 >  
105    TTree* sTree;
106    TFile* ntupleFile;
107  
108    TClonesArray* jet_ak5PF;
109 <  TClonesArray* jetP4_ak5Gen;
109 >  TClonesArray* jet_ak5Gen;
110    TClonesArray* primaryVtx;
111  
112    bool doGenJets_;
# Line 118 | Line 123 | class MPIntuple : public edm::EDAnalyzer
123    unsigned int triggerStatus;
124  
125    //Histograms
126 <  TH1F * h1_nAssociatedTracks;
127 <  TH1F * h1_trackZ;
128 <  TH1F * h1_trackDxy;
129 <  TH1F * h1_allTrackDeltaZ_PV;
130 <  TH1F * h1_allTrackDeltaZ_LJ;
126 >  TH1D * h1_fracAssociatedTracks;
127 >  TH1D * h1_meanJetTrackZ;
128 >  TH1D * h1_trackDxy;
129 >  TH1D * h1_jetVertexZ;
130 >  TH1D * h1_associatedSumPt;
131 >  TH1D * h1_associatedVertexIndex;
132    TH2F * h2_nAssTracksVsJetPt;
133    TProfile * p1_nVtcs;
134  
135  
130
136   };
137  
138 < MPIntuple::MPIntuple(const edm::ParameterSet& iConfig):
134 <
135 <  PFJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("PFJetTag")),
136 <  GenJetHandle_(iConfig.getUntrackedParameter<edm::InputTag>("GenJetTag")),
137 <  PrimaryVtxHandle_(iConfig.getUntrackedParameter<edm::InputTag>("PrimaryVtxTag")),
138 <  doGenJets_(iConfig.getUntrackedParameter<bool>("doGenJets")),
139 <  doPFJets_(iConfig.getUntrackedParameter<bool>("doPFJets")),
140 <  triggerHLT_(iConfig.getUntrackedParameter<bool>("triggerHLT")),
141 <  rootfilename(iConfig.getUntrackedParameter<string>("rootfilename")),
142 <  hlTriggerResults_(iConfig.getUntrackedParameter<string>("HLTriggerResults","TriggerResults")),
143 <  hltName_(iConfig.getUntrackedParameter<string>("hltName","HLT"))
138 > MPIntuple::MPIntuple(const edm::ParameterSet& iConfig)
139   {
140 +  PFJetHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("PFJetTag");
141 +  GenJetHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("GenJetTag");
142 +  PrimaryVtxHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("PrimaryVtxTag");
143 +  doGenJets_ = iConfig.getUntrackedParameter<bool>("doGenJets");
144 +  doPFJets_ = iConfig.getUntrackedParameter<bool>("doPFJets");
145 +  triggerHLT_ = iConfig.getUntrackedParameter<bool>("triggerHLT");
146 +  rootfilename = iConfig.getUntrackedParameter<string>("rootfilename");
147 +  hlTriggerResults_ = iConfig.getUntrackedParameter<string>("HLTriggerResults","TriggerResults");
148 +  hltName_ = iConfig.getUntrackedParameter<string>("hltName");
149   }
150  
151   MPIntuple::~MPIntuple()
# Line 157 | Line 161 | MPIntuple::~MPIntuple()
161   void MPIntuple::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
162   {
163  
160
164    eventNumber  = iEvent.id().event();
165    runNumber    = iEvent.id().run();
166    lumiSection  = (unsigned int)iEvent.getLuminosityBlock().luminosityBlock();
167    bunchCross   = (unsigned int)iEvent.bunchCrossing();
168    isRealData   = iEvent.isRealData();
169  
170 +
171    edm::Handle<reco::BeamSpot> beamSpotHandle;
172    iEvent.getByLabel("offlineBeamSpot", beamSpotHandle);
173    reco::BeamSpot vertexBeamSpot = *beamSpotHandle;
# Line 171 | Line 175 | void MPIntuple::analyze(const edm::Event
175    int pfCount   = 0;
176    int genCount  = 0;
177    int vtxCount  = 0;
178 <  float ljVertexZ = -999;
175 <  float primaryVertexZ = -999;
178 >  double primaryVertexZ = -999;
179  
180    //////////////////////////
181    //Get vertex information//
# Line 187 | Line 190 | void MPIntuple::analyze(const edm::Event
190      if(!myVtx.isValid() || myVtx.isFake()) continue;
191      TCPrimaryVtx* vtxCon = new ((*primaryVtx)[vtxCount]) TCPrimaryVtx;
192        
193 +    //cout<<myVtx.nTracks()<<endl;
194 +
195      vtxCon->SetPosition(myVtx.x(), myVtx.y(), myVtx.z());
196      vtxCon->SetNDof(myVtx.ndof());
197      vtxCon->SetChi2(myVtx.chi2());
# Line 227 | Line 232 | void MPIntuple::analyze(const edm::Event
232      for(PFJetCollection::const_iterator jet_iter = PFJets->begin(); jet_iter!= PFJets->end(); ++jet_iter){
233        
234        reco::PFJet myJet = reco::PFJet(*jet_iter);
235 <      if(myJet.et() > 5){
235 >      if(myJet.pt() > 5){
236  
237          for(jet_it_1 = bTags1.begin(); jet_it_1 != bTags1.end(); jet_it_1++) {
238             if( (fabs(jet_it_1->first->eta() - myJet.eta()) < .005) && (deltaPhi(jet_it_1->first->phi(),myJet.phi()) < .005)) break;
# Line 255 | Line 260 | void MPIntuple::analyze(const edm::Event
260          if(jet_it_2 != bTags2.end()) jetCon->SetBDiscrTrkCountHiPure(jet_it_2->second);
261          if(jet_it_1 != bTags1.end()) jetCon->SetBDiscrTrkCountHiEff(jet_it_1->second);
262  
263 <        float scale2 = correctorL2->correction(myJet);
263 >        double scale2 = correctorL2->correction(myJet);
264          myJet.scaleEnergy(scale2);
265 <        float scale3 = correctorL3->correction(myJet);
265 >        double scale3 = correctorL3->correction(myJet);
266          myJet.scaleEnergy(scale3);
267  
268          //more corrections?
# Line 271 | Line 276 | void MPIntuple::analyze(const edm::Event
276  
277          const reco::TrackRefVector &tracks = myJet.getTrackRefs();
278  
279 <        float sumTrackZ, sumTrackIP;
280 <        float meanTrackZ, meanTrackIP;
281 <        int   nAssociatedTracks = 0;
282 <
283 <        sumTrackZ  = sumTrackIP  = 0;
284 <        meanTrackZ = meanTrackIP = -999;
279 >        vector<TVector3> vtxPositionCollection;
280 >        vector<double>  associatedTrackSumPt;
281 >        vector<unsigned int> jetTrackAddresses;
282 >        double sumTrackX, sumTrackY, sumTrackZ, sumTrackIP, sumTrackPt;
283 >        //double meanTrackX, meanTrackY, meanTrackZ, meanTrackIP;
284 >        int   nJetTracks, nVertexTracks, nAssociatedTracks, vertexIndex;
285 >        int   vCount = 0;
286 >
287 >        nJetTracks = nVertexTracks = nAssociatedTracks = 0;
288 >        sumTrackX = sumTrackY = sumTrackZ  = sumTrackIP  = sumTrackPt = 0;
289 >        //meanTrackZ = meanTrackIP = -999;
290  
291 <        if(myJet.pt() > 20){
291 >        if(myJet.pt() > 10 && fabs(myJet.eta()) < 2.4){
292  
293            for(TrackRefVector::const_iterator iTrack = tracks.begin(); iTrack != tracks.end(); ++iTrack){
294  
295 <            const reco::Track& myTrack = **iTrack;
295 >            const reco::Track &myJetTrack = **iTrack;
296 >
297 >            sumTrackPt += myJetTrack.pt();
298 >            sumTrackX  += myJetTrack.vx();
299 >            sumTrackY  += myJetTrack.vy();            
300 >            sumTrackZ  += myJetTrack.vz();
301 >            sumTrackIP += myJetTrack.dxy(vertexBeamSpot.position());
302 >            jetTrackAddresses.push_back((unsigned int)&myJetTrack);
303 >            ++nJetTracks;
304 >          }
305 >
306 >          if(nJetTracks > 0){
307 >
308 >            jetCon->SetVtx(sumTrackX/nJetTracks, sumTrackY/nJetTracks, sumTrackZ/nJetTracks);          
309 >
310 >            h1_meanJetTrackZ->Fill(sumTrackZ/nJetTracks);
311 >            h1_trackDxy->Fill(sumTrackIP/nJetTracks);
312 >
313 >          }
314 >          /*meanTrackX = sumTrackX/nJetTracks;
315 >          meanTrackY = sumTrackY/nJetTracks;      
316 >          meanTrackZ = sumTrackZ/nJetTracks;
317 >          */
318 >
319 >          if(jetTrackAddresses.size() > 0){
320  
321 <            sumTrackZ += myTrack.vz();
322 <            sumTrackIP += myTrack.dxy(vertexBeamSpot.position());
323 <            ++nAssociatedTracks;
324 <            
325 <          }
326 <          
327 <          meanTrackZ = sumTrackZ/nAssociatedTracks;
328 <          h1_nAssociatedTracks->Fill(nAssociatedTracks);
329 <          h2_nAssTracksVsJetPt->Fill(nAssociatedTracks, myJet.pt());
330 <          
331 <          for(TrackRefVector::const_iterator iTrack = tracks.begin(); iTrack != tracks.end(); ++iTrack){
332 <            
333 <            const reco::Track& myTrack = **iTrack;
334 <            
335 <            h1_trackZ->Fill(meanTrackZ - myTrack.vz());
336 <            h1_trackDxy->Fill(myTrack.dxy(vertexBeamSpot.position()));
337 <            
338 <          }    
339 <          
340 <          if(pfCount == 0){
341 <            
342 <            ljVertexZ = meanTrackZ;
343 <            
344 <          }else{
345 <            
346 <            h1_allTrackDeltaZ_LJ->Fill(ljVertexZ - meanTrackZ);
347 <            
348 <          }
349 <          
350 <          h1_allTrackDeltaZ_PV->Fill(primaryVertexZ - meanTrackZ);
351 <          
352 <        }
353 <        
354 <        jetCon->SetVtx(0, 0, meanTrackZ);      
355 <        
321 >            for(VertexCollection::const_iterator vtx_iter = primaryVtcs->begin(); vtx_iter!= primaryVtcs->end(); ++vtx_iter){
322 >              
323 >              reco::Vertex myVtx = reco::Vertex(*vtx_iter);
324 >              if(!myVtx.isValid() || myVtx.isFake()) continue;
325 >
326 >              TVector3 *iVtxPosition = new TVector3(myVtx.x(), myVtx.y(), myVtx.z());
327 >              vtxPositionCollection.push_back(*iVtxPosition);
328 >              associatedTrackSumPt.push_back(0);            
329 >            
330 >              for(Vertex::trackRef_iterator iTrackRef = myVtx.tracks_begin(); iTrackRef != myVtx.tracks_end(); ++iTrackRef){
331 >                const edm::RefToBase<reco::Track> &myTrackRef = *iTrackRef;
332 >
333 >                if(myTrackRef.isAvailable()){
334 >                  const reco::Track &myVertexTrack = *myTrackRef.get();        
335 >
336 >                  for(vector<unsigned int>::const_iterator iTrackAddress = jetTrackAddresses.begin(); iTrackAddress != jetTrackAddresses.end(); ++iTrackAddress){
337 >
338 >                    if(*iTrackAddress == (unsigned int)&myVertexTrack){
339 >
340 >                      associatedTrackSumPt.at(vCount) += myVertexTrack.pt()/sumTrackPt;
341 >                      ++nAssociatedTracks;
342 >
343 >                    }
344 >                  }
345 >                }
346 >              }
347 >              ++vCount;  
348 >            }
349 >                    
350 >            double maxSumPtFraction = 0;
351 >            vCount = vertexIndex = 0;
352 >
353 >            for(vector<double>::const_iterator iTrackSumPt = associatedTrackSumPt.begin(); iTrackSumPt != associatedTrackSumPt.end(); ++iTrackSumPt) {
354 >
355 >              if(*iTrackSumPt > maxSumPtFraction){
356 >
357 >                maxSumPtFraction = *iTrackSumPt;  
358 >                vertexIndex      = vCount + 1;
359 >
360 >              }
361 >              ++vCount;
362 >            }
363 >
364 >            if(vertexIndex > 0){
365 >
366 >              h1_jetVertexZ->Fill(vtxPositionCollection[vertexIndex-1].z());
367 >
368 >            }
369 >
370 >            jetCon->SetVtxSumPt(maxSumPtFraction);
371 >            jetCon->SetVtxIndex(vertexIndex);
372 >
373 >            h1_fracAssociatedTracks->Fill((double)nAssociatedTracks/(double)nJetTracks);
374 >            h1_associatedSumPt->Fill(maxSumPtFraction);
375 >            h1_associatedVertexIndex->Fill(vertexIndex);
376 >            h2_nAssTracksVsJetPt->Fill(myJet.pt(), nAssociatedTracks);
377 >          }
378 >        }        
379          ++pfCount;
380        }      
381      }  
# Line 326 | Line 383 | void MPIntuple::analyze(const edm::Event
383    
384    if(!isRealData){
385      
386 +    Handle<GenEventInfoProduct> GenEventInfoHandle;
387 +    iEvent.getByLabel("generator", GenEventInfoHandle);
388 +
389 +    Handle<GenRunInfoProduct> GenRunInfoHandle;
390 +    iEvent.getByLabel("generator", GenRunInfoHandle);
391 +
392      Handle<reco::GenJetCollection> GenJets;
393      iEvent.getByLabel(GenJetHandle_, GenJets);
394 +
395 +    ptHat = qScale = -1; crossSection = 0;
396 +
397 +    if(GenEventInfoHandle.isValid())
398 +    {
399 +      qScale       = GenEventInfoHandle->qScale();
400 +      ptHat        = (GenEventInfoHandle->hasBinningValues() ? GenEventInfoHandle->binningValues()[0] : 0.0);
401 +    }
402 +    if(GenRunInfoHandle.isValid())
403 +    {
404 +      crossSection = GenRunInfoHandle->crossSection();
405 +    }
406          
407      for(GenJetCollection::const_iterator jet_iter = GenJets->begin(); jet_iter!= GenJets->end(); ++jet_iter){
408        
# Line 335 | Line 410 | void MPIntuple::analyze(const edm::Event
410        
411        if(myJet.pt() > 5){
412          
413 <        new ((*jetP4_ak5Gen)[genCount]) TLorentzVector(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
414 <        
413 >        TCGenJet* jetCon = new ((*jet_ak5Gen)[genCount]) TCGenJet;
414 >
415 >        jetCon->SetP4(myJet.px(), myJet.py(), myJet.pz(), myJet.energy());
416 >
417 >        jetCon->SetHadEnergy(myJet.hadEnergy());
418 >        jetCon->SetEmEnergy(myJet.emEnergy());
419 >        jetCon->SetInvEnergy(myJet.invisibleEnergy());
420 >        jetCon->SetAuxEnergy(myJet.auxiliaryEnergy());
421 >        jetCon->SetNumConstit(myJet.getGenConstituents().size());
422 >
423 >        const reco::GenParticle *myGenParticle = myJet.getGenConstituent(0);
424 >        const reco::Candidate   *myMother      = myGenParticle->mother();
425 >        int   nGrandMas = 1;
426 >
427 >        for(int iter = 0; nGrandMas != 0; ++iter)
428 >        {
429 >          myMother  = myMother->mother();
430 >          nGrandMas = myMother->mother()->numberOfMothers();                
431 >        }
432 >        //cout<<myJet.print()<<endl;
433 >        //cout<<"Jet flavor: "<< myMother->pdgId()<<endl;
434 >        jetCon->SetJetFlavor(myMother->pdgId());        
435          ++genCount;
436          
437        }
# Line 356 | Line 451 | void MPIntuple::analyze(const edm::Event
451      const TriggerNames & triggerNames = iEvent.triggerNames(*hltR);
452      hlNames=triggerNames.triggerNames();
453      
454 <    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"};
454 >    string MPI_TriggerNames[] = {"HLT_PixelTracks_Multiplicity70",
455 >                                 "HLT_MinBiasBSC_NoBPTX",
456 >                                 "HLT_PixelTracks_Multiplicity40",
457 >                                 "HLT_L1Tech_HCAL_HF",
458 >                                 "HLT_IsoTrackHB_8E29",
459 >                                 "HLT_IsoTrackHE_8E29",
460 >                                 "HLT_L1Tech_RPC_TTU_RBst1_collisions",
461 >                                 "HLT_L1_BscMinBiasOR_BptxPlusORMinus",
462 >                                 "HLT_L1Tech_BSC_halo_forPhysicsBackground",
463 >                                 "HLT_L1Tech_BSC_HighMultiplicity",
464 >                                 "HLT_MinBiasPixel_DoubleIsoTrack5",
465 >                                 "HLT_MinBiasPixel_DoubleTrack",
466 >                                 "HLT_MinBiasPixel_SingleTrack",
467 >                                 "HLT_ZeroBiasPixel_SingleTrack",
468 >                                 "HLT_MinBiasBSC",
469 >                                 "HLT_StoppedHSCP_8E29",
470 >                                 "HLT_Jet15U_HcalNoiseFiltered",
471 >                                 "HLT_QuadJet15U",
472 >                                 "HLT_DiJetAve30U_8E29",
473 >                                 "HLT_DiJetAve15U_8E29",
474 >                                 "HLT_FwdJet20U",
475 >                                 "HLT_Jet50U",
476 >                                 "HLT_Jet30U",
477 >                                 "HLT_Jet15U",
478 >                                 "HLT_BTagMu_Jet10U",
479 >                                 "HLT_DoubleJet15U_ForwardBackward",
480 >                                 "HLT_BTagIP_Jet50U",
481 >                                 "HLT_DoubleLooseIsoTau15",
482 >                                 "HLT_SingleLooseIsoTau20",
483 >                                 "HLT_HT100U",
484 >                                 "HLT_MET100",
485 >                                 "HLT_MET45"};
486      
487      bool triggerPassed = false;
488      triggerStatus = 0x0;
# Line 368 | Line 494 | void MPIntuple::analyze(const edm::Event
494        if(triggerPassed){
495          
496          for (uint j = 0; j != 32; ++j){
497 <          
497 >
498            if (hlNames[i] == MPI_TriggerNames[j])
499 <            {
500 <              //cout<<"trigger name: "<<hlNames[i]<<"list: "<<dec<<j+1<<endl;
501 <              triggerStatus |= 0x01 << j;
502 <              
377 <            }
499 >          {
500 >            //cout<<"HLTrigger name: "<<hlNames[i]<<" bit: "<<dec<<j+1<<endl;
501 >            triggerStatus |= 0x01 << j;      
502 >          }
503          }
504        }
505      }
506    }
507    //cout<< "total status: "<<hex<<triggerStatus<<endl;
508 <
508 >
509  
510  
511 <  if((pfCount > 3 || genCount > 3) && vtxCount > 0) sTree -> Fill();
511 >  if((pfCount > 1 || genCount > 1) && vtxCount > 0) sTree -> Fill();
512  
513    jet_ak5PF->Clear();
514    primaryVtx->Clear();
515 <  jetP4_ak5Gen->Clear();
515 >  jet_ak5Gen->Clear();
516  
517   }
518  
# Line 396 | Line 521 | void MPIntuple::analyze(const edm::Event
521   void  MPIntuple::beginJob()
522   {
523    
524 <  ntupleFile           = new TFile(rootfilename.c_str(), "RECREATE");
525 <  sTree                = new TTree("mpiTree", "Tree for Jets");
524 >  ntupleFile               = new TFile(rootfilename.c_str(), "RECREATE");
525 >  sTree                    = new TTree("mpiTree", "Tree for Jets");
526  
527 <  h1_trackZ            = new TH1F("h1_trackZ", "#Delta z for associated tracks", 60, -0.3, 0.3);
528 <  h1_nAssociatedTracks = new TH1F("h1_nAssociatedTracks", "Number of tracks associated to jet", 20, -0.5, 19.5);
529 <  h1_trackDxy          = new TH1F("h1_trackDxy", "dxy for all associated tracks", 50, -0.4, 0.4);
530 <  h1_allTrackDeltaZ_PV = new TH1F("h1_allTrackDeltaZ_PV", "#Delta z between jet and primary vertex", 60, -0.3, 0.3);
531 <  h1_allTrackDeltaZ_LJ = new TH1F("h1_allTrackDeltaZ_LJ", "#Delta z between leading jet and other jet vertices", 60, -0.3, 0.3);
532 <  h2_nAssTracksVsJetPt = new TH2F("h2_nAssTracksVsJetPt", "nTracks vs Jet p_{T}", 20, -0.5, 19.5, 50, 0, 100);
533 <  p1_nVtcs             = new TProfile("p1_nVtcs", "<N> per run", 5200.0, 132300.0, 137500.0, 0.0, 6.0);
534 <
535 <  jet_ak5PF            = new TClonesArray("TCJet");
536 <  jetP4_ak5Gen         = new TClonesArray("TLorentzVector");
537 <  primaryVtx           = new TClonesArray("TCPrimaryVtx");
527 >  h1_fracAssociatedTracks  = new TH1D("h1_fracAssociatedTracks", "Fraction of associated jet tracks", 20, 0.0, 1.0);
528 >  h1_trackDxy              = new TH1D("h1_trackDxy", "dxy for all associated tracks", 50, -0.4, 0.4);
529 >  h1_meanJetTrackZ         = new TH1D("h1_meanJetTrackZ", "<z> from jet tracks", 50, -25.0, 25.0);
530 >  h1_jetVertexZ            = new TH1D("h1_jetVertexZ", "z for vertex associated to jet", 50, -25.0, 25.0);
531 >  h1_associatedSumPt       = new TH1D("h1_associatedSumPt", "ratio of sum p_{T} between associatedTracks and jetTracks", 20, 0.0, 1.0);
532 >  h1_associatedVertexIndex = new TH1D("h1_associatedVertex", "number of jets associated to primary vertex", 5, -0.5, 4.5);
533 >  h2_nAssTracksVsJetPt     = new TH2F("h2_nAssTracksVsJetPt", "nTracks vs Jet p_{T}", 50, 0, 100, 20, -0.5, 19.5);
534 >  p1_nVtcs                 = new TProfile("p1_nVtcs", "<N> per run", 5200.0, 132300.0, 137500.0, 0.0, 6.0);
535 >
536 >  jet_ak5PF                = new TClonesArray("TCJet");
537 >  jet_ak5Gen               = new TClonesArray("TCGenJet");
538 >  primaryVtx               = new TClonesArray("TCPrimaryVtx");
539  
540  
541    sTree->Branch("jet_ak5PF",&jet_ak5PF, 6400, 0);
542 <  sTree->Branch("jetP4_ak5Gen",&jetP4_ak5Gen, 6400, 0);
542 >  sTree->Branch("jet_ak5Gen",&jet_ak5Gen, 6400, 0);
543    sTree->Branch("primaryVtx",&primaryVtx, 6400, 0);
544  
545    sTree->Branch("eventNumber",&eventNumber, "eventNumber/I");
# Line 422 | Line 548 | void  MPIntuple::beginJob()
548    sTree->Branch("triggerStatus",&triggerStatus, "triggerStatus/i");
549    sTree->Branch("isRealData",&isRealData, "isRealData/i");
550    sTree->Branch("bunchCross",&bunchCross, "bunchCross/i");
551 <
551 >  sTree->Branch("ptHat",&ptHat, "ptHat/d");
552 >  sTree->Branch("qScale", &qScale, "qScale/d");
553 >  sTree->Branch("crossSection", &crossSection, "crossSection/d");
554   }
555  
556   // ------------ method called once each job just after ending the event loop  ------------
557   void MPIntuple::endJob()
558   {
559  
560 <  h1_trackZ->Write();
561 <  h1_nAssociatedTracks->Write();
560 >  ntupleFile->cd();
561 >
562 >  h1_fracAssociatedTracks->Write();
563 >  h1_meanJetTrackZ->Write();
564    h1_trackDxy->Write();
565 <  h1_allTrackDeltaZ_PV->Write();
566 <  h1_allTrackDeltaZ_LJ->Write();
565 >  h1_jetVertexZ->Write();
566 >  h1_associatedSumPt->Write();
567 >  h1_associatedVertexIndex->Write();
568    h2_nAssTracksVsJetPt->Write();
569    p1_nVtcs->Write();
570  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines