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.21 by naodell, Wed Nov 3 09:53:54 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 +
38   //#include "RecoVertex/PrimaryVertexProducer/interface/VertexHigherPtSquared.h"
39  
40   //GenParticles
# Line 96 | Line 98 | class MPIntuple : public edm::EDAnalyzer
98    //  Counting variables   //
99  
100    int eventNumber, runNumber, lumiSection, bunchCross;
101 <
101 >  double ptHat, qScale;
102 >  
103    TTree* sTree;
104    TFile* ntupleFile;
105  
# Line 127 | Line 130 | class MPIntuple : public edm::EDAnalyzer
130    TProfile * p1_nVtcs;
131  
132  
130
133   };
134  
135 < 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"))
135 > MPIntuple::MPIntuple(const edm::ParameterSet& iConfig)
136   {
137 +  PFJetHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("PFJetTag");
138 +  GenJetHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("GenJetTag");
139 +  PrimaryVtxHandle_ = iConfig.getUntrackedParameter<edm::InputTag>("PrimaryVtxTag");
140 +  doGenJets_ = iConfig.getUntrackedParameter<bool>("doGenJets");
141 +  doPFJets_ = iConfig.getUntrackedParameter<bool>("doPFJets");
142 +  triggerHLT_ = iConfig.getUntrackedParameter<bool>("triggerHLT");
143 +  rootfilename = iConfig.getUntrackedParameter<string>("rootfilename");
144 +  hlTriggerResults_ = iConfig.getUntrackedParameter<string>("HLTriggerResults","TriggerResults");
145 +  hltName_ = iConfig.getUntrackedParameter<string>("hltName","HLT");
146   }
147  
148   MPIntuple::~MPIntuple()
# Line 157 | Line 158 | MPIntuple::~MPIntuple()
158   void MPIntuple::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
159   {
160  
160
161    eventNumber  = iEvent.id().event();
162    runNumber    = iEvent.id().run();
163    lumiSection  = (unsigned int)iEvent.getLuminosityBlock().luminosityBlock();
164    bunchCross   = (unsigned int)iEvent.bunchCrossing();
165    isRealData   = iEvent.isRealData();
166  
167 +
168    edm::Handle<reco::BeamSpot> beamSpotHandle;
169    iEvent.getByLabel("offlineBeamSpot", beamSpotHandle);
170    reco::BeamSpot vertexBeamSpot = *beamSpotHandle;
# Line 187 | Line 188 | void MPIntuple::analyze(const edm::Event
188      if(!myVtx.isValid() || myVtx.isFake()) continue;
189      TCPrimaryVtx* vtxCon = new ((*primaryVtx)[vtxCount]) TCPrimaryVtx;
190        
191 +    cout<<myVtx.nTracks()<<endl;
192 +
193      vtxCon->SetPosition(myVtx.x(), myVtx.y(), myVtx.z());
194      vtxCon->SetNDof(myVtx.ndof());
195      vtxCon->SetChi2(myVtx.chi2());
# Line 273 | Line 276 | void MPIntuple::analyze(const edm::Event
276  
277          float sumTrackZ, sumTrackIP;
278          float meanTrackZ, meanTrackIP;
279 <        int   nAssociatedTracks = 0;
279 >        int   nAssociatedTracks = -1;
280 >
281 >        sumTrackZ  = sumTrackIP  = 0;
282 >        meanTrackZ = meanTrackIP = -999;
283  
284 <        sumTrackZ  = sumTrackIP  = 0;
279 <        meanTrackZ = meanTrackIP = -999;
284 >        if(myJet.pt() > 20 && fabs(myJet.eta()) < 2.4){
285  
286 <        if(myJet.pt() > 20){
286 >          nAssociatedTracks = 0;
287  
288            for(TrackRefVector::const_iterator iTrack = tracks.begin(); iTrack != tracks.end(); ++iTrack){
289  
290 <            const reco::Track& myTrack = **iTrack;
291 <
292 <            sumTrackZ += myTrack.vz();
293 <            sumTrackIP += myTrack.dxy(vertexBeamSpot.position());
290 >            const reco::Track    &myJetTrack = **iTrack;
291 >            //const reco::TrackRef &myTrackRef = *iTrack;
292 >
293 >            sumTrackZ += myJetTrack.vz();
294 >            sumTrackIP += myJetTrack.dxy(vertexBeamSpot.position());
295              ++nAssociatedTracks;
296 <            
296 >
297 >            for(VertexCollection::const_iterator vtx_iter = primaryVtcs->begin(); vtx_iter!= primaryVtcs->end(); ++vtx_iter){
298 >              
299 >              reco::Vertex myVtx = reco::Vertex(*vtx_iter);
300 >              if(!myVtx.isValid() || myVtx.isFake()) continue;
301 >              
302 >              for(Vertex::trackRef_iterator iTrackRef = myVtx.tracks_begin(); iTrackRef != myVtx.tracks_end(); ++iTrackRef){
303 >                const edm::RefToBase<reco::Track> &myTrackRef = *iTrackRef;
304 >
305 >                if(myTrackRef.isAvailable()){
306 >
307 >                  const reco::Track &myVertexTrack = *myTrackRef.get();
308 >                                
309 >                  cout<<"Vertex track z = "<<myVertexTrack.vz()<<endl;
310 >                  cout<<"Jet track z = "<<myJetTrack.vz()<<endl;
311 >                
312 >                }
313 >              }      
314 >            }              
315            }
316            
317            meanTrackZ = sumTrackZ/nAssociatedTracks;
318            h1_nAssociatedTracks->Fill(nAssociatedTracks);
319 <          h2_nAssTracksVsJetPt->Fill(nAssociatedTracks, myJet.pt());
319 >          h2_nAssTracksVsJetPt->Fill(myJet.pt(), nAssociatedTracks);
320            
321            for(TrackRefVector::const_iterator iTrack = tracks.begin(); iTrack != tracks.end(); ++iTrack){
322              
323 <            const reco::Track& myTrack = **iTrack;
323 >            const reco::Track &myJetTrack = **iTrack;
324              
325 <            h1_trackZ->Fill(meanTrackZ - myTrack.vz());
326 <            h1_trackDxy->Fill(myTrack.dxy(vertexBeamSpot.position()));
325 >            if(nAssociatedTracks == 3) h1_trackZ->Fill(meanTrackZ - myJetTrack.vz());
326 >            h1_trackDxy->Fill(myJetTrack.dxy(vertexBeamSpot.position()));
327              
328            }    
329            
# Line 326 | Line 350 | void MPIntuple::analyze(const edm::Event
350    
351    if(!isRealData){
352      
353 +    Handle<GenEventInfoProduct> GenInfoHandle;
354 +    iEvent.getByLabel("generator", GenInfoHandle);
355 +
356      Handle<reco::GenJetCollection> GenJets;
357      iEvent.getByLabel(GenJetHandle_, GenJets);
358 +
359 +    ptHat = qScale = -1;
360 +
361 +    if(GenInfoHandle.isValid()){
362 +
363 +      qScale = GenInfoHandle->qScale();
364 +      ptHat  = (GenInfoHandle->hasBinningValues() ? GenInfoHandle->binningValues()[0] : 0.0);
365 +
366 +    }
367          
368      for(GenJetCollection::const_iterator jet_iter = GenJets->begin(); jet_iter!= GenJets->end(); ++jet_iter){
369        
# Line 380 | Line 416 | void MPIntuple::analyze(const edm::Event
416      }
417    }
418    //cout<< "total status: "<<hex<<triggerStatus<<endl;
419 <
419 >
420  
421  
422    if((pfCount > 3 || genCount > 3) && vtxCount > 0) sTree -> Fill();
# Line 404 | Line 440 | void  MPIntuple::beginJob()
440    h1_trackDxy          = new TH1F("h1_trackDxy", "dxy for all associated tracks", 50, -0.4, 0.4);
441    h1_allTrackDeltaZ_PV = new TH1F("h1_allTrackDeltaZ_PV", "#Delta z between jet and primary vertex", 60, -0.3, 0.3);
442    h1_allTrackDeltaZ_LJ = new TH1F("h1_allTrackDeltaZ_LJ", "#Delta z between leading jet and other jet vertices", 60, -0.3, 0.3);
443 <  h2_nAssTracksVsJetPt = new TH2F("h2_nAssTracksVsJetPt", "nTracks vs Jet p_{T}", 20, -0.5, 19.5, 50, 0, 100);
443 >  h2_nAssTracksVsJetPt = new TH2F("h2_nAssTracksVsJetPt", "nTracks vs Jet p_{T}", 50, 0, 100, 20, -0.5, 19.5);
444    p1_nVtcs             = new TProfile("p1_nVtcs", "<N> per run", 5200.0, 132300.0, 137500.0, 0.0, 6.0);
445  
446    jet_ak5PF            = new TClonesArray("TCJet");
# Line 422 | Line 458 | void  MPIntuple::beginJob()
458    sTree->Branch("triggerStatus",&triggerStatus, "triggerStatus/i");
459    sTree->Branch("isRealData",&isRealData, "isRealData/i");
460    sTree->Branch("bunchCross",&bunchCross, "bunchCross/i");
461 +  sTree->Branch("ptHat",&ptHat, "ptHat/d");
462  
463   }
464  
# Line 429 | Line 466 | void  MPIntuple::beginJob()
466   void MPIntuple::endJob()
467   {
468  
469 +  ntupleFile->cd();
470 +
471    h1_trackZ->Write();
472    h1_nAssociatedTracks->Write();
473    h1_trackDxy->Write();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines