CMS 3D CMS Logo

FWLiteLumiAccess.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include "TFile.h"
3 #include "TSystem.h"
4 
8 
13 
14 
15 int main(int argc, char ** argv){
16  // load framework libraries
17  gSystem->Load( "libFWCoreFWLite" );
19 
20  // initialize command line parser
21  optutl::CommandLineParser parser ("Analyze FWLite Histograms");
22 
23  // parse arguments
24  parser.parseArguments (argc, argv);
25  std::vector<std::string> inputFiles_ = parser.stringVector("inputFiles");
26 
27  for(unsigned int iFile=0; iFile<inputFiles_.size(); ++iFile){
28  // open input file (can be located on castor)
29  TFile* inFile = TFile::Open(inputFiles_[iFile].c_str());
30  if( inFile ){
31  fwlite::Event ev(inFile);
33 
34  std::cout << "----------- Accessing by event ----------------" << std::endl;
35 
36  // get run and luminosity blocks from events as well as associated
37  // products. (This works for both ChainEvent and MultiChainEvent.)
38  for(ev.toBegin(); !ev.atEnd(); ++ev){
39  // get the Luminosity block ID from the event
40  std::cout << " Luminosity ID " << ev.getLuminosityBlock().id() << std::endl;
41  // get the Run ID from the event
42  std::cout <<" Run ID " << ev.getRun().id()<< std::endl;
43  // get the Run ID from the luminosity block you got from the event
44  std::cout << "Run via lumi " << ev.getLuminosityBlock().getRun().id() << std::endl;
45  // get the integrated luminosity (or any luminosity product) from
46  // the event
47  summary.getByLabel(ev.getLuminosityBlock(),"lumiProducer");
48  }
49 
50  std::cout << "----------- Accessing by lumi block ----------------" << std::endl;
51 
52  double lumi_tot = 0.0;
53  // loop over luminosity blocks (in analogy to looping over events)
55  for(ls.toBegin(); !ls.atEnd(); ++ls){
56  summary.getByLabel(ls,"lumiProducer");
57  std::cout << ls.id() << " Inst. Luminosity = " << summary->avgInsRecLumi() << std::endl;
58  // get the associated run from this lumi
59  std::cout << "Run from lumi " << ls.getRun().id() << std::endl;
60  // add up the luminosity by lumi block
61  lumi_tot += summary->avgInsRecLumi();
62  }
63  // print the result
64  std::cout << "----------------------------------------------------" << std::endl;
65  std::cout << "Total luminosity from lumi sections = " << lumi_tot << std::endl;
66  std::cout << "----------------------------------------------------" << std::endl;
67 
68  std::cout << "----------- Accessing by run ----------------" << std::endl;
69 
70  // do the same for runs
71  fwlite::Run r(inFile);
72  for(r.toBegin(); !r.atEnd(); ++r) {
73  std::cout << "Run " << r.id() << std::endl;
74  }
75  // close input file
76  inFile->Close();
77  }
78  }
79  return 0;
80 }
LuminosityBlockID id() const
RunID const & id() const
Definition: RunBase.h:39
void parseArguments(int argc, char **argv, bool allowArgs=false)
fwlite::Run const & getRun() const
Definition: Event.cc:530
bool ev
float avgInsRecLumi() const
Definition: LumiSummary.cc:98
fwlite::LuminosityBlock const & getLuminosityBlock() const
Definition: Event.cc:518
virtual bool atEnd() const
void getByLabel(const P &iP, const char *iModuleLabel, const char *iProductInstanceLabel=0, const char *iProcessLabel=0)
Definition: Handle.h:91
Event const & toBegin()
Go to the very first Event.
Definition: Event.cc:240
fwlite::Run const & getRun() const
static void enable()
enable automatic library loading
int main(int argc, char **argv)
virtual bool atEnd() const
Definition: Event.cc:283
def ls(path, rec=False)
Definition: eostools.py:348
const Run & toBegin()
Definition: Run.cc:171
SVec & stringVector(std::string key)
const LuminosityBlock & toBegin()
virtual bool atEnd() const
Definition: Run.cc:200