1 #ifndef Analysis_Tools_macro_config_h_ 2 #define Analysis_Tools_macro_config_h_ 4 #include "boost/program_options.hpp" 5 #include "boost/algorithm/string.hpp" 149 namespace po = boost::program_options;
150 po::options_description desc(
"Options");
152 (
"help,h",
"Show help messages")
153 (
"config,c",po::value<std::string>(&
cfg_),
"Configuration file name");
155 po::options_description
config(
"Configuration");
157 (
"ntuplesList",po::value <std::string> (&
inputlist_)->default_value(
"rootFileList.txt"),
"File with list of ntuples")
158 (
"nEventsMax",po::value <int> (&
nevtmax_)->default_value(-1),
"Maximum number of events")
159 (
"nLumiSections",po::value <int> (&
nlumis_)->default_value(-1),
"Number of lumi sections processed")
160 (
"runMin",po::value <int> (&
runmin_)->default_value(-1),
"Minimum run number")
161 (
"runMax",po::value <int> (&
runmax_)->default_value(-1),
"Minimum run number")
162 (
"output",po::value <std::string> (&
outputRoot_)->default_value(
"histograms.root"),
"Output root file")
163 (
"json",po::value <std::string> (&
json_)->default_value(
"no_json.txt"),
"JSON file for data")
164 (
"seedFile",po::value <std::string> (&
seedfile_)->default_value(
"seed.txt"),
"File containing a seed value for random number generator")
165 (
"seed",po::value <int> (&
seed_)->default_value(1),
"Seed value for random number generator")
166 (
"btagSF",po::value <std::string> (&
btagsf_)->default_value(
"DeepCSV.csv"),
"b-tagging scale factor in CSV format")
167 (
"jerPT",po::value <std::string> (&
jerpt_)->default_value(
"JERPT.txt"),
"JER pt resolution in txt format")
168 (
"jerSF",po::value <std::string> (&
jersf_)->default_value(
"JERSF.txt"),
"JER scale factor in txt format")
170 (
"nJetsMin",po::value <int> (&
njetsmin_)->default_value(0),
"Minimum number of jets")
171 (
"nJetsMax",po::value <int> (&
njetsmax_)->default_value(100),
"Maximum number of jets")
172 (
"nBJetsMin",po::value <int> (&
nbjetsmin_)->default_value(0),
"Minimum number of btgaged jets")
173 (
"jetsPtMin", po::value<std::vector<float> >(&
jetsptmin_)->multitoken(),
"Mimium pt of the jets")
174 (
"jetsPtMax", po::value<std::vector<float> >(&
jetsptmax_)->multitoken(),
"Maximum pt of the jets")
175 (
"jetsEtaMax", po::value<std::vector<float> >(&
jetsetamax_)->multitoken(),
"Maximum |eta| of the jets")
176 (
"jetsBtagMin", po::value<std::vector<float> >(&
jetsbtagmin_)->multitoken(),
"Minimum btag of the jets; if < 0 -> reverse btag")
177 (
"jetsId",po::value <std::string> (&
jetsid_)->default_value(
"TIGHT"),
"Jets id criteria for all jets")
179 (
"l1tJetsNMin",po::value <int> (&
l1tjetsnmin_)->default_value(0),
"Minimum number of L1T jets")
180 (
"l1tJetsPtMin", po::value<std::vector<float> >(&
l1tjetsptmin_)->multitoken(),
"Mimium pt of the L1T jets")
181 (
"l1tJetsEtaMax", po::value<std::vector<float> >(&
l1tjetsetamax_)->multitoken(),
"Maximum |eta| of the L1T jets")
182 (
"l1tJetsRefNMin",po::value <int> (&
l1tjetsrefnmin_)->default_value(0),
"Minimum number of L1T jets for reference trigger")
183 (
"l1tJetsRefPtMin", po::value<std::vector<float> >(&
l1tjetsrefptmin_)->multitoken(),
"Mimium pt of the L1T jets for reference trigger")
184 (
"l1tJetsRefEtaMax", po::value<std::vector<float> >(&
l1tjetsrefetamax_)->multitoken(),
"Maximum |eta| of the L1T jets for reference trigger")
187 (
"nMuonsMin",po::value <int> (&
nmuonsmin_)->default_value(0),
"Minimum number of muons")
188 (
"muonsPtMin", po::value<std::vector<float> >(&
muonsptmin_)->multitoken(),
"Mimium pt of the muons")
189 (
"muonsPtMax", po::value<std::vector<float> >(&
muonsptmax_)->multitoken(),
"Maximum pt of the muons")
190 (
"muonsEtaMax", po::value<std::vector<float> >(&
muonsetamax_)->multitoken(),
"Maximum |eta| of the muons")
191 (
"muonsId",po::value <std::string> (&
muonsid_)->default_value(
"LOOSE"),
"muons id criteria for all muons")
193 (
"l1tMuonsNMin",po::value <int> (&
l1tmuonsnmin_)->default_value(0),
"Minimum number of L1T muons")
194 (
"l1tMuonsPtMin", po::value<std::vector<float> >(&
l1tmuonsptmin_)->multitoken(),
"Mimium pt of the L1T muons")
195 (
"l1tMuonsEtaMax", po::value<std::vector<float> >(&
l1tmuonsetamax_)->multitoken(),
"Maximum |eta| of the L1T muons")
196 (
"l1tMuonsRefNMin",po::value <int> (&
l1tmuonsrefnmin_)->default_value(0),
"Minimum number of L1T muons for reference trigger")
197 (
"l1tMuonsRefPtMin", po::value<std::vector<float> >(&
l1tmuonsrefptmin_)->multitoken(),
"Mimium pt of the L1T muons for reference trigger")
198 (
"l1tMuonsRefEtaMax", po::value<std::vector<float> >(&
l1tmuonsrefetamax_)->multitoken(),
"Maximum |eta| of the L1T muons for reference trigger")
201 (
"nMin",po::value <int> (&
nmin_)->default_value(0),
"Minimum number objects")
202 (
"nMax",po::value <int> (&
nmax_)->default_value(0),
"Maximum number objects")
203 (
"ptMin", po::value<std::vector<float> >(&
ptmin_)->multitoken(),
"Mimium pt of an object")
204 (
"ptMax", po::value<std::vector<float> >(&
ptmax_)->multitoken(),
"Maximum pt of an object")
205 (
"etaMax", po::value<std::vector<float> >(&
etamax_)->multitoken(),
"Maximum |eta| of an object")
207 (
"dRMin",po::value <float> (&
drmin_)->default_value(0.),
"Minimum delta R between candidates")
208 (
"dRMax",po::value <float> (&
drmax_)->default_value(0.),
"Maximum delta R between candidates")
209 (
"dEtaMax",po::value <float> (&
detamax_)->default_value(10.),
"Maximum delta eta between candidates")
210 (
"dPhiMin",po::value <float> (&
dphimin_)->default_value(0.),
"Minimum delta phi between candidates")
211 (
"ptImbalanceMax",po::value <float> (&
ptimbalmax_)->default_value(1000.),
"Maximum relative imbalance between two candidates")
213 (
"isMC",po::value <bool> (&
isMC_)->default_value(
true),
"Flag for MC dataset")
214 (
"signalRegion",po::value <bool> (&
signalregion_)->default_value(
true),
"Flag for signal region")
215 (
"hltPath",po::value <std::string> (&
hltPath_),
"HLT path name")
216 (
"l1Seed",po::value <std::string> (&
l1Seed_)->default_value(
""),
"L1 seed name")
217 (
"hltPathReference",po::value <std::string> (&
hltPathRef_),
"HLT path name for reference trigger for trigger efficiency")
218 (
"l1SeedReference",po::value <std::string> (&
l1SeedRef_)->default_value(
""),
"L1 seed name for reference trigger")
219 (
"triggerObjects", po::value<std::vector<std::string> >(&
triggerObjects_)->multitoken(),
"Trigger objects")
220 (
"triggerObjectsMatches", po::value<std::vector<int> >(&
triggerObjectsMatches_)->multitoken(),
"Number of trigger objects matches")
221 (
"triggerObjectsMatchesRank", po::value<std::vector<int> >(&
triggerObjectsMatchesRank_)->multitoken(),
"Rank of offline object the trigger objects matches")
222 (
"triggerObjectsReference", po::value<std::vector<std::string> >(&
triggerObjectsRef_)->multitoken(),
"Trigger objects reference trigger")
223 (
"hltPathsList", po::value<std::vector<std::string> >(&
hltPaths_)->multitoken(),
"HLT paths list")
224 (
"hltPathsLogic",po::value <std::string> (&
hltPathsLogic_)->default_value(
"OR"),
"HLT paths logic (OR/AND)")
225 (
"hltPathsList2", po::value<std::vector<std::string> >(&
hltPaths2_)->multitoken(),
"HLT paths second list")
226 (
"hltPathsLogic2",po::value <std::string> (&
hltPathsLogic2_)->default_value(
"OR"),
"HLT paths logic (OR/AND) for second list")
227 (
"triggerObjectsJets", po::value<std::vector<std::string> >(&
triggerObjectsJets_)->multitoken(),
"Trigger objects for jets")
228 (
"triggerObjectsMuons", po::value<std::vector<std::string> >(&
triggerObjectsMuons_)->multitoken(),
"Trigger objects for muons")
230 (
"btagAlgorithm",po::value <std::string> (&
btagalgo_)->default_value(
"csvivf"),
"BTag algorithm")
231 (
"btagWorkingPoint",po::value <std::string> (&
btagwp_)->default_value(
"tight"),
"BTag working point")
232 (
"btagWPLoose",po::value <float> (&
btagwploose_)->default_value(0.46),
"BTag working point LOOSE")
233 (
"btagWPMedium",po::value <float> (&
btagwpmedium_)->default_value(0.84),
"BTag working point MEDIUM")
234 (
"btagWPTight",po::value <float> (&
btagwptight_)->default_value(0.92),
"BTag working point TIGHT")
237 (
"nonbtagWP",po::value <float> (&
nonbtagwp_)->default_value(0.46),
"non-Btag working point")
240 (
"matchOnlineOffline",po::value <bool> (&
matchonoff_)->default_value(
true),
"Flag for doing matching online offline objects")
241 (
"matchOnlineOfflineDeltaRMax",po::value <float> (&
matchonoffdrmax_)->default_value(0.4),
"DeltaR max for matching online-offline")
242 (
"matchOnlineOfflineReference",po::value <bool> (&
matchonoffref_)->default_value(
true),
"Flag for doing matching online offline objects when using a reference trigger")
243 (
"prescaleWeight",po::value <bool> (&
psweight_)->default_value(
false),
"Flag for weighting histograms with prescale")
244 (
"prescaleNormalisation",po::value <float> (&
psnorm_)->default_value(1.),
"Normalisation factor of prescale weight")
245 (
"triggerEmulation",po::value <bool> (&
trigemul_)->default_value(
false),
"Flag for using trigger emulation")
247 (
"jetsCollection",po::value <std::string> (&
jetsCol_)->default_value(
"slimmedJets"),
"Name of the jets collection")
248 (
"muonsCollection",po::value <std::string> (&
muonsCol_)->default_value(
"slimmedMuons"),
"Name of the muons collection")
249 (
"l1tJetsCollection",po::value <std::string> (&
l1tjetsCol_)->default_value(
"l1tJets"),
"Name of the L1T jets collection")
250 (
"l1tMuonsCollection",po::value <std::string> (&
l1tmuonsCol_)->default_value(
"l1tMuons"),
"Name of the L1T muons collection")
251 (
"genParticleCollection",po::value <std::string> (&
genParticleCol_)->default_value(
"prunedGenParticles"),
"Name of the gen particle collection")
252 (
"genjetsCollection",po::value <std::string> (&
genjetsCol_)->default_value(
"slimmedGenJets"),
"Name of the gen jets collection")
254 (
"triggerResultsCollection",po::value <std::string> (&
triggerCol_)->default_value(
"TriggerResults"),
"Name of the trigger results collection")
255 (
"triggerObjectsDirectory",po::value <std::string> (&
triggerObjDir_)->default_value(
"slimmedPatTrigger"),
"Name of the trigger objects directory")
256 (
"collectionsTreePath",po::value <std::string> (&
treePath_)->default_value(
"Events"),
"Name of the tree path for the event collections.")
257 (
"prescaleEra",po::value <std::vector<float> >(&
prescaleEra_)->multitoken(),
"Prescale CR by # events in SR in each era");
260 for (
int i = 0 ; i < 10 ; ++i )
263 (Form(
"triggerObject%dNMin",i),po::value <int> (&(
tonmin_[i]))->default_value(0),Form(
"Minimum number of trigger objects #%d",i))
264 (Form(
"triggerObject%dPtMin",i),po::value<std::vector<float> >(&(
toptmin_[i]))->multitoken(),Form(
"Minimum pT of trigger objects #%d",i))
265 (Form(
"triggerObject%dEtaMax",i),po::value<std::vector<float> >(&(
toetamax_[i]))->multitoken(),Form(
"Minimum eta of trigger objects #%d",i))
266 (Form(
"triggerObject%dRefNMin",i),po::value <int> (&(
torefnmin_[i]))->default_value(0),Form(
"Minimum number of trigger objects #%d for reference trigger",i))
267 (Form(
"triggerObject%dRefPtMin",i),po::value<std::vector<float> >(&(
torefptmin_[i]))->multitoken(),Form(
"Minimum pT of trigger objects #%d for reference trigger",i))
268 (Form(
"triggerObject%dRefEtaMax",i),po::value<std::vector<float> >(&(
torefetamax_[i]))->multitoken(),Form(
"Minimum eta of trigger objects #%d for reference trigger",i));
271 po::variables_map vm;
274 po::store(po::parse_command_line(argc, argv, desc), vm);
277 if ( vm.count(
"help") )
279 std::cout <<
"SimpleBjetsAnalysis macro" << std::endl
281 << config << std::endl;
286 std::ifstream cfg_s(
cfg_.c_str());
287 po::store(po::parse_config_file(cfg_s, config), vm);
288 if ( vm.count(
"config") )
293 boost::algorithm::to_upper(
jetsid_);
296 std::cout <<
"Config Error *** Jet minimum pt were not defined or the definition does not match the minimum number of jets" <<std::endl;
301 std::cout <<
"Config Error *** Jet maximum pt has been defined and does not match the minimum number of jets" <<std::endl;
306 std::cout <<
"Config Error *** Jet maximum |eta| were not defined or the definition does not match the minimum number of jets" <<std::endl;
311 std::cout <<
"Config Error *** Jet minimum btag has been defined and does not match the minimum number of btagged jets" <<std::endl;
318 std::cout <<
"Config Error *** Muon minimum pt were not defined or the definition does not match the minimum number of muons" <<std::endl;
323 std::cout <<
"Config Error *** Muon maximum pt has been defined and does not match the minimum number of muons" <<std::endl;
328 std::cout <<
"Config Error *** Muon maximum |eta| were not defined or the definition does not match the minimum number of muons" <<std::endl;
345 std::cerr <<
"ERROR: " << e.what() << std::endl << std::endl;
346 std::cerr << desc << std::endl;
351 catch(std::exception& e)
353 std::cerr <<
"ERROR: " << e.what() << std::endl << std::endl;
std::vector< float > torefetamax_[10]
std::vector< float > l1tmuonsrefetamax_
std::vector< std::string > hltPaths_
std::vector< std::string > triggerObjectsRef_
std::vector< float > jetsbtagmin_
std::vector< float > muonsptmax_
std::vector< float > jetsetamax_
std::vector< float > torefptmin_[10]
std::vector< int > triggerObjectsMatches_
std::vector< float > l1tmuonsetamax_
std::vector< float > toetamax_[10]
int macro_config(int argc, char *argv[])
std::vector< float > toptmin_[10]
std::vector< float > ptmin_
std::vector< float > muonsptmin_
std::string triggerObjDir_
std::vector< float > etamax_
std::vector< float > l1tjetsrefetamax_
std::vector< float > muonsetamax_
std::vector< std::string > hltPaths2_
std::vector< std::string > triggerObjectsJets_
std::string hltPathsLogic_
std::vector< float > jetsptmax_
std::vector< float > l1tmuonsrefptmin_
std::vector< float > jetsptmin_
std::vector< float > prescaleEra_
std::vector< std::string > triggerObjectsMuons_
std::string genParticleCol_
std::vector< float > l1tjetsetamax_
std::vector< float > l1tjetsptmin_
std::vector< std::string > triggerObjects_
std::vector< float > ptmax_
std::vector< float > l1tjetsrefptmin_
std::vector< int > triggerObjectsMatchesRank_
std::vector< float > l1tmuonsptmin_
std::string hltPathsLogic2_