def test15ObjectAndPointerComparisons(self): """Verify object and pointer comparisons""" c1 = MakeNullPointer(TCanvas) self.assertEqual(c1, None) self.assertEqual(None, c1) c2 = MakeNullPointer(TCanvas) self.assertEqual(c1, c2) self.assertEqual(c2, c1) # TLorentzVector overrides operator== l1 = MakeNullPointer(TLorentzVector) self.assertEqual(l1, None) self.assertEqual(None, l1) self.assertNotEqual(c1, l1) self.assertNotEqual(l1, c1) l2 = MakeNullPointer(TLorentzVector) self.assertEqual(l1, l2) self.assertEqual(l2, l1) l3 = TLorentzVector(1, 2, 3, 4) l4 = TLorentzVector(1, 2, 3, 4) l5 = TLorentzVector(4, 3, 2, 1) self.assertEqual(l3, l4) self.assertEqual(l4, l3) self.assert_(l3 != None) # like this to ensure __ne__ is called self.assert_(None != l3) # id. self.assertNotEqual(l3, l5) self.assertNotEqual(l5, l3)
def __init__(self, section, config, cache=None): from ROOT import MakeNullPointer, TH1, TFile, TObject from array import array self.__config = config self.__section = section self.__cache = cache #self.__allReferenceRunNrs = sorted([int(i) for i in self.__config.get("reference","runs").split(",")]) #self.__reference = None self.__threshold = int( self.__config.get("styleDefaults", "histoThreshold")) if self.__config.has_option(self.__section, "threshold"): self.__threshold = int( self.__config.get(self.__section, "threshold")) metricString = "metrics." + self.__config.get(self.__section, "metric") metrics = __import__(".".join( metricString.split("(")[0].split(".")[:-1])) self.__metric = eval(metricString) self.__metric.setThreshold(self.__threshold) self.__metric.setCache(self.__cache) self.__title = self.__section.split("plot:")[1] if self.__config.has_option(self.__section, "title"): self.__title = self.__config.get(self.__section, "title") self.__xTitle = "" # this is automatically generated later self.__yTitle = metricString #.split("(")[0].split(".")[-1].split("(")[0] self.__saveHistos = metricString #.split("(")[0].split(".")[-1].split("(")[0] if self.__config.has_option(self.__section, "yTitle"): self.__yTitle = self.__config.get(self.__section, "yTitle") if self.__config.has_option(self.__section, "saveHistos"): self.__saveHistos = self.__config.get(self.__section, "saveHistos") self.__x = array("d") self.__y = array("d") self.__yErrHigh = array("d") self.__yErrLow = array("d") self.__ySysErrHigh = array("d") self.__ySysErrLow = array("d") self.__count = 0 self.__runs = [] self.__histoSum = MakeNullPointer(TH1) self.__FileHisto = MakeNullPointer(TFile) self.__labels = []
def test12VoidPointerPassing(self): """Test passing of variants of void pointer arguments""" gROOT.LoadMacro("PointerPassing.C+") Z = ROOT.Z o = TObject() oaddr = addressof(o) self.assertEqual(oaddr, Z.GimeAddressPtr(o)) self.assertEqual(oaddr, Z.GimeAddressPtrRef(o)) pZ = Z.getZ(0) self.assertEqual(Z.checkAddressOfZ(pZ), True) self.assertEqual(pZ, Z.getZ(1)) import array # Not supported in p2.2 # and no 8-byte integer type array on Windows 64b if hasattr(array.array, 'buffer_info') and IS_WINDOWS != 64: if not self.legacy_pyroot: # New cppyy uses unsigned long to represent void* returns, as in DynamicCast. # To prevent an overflow error when converting the Python integer returned by # DynamicCast into a 4-byte signed long in 32 bits, we use unsigned long ('L') # as type of the array.array. array_t = 'L' else: # Old PyROOT returns Long_t buffers for void* array_t = 'l' addressofo = array.array( array_t, [o.IsA()._TClass__DynamicCast(o.IsA(), o)[0]]) self.assertEqual(addressofo.buffer_info()[0], Z.GimeAddressPtrPtr(addressofo)) self.assertEqual(0, Z.GimeAddressPtr(0)) self.assertEqual(0, Z.GimeAddressObject(0)) if self.legacy_pyroot: # The conversion None -> ptr is not supported in new Cppyy self.assertEqual(0, Z.GimeAddressPtr(None)) self.assertEqual(0, Z.GimeAddressObject(None)) ptr = MakeNullPointer(TObject) if not self.legacy_pyroot: # New Cppyy does not raise ValueError, # it just returns zero self.assertEqual(addressof(ptr), 0) else: self.assertRaises(ValueError, AddressOf, ptr) Z.SetAddressPtrRef(ptr) self.assertEqual(addressof(ptr), 0x1234) Z.SetAddressPtrPtr(ptr) self.assertEqual(addressof(ptr), 0x4321)
def test08ReadNonTObject(self): """Test reading of a non-TObject derived instance""" f = TFile(self.fname) myarray = f.Get('myarray') self.assert_(isinstance(myarray, TArrayI)) myarray = MakeNullPointer(TArrayI) f.GetObject('myarray', myarray) f.Close()
def test07CopyContructor(self): """Test copy constructor""" t1 = TLorentzVector(1., 2., 3., -4.) t2 = TLorentzVector(0., 0., 0., 0.) t3 = TLorentzVector(t1) self.assertEqual(t1, t3) self.assertNotEqual(t1, t2) for i in range(4): self.assertEqual(t1[i], t3[i]) if self.exp_pyroot: # Test copy constructor with null pointer t4 = MakeNullPointer(TLorentzVector) t4.__init__(TLorentzVector(0, 1, 2, 3)) t5 = MakeNullPointer(TLorentzVector) TLorentzVector.__init__(t5, TLorentzVector(0, 1, 2, 3)) # Test __assign__ if the object already exists t6 = TLorentzVector(0, 0, 0, 0) t6.__assign__(TLorentzVector(0, 1, 2, 3)) t7 = TLorentzVector(0, 0, 0, 0) TLorentzVector.__assign__(t7, TLorentzVector(0, 1, 2, 3)) for i in range(4): self.assertEqual(t4[i], t5[i]) self.assertEqual(t6[i], t7[i]) else: t4 = TLorentzVector(0, 0, 0, 0) t4.__init__(TLorentzVector(0, 1, 2, 3)) # the following should work exactly as above, but no longer does on some version of ROOT 6 t5 = TLorentzVector(0, 0, 0, 0) TLorentzVector.__init__(t5, TLorentzVector(0, 1, 2, 3)) for i in range(4): self.assertEqual(t4[i], t5[i])
def getReferenceRun(config, runs): """deprecated""" print "******************************** in GETREFERENCERUN ??? ********************************************" if config.has_option("reference", "count"): if config.has_option("reference", "path"): raise StandardError, "Only one of 'count' or 'path' options in the 'reference' section can be specified at a time." maxCount = -9 bestRefPath = None bestRefDir = None bestRunNo = None for runNo, candidate in runs.iteritems(): file = TFile.Open(candidate, "READ") directories = findDirectory( file, config.get("general", "dataDirPattern")) if len(directories) > 0: histo = MakeNullPointer(TH1) file.GetObject( os.path.join(directories[0], config.get("reference", "count")), histo) try: file.GetObject( os.path.join(directories[0], config.get("reference", "count")), histo) if histo.GetEntries() > maxCount: maxCount = histo.GetEntries() bestRefPath = candidate bestRefDir = directories[0] bestRunNo = runNo except LookupError: print "WARNING: problem loading '%s'" % (os.path.join( directories[0], config.get("reference", "count"))) file.Close() if bestRefPath: refName = config.get("reference", "name", bestRefDir) config.set("reference", "name", refName % {"runNo": bestRunNo}) config.set("reference", "path", bestRefPath) else: raise StandardError, "No reference histogram with maximum number of entries in %s could be found." % config.get( "reference", "count") else: file = TFile.Open(config.get("reference", "path"), "READ") directories = findDirectory(file, config.get("reference", "name")) if len(directories) < 1: raise StandardError, "Reference histograms directory %s does not exist in %s." % ( config.get("reference", "name"), file) config.set("reference", "name", directories[0]) file.Close()
def test08ReadNonTObject( self ): """Test reading of a non-TObject derived instance""" f = TFile( self.fname ) myarray = f.Get( 'myarray' ) self.assert_( isinstance( myarray, TArrayI ) ) if exp_pyroot: # New PyROOT does not implement a pythonisation for GetObject. # Just use the getattr syntax, which is much nicer arr = f.myarray self.assert_( isinstance( arr, TArrayI ) ) else: myarray = MakeNullPointer( TArrayI ) f.GetObject( 'myarray', myarray ) f.Close()
def calcSig(sigFileName): # print sigFileName bkgFiles = [ TFile("/afs/cern.ch/user/o/othrif/workarea/results/v48/" + Dirbase + "_Background/" + filename) for filename in bkgFilesNames ] sigFile = TFile(sigFileName) sigYield = MakeNullPointer(TH1F) sigFile.GetObject("hyield_weighted", sigYield) bkgYields = [MakeNullPointer(TH1F) for bkgFile in bkgFiles] for i in range(len(bkgFiles)): # print bkgFilesNames[i] # bkgFiles[i].GetObject("ayield_weighted",bkgYields[i]) bkgFiles[i].GetObject("hyield_weighted", bkgYields[i]) relativeBkgUncert = 0.3 sigResults = [] bin = 1 for ilepptmax2 in range(0, len(lepptmax2_cut)): for ilepptmin2 in range(0, len(lepptmin2_cut)): for ilepptmax1 in range(0, len(lepptmax1_cut)): for ilepptmin1 in range(0, len(lepptmin1_cut)): for ibjets in range(0, len(bjets_cut)): for ibjetptmax in range(0, len(bjetptmax_cut)): for ibjetptmin in range(0, len(bjetptmin_cut)): for inbjets in range(0, len(nbjets_cut)): for ijetptmax in range( 0, len(jetptmax_cut)): for ijetptmin in range( 0, len(jetptmin_cut)): for injets in range( 0, len(njets_cut)): for imetmax in range( 0, len(metmax_cut)): for imetmin in range( 0, len(metmin_cut)): baseMeff = metmin_cut[ imetmin] + njets_cut[ injets] * jetptmin_cut[ ijetptmin] + lepptmin1_cut[ ilepptmin1] + lepptmin2_cut[ ilepptmin2] for imtMmax in range( 0, len(mtMmax_cut) ): for imtMmin in range( 0, len(mtMmin_cut )): for imeff in range( 0, len(meff_cut )): for imetOmeff in range( 0, len( metOmeff_cut )): sig = sigYield.GetAt( bin ) #*luminosity*1000 bkg = 0.0 statbkg = 0.0 for ibkg in range( len( bkgYields ) ): # bkgtmp = bkgYields[ibkg].GetAt(bin) #*luminosity*1000 bkgtmp = bkgYields[ ibkg].GetBinContent( bin ) #*luminosity*1000 bkgstattmp = bkgYields[ ibkg].GetBinError( bin ) #*luminosity*1000 # print bkgYields[ibkg].GetBinContent(bin), bkgYields[ibkg].GetBinError(bin) # if (bkgtmp == 0): # bkgtmp = useMinBkg[ibkg] # print ibkg, bkgtmp bkg += bkgtmp statbkg += bkgstattmp * bkgstattmp statbkg = sqrt( statbkg ) zObs = 0.0 if (sig >= 2 and bkg >= 0.8 and statbkg / bkg <= 0.3 ): # and statbkg/bkg <= 0.3 # if(sig>0 and bkg>0): zObs = RooStats.NumberCountingUtils.BinomialExpZ( sig, bkg, relativeBkgUncert ) # print zObs, sig, bkg elif (bkg < 0.8 ): zObs = 0.01 elif (sig < 2 ): zObs = 0.02 elif (statbkg / bkg > 0.3 ): zObs = 0.03 # if(zObs>0.0): if (zObs > 0.0 and inbjets != 2 ): sigResults.append([ zObs, [ lepptmax1_cut[ ilepptmax1], lepptmin1_cut[ ilepptmin1], lepptmax2_cut[ ilepptmax2], lepptmin2_cut[ ilepptmin2], bjets_cut[ ibjets], bjetptmax_cut[ ibjetptmax], bjetptmin_cut[ ibjetptmin], nbjets_cut[ inbjets], jetptmax_cut[ ijetptmax], jetptmin_cut[ ijetptmin], njets_cut[ injets], metmax_cut[ imetmax], metmin_cut[ imetmin], mtMmax_cut[ imtMmax], mtMmin_cut[ imtMmin], meff_cut[ imeff], meff_cut[ imeff] + baseMeff, metOmeff_cut[ imetOmeff] ], sig, bkg ]) #print bin, sig, bkg, zObs bin += 1 sigResults.sort(key=lambda sig: sig[0]) sigResults.reverse() return sigResults
gROOT.SetBatch(True) Dirbase = sys.argv[1] bkgFilesNames = ["4top.root"] path = "/raid05/users/othrif/results/v47/" + Dirbase + "/" bkgFiles = [ TFile("/raid05/users/othrif/results/v47/" + Dirbase + "/" + filename) for filename in bkgFilesNames ] SR = [ 'SR3L1', 'SR3L2', 'SR0b1', 'SR0b2', 'SR1b1', 'SR1b2', 'SR1b3', 'SR1b4', 'SR1b3LSS', 'SR3b1', 'SR3b2', 'SRlow', 'SRhigh', 'SR1b_DD', 'SR3b_DD', 'SR1b_GG', 'SRRPV0b', 'SRRPV3b' ] for j in SR: bkgYields = [MakeNullPointer(TH1F) for bkgFile in bkgFiles] for i in range(len(bkgFiles)): # bkgFiles[i].GetObject("NJETS_4top_mc_comb_SR3b2_SS3L",bkgYields[i]) bkgYields[i] = bkgFiles[i].Get("NJETS_4top_mc_comb_" + j + "_SS3L") for ibkg in range(len(bkgYields)): bkgtmp = bkgYields[ibkg].Integral() * 36450 bkgstattmp = bkgYields[ibkg].GetEntries() print j, bkgtmp, bkgstattmp