CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
TagProbeFitTreeAnalyzer Class Reference
Inheritance diagram for TagProbeFitTreeAnalyzer:
edm::EDAnalyzer

Public Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &eventSetup)
 
void calculateEfficiency (string name, const edm::ParameterSet &pset)
 
virtual void endRun (const edm::Run &run, const edm::EventSetup &setup)
 
 TagProbeFitTreeAnalyzer (const edm::ParameterSet &pset)
 
virtual ~TagProbeFitTreeAnalyzer ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Attributes

TagProbeFitter fitter
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Definition at line 13 of file TagProbeFitTreeAnalyzer.cc.

Constructor & Destructor Documentation

TagProbeFitTreeAnalyzer::TagProbeFitTreeAnalyzer ( const edm::ParameterSet pset)

Definition at line 24 of file TagProbeFitTreeAnalyzer.cc.

References TagProbeFitter::addCategory(), TagProbeFitter::addExpression(), TagProbeFitter::addPdf(), TagProbeFitter::addThresholdCategory(), TagProbeFitter::addVariable(), harvestRelVal::args, calculateEfficiency(), ecalBxOrbitNumberGrapher_cfg::categories, hpstanc_transforms::cuts, cppFunctionSkipper::exception, edm::hlt::Exception, edm::ParameterSet::existsAs(), cmsPerfPublish::fail(), fitter, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNamesForType(), edm::ParameterSet::getUntrackedParameter(), mergeVDriftHistosByStation::name, TagProbeFitter::setBinnedFit(), TagProbeFitter::setBinsForMassPlots(), TagProbeFitter::setQuiet(), TagProbeFitter::setWeightVar(), and makeLayoutFileForGui::variables.

