import ROOT class anaFile: def __init__(self,name): self.fname=name self.Rfile=ROOT.TFile(self.fname) self.zSlices=[] self.makeZSlices() def makeZSlices(self): print "anaFile: creating z-slices" hslices=self.Rfile.Get("hslices") nslices=hslices.GetNbinsX() for i in range(1,nslices+1): self.zSlices.append(float(hslices.GetBinContent(i))) if hslices.GetEntries()>nslices: self.zSlices[-1]/=(hslices.GetEntries()/nslices) print "found slice",i,"at",self.zSlices[-1] if self.zSlices.count(0)>1: print "no slices found, setting to standart" self.zSlices=( 12.0, 24.0, 36.0, 48.0, 60.0, 73.0 ) # cosmic ne #accessors def getZSlices(self): return self.zSlices def getDriftSlices(self): dslices=[] for j in range(len(self.zSlices)): if j==0: offset=(abs(-62.5-self.zSlices[j])/2) elif j+1==len(self.zSlices) and self.zSlices[j]>10.78: offset =(72.8-abs(10.78-self.zSlices[j-1])/2) else: offset = offset+abs(self.zSlices[j-1]-self.zSlices[j]) dslices.append(offset) return self.zSlices def getHXres(self): histos=[] for i in self.zSlices: print "StatsResX Z:"+str(i) histos.append(self.Rfile.Get("StatsResX Z:"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("StatsResX Z:"+str(int(i)))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing Residual histo StatsResX Z:"+str(int(i)) return None return histos def getMcHXres(self): histos=[] for i in self.zSlices: print "StatsMCResX Z:"+str(i) histos.append(self.Rfile.Get("MCStatsResX Z:"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("MCStatsResX Z:"+str(int(i)))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing MC Residual histo"+str(int(i)) return None return histos def getHClpercm(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("hclusterpercm"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("hclusterpercm"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing hclusterpercm histo"+str(i) return None return histos def getHDigipercm(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("hdigipercm"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("hdigipercm"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing hdigipercm histo"+str(i) return None return histos def getHTracklength(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("htracklength"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("htracklength"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing htracklength histo"+str(i) return None return histos def getHClpertrk(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("hclusterpertrack"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("hclusterpertrack"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing hclusterpertrack histo"+str(i) return None return histos def getHDigipertrk(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("hdigipertrack"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("hdigipertrack"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing hdigipertrack histo"+str(i) return None return histos def getHClsize2D(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("clustersize2D"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("clustersize2D"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing clustersize2D histo"+str(i) return None return histos def getHClsize3D(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("clustersize3D"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("clustersize3D"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing clustersize3D histo"+str(i) return None return histos def getHChi2(self): histos=[] for i in self.zSlices: histos.append(self.Rfile.Get("hchi2ndf"+str(i))) if type(histos[-1])!=ROOT.TH1D : histos[-1]=(self.Rfile.Get("hchi2ndf"+str(i))) if type(histos[-1])!=ROOT.TH1D : print "error while retrieveing hchi2ndf histo"+str(i) return None return histos def getXYsliceHists(self): histos=[] for i in range(len(self.zSlices)): hist=self.Rfile.Get("hxyresnorm"+str(self.zSlices[i])) if type(hist)==ROOT.TObject: print "error while getting histo: hxyresnorm"+str(self.zSlices[i]) return None histos.append(hist) return histos def getSlicedHist(self,prefix): histos=[] for i in range(len(self.zSlices)): hist=self.Rfile.Get(prefix+str(self.zSlices[i])) if type(hist)==ROOT.TObject: print"error while getting sliced histo:",prefix,str(self.zSlices[i]) return None histos.append(hist) return histos def getPhiSlicedHist(self,prefix): histos=[] phiSlices=(30,60,90,120,150,180) for i in range(len(phiSlices)): hist=self.Rfile.Get(prefix+str(phiSlices[i])) if type(hist)==ROOT.TObject: print "error while getting phi sliced histo:",prefix,str(phiSices[i]) return None histos.append(hist) return histos def getHist(self,name): hist=self.Rfile.Get(name) if type(hist)==ROOT.TObject: print "Error while getting histo:",name return None return hist def getHistsByPattern(self,pattern="",exclude=""): histset=[] if(exclude!=""): if exclude.find(" "): exclude=exclude.split(" ") else: exclude=[exclude] for h in self.Rfile.GetListOfKeys(): do_append=True if( h.GetName().find(pattern)!=-1): for exc in exclude: if h.GetName().find(exc)!=-1: do_append=False continue if do_append: histset.append(self.getHist(h.GetName())) return histset