ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/tschum/FWlite_Analysis/PlotTool.cc
(Generate patch)

Comparing UserCode/tschum/FWlite_Analysis/PlotTool.cc (file contents):
Revision 1.14 by tschum, Thu Dec 10 18:29:27 2009 UTC vs.
Revision 1.15 by thomsen, Wed Dec 16 16:33:28 2009 UTC

# Line 14 | Line 14 | PlotTool::PlotTool() {
14  
15          showLegend = false;
16          logY = true;
17 +        addTrackJets = true;
18 +        addHitDetInfo = true;
19 +        diTrackMass = true;
20 +        addTrigger = true;
21          addTrackJets = false;
22          addEventInfo = false;
23          addTower = false;
# Line 137 | Line 141 | int PlotTool::init(string fileName, stri
141  
142    }
143  
144 <  if( addEventInfo || addTrackJets || addTower ) {
144 >  if( addEventInfo || addTrackJets || addTower || addTrackJets || addHitDetInfo || diTrackMass || addTrigger) {
145  
146      if(verbose)   cout<<"add friend tree with additional variables..."<<endl;
147  
# Line 166 | Line 170 | int PlotTool::init(string fileName, stri
170        TTree *friendTree = new TTree(friendTreeName.c_str(),friendTreeName.c_str());
171        fwlite::ChainEvent ev(fileNames);
172        int _event, _run, _lumi;
169      int nJetsKT;
170      TrackJetKT = new float [100];
173  
174        //tower data
175        const int kMAX = 10000;
# Line 183 | Line 185 | int PlotTool::init(string fileName, stri
185        towid_eta = new int[ kMAX ];
186        towid     = new int[ kMAX ];
187        
188 <
188 >      int nJetsKT;
189 >      TrackJetKT = new float [100];
190 >      int nTracks;
191 >      TrackDetE = new float [3000];
192 >      TrackDetEECAL = new float [3000];
193 >      float DiTrackMass;
194 >      bool Trigger;
195 >      bool Trigger1;
196 >      
197 >      
198 >      
199        if( addEventInfo ) {
200  
201  
# Line 218 | Line 230 | int PlotTool::init(string fileName, stri
230  
231        }
232  
233 +      if( addTrackJets){            
234 +        friendTree->Branch("nJetsKT", &nJetsKT, "nJetsKT/I");
235 +        friendTree->Branch("TrackJetKT", TrackJetKT, "TrackJetKT[nJetsKT]/F");
236 +      }
237 +      
238 +      if( addHitDetInfo){    
239 +        friendTree->Branch("nTracks", &nTracks, "nTracks/I");
240 +        friendTree->Branch("TrackDetE", TrackDetE, "TrackDetE[nTracks]/F");
241 +        friendTree->Branch("TrackDetEECAL", TrackDetEECAL, "TrackDetEECAL[nTracks]/F");
242 +      }
243 +      if(diTrackMass)  friendTree->Branch("DiTrackMass", &DiTrackMass, "DiTrackMass/F");
244 +      if(addTrigger)  {
245 +        friendTree->Branch("Trigger", &Trigger, "Trigger/O");
246 +        friendTree->Branch("Trigger1", &Trigger1, "Trigger1/O");
247 +      }
248  
249        int tenth = ev.size() / 10;
250        int eventNum =0;
# Line 249 | Line 276 | int PlotTool::init(string fileName, stri
276  
277          }
278  
279 <        if( addTrackJets ) {
280 <
281 <          fwlite::Handle<reco::CaloJetCollection> jets;
282 <          jets.getByLabel(ev, "ak5CaloJets");
283 <
284 <          fwlite::Handle<reco::TrackCollection> tracks;
285 <          tracks.getByLabel(ev, "generalTracks");
286 <
287 <          if (!jets.isValid())
288 <            continue;
289 <          if (!tracks.isValid())
290 <            continue;
291 <          double trackSum;
292 <          nJetsKT = 0;
293 <          for (reco::CaloJetCollection::const_iterator jet = jets->begin(); jet
294 <                 !=jets->end(); jet++) {
295 <            trackSum = 0;
279 >        if( addTrackJets)
280 >          {
281 >            fwlite::Handle<reco::CaloJetCollection> jets;
282 >            jets.getByLabel(ev, "antikt5CaloJets");
283 >            
284 >            fwlite::Handle<reco::TrackCollection> tracks;
285 >            tracks.getByLabel(ev, "generalTracks");
286 >            
287 >            if (!jets.isValid())
288 >              continue;
289 >            if (!tracks.isValid())
290 >              continue;
291 >            double trackSum;
292 >            nJetsKT = 0;
293 >            for (reco::CaloJetCollection::const_iterator jet = jets->begin(); jet
294 >                   !=jets->end(); jet++) {
295 >              trackSum = 0;
296 >              for (reco::TrackCollection::const_iterator track = tracks->begin(); track
297 >                     !=tracks->end(); track++) {
298 >                if (deltaR(jet->eta(), jet->phi(), track->eta(), track->phi())
299 >                    < 0.5)
300 >                  trackSum += track->pt();
301 >              }
302 >              TrackJetKT[nJetsKT] = trackSum;
303 >              nJetsKT++;
304 >            }
305 >          }
306 >        
307 >        if(addHitDetInfo)
308 >          {  
309 >            fwlite::Handle<reco::TrackCollection> tracks;
310 >            tracks.getByLabel(ev, "generalTracks");
311 >            
312 >            nTracks = 0;
313 >            
314 >            if (!tracks.isValid())
315 >              continue;
316 >            
317              for (reco::TrackCollection::const_iterator track = tracks->begin(); track
318                     !=tracks->end(); track++) {
319 <              if (deltaR(jet->eta(), jet->phi(), track->eta(), track->phi())
320 <                  < 0.5)
321 <                trackSum += track->pt();
319 >              fwlite::Handle<vector <reco::CaloCluster> > CaloClusters;
320 >              CaloClusters.getByLabel(ev, "hybridSuperClusters");  //add instance
321 >              //CaloClusters.getByLabel(ev, "multi5x5BasicClusters");
322 >              
323 >              //fwlite::Handle<vector <CaloTower> > CaloTowers;
324 >              //CaloTowers.getByLabel(ev, "towerMaker");
325 >              
326 >              double DR = 100;
327 >              double DetE = 0;
328 >              double DetEECAL = 0;
329 >              
330 >              if (CaloClusters.isValid()){   //always fails
331 >                //if (CaloTowers.isValid()){
332 >                for (vector<reco::CaloCluster>::const_iterator CaloCluster = CaloClusters->begin(); CaloCluster
333 >                       !=CaloClusters->end(); CaloCluster++) {
334 >                  //   int DetectorId = track->outerDetId();      //unfortuately only the Tracker DetId...
335 >                  // /DetId *dId = new DetId(DetectorId);
336 >                  //cout<<dId->det()<<endl;
337 >                  
338 >                  
339 >                  if(deltaR( CaloCluster->eta(), CaloCluster->phi(), track->outerEta(), track->phi()) < DR)
340 >                    {
341 >                      DetE = CaloCluster->energy();
342 >                      if(CaloCluster->caloID().detector(reco::CaloID::DET_ECAL_BARREL) ||CaloCluster->caloID().detector(reco::CaloID::DET_ECAL_ENDCAP))
343 >                        DetEECAL = CaloCluster->energy();
344 >                    }
345 >                }
346 >              }
347 >              
348 >              TrackDetE[nTracks] = DetE;
349 >              TrackDetEECAL[nTracks] = DetEECAL;
350 >              
351 >              
352 >              nTracks++;
353 >              if(nTracks > 2990) cout<<"To many Tracks!!!!!!!!!"<<endl;
354              }
275            TrackJetKT[nJetsKT] = trackSum;
276            nJetsKT++;
355            }
356 <        }
357 <        if( addTower) {
356 >        
357 >        if(diTrackMass)
358 >          {
359 >            fwlite::Handle<reco::TrackCollection> tracks;
360 >            tracks.getByLabel(ev, "generalTracks");
361 >            
362 >            DiTrackMass = 0;
363 >            
364 >            if (!tracks.isValid())
365 >              continue;
366 >            
367 >            for (reco::TrackCollection::const_iterator track = tracks->begin(); track
368 >                   !=tracks->end(); track++) {
369 >              if(!(track->d0() < 2 && track->dz() < 10 && track->numberOfValidHits() > 7)) continue;
370 >              for (reco::TrackCollection::const_iterator track1 = tracks->begin(); track1
371 >                     !=tracks->end(); track1++) {
372 >                if(!(track1->d0() < 2 && track1->dz() < 10 && track1->numberOfValidHits() > 7) || track1 == track) continue;
373 >                
374 >                TLorentzVector tr1(track->px(), track->py(), track->pz(), track->p() );
375 >                TLorentzVector tr2(track1->px(), track1->py(),  track1->pz(),  track1->p() );
376 >                
377 >                double result = (tr1 + tr2).Mag();
378 >                
379 >                if(result > DiTrackMass) DiTrackMass = result;
380 >                
381 >              }
382 >            }
383 >            
384 >          }
385 >        
386 >        if(addTrigger)
387 >          {
388 >            
389 >            Trigger = false;
390 >            Trigger1 = false;
391 >            
392 >            fwlite::Handle< L1GlobalTriggerReadoutRecord> gtReadoutRecord;
393 >            gtReadoutRecord.getByLabel(ev, "gtDigis");  
394 >            //edm::Handle< L1GlobalTriggerReadoutRecord > gtReadoutRecord;
395 >            //event.getByLabel( edm::InputTag("gtDigis"), gtReadoutRecord);
396 >            
397 >            if(!gtReadoutRecord.isValid()) continue;
398 >            
399 >            
400 >            const TechnicalTriggerWord&  technicalTriggerWordBeforeMask  = gtReadoutRecord->technicalTriggerWord();
401 >            
402 >            
403 >            //std::vector<bool>& technicalTriggerWordBeforeMask = gtReadoutRecord->technicalTriggerWord();
404 >            
405 >            bool techTrigger0 = technicalTriggerWordBeforeMask.at(0);
406 >            bool techTrigger40 = technicalTriggerWordBeforeMask.at(40);
407 >            bool techTrigger41 = technicalTriggerWordBeforeMask.at(41);
408 >            bool techTrigger36 = technicalTriggerWordBeforeMask.at(36);
409 >            bool techTrigger37 = technicalTriggerWordBeforeMask.at(37);
410 >            bool techTrigger38 = technicalTriggerWordBeforeMask.at(38);
411 >            bool techTrigger39 = technicalTriggerWordBeforeMask.at(39);
412 >            
413 >            if(techTrigger0 && (techTrigger40 || techTrigger41)) Trigger = true;
414 >            if(Trigger && !techTrigger36 && !techTrigger37 && !techTrigger38 && !techTrigger39) Trigger1 = true;
415 >          }
416  
417 +        if( addTower) {
418            fwlite::Handle<CaloTowerCollection> towers;
419            towers.getByLabel(ev, "towerMaker");
420 <
420 >          
421            int jtow = 0;
422            NobjTowCal=towers->size();
423            for(CaloTowerCollection::const_iterator tow = towers->begin();
# Line 296 | Line 433 | int PlotTool::init(string fileName, stri
433              towid_eta[jtow] = tow->id().ieta();
434              towid [jtow] = tow->id().rawId();
435            }
299
300
436          }
437          friendTree->Fill();
438 <
438 >        
439          if( eventNum != 0 && eventNum%tenth == 0) cout<<"Processed "<<eventNum <<" of "<<ev.size()<<" events. "<<endl;
440 <
440 >        
441        }
442        f->cd();
443        friendTree->Write();
# Line 310 | Line 445 | int PlotTool::init(string fileName, stri
445      f->Close();
446      ((TChain*) this->At(currChain))->AddFriend(friendTreeName.c_str(),
447                                                 friendFileName.c_str());
448 <
314 <
315 <
448 >    
449    }
450  
451  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines