Example #1
0
    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)
Example #2
0
    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 = []
Example #3
0
    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)
Example #4
0
    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()
Example #5
0
    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])
Example #6
0
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()
Example #8
0
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
Example #9
0
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