24  :
25  fitter( pset.getParameter<vector<string> >("InputFileNames"),
26  pset.getParameter<string>("InputDirectoryName"),
27  pset.getParameter<string>("InputTreeName"),
28  pset.getParameter<string>("OutputFileName"),
29  pset.existsAs<unsigned int>("NumCPU")?pset.getParameter<unsigned int>("NumCPU"):1,
30  pset.existsAs<bool>("SaveWorkspace")?pset.getParameter<bool>("SaveWorkspace"):false,
31  pset.existsAs<bool>("floatShapeParameters")?pset.getParameter<bool>("floatShapeParameters"):true,
32  pset.existsAs<vector<string> >("fixVars")?pset.getParameter<vector<string> >("fixVars"):vector<string>()
33  )
34 {
35  fitter.setQuiet(pset.getUntrackedParameter("Quiet",false));
36 
37  if (pset.existsAs<bool>("binnedFit")) {
38  bool binned = pset.getParameter<bool>("binnedFit");
39  fitter.setBinnedFit(binned, binned ? pset.getParameter<uint32_t>("binsForFit") : 0);
40  } else if (pset.existsAs<uint32_t>("binsForMassPlots")) {
41  fitter.setBinsForMassPlots(pset.getParameter<uint32_t>("binsForMassPlots"));
42  }
43 
44  if (pset.existsAs<std::string>("WeightVariable")) {
45  fitter.setWeightVar(pset.getParameter<std::string>("WeightVariable"));
46  }
47  const ParameterSet variables = pset.getParameter<ParameterSet>("Variables");
48  vector<string> variableNames = variables.getParameterNamesForType<vector<string> >();
49  for (vector<string>::const_iterator name = variableNames.begin(); name != variableNames.end(); name++) {
50  vector<string> var = variables.getParameter<vector<string> >(*name);
51  double lo, hi;
52  if(var.size()>=4 && !(istringstream(var[1])>>lo).fail() && !(istringstream(var[2])>>hi).fail()){
53  fitter.addVariable(*name, var[0], lo, hi, var[3]);
54  }else{
55  LogError("TagProbeFitTreeAnalyzer")<<"Could not create variable: "<<*name<<
56  ". Example: pt = cms.vstring(\"Probe pT\", \"1.0\", \"100.0\", \"GeV/c\") ";
57  }
58  }
59 
60  const ParameterSet categories = pset.getParameter<ParameterSet>("Categories");
61  vector<string> categoryNames = categories.getParameterNamesForType<vector<string> >();
62  for (vector<string>::const_iterator name = categoryNames.begin(); name != categoryNames.end(); name++) {
63  vector<string> cat = categories.getParameter<vector<string> >(*name);
64  if(cat.size()==2){
65  fitter.addCategory(*name, cat[0], cat[1]);
66  }else{
67  LogError("TagProbeFitTreeAnalyzer")<<"Could not create category: "<<*name<<
68  ". Example: mcTrue = cms.vstring(\"MC True\", \"dummy[true=1,false=0]\") ";
69  }
70  }
71 
72  if (pset.existsAs<ParameterSet>("Expressions")) {
73  const ParameterSet exprs = pset.getParameter<ParameterSet>("Expressions");
74  vector<string> exprNames = exprs.getParameterNamesForType<vector<string> >();
75  for (vector<string>::const_iterator name = exprNames.begin(); name != exprNames.end(); name++) {
76  vector<string> expr = exprs.getParameter<vector<string> >(*name);
77  if(expr.size()>=2){
78  vector<string> args(expr.begin()+2,expr.end());
79  fitter.addExpression(*name, expr[0], expr[1], args);
80  }else{
81  LogError("TagProbeFitTreeAnalyzer")<<"Could not create expr: "<<*name<<
82  ". Example: qop = cms.vstring(\"qOverP\", \"charge/p\", \"charge\", \"p\") ";
83  }
84  }
85  }
86 
87 
88  if (pset.existsAs<ParameterSet>("Cuts")) {
89  const ParameterSet cuts = pset.getParameter<ParameterSet>("Cuts");
90  vector<string> cutNames = cuts.getParameterNamesForType<vector<string> >();
91  for (vector<string>::const_iterator name = cutNames.begin(); name != cutNames.end(); name++) {
92  vector<string> cat = cuts.getParameter<vector<string> >(*name);
93  if(cat.size()==3){
94  fitter.addThresholdCategory(*name, cat[0], cat[1], atof(cat[2].c_str()));
95  }else{
96  LogError("TagProbeFitTreeAnalyzer")<<"Could not create cut: "<<*name<<
97  ". Example: matched = cms.vstring(\"Matched\", \"deltaR\", \"0.5\") ";
98  }
99  }
100  }
101 
102  if(pset.existsAs<ParameterSet>("PDFs")){
103  const ParameterSet pdfs = pset.getParameter<ParameterSet>("PDFs");
104  vector<string> pdfNames = pdfs.getParameterNamesForType<vector<string> >();
105  for (vector<string>::const_iterator name = pdfNames.begin(); name != pdfNames.end(); name++) {
106  vector<string> pdf = pdfs.getParameter<vector<string> >(*name);
107  fitter.addPdf(*name, pdf);
108  }
109  }
110 
111  const ParameterSet efficiencies = pset.getParameter<ParameterSet>("Efficiencies");
112  vector<string> efficiencyNames = efficiencies.getParameterNamesForType<ParameterSet>();
113  for (vector<string>::const_iterator name = efficiencyNames.begin(); name != efficiencyNames.end(); name++) {
114  try {
115  calculateEfficiency(*name, efficiencies.getParameter<ParameterSet>(*name));
116  } catch (std::exception &ex) {
117  throw cms::Exception("Error", ex.what());
118  }
119  }
120 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool addExpression(std::string expressionName, std::string title, std::string expression, std::vector< std::string > arguments)
adds a new category based on a cut
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:187
void addPdf(std::string pdfName, std::vector< std::string > &pdfCommands)
void setWeightVar(const std::string &weight)
set a variable to be used as weight for a dataset. empty string means no weights. ...
void calculateEfficiency(string name, const edm::ParameterSet &pset)
bool addThresholdCategory(std::string categoryName, std::string title, std::string varName, double cutValue)
adds a new category based on a cut
std::vector< std::string > getParameterNamesForType(bool trackiness=true) const
Definition: ParameterSet.h:195
void setQuiet(bool quiet_=true)
suppress most of the output from RooFit and Minuit
void setBinnedFit(bool binned, int bins=0)
set if to do a binned fit
dictionary args
void setBinsForMassPlots(int bins)
set number of bins to use when making the plots; 0 = automatic
bool addCategory(std::string categoryName, std::string title, std::string expression)
adds a new category variable to the set of variables describing the data in the tree; &quot;expression&quot; is...
bool addVariable(std::string variableName, std::string title, double low, double hi, std::string units)
adds a new real variable to the set of variables describing the data in the tree
virtual TagProbeFitTreeAnalyzer::~TagProbeFitTreeAnalyzer ( )
inlinevirtual

Definition at line 16 of file TagProbeFitTreeAnalyzer.cc.

16 {};

Member Function Documentation

virtual void TagProbeFitTreeAnalyzer::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
inlinevirtual

Implements edm::EDAnalyzer.

Definition at line 17 of file TagProbeFitTreeAnalyzer.cc.

17 {};
void TagProbeFitTreeAnalyzer::calculateEfficiency ( string  name,
const edm::ParameterSet pset 
)

Definition at line 122 of file TagProbeFitTreeAnalyzer.cc.

References ValidateTausOnRealData_cff::binning, TagProbeFitter::calculateEfficiency(), gather_cfg::cout, edm::ParameterSet::existsAs(), cmsRelvalreport::exit, fitter, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNamesForType(), i, python.multivaluedict::map(), and n.

Referenced by TagProbeFitTreeAnalyzer().

122  {
123  vector<string> effCatState = pset.getParameter<vector<string> >("EfficiencyCategoryAndState");
124  if(effCatState.empty() || (effCatState.size() % 2 == 1)){
125  cout<<"EfficiencyCategoryAndState must be a even-sized list of category names and states of that category (cat1, state1, cat2, state2, ...)."<<endl;
126  exit(1);
127  }
128 
129  vector<string> unbinnedVariables;
130  if(pset.existsAs<vector<string> >("UnbinnedVariables")){
131  unbinnedVariables = pset.getParameter<vector<string> >("UnbinnedVariables");
132  }
133 
134  const ParameterSet binVars = pset.getParameter<ParameterSet>("BinnedVariables");
135  map<string, vector<double> >binnedVariables;
136  vector<string> variableNames = binVars.getParameterNamesForType<vector<double> >();
137  for (vector<string>::const_iterator var = variableNames.begin(); var != variableNames.end(); var++) {
138  vector<double> binning = binVars.getParameter<vector<double> >(*var);
139  binnedVariables[*var] = binning;
140  }
141  map<string, vector<string> >mappedCategories;
142  vector<string> categoryNames = binVars.getParameterNamesForType<vector<string> >();
143  for (vector<string>::const_iterator var = categoryNames.begin(); var != categoryNames.end(); var++) {
144  vector<string> map = binVars.getParameter<vector<string> >(*var);
145  mappedCategories[*var] = map;
146  }
147 
148  vector<string> binToPDFmap;
149  if(pset.existsAs<vector<string> >("BinToPDFmap")){
150  binToPDFmap = pset.getParameter<vector<string> >("BinToPDFmap");
151  }
152  if((binToPDFmap.size() > 0) && (binToPDFmap.size()%2 == 0)){
153  cout<<"BinToPDFmap must have odd size, first string is the default, followed by binRegExp - PDFname pairs!"<<endl;
154  exit(2);
155  }
156 
157  vector<string> effCats, effStates;
158  for (size_t i = 0, n = effCatState.size()/2; i < n; ++i) {
159  effCats.push_back(effCatState[2*i]);
160  effStates.push_back(effCatState[2*i+1]);
161  }
162 
163  fitter.calculateEfficiency(name, effCats, effStates, unbinnedVariables, binnedVariables, mappedCategories, binToPDFmap);
164 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:187
std::string calculateEfficiency(std::string dirName, std::string efficiencyCategory, std::string efficiencyState, std::vector< std::string > &unbinnedVariables, std::map< std::string, std::vector< double > > &binnedReals, std::map< std::string, std::vector< std::string > > &binnedCategories, std::vector< std::string > &binToPDFmap)
calculate the efficiency for a particular binning of the data; it saves everything in the directory &quot;...
std::vector< std::string > getParameterNamesForType(bool trackiness=true) const
Definition: ParameterSet.h:195
tuple cout
Definition: gather_cfg.py:121
virtual void TagProbeFitTreeAnalyzer::endRun ( const edm::Run run,
const edm::EventSetup setup 
)
inlinevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 18 of file TagProbeFitTreeAnalyzer.cc.

18 {};

Member Data Documentation

TagProbeFitter TagProbeFitTreeAnalyzer::fitter
private

Definition at line 21 of file TagProbeFitTreeAnalyzer.cc.

Referenced by calculateEfficiency(), and TagProbeFitTreeAnalyzer().