Logo ROOT  
Reference Guide
hist2workspace.cxx
Go to the documentation of this file.
1 // @(#)root/roostats:$Id$
2 // Author: Kyle Cranmer, George Lewis
3 /*************************************************************************
4  * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
5  * All rights reserved. *
6  * *
7  * For the licensing terms see $ROOTSYS/LICENSE. *
8  * For the list of contributors see $ROOTSYS/README/CREDITS. *
9  *************************************************************************/
10 
11 ////////////////////////////////////////////////////////////////////////////////
12 
13 
14 
15 #include <string>
16 #include <exception>
17 #include <vector>
18 
19 #include <TROOT.h>
20 
21 //void topDriver(string input); // in MakeModelAndMeasurements
22 //void fastDriver(string input); // in MakeModelAndMeasurementsFast
23 
24 //#include "RooStats/HistFactory/MakeModelAndMeasurements.h"
27 #include "HFMsgService.h"
28 #include "hist2workspaceCommandLineOptionsHelp.h"
29 
30 //_____________________________batch only_____________________
31 #ifndef __CINT__
32 
33 namespace RooStats {
34  namespace HistFactory {
35  void fastDriver(std::string input) {
36 
37  // Create the initial list of measurements and channels
38  std::vector< HistFactory::Measurement > measurement_list;
39  // std::vector< HistFactory::Channel > channel_list;
40 
41  // Fill them using the XML parser
42  HistFactory::ConfigParser xmlParser;
43  measurement_list = xmlParser.GetMeasurementsFromXML( input );
44 
45  // At this point, we have all the information we need
46  // from the xml files.
47 
48  // We will make the measurements 1-by-1
49  for(unsigned int i = 0; i < measurement_list.size(); ++i) {
50  HistFactory::Measurement measurement = measurement_list.at(i);
51  measurement.CollectHistograms();
52  MakeModelAndMeasurementFast( measurement );
53  }
54 
55  return;
56 
57  }
58  } // namespace RooStats
59 } // namespace HistFactory
60 
61 /**
62  * \ingroup HistFactory
63  * main function of the hist2workspace executable.
64  * It creates RooFit models from an xml config and files with histograms.
65  * See MakeModelAndMeasurementFast(), for further instructions.
66  * \param[in] -h Help
67  * \param[in] -standard_form Standard xml model definitions. See MakeModelAndMeasurementFast()
68  * \param[in] -number_counting_form Deprecated
69  * \param[in] -v Switch HistFactory message stream to INFO level.
70  * \param[in] -vv Switch HistFactory message stream to DEBUG level.
71  */
72 int main(int argc, char** argv) {
73 
74  if( !(argc > 1) ) {
75  std::cerr << "need input file" << std::endl;
76  exit(1);
77  }
78 
79  //Switch off ROOT histogram memory management
80  gROOT->SetMustClean(false);
82  cxcoutIHF << "hist2workspace is less verbose now. Use -v and -vv for more details." << std::endl;
86 
87  std::string driverArg;
88 
89  for (int i=1; i < argc; ++i) {
90  std::string input = argv[i];
91 
92  if (input == "-h" || input == "--help"){
93  fprintf(stderr, kCommandLineOptionsHelp);
94  return 0;
95  }
96 
97  if (input == "-v") {
100  continue;
101  }
102 
103  if (input == "-vv") {
106  continue;
107  }
108 
109  if (input == "-number_counting_form") {
110  std::cout << "ERROR: 'number_counting_form' is now deprecated." << std::endl;
111  return 255;
112  }
113 
114  if(input == "-standard_form") {
115  driverArg = argv[++i];
116  continue;
117  }
118 
119  driverArg = argv[i];
120  }
121 
122  try {
124  }
125  catch(const std::string &str) {
126  std::cerr << "hist2workspace - Caught exception: " << str << std::endl ;
127  return 1;
128  }
129  catch( const std::exception& e ) {
130  std::cerr << "hist2workspace - Caught Exception: " << e.what() << std::endl;
131  return 1;
132  }
133  catch(...) {
134  std::cerr << "hist2workspace - Caught Exception" << std::endl;
135  return 1;
136  }
137 
138 
139  return 0;
140 }
141 
142 #endif
ConfigParser.h
e
#define e(i)
Definition: RSha256.hxx:103
RooMsgService::StreamConfig::addTopic
void addTopic(RooFit::MsgTopic newTopic)
Definition: RooMsgService.h:114
RooFit::DEBUG
@ DEBUG
Definition: RooGlobalFunc.h:65
HFMsgService.h
cxcoutIHF
#define cxcoutIHF
Definition: HFMsgService.h:17
RooStats::HistFactory::ConfigParser
TODO Add documentation.
Definition: ConfigParser.h:30
main
int main(int argc, char **argv)
main function of the hist2workspace executable.
Definition: hist2workspace.cxx:72
RooMsgService::getStream
StreamConfig & getStream(Int_t id)
Definition: RooMsgService.h:152
RooFit::HistFactory
@ HistFactory
Definition: RooGlobalFunc.h:69
MakeModelAndMeasurementsFast.h
TROOT.h
RooStats::HistFactory::Measurement
The RooStats::HistFactory::Measurement class can be used to construct a model by combining multiple R...
Definition: Measurement.h:30
RooMsgService::StreamConfig::minLevel
RooFit::MsgLevel minLevel
Definition: RooMsgService.h:131
TDirectory::AddDirectory
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add objects like histograms, TGraph2D, etc in memory.
Definition: TDirectory.cxx:172
RooFit::PROGRESS
@ PROGRESS
Definition: RooGlobalFunc.h:65
RooStats::HistFactory::MakeModelAndMeasurementFast
RooWorkspace * MakeModelAndMeasurementFast(RooStats::HistFactory::Measurement &measurement)
Definition: MakeModelAndMeasurementsFast.cxx:104
RooStats
Namespace for the RooStats classes.
Definition: Asimov.h:19
RooStats::HistFactory::ConfigParser::GetMeasurementsFromXML
std::vector< RooStats::HistFactory::Measurement > GetMeasurementsFromXML(std::string input)
The "main" method.
Definition: ConfigParser.cxx:31
RooStats::HistFactory::Measurement::CollectHistograms
void CollectHistograms()
The most common way to add histograms to channels is to have them stored in ROOT files and to give Hi...
Definition: Measurement.cxx:648
RooFit::INFO
@ INFO
Definition: RooGlobalFunc.h:65
RooMsgService::instance
static RooMsgService & instance()
Return reference to singleton instance.
Definition: RooMsgService.cxx:366
RooStats::HistFactory::fastDriver
void fastDriver(std::string input)
Definition: hist2workspace.cxx:35
gROOT
#define gROOT
Definition: TROOT.h:406