all_sb.texName += "high #sigma_{i#etai#eta}" all_sb.color = ROOT.kRed + 2 all_fit = copy.deepcopy(all) all_fit.name = "fit" all_fit.texName = "MC " if "sieie" in args.variable: all_fit.texName += "low chg Iso" elif "chg" in args.variable: all_fit.texName += "low #sigma_{i#etai#eta}" all_fit.color = ROOT.kCyan + 2 mc = [all_fit, all_sb] stackSamples = [[s] for s in mc] NanoVars = NanoVariables(args.year) photonVariables = NanoVars.getVariables("Photon", postprocessed=True, data=False, plot=True) read_variables = [ "weight/F", "isTTGamma/I", "isZWGamma/I", "isTGamma/I", "overlapRemoval/I", "reweightPU/F", "reweightPUDown/F", "reweightPUUp/F", "reweightPUVDown/F",
logger.info("Re-using pickled histogram!") else: # change to EOS # from TTGammaEFT.Tools.user import eos_directory # data_directory = os.path.join( eos_directory, "nanoTuples" ) # fromEOS = "True" # os.environ["gammaSkim"]="True" from TTGammaEFT.Samples.nanoTuples_Summer16_private_semilep_postProcessed import * sample = TTGSemiLep_16 #sample.files = sample.files[:1] # add needed variables NanoVars = NanoVariables(args.year) genVarString = NanoVars.getVariableString("Gen", postprocessed=True, data=False, plot=True) photonVarString = NanoVars.getVariableString("Photon", postprocessed=True, data=True, plot=True) photonVariables = NanoVars.getVariables("Photon", postprocessed=True, data=True, plot=True) variables = [ TreeVariable.fromString("event/l"), TreeVariable.fromString("weight/F"),
"nJetGood/I", "nBTagGood/I", "nLeptonTight/I", "nElectronTight/I", "nMuonTight/I", "nPhotonGood/I", "Photon[pt/F,eta/F,phi/F]", "MET_pt/F", "MET_phi/F", "ht/F", "mLtight0Gamma/F", "m3/F", "mT/F", ] NanoVars = NanoVariables(2016) readGenVarString = NanoVars.getVariableString("Gen", postprocessed=True, data=False) readGenVarString = readGenVarString.replace("index/I,", "") variables = ["pt/F", "eta/F", "phi/F", "pdgId/I", "genPartIdxMother/I"] # add here variables that should be read only for MC samples read_variables_MC = [ "overlapRemoval/I", 'nGenElectronCMSUnfold/I', 'nGenMuonCMSUnfold/I', 'nGenLeptonCMSUnfold/I', 'nGenPhotonCMSUnfold/I', 'nGenBJetCMSUnfold/I', 'nGenJetsCMSUnfold/I',
copyIndexPHP=True, ) def getYieldPlot(index): return Plot( name='yield', texX='yield', texY='Number of Events', attribute=lambda event, sample: 0.5 + index, binning=[3, 0, 3], ) # get nano variable lists NanoVars = NanoVariables(2017) jetVarString = NanoVars.getVariableString("Jet", postprocessed=True, data=True, plot=True) jetVariableNames = NanoVars.getVariableNameList("Jet", postprocessed=True, data=True, plot=True) bJetVariables = NanoVars.getVariables("BJet", postprocessed=True, data=True, plot=True) leptonVariables = NanoVars.getVariables("Lepton", postprocessed=True, data=True,
ttg181l = Sample.fromDirectory("ttg1l_18", directory = [os.path.join(data18_dir, name) for name in ["TTGSingleLep_LO","TTGSingleLep_ptG100To200_LO","TTGSingleLep_ptG200_LO"]]) ttg182l = Sample.fromDirectory("ttg2l_18", directory = [os.path.join(data18_dir, name) for name in ["TTGLep_LO","TTGLep_ptG100To200_LO","TTGLep_ptG200_LO"]]) #sample = Sample.combine( "ttg", [ttg160l, ttg161l, ttg162l, ttg170l, ttg171l, ttg172l, ttg180l, ttg181l, ttg182l] ) #sample = Sample.combine( "ttg", [ttg160l, ttg161l, ttg162l] ) sample = Sample.combine( "ttg", [ttg161l] ) def convertUnits( coll ): for p in coll: if abs(p['pdgId'])==11 and isinstance( p['lostHits'], basestring ): p['lostHits'] = ord( p['lostHits'] ) if abs(p['pdgId'])==13 and isinstance( p['pfIsoId'], basestring ): p['pfIsoId'] = ord( p['pfIsoId'] ) if isinstance( p['genPartFlav'], basestring ): p['genPartFlav'] = ord( p['genPartFlav'] ) selectionString = "overlapRemoval==1" NanoVars = NanoVariables( 2016 ) readGenVarString = NanoVars.getVariableString( "Gen", postprocessed=True, data=False ) readGenVarList = NanoVars.getVariableNameList( "Gen", postprocessed=True, data=False ) readPhotonVarList = NanoVars.getVariableNameList( "Photon", postprocessed=True, data=False, skipSyst=True) readPhotonVarString = NanoVars.getVariableString( "Photon", postprocessed=True, data=False, skipSyst=True) genLeptonSel_CMSUnfold = genLeptonSelector( "CMSUnfolding" ) genPhotonSel_CMSUnfold = genPhotonSelector( "CMSUnfolding" ) recoPhotonSel_medium = photonSelector( 'medium', year=2016 ) read_variables = [ TreeVariable.fromString('weight/F'),TreeVariable.fromString('nGenPart/I'), VectorTreeVariable.fromString('GenPart[%s]'%readGenVarString, nMax = 1000) ] # all needed for genMatching read_variables += [ TreeVariable.fromString('nPhoton/I'), VectorTreeVariable.fromString('Photon[%s]'%readPhotonVarString) ]
lumiScaleFactor = None branchKeepStrings = branchKeepStrings_DATAMC + branchKeepStrings_DATA json = allSamples[0].json from FWCore.PythonUtilities.LumiList import LumiList lumiList = LumiList( os.path.expandvars( json ) ) logger.info( "Loaded json %s", json ) lumi = 1 else: lumiScaleFactor = xSection * targetLumi / float( sample.normalization ) if xSection is not None else None branchKeepStrings = branchKeepStrings_DATAMC + branchKeepStrings_MC if options.year == 2016: lumi = 35.92 elif options.year == 2017: lumi = 41.53 elif options.year == 2018: lumi = 59.74 # get nano variable lists NanoVars = NanoVariables( options.year ) #VarString ... "var1/type,var2/type" #Variables ... ["var1/type","var2/type"] #VarList ... ["var1", "var2"] readGenVarString = NanoVars.getVariableString( "Gen", postprocessed=False, data=sample.isData ) readGenJetVarString = NanoVars.getVariableString( "GenJet", postprocessed=False, data=sample.isData ) readJetVarString = NanoVars.getVariableString( "Jet", postprocessed=False, data=sample.isData, skipSyst=True ) readElectronVarString = NanoVars.getVariableString( "Electron", postprocessed=False, data=sample.isData ) readMuonVarString = NanoVars.getVariableString( "Muon", postprocessed=False, data=sample.isData ) readPhotonVarString = NanoVars.getVariableString( "Photon", postprocessed=False, data=sample.isData ) readGenVarList = NanoVars.getVariableNameList( "Gen", postprocessed=False, data=sample.isData ) readGenJetVarList = NanoVars.getVariableNameList( "GenJet", postprocessed=False, data=sample.isData ) readJetVarList = NanoVars.getVariableNameList( "Jet", postprocessed=False, data=sample.isData, skipSyst=True ) readElectronVarList = NanoVars.getVariableNameList( "Electron", postprocessed=False, data=sample.isData )
}, logX=False, logY=log, sorting=False, yRange=(0.03, "auto") if log else (0.001, "auto"), scaling=scaling, legend=[ (0.2, 0.87 - 0.04 * sum(map(len, plot.histos)), 0.8, 0.87), 1 ], drawObjects=drawObjects(True, lumi_scale), copyIndexPHP=True) # get nano variable lists NanoVars = NanoVariables(args.year) jetVarString = NanoVars.getVariableString("Jet", postprocessed=True, data=False, plot=True) jetVariableNames = NanoVars.getVariableNameList("Jet", postprocessed=True, data=False, plot=True) jetVarList = NanoVars.getVariableNameList("Jet", postprocessed=True, data=False, plot=True) jetVariables = NanoVars.getVariables("Jet", postprocessed=True, data=False,