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.13 by tschum, Wed Dec 9 13:02:16 2009 UTC vs.
Revision 1.14 by tschum, Thu Dec 10 18:29:27 2009 UTC

# Line 16 | Line 16 | PlotTool::PlotTool() {
16          logY = true;
17          addTrackJets = false;
18          addEventInfo = false;
19 +        addTower = false;
20          verbose = true;
21  
22          globalCuts="";
23  
24 +        recreateTree = false; //force recreation of friend tree
25 +
26   }
27  
28   //------------------------------------------------------------------
# Line 134 | Line 137 | int PlotTool::init(string fileName, stri
137  
138    }
139  
140 <  if( addEventInfo || addTrackJets) {
140 >  if( addEventInfo || addTrackJets || addTower ) {
141  
142 <    if(verbose)   cout<<"calculating additional variables..."<<endl;
142 >    if(verbose)   cout<<"add friend tree with additional variables..."<<endl;
143  
144      //make file for tree friends (adding additional, computed branches)
145      string friendFileName("/scratch/hh/current/cms/user/");
146      friendFileName += gSystem->GetUserInfo()->fUser;
147 <    friendFileName += "/temp/",
148 <      friendFileName += fileName;
147 >    friendFileName += "/temp/";
148 >    friendFileName += fileLabel;
149      friendFileName += ".root";
150 <    TFile *f = new TFile(friendFileName.c_str(),"recreate");
150 >    string fileOpt = "update";
151 >    if( recreateTree )    fileOpt = "recreate";
152 >
153 >    TFile *f = new TFile(friendFileName.c_str(),fileOpt.c_str());
154  
155      if( f->IsZombie() ) return -1;
156  
# Line 152 | Line 158 | int PlotTool::init(string fileName, stri
158      //char number = currChain;
159      //friendTreeName += number;
160      //TTree *friendTree = new TTree("friendTree","friendTree");
155    TTree *friendTree = new TTree(friendTreeName.c_str(),friendTreeName.c_str());
156    fwlite::ChainEvent ev(fileNames);
157     int _event, _run, _lumi;
158     int nJetsKT;
159     TrackJetKT = new float [100];
161  
162 <    if( addEventInfo ) {
163 <
162 >    if(! f->FindKey(friendTreeName.c_str())) {
163 >      if(verbose)   cout<<"calculating additional variables..."<<endl;
164  
164      friendTree->Branch("event", &_event, "event/I");
165      friendTree->Branch("run", &_run, "run/I");
166      friendTree->Branch("lumi", &_lumi, "lumi/I");
165  
166 <    }
166 >      TTree *friendTree = new TTree(friendTreeName.c_str(),friendTreeName.c_str());
167 >      fwlite::ChainEvent ev(fileNames);
168 >      int _event, _run, _lumi;
169 >      int nJetsKT;
170 >      TrackJetKT = new float [100];
171 >
172 >      //tower data
173 >      const int kMAX = 10000;
174 >      int NobjTowCal;
175 >      towet  = new float [ kMAX ];
176 >      toweta = new float [ kMAX ];
177 >      towphi = new float [ kMAX ];
178 >      towen  = new float [ kMAX ];
179 >      towem  = new float [ kMAX ];
180 >      towhd  = new float [ kMAX ];
181 >      towoe  = new float [ kMAX ];
182 >      towid_phi = new int[ kMAX ];
183 >      towid_eta = new int[ kMAX ];
184 >      towid     = new int[ kMAX ];
185 >      
186  
187 <    if( addTrackJets ) {
187 >      if( addEventInfo ) {
188 >
189  
190 +        friendTree->Branch("event", &_event, "event/I");
191 +        friendTree->Branch("run", &_run, "run/I");
192 +        friendTree->Branch("lumi", &_lumi, "lumi/I");
193  
194 <      friendTree->Branch("nJetsKT", &nJetsKT, "nJetsKT/I");
174 <      friendTree->Branch("TrackJetKT", TrackJetKT, "TrackJetKT[nJetsKT]/F");
175 <    }
194 >      }
195  
196 +      if( addTrackJets ) {
197  
178    int tenth = ev.size() / 10;
179    int eventNum =0;
180    for (ev.toBegin(); !ev.atEnd(); ++ev, ++eventNum) {
198  
199 +        friendTree->Branch("nJetsKT", &nJetsKT, "nJetsKT/I");
200 +        friendTree->Branch("TrackJetKT", TrackJetKT, "TrackJetKT[nJetsKT]/F");
201 +      }
202  
203 <      if( addEventInfo ) {
203 >      if( addTower) {
204 >
205 >        // CaloTower branches
206 >        friendTree->Branch( "NobjTowCal",&NobjTowCal,"NobjTowCal/I"            );
207 >        friendTree->Branch( "TowId",     towid,      "TowId[NobjTowCal]/I"     );
208 >        friendTree->Branch( "TowId_phi", towid_phi,  "TowId_phi[NobjTowCal]/I" );
209 >        friendTree->Branch( "TowId_eta", towid_eta,  "TowId_eta[NobjTowCal]/I" );
210 >        friendTree->Branch( "TowEt",     towet,      "TowEt[NobjTowCal]/F"     );
211 >        friendTree->Branch( "TowEta",    toweta,     "TowEta[NobjTowCal]/F"    );
212 >        friendTree->Branch( "TowPhi",    towphi,     "TowPhi[NobjTowCal]/F"    );
213 >        friendTree->Branch( "TowE",      towen,      "TowE[NobjTowCal]/F"      );
214 >        friendTree->Branch( "TowEm",     towem,      "TowEm[NobjTowCal]/F"     );
215 >        friendTree->Branch( "TowHad",    towhd,      "TowHad[NobjTowCal]/F"    );
216 >        friendTree ->Branch( "TowOE",     towoe,      "TowOE[NobjTowCal]/F"     );
217  
185        _event = ev.id().event();
186        _run   = ev.id().run();
187        _lumi = ev.luminosityBlock();
218  
219        }
220  
191      if( addTrackJets ) {
221  
222 <        fwlite::Handle<reco::CaloJetCollection> jets;
223 <        jets.getByLabel(ev, "antikt5CaloJets");
222 >      int tenth = ev.size() / 10;
223 >      int eventNum =0;
224 >      for (ev.toBegin(); !ev.atEnd(); ++ev, ++eventNum) {
225 >
226 >
227 >        if( addEventInfo ) {
228 >
229 >
230 >          if(eventNum==0) {
231 >            //    fwlite::Handle<edm::TriggerResults> hltHandle;
232 >            //    hltHandle.getByLabel(ev, "TriggerResults");
233 >
234 >            //    fwlite::Handle<edm::TriggerResults> hTriggerResults;
235 >
236 >            //    hTriggerResults.getByLabel(ev, "TriggerResults","","TEST");
237 >            //    fwlite::TriggerNames const&  triggerNames = ev.triggerNames(*hTriggerResults);
238  
196        fwlite::Handle<reco::TrackCollection> tracks;
197        tracks.getByLabel(ev, "generalTracks");
239  
240 <        if (!jets.isValid())
241 <          continue;
242 <        if (!tracks.isValid())
243 <          continue;
203 <        double trackSum;
204 <        nJetsKT = 0;
205 <        for (reco::CaloJetCollection::const_iterator jet = jets->begin(); jet
206 <               !=jets->end(); jet++) {
207 <          trackSum = 0;
208 <          for (reco::TrackCollection::const_iterator track = tracks->begin(); track
209 <                 !=tracks->end(); track++) {
210 <            if (deltaR(jet->eta(), jet->phi(), track->eta(), track->phi())
211 <                < 0.5)
212 <              trackSum += track->pt();
240 >            //    //      std::vector<std::string> const& names = triggerNames.triggerNames();
241 >            //    for (unsigned i = 0; i < triggerNames.size(); ++i) {
242 >            //    std::cout << i << "  " << triggerNames.triggerName(i) << std::endl;
243 >            //    }
244            }
245 <          TrackJetKT[nJetsKT] = trackSum;
246 <          nJetsKT++;
245 >
246 >          _event = ev.id().event();
247 >          _run   = ev.id().run();
248 >          _lumi = ev.luminosityBlock();
249 >
250          }
217      }
218      friendTree->Fill();
251  
252 <      if( eventNum != 0 && eventNum%tenth == 0) cout<<"Processed "<<eventNum <<" of "<<ev.size()<<" events. "<<endl;
252 >        if( addTrackJets ) {
253 >
254 >          fwlite::Handle<reco::CaloJetCollection> jets;
255 >          jets.getByLabel(ev, "ak5CaloJets");
256 >
257 >          fwlite::Handle<reco::TrackCollection> tracks;
258 >          tracks.getByLabel(ev, "generalTracks");
259  
260 +          if (!jets.isValid())
261 +            continue;
262 +          if (!tracks.isValid())
263 +            continue;
264 +          double trackSum;
265 +          nJetsKT = 0;
266 +          for (reco::CaloJetCollection::const_iterator jet = jets->begin(); jet
267 +                 !=jets->end(); jet++) {
268 +            trackSum = 0;
269 +            for (reco::TrackCollection::const_iterator track = tracks->begin(); track
270 +                   !=tracks->end(); track++) {
271 +              if (deltaR(jet->eta(), jet->phi(), track->eta(), track->phi())
272 +                  < 0.5)
273 +                trackSum += track->pt();
274 +            }
275 +            TrackJetKT[nJetsKT] = trackSum;
276 +            nJetsKT++;
277 +          }
278 +        }
279 +        if( addTower) {
280 +
281 +          fwlite::Handle<CaloTowerCollection> towers;
282 +          towers.getByLabel(ev, "towerMaker");
283 +
284 +          int jtow = 0;
285 +          NobjTowCal=towers->size();
286 +          for(CaloTowerCollection::const_iterator tow = towers->begin();
287 +              tow != towers->end(); ++tow, ++jtow){
288 +            towet [jtow] = tow->et();
289 +            toweta[jtow] = tow->eta();
290 +            towphi[jtow] = tow->phi();
291 +            towen [jtow] = tow->energy();
292 +            towem [jtow] = tow->emEnergy();
293 +            towhd [jtow] = tow->hadEnergy();
294 +            towoe [jtow] = tow->outerEnergy();
295 +            towid_phi[jtow] = tow->id().iphi();
296 +            towid_eta[jtow] = tow->id().ieta();
297 +            towid [jtow] = tow->id().rawId();
298 +          }
299 +
300 +
301 +        }
302 +        friendTree->Fill();
303 +
304 +        if( eventNum != 0 && eventNum%tenth == 0) cout<<"Processed "<<eventNum <<" of "<<ev.size()<<" events. "<<endl;
305 +
306 +      }
307 +      f->cd();
308 +      friendTree->Write();
309      }
223    f->cd();
224    friendTree->Write();
310      f->Close();
311      ((TChain*) this->At(currChain))->AddFriend(friendTreeName.c_str(),
312                                                 friendFileName.c_str());
# Line 428 | Line 513 | int PlotTool::loop(string histName, vect
513   int PlotTool::updatePads() {
514  
515          for (map< string, TCanvas* >::iterator it=pads_.begin() ; it != pads_.end(); ++it) {
516 <                if (gROOT->GetListOfCanvases()->FindObject((*it).first.c_str() ) ) {
517 <                        (*it).second->Draw();
518 <                        setCanvas((*it).second);
519 <                } else
520 <                        pads_.erase(it);
516 >                if ( ! gROOT->GetListOfCanvases()->FindObject((*it).first.c_str() ) ) {
517 >                  pads_.erase(it);
518 >                  continue;
519 >                }
520 >                if( (*it).second->GetListOfPrimitives()->GetEntries() == 0 ) {
521 >                  (*it).second->Close();
522 >                  pads_.erase(it);
523 >                  continue;
524 >                }
525 >                (*it).second->Draw();
526 >                setCanvas((*it).second);
527 >
528          }
529  
530          return pads_.size();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines