ATLAS Offline Software
Prerec2012/ParseHighPtInput.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
2 
3 from ROOT import *
4 from array import array
5 import glob
6 import re
7 import math
8 import ProviderHistoHelpers
9 
10 
11 def GetKeyNames(self,dir=""):
12  self.cd(dir)
13  return [key.GetName() for key in gDirectory.GetListOfKeys()]
14 TFile.GetKeyNames = GetKeyNames
15 
16 jetDefList = ['AntiKt4Topo_EMJES','AntiKt6Topo_EMJES','AntiKt4Topo_LCJES','AntiKt6Topo_LCJES']
17 
18 def ReadHighPtHistograms(dirName):
19  if not dirName.endswith("/"):
20  dirName = dirName + "/"
21 
22  # Run over the two files
23  emFileList = sorted(glob.glob(dirName+"EM*/*.root"))
24  lcFileList = sorted(glob.glob(dirName+"LC*/*.root"))
25  if len(emFileList) != 1:
26  print "Found a number of EM root files not equal to 1 in dir:",dirName
27  return None
28  if len(lcFileList) != 1:
29  print "Found a number of LC root files not equal to 1 in dir:",dirName
30  return None
31  emFile = TFile(emFileList[0],"READ")
32  lcFile = TFile(lcFileList[0],"READ")
33 
34  histos = {}
35  for aJetDef in jetDefList:
36  histos[aJetDef] = {}
37 
38  rootFile = None
39  if "EMJES" in aJetDef:
40  rootFile = emFile
41  elif "LCJES" in aJetDef:
42  rootFile = lcFile
43  else:
44  print "Unexpected jet def:",aJetDef
45  return None
46 
47  for histName in rootFile.GetKeyNames():
48  if aJetDef not in histName: continue
49  histo = rootFile.Get(histName)
50  if histo is None:
51  print "Failed to get histogram:",histName
52  return None
53  histo.SetName(histName+"_1D")
54 
55  histos[aJetDef][re.sub("_%s"%(aJetDef),"",histName)] = ProviderHistoHelpers.ConvertPtHistoToProviderHisto(histo,histName)
56  histos[aJetDef][re.sub("_%s"%(aJetDef),"",histName)].SetDirectory(0)
57 
58  lcFile.Close()
59  emFile.Close()
60 
61 
67 
68  #histos = {}
69  #for aJetDef in jetDefList:
70  # histos[aJetDef] = {}
71 
72  # for histName in rootFile.GetKeyNames():
73  # if aJetDef not in histName: continue
74  # histo = rootFile.Get(histName)
75  # if histo is None:
76  # print "Failed to get histogram:",histName
77  # return None
78  # histo.SetName(histName+"_1D")
79 
80  # histos[aJetDef][re.sub("_%s"%(aJetDef),"",histName)] = ProviderHistoHelpers.ConvertPtHistoToProviderHisto(histo,histName)
81  # histos[aJetDef][re.sub("_%s"%(aJetDef),"",histName)].SetDirectory(0)
82 
83 
85 
86  return histos
87 
ParseHighPtInput.GetKeyNames
def GetKeyNames(self, dir="")
Definition: Final2012/ParseHighPtInput.py:11
ProviderHistoHelpers.ConvertPtHistoToProviderHisto
def ConvertPtHistoToProviderHisto(histo1D, histoName)
Definition: Final2012/ProviderHistoHelpers.py:44
ParseHighPtInput.ReadHighPtHistograms
def ReadHighPtHistograms(dirName)
Definition: Final2012/ParseHighPtInput.py:18
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
RCU::SetDirectory
bool SetDirectory(TObject *object, TDirectory *directory)
effects: set the directory this object is associated with returns: whether the object type actively k...
Definition: RootUtils.cxx:28