35 TFile* f = TFile::Open(inFilename.c_str(),
"UPDATE");
38 if (f == 0 || !f->IsOpen()) {
39 std::cerr <<
"--> HLTEgammaPostProcess: Input file not opened" << std::endl;
46 std::cerr <<
"--> HLTEgammaPostProcess: Input file " << inFilename <<
" cannot be opened. " << std::endl;
52 if (f->GetSize() < 1000.) {
53 std::cerr <<
"--> HLTEgammaPostProcess: Input file empty" << std::endl;
60 TIter next_run(f->GetListOfKeys());
64 while ((key_run =
dynamic_cast<TKey*
>(next_run())) != 0) {
65 TObject* obj_run = key_run->ReadObj();
66 TDirectory* tdir_run =
dynamic_cast<TDirectory*
>(obj_run);
75 std::string runDirName(tdir_run->GetName());
80 if (runDirName.find(
"run") == std::string::npos) {
86 std::string egammamonDirName = runDirName +
"/HLT/EgammaSigTE";
87 TDirectory* egammamonDir(0);
88 if (!(egammamonDir = f->GetDirectory(egammamonDirName.c_str()))) {
89 std::cout <<
"--> HLTEgammaPostProcess: directory " << egammamonDirName <<
" not found." << std::endl;
95 std::string offgammaDirName = egammamonDirName +
"/OfflinePhoton";
96 std::string offeleDirName = egammamonDirName +
"/OfflineElectron";
97 TDirectory* offgammaDir(0);
98 TDirectory* offeleDir(0);
99 if (!(offgammaDir = f->GetDirectory(offgammaDirName.c_str()))) {
100 std::cout <<
"--> HLTEgammaPostProcess: offline directory " << offgammaDirName <<
" not found, will abort.\n";
104 if (!(offeleDir = f->GetDirectory(offeleDirName.c_str()))) {
105 std::cout <<
"--> HLTEgammaPostProcess: offline directory " << offeleDirName <<
" not found, will abort.\n";
119 static const std::vector<std::string> varName = {
134 static const std::vector<std::string> phoStage = {
141 static const std::vector<std::string> eleStage = {
150 TIter next_trig(egammamonDir->GetListOfKeys());
152 while ((key_trig =
dynamic_cast<TKey*
>(next_trig())) != 0) {
154 bool photon_chain(
false);
155 bool electron_chain(
false);
156 TObject* obj_trig = key_trig->ReadObj();
157 TDirectory* dir_trig =
dynamic_cast<TDirectory*
>(obj_trig);
166 std::string trigger_name = dir_trig->GetName();
169 if (trigger_name.find(
"Offline") != std::string::npos) {
175 if (trigger_name.starts_with(
"g") || trigger_name.starts_with(
"2g")) photon_chain =
true;
176 else if (trigger_name.starts_with(
"e") || trigger_name.starts_with(
"2e")) electron_chain =
true;
178 std::cout <<
"--> HLTEgammaPostProcess: Non-electron/photon chain detected, will be skipped!\n";
199 if (electron_chain) {
static void HLTEgammaEfficiencyRel(TFile *f, TDirectory *trig_dir, const std::string &pathPre, const std::string &pathRej, const std::vector< std::string > &objStage, const std::vector< std::string > &varName)