ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/tcmet/ScanChain.C
Revision: 1.1
Committed: Sat Dec 5 02:59:03 2009 UTC (15 years, 5 months ago) by fgolf
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Error occurred while calculating annotation data.
Log Message:
looper for studying tcMET in CMSSW_3_1_2

File Contents

# Content
1 /* Usage:
2 root [0] .L ScanChain.C++
3 root [1] TFile *_file0 = TFile::Open("merged_ntuple.root")
4 root [2] TChain *chain = new TChain("Events")
5 root [3] chain->Add("merged_ntuple.root")
6
7 There are several places where one may create CMS2 cms2
8 It can be done here (in a doAll.C script), i.e.:
9
10 root [4] CMS2 cms2
11
12 It can be done in the source as is done below, or it can be
13 ascertained by including CORE/CMS2.cc as is commented out
14 below. They are all the same, and everything will work so
15 long as it is created somewhere globally.
16
17 root [5] ScanChain(chain)
18 */
19 #include <iostream>
20 #include <vector>
21
22 #include "TChain.h"
23 #include "TFile.h"
24 #include "TDirectory.h"
25 #include "TROOT.h"
26
27 #include "CMS2.h"
28 CMS2 cms2;
29 /*
30 #include "CORE/CMS2.cc"
31 #include "CORE/selections.cc"
32 #include "CORE/utilities.cc"
33 */
34
35 using namespace tas;
36
37 int ScanChain( TChain* chain, int nEvents = -1, std::string skimFilePrefix="") {
38
39 TObjArray *listOfFiles = chain->GetListOfFiles();
40
41 unsigned int nEventsChain=0;
42 if(nEvents==-1)
43 nEvents = chain->GetEntries();
44 nEventsChain = nEvents;
45 unsigned int nEventsTotal = 0;
46 TDirectory *rootdir = gDirectory->GetDirectory("Rint:");
47
48 TH1F *samplehisto = new TH1F("samplehisto", "Example histogram", 200,0,200);
49 samplehisto->SetDirectory(rootdir);
50 // file loop
51 TIter fileIter(listOfFiles);
52 TFile *currentFile = 0;
53 while ( currentFile = (TFile*)fileIter.Next() ) {
54 TFile f(currentFile->GetTitle());
55 TTree *tree = (TTree*)f.Get("Events");
56 cms2.Init(tree);
57
58 //Event Loop
59 unsigned int nEvents = tree->GetEntries();
60 for( unsigned int event = 0; event < nEvents; ++event) {
61 cms2.GetEntry(event);
62 ++nEventsTotal;
63 }
64 }
65
66 if ( nEventsChain != nEventsTotal ) {
67 std::cout << "ERROR: number of events from files is not equal to total number of events" << std::endl;
68 }
69
70 samplehisto->Draw();
71 return 0;
72 }