3 from __future__
import print_function
6 from array
import array
7 from copy
import deepcopy
15 for dir
in os.environ[
'CMSSW_SEARCH_PATH'].
split(
":"):
16 if os.path.exists(os.path.join(dir,rfile)):
return os.path.join(dir,rfile)
20 inputFileName =
"DQM.root" 21 outputFileName =
"DQMTree.root" 23 detIDsFileName =
getFileInPath(
'DQM/SiStripMonitorClient/data/detids.dat')
31 currPath = (dir.GetPath().
split(
":/"))[1]
33 for obj
in dir.GetListOfKeys():
34 if not obj.IsFolder():
35 if obj.ReadObjectAny(TClass.GetClass(
"TH2")):
36 th2 = deepcopy(obj.ReadObj())
38 if 6 < th2.GetNbinsX() < 10
and name.find(
"per") != -1
and name.find(
"Lumisection") == -1:
39 print(
''.
join([dir.GetPath(),
'/', name]))
44 if currPath.startswith(i):
48 th2.SetName(prefix + th2.GetName())
54 if isXlowerThanZero
and isYlowerThanZero:
56 if isXlowerThanZero
and isYlowerThanZero ==
False:
58 if isXlowerThanZero ==
False and isYlowerThanZero:
60 if isXlowerThanZero ==
False and isYlowerThanZero ==
False:
64 theLadder =
abs(signedLadder)
65 theModule =
abs(signedModule)
105 shortLadder = theLadder - 5 * i
106 for i
in range(0, shortLadder, 2):
111 for i
in range(2, theLadder, 3):
116 sector = (theLadder + 3) // 4
120 thePart = self.
__GetPartStr(signedModule < 0, signedLadder < 0)
122 return "BPix_B" + thePart +
"_SEC" + theSector +
"_LYR" +
str(layer) +
"_LDR" +
str(
abs(signedLadder)) +
"F_MOD" +
str(
abs(signedModule))
125 thePart = self.
__GetPartStr(signedDisk < 0, signedBlade < 0)
126 return "FPix_B" + thePart +
"_D" +
str(
abs(signedDisk)) +
"_BLD" +
str(
abs(signedBlade)) +
"_PNL" +
str(panel) +
"_RNG" +
str(ring)
129 currentGroupName =
"" 135 objName = obj.GetName()
136 objNameSplit = objName.split(
"_")
137 objNameCollected =
''.
join(objNameSplit[0:-1])
138 if objNameCollected != currentGroupName:
139 if len(groupOfHists):
143 currentGroupName = objNameCollected
144 groupOfHists.append(obj)
148 str =
"struct MyStruct{" 149 str = str +
"Int_t key;" 152 str = str +
"Float_t " + k +
";" 153 leafStr = leafStr +
":" + k +
"/F" 159 def __init__(self, inputDQMName, outputDQMName, modDicName):
167 self.
dirs = [
'DQMData/Run %s/PixelPhase1/Run summary/Phase1_MechanicalView' % (runNumber),
168 'DQMData/Run %s/PixelPhase1/Run summary/Tracks' % (runNumber)]
183 for dir
in self.
dirs:
189 with open(self.
detIDsFileName,
"r") as detIDs: # create dictionary online -> rawid 191 items = entry.replace(
"\n",
" ").
split(
" ")
205 name =
''.
join(group[0].GetName().
split(
"_per_")[0])
209 nbinsX = obj.GetNbinsX()
210 nbinsY = obj.GetNbinsY()
216 for x
in range(-maxX, maxX + 1):
219 for y
in range(-maxY, maxY + 1, 1):
229 for x
in range(-maxX, maxX + 1):
232 for y
in range(-maxY, maxY + 1):
235 for panel
in range(1, 3):
239 print(
"Unrecognized plot")
241 print(
"Histograms saved to internal data structure")
255 from ROOT
import MyStruct
260 tree = TTree(
"tree",
"readData")
261 tree.Branch(
"b", ms, leafStr)
263 tree.SetBranchAddress(
"b", tree)
266 setattr(ms,
"key", key)
275 print(
"Data saved as TTree object")
281 tree = TTree(
"tree",
"readData")
283 key =
array(
"i", [0])
284 tree.Branch(
"detid", key,
"detid/i")
289 dat.update({d :
array(
"f", [0])})
290 tree.Branch(d, dat[d], d +
"/F")
302 print(
"Data saved as TTree object")
310 print((d, module[d]))
322 for i
in range(1, len(sys.argv), 1):
324 inputFileName = sys.argv[i]
328 outputFileName = sys.argv[i]
332 readerObj.ReadHistograms()
333 readerObj.CreateTree2()
def __CreateDummyStructAsStr(self, dicData)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
def __init__(self, inputDQMName, outputDQMName, modDicName)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
Abs< T >::type abs(const T &t)
def __GetBarrelSector(self, layer, signedLadder, signedModule)
def split(sequence, size)
def __TraverseDirTree(self, dir)
static std::string join(char **cmd)
def __GetPartStr(self, isXlowerThanZero, isYlowerThanZero)
def __GroupHistograms(self)
def __BuildOnlineDiskName(self, signedDisk, signedBlade, panel, ring)
def __BuildOnlineBarrelName(self, signedModule, signedLadder, layer)