DESY Hbb Analysis Framework
Config.h
Go to the documentation of this file.
1 #ifndef Analysis_Tools_Config_h
2 #define Analysis_Tools_Config_h 1
3 
4 // -*- C++ -*-
5 //
6 // Package: Analysis/Tools
7 // Class: xxx
8 //
16 //
17 // Original Author: Roberval Walsh Bastos Rangel
18 // Created: Mon, 20 Oct 2014 14:24:08 GMT
19 //
20 //
21 
22 // system include files
23 #include <memory>
24 #include <vector>
25 #include <string>
26 //
27 // user include files
28 #include "boost/program_options.hpp"
29 
31 #include "TFile.h"
32 #include "TH1.h"
33 #include "TH2.h"
34 
35 
36 namespace po = boost::program_options;
37 using TH1s = std::map<std::string, TH1F*>;
38 using TH2s = std::map<std::string, TH2F*>;
39 
40 //
41 // class declaration
42 //
43 
44 namespace analysis {
45  namespace tools {
46 
47  struct Options
48  {
49  po::options_description cmd;
50  po::options_description cfg;
51  };
52 
53  class Config {
54  public:
56  Config();
57  Config(int argc, char ** argv);
59  ~Config();
60 
61  po::options_description & optionsCMD();
62  po::options_description & optionsCFG();
63 
64  void loadOptions();
65 
66  // configuration variables - some basic ones out in the private section and make set/get methods
67 
68  // gets (to replace the public variables)
69  std::string configFile() const;
70  // analysis control
71  std::string ntuplesList() const;
72  std::string eventInfo() const;
73  std::string crossSectionTree() const;
74  std::string crossSectionType() const;
75  float crossSection() const;
76  float luminosity() const;
77  int nEventsMax() const;
78  bool isMC() const;
79  bool signalRegion() const;
80  bool blind() const;
81  bool override() const;
82  bool nlo() const;
83  bool fullGenWeight() const;
84  int workflow() const;
85  int index() const;
86 
87  std::string process() const;
88  std::string eventsDir() const;
89 
90  std::string seedFile() const;
91  int seed() const;
92 
93  bool pythia8() const;
94 
95  float scale() const;
96 
97  std::vector<float> erasLumi() const;
98  std::vector<std::string> eras() const;
99 
100  std::string pileupWeights() const;
101 
102  // jets
103  std::string jetsCollection() const;
104  int nJetsMin() const;
105  int nJetsMax() const;
106  int nJets() const;
107  std::vector<float> jetsPtMin() const;
108  std::vector<float> jetsPtMax() const;
109  std::vector<float> jetsEtaMax() const;
110  std::string jetsId() const;
111  std::string jetsPuId() const;
112  std::string jerPtRes() const;
113  std::string jerSF() const;
114  std::string l1tJetsCollection() const;
115 
116  std::string btagAlgorithm() const;
117  std::string btagScaleFactors() const;
118  std::vector<std::string> jetsBtagWP() const;
119  std::vector<float> jetsBtagProbB() const;
120  std::vector<float> jetsBtagProbBB() const;
121  std::vector<float> jetsBtagProbLepB() const;
122  std::vector<float> jetsBtagProbC() const;
123  std::vector<float> jetsBtagProbG() const;
124  std::vector<float> jetsBtagProbLight() const;
125  bool bRegression() const;
126  std::string revBtagWP() const;
127  int revBtagJet() const;
128  bool useJetsExtendedFlavour() const;
129  bool doDijet() const;
130  bool doDijetFlavour() const;
131  int nBJetsMin() const;
132 
133  std::vector<float> jetsQGmin() const;
134  std::vector<float> jetsQGmax() const;
135 
136 
137 
138  // jet-jet
139  float jetsDetaMax() const;
140  float jetsDetaMin() const;
141  float jetsDphiMax() const;
142  float jetsDphiMin() const;
143  float jetsDrMax() const;
144  float jetsDrMin() const;
145  float jetsPtImbalanceMax() const;
146  float jetsPtImbalanceMin() const;
147 
148  // muons
149  std::string muonsCollection() const;
150  int nMuonsMin() const;
151  int nMuonsMax() const;
152  std::vector<float> muonsPtMin() const;
153  std::vector<float> muonsPtMax() const;
154  std::vector<float> muonsEtaMax() const;
155  std::string muonsId() const;
156  std::string l1tMuonsCollection() const;
157 
158  // muon-muon
159  float muonsDrMax() const;
160  float muonsDrMin() const;
161 
162  // trigger
163  std::string triggerResults() const;
164  std::string triggerObjectsDir() const;
165  std::string triggerObjectsL1Muons() const;
166  std::string triggerObjectsL3Muons() const;
167  std::string triggerObjectsBJets() const;
168  std::string triggerObjectsL1Jets() const;
169  std::string triggerObjectsCaloJets() const;
170  std::string triggerObjectsPFJets() const;
171 
173  std::string triggerEmulateL1Muons() const;
174  int triggerEmulateL1MuonsNMin() const;
175  float triggerEmulateL1MuonsPtMin() const;
176  float triggerEmulateL1MuonsEtaMax() const;
177 
179  std::string triggerEmulateL3Muons() const;
180  int triggerEmulateL3MuonsNMin() const;
181  float triggerEmulateL3MuonsPtMin() const;
182  float triggerEmulateL3MuonsEtaMax() const;
183 
184 
186  std::string triggerEmulateL1Jets() const;
187  int triggerEmulateL1JetsNMin() const;
188  float triggerEmulateL1JetsPtMin() const;
189  float triggerEmulateL1JetsEtaMax() const;
190 
192  std::string triggerEmulateCaloJets() const;
193  int triggerEmulateCaloJetsNMin() const;
194  float triggerEmulateCaloJetsPtMin() const;
195  float triggerEmulateCaloJetsEtaMax() const;
196 
197 
199  std::string triggerEmulatePFJets() const;
200  int triggerEmulatePFJetsNMin() const;
201  float triggerEmulatePFJetsPtMin() const;
202  float triggerEmulatePFJetsEtaMax() const;
203 
204 
205  // matching trigger objects
206  float triggerMatchL1MuonsDrMax() const;
207  float triggerMatchL3MuonsDrMax() const;
208  float triggerMatchL1JetsDrMax() const;
209  float triggerMatchCaloJetsDrMax() const;
210  float triggerMatchPFJetsDrMax() const;
211  float triggerMatchCaloBJetsDrMax() const;
212 
213  // generator level
214  std::string genJetsCollection() const;
215  std::string genParticlesCollection() const;
216 
217  // btag
218  float btagWP(const std::string &) const;
219 
220  // general
221  float massMin() const;
222  float massMax() const;
223 
224  // AI
225  std::vector<std::string> variablesAI(const std::string & t = "F") const;
226  std::string directoryAI() const;
227  std::string methodAI() const;
228  float discriminatorMaxAI() const;
229  float discriminatorMinAI() const;
230  float efficiencyMinAI() const;
231 
232  // output tree
233  bool doTree() const;
234 
235  // generic options
236  int prescale() const;
237  int n() const;
238  float min() const;
239  float max() const;
240 
241  // histograms
242  bool histogramJetsRegionSplit() const;
243  bool histogramJetsPerFlavour() const;
244 
245  // btag
246  std::string btagEfficiencies() const;
247 
248  // ========================
249 
250  // analysis control
251 
252  int nlumis_;
253  int runmin_;
254  int runmax_;
255  std::string outputRoot() const;
256  std::string json() const;
257 
258 
259  //
261 
262 
263  // btag SF csv file
264  std::vector<float> jetsbtagmin_;
265 
266  // additional cuts of unidentified objects or for extra selections
267  int nmin_;
268  int nmax_;
269  std::vector<float> ptmin_;
270  std::vector<float> ptmax_;
271  std::vector<float> etamax_;
272 
273 
274 
275  float drmin_;
276  float drmax_;
277  float detamax_;
278  float detamin_;
279  float dphimin_;
280  float dphimax_;
281 
282  std::string hltPath_;
283  std::string l1Seed_;
284 
285  // ----------member data ---------------------------
286  protected:
287 
288  int argc_;
289  char ** argv_;
290 
291  std::string cfg_; // config file
292 
293  po::options_description opt_cmd_;
294  po::options_description opt_cfg_;
295 
296  // analysis control
297  std::string inputlist_;
298  std::string eventinfo_;
299  std::string process_;
300  std::string eventsdir_;
301  std::string xsectiontree_;
302  std::string xsectiontype_;
303  float xsection_;
304  float lumi_;
305  int nevtmax_;
306  bool isMC_;
308  bool blind_;
309  bool override_;
310  bool nlo_;
313  int index_;
314 
316 
317  int seed_;
318  std::string seedfile_;
319 
320  bool pythia8_;
321 
322  float scale_;
323 
324  std::vector<std::string> eras_;
325  std::vector<float> eraslumi_;
326 
327  std::string puweight_;
328 
329  // generic options
331  int n_;
332  float min_;
333  float max_;
334 
335 
336  // jets
337  std::string jetsCol_;
340  int njets_;
341  std::vector<float> jetsptmin_;
342  std::vector<float> jetsptmax_;
343  std::vector<float> jetsetamax_;
344  std::string jetsid_;
345  std::string jetspuid_;
346 
347  std::vector<float> qgmin_;
348  std::vector<float> qgmax_;
349 
354  float jetsdrmin_;
355  float jetsdrmax_;
358 
359  // muon-muons
360  float muonsdrmin_;
361  float muonsdrmax_;
362 
363  // JER resolution and scale factors from txt file
364  std::string jerptres_;
365  std::string jersf_;
366  //
367  std::string l1tjetsCol_;
368  //
369  //
370  std::string btagalgo_;
371  std::string btagsf_;
372 
373 
374  std::vector<std::string> jetsbtagwp_;
375  std::string revbtagwp_;
377  // cuts on the probabilities
378  std::vector<float> jetsbtagprobb_;
379  std::vector<float> jetsbtagprobbb_;
380  std::vector<float> jetsbtagproblepb_;
381  std::vector<float> jetsbtagprobc_;
382  std::vector<float> jetsbtagprobg_;
383  std::vector<float> jetsbtagproblight_;
384 
385  //
387  bool dodijet_;
388 
389  std::vector<int> dijet_ranks_;
390 
392 
393 
394  // muons
395  std::string muonsCol_;
398  std::vector<float> muonsptmin_;
399  std::vector<float> muonsptmax_;
400  std::vector<float> muonsetamax_;
401  std::string muonsid_;
402  std::string l1tmuonsCol_;
403 
404  // trigger
405  std::string triggerCol_;
406  std::string triggerObjDir_;
407  std::string trgObjsL1Muons_;
408  std::string trgObjsL3Muons_;
409  std::string trgObjsBJets_;
410  std::string trgObjsL1Jets_;
411  std::string trgObjsCaloJets_;
412  std::string trgObjsPFJets_;
413 
415  std::string l1muonemul_;
419 
421  std::string l3muonemul_;
425 
427  std::string l1jetemul_;
431 
433  std::string calojetemul_;
437 
439  std::string pfjetemul_;
443 
450 
451  // generator level collections
452  std::string genjetsCol_;
453  std::string genpartsCol_;
454 
455 
456 
457  // btag
461  float btagwpxxx_;
463  // btag efficiency
464  std::string btageff_;
465 
466 
467  // general
468  float massmin_;
469  float massmax_;
470 
471  // AI
472  std::vector<std::string> varsf_ai_;
473  std::vector<std::string> varsi_ai_;
474  std::string dir_ai_;
475  std::string method_ai_;
478  float eff_min_ai_;
479  // output tree
480 
481  bool do_tree_;
482 
483  // histograms
486 
487  // analysis control
488  std::string outputRoot_;
489  std::string json_;
490 
491  private:
492 
493 
494  };
495  }
496 }
497 
498 #endif // Analysis_Tools_Config_h
std::string eventsdir_
Definition: Config.h:300
std::string btageff_
Definition: Config.h:464
std::string inputlist_
Definition: Config.h:297
std::string eventinfo_
Definition: Config.h:298
std::vector< float > jetsbtagprobg_
Definition: Config.h:382
std::vector< float > jetsptmax_
Definition: Config.h:342
std::string triggerObjDir_
Definition: Config.h:406
std::string dir_ai_
Definition: Config.h:474
std::vector< float > jetsbtagproblepb_
Definition: Config.h:380
std::string calojetemul_
Calo jet trigger emulation.
Definition: Config.h:433
float matchTrgPFJetsDrMax_
Definition: Config.h:448
po::options_description cmd
Definition: Config.h:49
float matchTrgCaloJetsDrMax_
Definition: Config.h:447
std::string l3muonemul_
L3 muon trigger emulation.
Definition: Config.h:421
float matchTrgCaloBJetsDrMax_
Definition: Config.h:449
std::string trgObjsL3Muons_
Definition: Config.h:408
std::vector< std::string > eras_
Definition: Config.h:324
std::string jetsCol_
Definition: Config.h:337
std::vector< float > jetsptmin_
Definition: Config.h:341
std::string trgObjsL1Muons_
Definition: Config.h:407
std::string outputRoot_
Definition: Config.h:488
std::vector< std::string > varsi_ai_
Definition: Config.h:473
std::string muonsid_
Definition: Config.h:401
float matchTrgL1JetsDrMax_
Definition: Config.h:446
std::vector< float > muonsetamax_
Definition: Config.h:400
float matchTrgL3MuonsDrMax_
Definition: Config.h:445
std::string hltPath_
Definition: Config.h:282
std::string method_ai_
Definition: Config.h:475
std::vector< float > qgmax_
Definition: Config.h:348
po::options_description cfg
Definition: Config.h:50
std::vector< int > dijet_ranks_
Definition: Config.h:389
std::string xsectiontree_
Definition: Config.h:301
std::vector< float > jetsbtagmin_
Definition: Config.h:264
std::vector< float > muonsptmin_
Definition: Config.h:398
std::vector< std::string > jetsbtagwp_
Definition: Config.h:374
std::string l1tmuonsCol_
Definition: Config.h:402
std::string genjetsCol_
Definition: Config.h:452
float matchTrgL1MuonsDrMax_
Definition: Config.h:444
std::string jersf_
Definition: Config.h:365
std::string jetspuid_
Definition: Config.h:345
std::string cfg_
Definition: Config.h:291
std::string btagalgo_
Definition: Config.h:370
std::string json_
Definition: Config.h:489
po::options_description opt_cmd_
Definition: Config.h:293
std::vector< float > jetsbtagproblight_
Definition: Config.h:383
std::string trgObjsCaloJets_
Definition: Config.h:411
std::vector< float > eraslumi_
Definition: Config.h:325
std::string triggerCol_
Definition: Config.h:405
std::string l1Seed_
Definition: Config.h:283
std::vector< float > jetsbtagprobc_
Definition: Config.h:381
std::vector< float > jetsbtagprobb_
Definition: Config.h:378
std::vector< float > ptmin_
Definition: Config.h:269
std::string puweight_
Definition: Config.h:327
std::string l1tjetsCol_
Definition: Config.h:367
std::vector< std::string > varsf_ai_
Definition: Config.h:472
std::string btagsf_
Definition: Config.h:371
std::string process_
Definition: Config.h:299
std::string trgObjsL1Jets_
Definition: Config.h:410
std::vector< float > muonsptmax_
Definition: Config.h:399
std::string jetsid_
Definition: Config.h:344
std::string revbtagwp_
Definition: Config.h:375
std::string l1jetemul_
L1 jet trigger emulation.
Definition: Config.h:427
std::string jerptres_
Definition: Config.h:364
std::string pfjetemul_
PF jet trigger emulation.
Definition: Config.h:439
po::options_description opt_cfg_
Definition: Config.h:294
std::string l1muonemul_
L1 muon trigger emulation.
Definition: Config.h:415
std::string seedfile_
Definition: Config.h:318
std::string trgObjsBJets_
Definition: Config.h:409
std::string xsectiontype_
Definition: Config.h:302
std::map< std::string, TH1F * > TH1s
Definition: Config.h:37
std::vector< float > jetsetamax_
Definition: Config.h:343
std::vector< float > qgmin_
Definition: Config.h:347
std::string trgObjsPFJets_
Definition: Config.h:412
std::string muonsCol_
Definition: Config.h:395
std::vector< float > ptmax_
Definition: Config.h:270
std::vector< float > jetsbtagprobbb_
Definition: Config.h:379
std::vector< float > etamax_
Definition: Config.h:271
std::string genpartsCol_
Definition: Config.h:453
std::map< std::string, TH2F * > TH2s
Definition: Config.h:38