def myAnalyzer( dictSamples, listCuts, signalName, RANGE ): if (( len(dictSamples) == 1 ) and ( signalName not in ['RPVStopStopToJets_'+args.decay+'_M-'+str(mass)] )): outputFileName = 'Rootfiles/RUNMiniBoostedAnalysis_'+grooming+'_'+signalName+'_'+RANGE+'_v03p1.root' else: outputFileName = 'Rootfiles/RUNMiniBoostedAnalysis_'+grooming+'_'+signalName+'_v03p1.root' outputFile = TFile( outputFileName, 'RECREATE' ) ###################################### output Tree #tree = TTree('RUNAFinTree'+grooming, 'RUNAFinTree'+grooming) #AvgMass = array( 'f', [ 0. ] ) #tree.Branch( 'AvgMass', AvgMass, 'AvgMass/F' ) #Scale = array( 'f', [ 0. ] ) #tree.Branch( 'Scale', Scale, 'Scale/F' ) ################################################################################################## Histos massBins = 500 massXmin = 0. massXmax = 500. listOfOptions = [ [ j,k] for j in range(len(listCuts)-1) for k in range(1, len(listCuts) ) if k > j ] for sam in dictSamples: allHistos[ "cutFlow_"+sam ] = TH1F( "cutflow_"+sam, "cutflow_"+sam, len(listCuts), 0., len(listCuts) ) allHistos[ "HT_"+sam ] = TH1F( "HT_"+sam, "HT_"+sam, 5000, 0., 5000 ) allHistos[ "HT_"+sam ].Sumw2() allHistos[ "MET_"+sam ] = TH1F( "MET_"+sam, "MET_"+sam, 500, 0., 500 ) allHistos[ "MET_"+sam ].Sumw2() allHistos[ "massAve_"+sam ] = TH1F( "massAve_"+sam, "massAve_"+sam, 500, 0., 500 ) allHistos[ "massAve_"+sam ].Sumw2() allHistos[ "numJets_"+sam ] = TH1F( "numJets_"+sam, "numJets_"+sam, 20, 0., 20 ) allHistos[ "numJets_"+sam ].Sumw2() allHistos[ "jet1Pt_"+sam ] = TH1F( "jet1Pt_"+sam, "jet1Pt_"+sam, 2000, 0., 2000 ) allHistos[ "jet1Pt_"+sam ].Sumw2() allHistos[ "jet2Pt_"+sam ] = TH1F( "jet2Pt_"+sam, "jet2Pt_"+sam, 2000, 0., 2000 ) allHistos[ "jet2Pt_"+sam ].Sumw2() allHistos[ "jet1CosThetaStar_"+sam ] = TH1F( "jet1CosThetaStar_"+sam, "jet1CosThetaStar_"+sam, 20, 0., 1 ) allHistos[ "jet1CosThetaStar_"+sam ].Sumw2() allHistos[ "jet2CosThetaStar_"+sam ] = TH1F( "jet2CosThetaStar_"+sam, "jet2CosThetaStar_"+sam, 20, 0., 1 ) allHistos[ "jet2CosThetaStar_"+sam ].Sumw2() allHistos[ "jet1Tau32_"+sam ] = TH1F( "jet1Tau32_"+sam, "jet1Tau32_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau32_"+sam ].Sumw2() allHistos[ "jet2Tau32_"+sam ] = TH1F( "jet2Tau32_"+sam, "jet2Tau32_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau32_"+sam ].Sumw2() if 'high' in args.RANGE: allHistos[ "jet1Tau31_"+sam ] = TH1F( "jet1Tau31_"+sam, "jet1Tau31_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau31_"+sam ].Sumw2() allHistos[ "jet2Tau31_"+sam ] = TH1F( "jet2Tau31_"+sam, "jet2Tau31_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau31_"+sam ].Sumw2() allHistos[ "jet1SubjetPtRatio_"+sam ] = TH1F( "jet1SubjetPtRatio_"+sam, "jet1SubjetPtRatio_"+sam, 20, 0., 1 ) allHistos[ "jet1SubjetPtRatio_"+sam ].Sumw2() allHistos[ "jet2SubjetPtRatio_"+sam ] = TH1F( "jet2SubjetPtRatio_"+sam, "jet2SubjetPtRatio_"+sam, 20, 0., 1 ) allHistos[ "jet2SubjetPtRatio_"+sam ].Sumw2() allHistos[ "deltaEtaDijet_n-1_"+sam ] = TH1F( "deltaEtaDijet_n-1_"+sam, "deltaEtaDijet_n-1_"+sam, 50, 0., 5 ) allHistos[ "deltaEtaDijet_n-1_"+sam ].Sumw2() allHistos[ "prunedMassAsym_n-1_"+sam ] = TH1F( "prunedMassAsym_n-1_"+sam, "prunedMassAsym_n-1_"+sam, 20, 0., 1 ) allHistos[ "prunedMassAsym_n-1_"+sam ].Sumw2() allHistos[ "jet1Tau21_n-1_"+sam ] = TH1F( "jet1Tau21_n-1_"+sam, "jet1Tau21_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau21_n-1_"+sam ].Sumw2() allHistos[ "jet2Tau21_n-1_"+sam ] = TH1F( "jet2Tau21_n-1_"+sam, "jet2Tau21_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau21_n-1_"+sam ].Sumw2() if 'low' in args.RANGE: allHistos[ "jet1Tau31_n-1_"+sam ] = TH1F( "jet1Tau31_n-1_"+sam, "jet1Tau31_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau31_n-1_"+sam ].Sumw2() allHistos[ "jet2Tau31_n-1_"+sam ] = TH1F( "jet2Tau31_n-1_"+sam, "jet2Tau31_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau31_n-1_"+sam ].Sumw2() for var in listCuts: if 'deltaEta' in var[0]: allHistos[ var[0]+'_'+sam ] = TH1F( var[0]+'_'+sam, var[0]+'_'+sam, 50, 0., 5. ) for var1 in listCuts: allHistos[ var[0]+'_'+var1[0]+"_"+sam ] = TH1F( var[0]+'_'+var1[0]+"_"+sam, var[0]+'_'+var1[0]+"_"+sam, 50, 0., 5. ) else: allHistos[ var[0]+'_'+sam ] = TH1F( var[0]+'_'+sam, var[0]+'_'+sam, 20, 0., 1. ) for var1 in listCuts: allHistos[ var[0]+'_'+var1[0]+"_"+sam ] = TH1F( var[0]+'_'+var1[0]+"_"+sam, var[0]+'_'+var1[0]+"_"+sam, 20, 0., 1. ) allHistos[ var[0]+'_'+sam ].Sumw2() allHistos[ "massAve_"+var[0]+'_'+sam ] = TH1F( "massAve_"+var[0]+'_'+sam, "massAve_"+var[0]+'_'+sam, massBins, massXmin, massXmax ) allHistos[ "massAve_"+var[0]+'_'+sam ].Sumw2() allHistos[ "HT_"+var[0]+"_"+sam ] = TH1F( "HT_"+var[0]+"_"+sam, "HT_"+var[0]+"_"+sam, 5000, 0., 5000 ) allHistos[ "HT_"+var[0]+"_"+sam ].Sumw2() allHistos[ "MET_"+var[0]+"_"+sam ] = TH1F( "MET_"+var[0]+"_"+sam, "MET_"+var[0]+"_"+sam, 500, 0., 500 ) allHistos[ "MET_"+var[0]+"_"+sam ].Sumw2() allHistos[ "numJets_"+var[0]+"_"+sam ] = TH1F( "numJets_"+var[0]+"_"+sam, "numJets_"+var[0]+"_"+sam, 20, 0., 20 ) allHistos[ "numJets_"+var[0]+"_"+sam ].Sumw2() allHistos[ "jet1Pt_"+var[0]+"_"+sam ] = TH1F( "jet1Pt_"+var[0]+"_"+sam, "jet1Pt_"+var[0]+"_"+sam, 2000, 0., 2000 ) allHistos[ "jet1Pt_"+var[0]+"_"+sam ].Sumw2() allHistos[ "jet2Pt_"+var[0]+"_"+sam ] = TH1F( "jet2Pt_"+var[0]+"_"+sam, "jet2Pt_"+var[0]+"_"+sam, 2000, 0., 2000 ) allHistos[ "jet2Pt_"+var[0]+"_"+sam ].Sumw2() for ind in listOfOptions: tmpName = listCuts[ind[0]][0]+'Vs'+listCuts[ind[1]][0]+'_'+sam allHistos[ tmpName ] = TH2F( tmpName, tmpName, (50 if 'deltaEta' in listCuts[ind[0]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[0]][0] else 1. ), (50 if 'deltaEta' in listCuts[ind[1]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[1]][0] else 1. ) ) allHistos[ tmpName ].Sumw2() tmpNameSam = listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sam allHistos[ "massAve_"+tmpNameSam+'_ABCDProj' ] = TH1F( "massAve_"+tmpNameSam+'_ABCDProj', "massAve_"+tmpNameSam+'_ABCDProj', massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_ABCDProj' ].Sumw2() allHistos[ "massAve_"+tmpNameSam+'_BC' ] = TH1F( "massAve_"+tmpNameSam+'_BC', "massAve_"+tmpNameSam+'_BC', massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_BC' ].Sumw2() allHistos[ tmpNameSam+'_Bkg' ] = TH2F( tmpNameSam+'_Bkg', tmpNameSam+'_Bkg', (50 if 'deltaEta' in listCuts[-2][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-2][0] else 1. ), (50 if 'deltaEta' in listCuts[-1][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-1][0] else 1. ) ) allHistos[ tmpNameSam+'_Bkg' ].Sumw2() for k in [ 'A', 'B', 'C', 'D' ]: allHistos[ "massAve_"+tmpNameSam+'_'+k ] = TH1F( "massAve_"+tmpNameSam+'_'+k, "massAve_"+tmpNameSam+'_'+k, massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_'+k ].Sumw2() allHistos[ tmpNameSam+'_'+k ] = TH2F( tmpNameSam+'_'+k, tmpNameSam+'_'+k, (50 if 'deltaEta' in listCuts[-2][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-2][0] else 1. ), (50 if 'deltaEta' in listCuts[-1][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-1][0] else 1. ) ) allHistos[ tmpNameSam+'_'+k ].Sumw2() #print allHistos ################################################################################################## Running the Analysis for sample in dictSamples: ####### Get GenTree inputFile, events, numEntries = getTree( dictSamples[ sample ], ('BoostedAnalysisPlotsPuppi/RUNATree' if 'Puppi' in args.grooming else 'BoostedAnalysisPlots/RUNATree' ) ) print '-'*40 print '------> ', sample print '------> Number of events: '+str(numEntries) d = 0 cutFlowList = OrderedDict() cutFlowList[ 'Process' ] = 0 cutFlowList[ 'Preselection' ] = 0 for k in listCuts: cutFlowList[ k[0] ] = 0 for i in xrange(numEntries): events.GetEntry(i) #---- progress of the reading -------- fraction = 10.*i/(1.*numEntries) if TMath.FloorNint(fraction) > d: print str(10*TMath.FloorNint(fraction))+'%' d = TMath.FloorNint(fraction) #if ( i > 100000 ): break Run = events.run Lumi = events.lumi NumEvent = events.event puWeight = events.puWeight lumiWeight = events.lumiWeight HT = events.HT MET = events.MET numJets = events.numJets massAve = getattr( events, (args.grooming+"MassAve").replace('Puppi','') ) jet1Pt = events.jet1Pt jet2Pt = events.jet2Pt jet1Eta = events.jet1Eta jet2Eta = events.jet2Eta jet1CosThetaStar = events.jet1CosThetaStar jet2CosThetaStar = events.jet2CosThetaStar #print 'Entry ', Run, ':', Lumi, ':', NumEvent if 'DATA' in sample: scale = 1 #elif 'RPV' in sample: scale = 2606 * puWeight * SF else: scale = 2606 * puWeight * lumiWeight #else: scale = puWeight cutFlowList[ 'Process' ] += scale #### test #if ( jet1Mass > 400 ) or ( jet2Mass > 400 ): print 'Entry ', Run, ':', Lumi, ':', NumEvent #if ( Lumi != tmpLumi ): # newLumi += Lumi # tmpLumi == Lumi #print Run/float(Lumi), Run, Lumi, Run/float(newLumi) #### Pre-selection HTCut = ( HT > 900 ) dijetCut = ( numJets > 1 ) jetPtCut = ( jet1Pt > 500 ) and ( jet2Pt > 450 ) #if HTCut and dijetCut and jetPtCut: if HTCut and dijetCut : cutFlowList[ 'Preselection' ] += scale sigCutsList = [] allHistos[ "HT_"+sam ].Fill( HT, scale ) allHistos[ "MET_"+sam ].Fill( MET, scale ) allHistos[ "massAve_"+sam ].Fill( massAve, scale ) allHistos[ "numJets_"+sam ].Fill( numJets, scale ) allHistos[ "jet1Pt_"+sam ].Fill( jet1Pt, scale ) allHistos[ "jet2Pt_"+sam ].Fill( jet2Pt, scale ) allHistos[ "prunedMassAsym_"+sam ].Fill( events.prunedMassAsym, scale ) allHistos[ "deltaEtaDijet_"+sam ].Fill( events.deltaEtaDijet, scale ) allHistos[ "jet1CosThetaStar_"+sam ].Fill( jet1CosThetaStar, scale ) allHistos[ "jet2CosThetaStar_"+sam ].Fill( jet2CosThetaStar, scale ) allHistos[ "jet1Tau21_"+sam ].Fill( events.jet1Tau21, scale ) allHistos[ "jet2Tau21_"+sam ].Fill( events.jet2Tau21, scale ) allHistos[ "jet1Tau31_"+sam ].Fill( events.jet1Tau31, scale ) allHistos[ "jet2Tau31_"+sam ].Fill( events.jet2Tau31, scale ) allHistos[ "jet1Tau32_"+sam ].Fill( events.jet1Tau32, scale ) allHistos[ "jet2Tau32_"+sam ].Fill( events.jet2Tau32, scale ) allHistos[ "jet1SubjetPtRatio_"+sam ].Fill( events.jet1SubjetPtRatio, scale ) allHistos[ "jet2SubjetPtRatio_"+sam ].Fill( events.jet2SubjetPtRatio, scale ) for var in listCuts: #allHistos[ var[0]+'_'+sample ].Fill( getattr( events, var[0] ), scale ) nextCut = False if ( getattr( events, var[0] ) < var[1] ): nextCut = True else: nextCut = False sigCutsList.append( nextCut ) if all(sigCutsList): allHistos[ 'massAve_'+var[0]+'_'+sample ].Fill( massAve, scale ) allHistos[ 'jet1Tau21_'+var[0]+'_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_'+var[0]+'_'+sample ].Fill( events.jet2Tau21, scale ) if 'low' in args.RANGE: allHistos[ 'jet1Tau31_'+var[0]+'_'+sample ].Fill( events.jet1Tau31, scale ) if 'low' in args.RANGE: allHistos[ 'jet2Tau31_'+var[0]+'_'+sample ].Fill( events.jet2Tau31, scale ) allHistos[ 'prunedMassAsym_'+var[0]+'_'+sample ].Fill( events.prunedMassAsym, scale ) allHistos[ 'deltaEtaDijet_'+var[0]+'_'+sample ].Fill( events.deltaEtaDijet, scale ) allHistos[ "HT_"+var[0]+"_"+sam ].Fill( HT, scale ) allHistos[ "MET_"+var[0]+"_"+sam ].Fill( MET, scale ) allHistos[ "massAve_"+var[0]+"_"+sam ].Fill( massAve, scale ) allHistos[ "numJets_"+var[0]+"_"+sam ].Fill( numJets, scale ) allHistos[ "jet1Pt_"+var[0]+"_"+sam ].Fill( jet1Pt, scale ) allHistos[ "jet2Pt_"+var[0]+"_"+sam ].Fill( jet2Pt, scale ) cutFlowList[ var[0] ] += scale #### n-1 plots if ( 'low' in args.RANGE ): if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ): allHistos[ 'deltaEtaDijet_n-1_'+sample ].Fill( events.deltaEtaDijet, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'prunedMassAsym_n-1_'+sample ].Fill( events.prunedMassAsym, scale ) if ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'jet1Tau21_n-1_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_n-1_'+sample ].Fill( events.jet2Tau21, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'jet1Tau31_n-1_'+sample ].Fill( events.jet1Tau31, scale ) allHistos[ 'jet2Tau31_n-1_'+sample ].Fill( events.jet2Tau31, scale ) else: if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ): allHistos[ 'prunedMassAsym_n-1_'+sample ].Fill( events.prunedMassAsym, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ): allHistos[ 'deltaEtaDijet_n-1_'+sample ].Fill( events.deltaEtaDijet, scale ) if ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ): allHistos[ 'jet1Tau21_n-1_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_n-1_'+sample ].Fill( events.jet2Tau21, scale ) ########## for Ind in listOfOptions: allHistos[ listCuts[Ind[0]][0]+'Vs'+listCuts[Ind[1]][0]+'_'+sample ].Fill( getattr( events, listCuts[Ind[0]][0] ), getattr( events, listCuts[Ind[1]][0] ), scale ) tmpSigCutsList = [ x for i,x in enumerate(sigCutsList) if i not in Ind ] ##### Bkg estimation/ABCD method if all(sigCutsList[:-2]): allHistos[ listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sample+'_Bkg' ].Fill( getattr( events, listCuts[0][0] ), getattr( events, listCuts[1][0] ), scale ) plotABCD( [ ( getattr( events, listCuts[-2][0] ) < listCuts[-2][1] ), ( getattr( events, listCuts[-1][0] ) < listCuts[-1][1] ) ], [ listCuts[-2][0], listCuts[-1][0] ], events, massAve, scale, sample ) dummy = 1 for q in cutFlowList: allHistos[ 'cutFlow_'+sample ].SetBinContent( dummy, cutFlowList[q] ) allHistos[ 'cutFlow_'+sample ].GetXaxis().SetBinLabel( dummy, q ) dummy+=1 for sample in dictSamples: nameABCD = listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sample allHistos[ 'massAve_'+nameABCD+'_BC' ].Multiply( allHistos[ 'massAve_'+nameABCD+'_B' ], allHistos[ 'massAve_'+nameABCD+'_C' ], 1, 1, '') allHistos[ 'massAve_'+nameABCD+'_ABCDProj' ].Divide( allHistos[ 'massAve_'+nameABCD+'_BC' ], allHistos[ 'massAve_'+nameABCD+'_D' ], 1, 1, '') ''' ### The two lines above are doing exactly the following: for ibin in range( 0, allHistos[ 'massAve_'+nameABCD+'_B' ].GetNbinsX() ): Bcont = allHistos[ 'massAve_'+nameABCD+'_B' ].GetBinContent( ibin ) Berr = allHistos[ 'massAve_'+nameABCD+'_B' ].GetBinError( ibin ) Ccont = allHistos[ 'massAve_'+nameABCD+'_C' ].GetBinContent( ibin ) Cerr = allHistos[ 'massAve_'+nameABCD+'_C' ].GetBinError( ibin ) Dcont = allHistos[ 'massAve_'+nameABCD+'_D' ].GetBinContent( ibin ) Derr = allHistos[ 'massAve_'+nameABCD+'_D' ].GetBinError( ibin ) try: Nbkg = ( Bcont * Ccont ) / Dcont except ZeroDivisionError: Nbkg = 0 allHistos[ "massAve_"+nameABCD+'_ABCDProj' ].SetBinContent( ibin, Nbkg ) #try: NbkgErr = Nbkg * TMath.Sqrt( TMath.Power( Berr / Bcont, 2 ) + TMath.Power( Cerr / Ccont, 2 ) + TMath.Power( Derr / Dcont, 2 ) ) try: NbkgErr = Nbkg * TMath.Sqrt( TMath.Power( TMath.Sqrt(Bcont) / Bcont, 2 ) + TMath.Power( TMath.Sqrt(Ccont) / Ccont, 2 ) + TMath.Power( TMath.Sqrt(Dcont) / Dcont, 2 ) ) except ZeroDivisionError: NbkgErr = 0 allHistos[ "massAve_"+nameABCD+'_ABCDProj' ].SetBinError( ibin, NbkgErr ) ''' outputFile.Write() ##### Closing print 'Writing output file: '+ outputFileName outputFile.Close()
hSub = TH1F('h_sub_'+i,'h_sub_'+i,jetVarBins[k],jetVarMin[k],jetVarMax[k]) hSub.Sumw2() histJetVarSub.append(hSub) k += 1 #---- read the tree & fill histosgrams - N = events.GetEntriesFast() print 'Reading the input file: '+inf.GetName() print 'Number of events: '+str(N) d = 0 for i in xrange(N): events.GetEntry(i) #---- progress of the reading -------- fraction = 10.*i/(1.*N) if TMath.FloorNint(fraction) > d: print str(10*TMath.FloorNint(fraction))+'%' d = TMath.FloorNint(fraction) cut_trigger = True cut_mass = True cut_dEtajj = events.dEtajj < 1.3 cut_leptonVeto = events.jetElf[0]<0.7 and events.jetElf[1]<0.7 and events.jetMuf[0]<0.7 and events.jetMuf[1]<0.7 cut_eta = fabs(events.jetEta[0])<2.5 and fabs(events.jetEta[1])<2.5 cut_pt = events.jetPt[1]>40 cut_substructure = ( events.jetMassPruned[0] > 60 and events.jetMassPruned[0] < 100 and events.jetMassPruned[1] > 60 and events.jetMassPruned[1] < 100 and events.jetTau2[0]/events.jetTau1[0] < 0.5 and
def myAnalyzer( dictSamples, listCuts, signalName, RANGE, UNC ): outputFileName = 'Rootfiles/RUNMiniBoostedAnalysis_'+grooming+'_'+signalName+UNC+'_'+RANGE+'_'+args.version+'p7.root' outputFile = TFile( outputFileName, 'RECREATE' ) ###################################### output Tree #tree = TTree('RUNAFinTree'+grooming, 'RUNAFinTree'+grooming) #AvgMass = array( 'f', [ 0. ] ) #tree.Branch( 'AvgMass', AvgMass, 'AvgMass/F' ) #Scale = array( 'f', [ 0. ] ) #tree.Branch( 'Scale', Scale, 'Scale/F' ) ################################################################################################## Histos massBins = 100 massXmin = 0. massXmax = 500. listOfOptions = [ [ j,k] for j in range(len(listCuts)-1) for k in range(1, len(listCuts) ) if k > j ] for sam in dictSamples: allHistos[ "cutFlow_"+sam ] = TH1F( "cutflow_"+sam, "cutflow_"+sam, len(listCuts), 0., len(listCuts) ) allHistos[ "cutFlow_Scaled_"+sam ] = TH1F( "cutflow_scaled_"+sam, "cutflow_scaled_"+sam, len(listCuts), 0., len(listCuts) ) allHistos[ "cutFlow_Scaled_Weights_"+sam ] = TH1F( "cutflow_scaled_weights_"+sam, "cutflow_scaled_weights_"+sam, len(listCuts), 0., len(listCuts) ) allHistos[ "HT_"+sam ] = TH1F( "HT_"+sam, "HT_"+sam, 5000, 0., 5000 ) allHistos[ "HT_"+sam ].Sumw2() allHistos[ "MET_"+sam ] = TH1F( "MET_"+sam, "MET_"+sam, 500, 0., 500 ) allHistos[ "MET_"+sam ].Sumw2() allHistos[ "massAve_"+sam ] = TH1F( "massAve_"+sam, "massAve_"+sam, 500, 0., 500 ) allHistos[ "massAve_"+sam ].Sumw2() allHistos[ "numJets_"+sam ] = TH1F( "numJets_"+sam, "numJets_"+sam, 20, 0., 20 ) allHistos[ "numJets_"+sam ].Sumw2() allHistos[ "jet1Pt_"+sam ] = TH1F( "jet1Pt_"+sam, "jet1Pt_"+sam, 2000, 0., 2000 ) allHistos[ "jet1Pt_"+sam ].Sumw2() allHistos[ "jet2Pt_"+sam ] = TH1F( "jet2Pt_"+sam, "jet2Pt_"+sam, 2000, 0., 2000 ) allHistos[ "jet2Pt_"+sam ].Sumw2() allHistos[ "jet1CosThetaStar_"+sam ] = TH1F( "jet1CosThetaStar_"+sam, "jet1CosThetaStar_"+sam, 20, 0., 1 ) allHistos[ "jet1CosThetaStar_"+sam ].Sumw2() allHistos[ "jet2CosThetaStar_"+sam ] = TH1F( "jet2CosThetaStar_"+sam, "jet2CosThetaStar_"+sam, 20, 0., 1 ) allHistos[ "jet2CosThetaStar_"+sam ].Sumw2() allHistos[ "jet1Tau32_"+sam ] = TH1F( "jet1Tau32_"+sam, "jet1Tau32_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau32_"+sam ].Sumw2() allHistos[ "jet2Tau32_"+sam ] = TH1F( "jet2Tau32_"+sam, "jet2Tau32_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau32_"+sam ].Sumw2() allHistos[ "jet1RhoDDT_"+sam ] = TH1F( "jet1RhoDDT_"+sam, "jet1RhoDDT_"+sam, 200, -10, 10 ) allHistos[ "jet1RhoDDT_"+sam ].Sumw2() allHistos[ "jet2RhoDDT_"+sam ] = TH1F( "jet2RhoDDT_"+sam, "jet2RhoDDT_"+sam, 200, -10, 10 ) allHistos[ "jet2RhoDDT_"+sam ].Sumw2() allHistos[ "jet1Tau21VsRhoDDT_"+sam ] = TH2F( "jet1Tau21VsRhoDDT_"+sam, "jet1Tau21VsRhoDDT_"+sam, 20, 0., 1., 200, -10, 10 ) allHistos[ "jet1Tau21VsRhoDDT_"+sam ].Sumw2() allHistos[ "jet2Tau21VsRhoDDT_"+sam ] = TH2F( "jet2Tau21VsRhoDDT_"+sam, "jet2Tau21VsRhoDDT_"+sam, 20, 0., 1., 200, -10, 10 ) allHistos[ "jet2Tau21VsRhoDDT_"+sam ].Sumw2() allHistos[ "jet1Tau21DDT_"+sam ] = TH1F( "jet1Tau21DDT_"+sam, "jet1Tau21DDT_"+sam, 30, -1, 2 ) allHistos[ "jet1Tau21DDT_"+sam ].Sumw2() allHistos[ "jet2Tau21DDT_"+sam ] = TH1F( "jet2Tau21DDT_"+sam, "jet2Tau21DDT_"+sam, 30, -1, 2 ) allHistos[ "jet2Tau21DDT_"+sam ].Sumw2() allHistos[ "jet1Tau21DDTVsRhoDDT_"+sam ] = TH2F( "jet1Tau21DDTVsRhoDDT_"+sam, "jet1Tau21DDTVsRhoDDT_"+sam, 20, 0., 1., 200, -10, 10 ) allHistos[ "jet1Tau21DDTVsRhoDDT_"+sam ].Sumw2() allHistos[ "jet2Tau21DDTVsRhoDDT_"+sam ] = TH2F( "jet2Tau21DDTVsRhoDDT_"+sam, "jet2Tau21DDTVsRhoDDT_"+sam, 20, 0., 1., 200, -10, 10 ) allHistos[ "jet2Tau21DDTVsRhoDDT_"+sam ].Sumw2() #if 'high' in args.RANGE: allHistos[ "jet1Tau31_"+sam ] = TH1F( "jet1Tau31_"+sam, "jet1Tau31_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau31_"+sam ].Sumw2() allHistos[ "jet2Tau31_"+sam ] = TH1F( "jet2Tau31_"+sam, "jet2Tau31_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau31_"+sam ].Sumw2() allHistos[ "jet1SubjetPtRatio_"+sam ] = TH1F( "jet1SubjetPtRatio_"+sam, "jet1SubjetPtRatio_"+sam, 20, 0., 1 ) allHistos[ "jet1SubjetPtRatio_"+sam ].Sumw2() allHistos[ "jet2SubjetPtRatio_"+sam ] = TH1F( "jet2SubjetPtRatio_"+sam, "jet2SubjetPtRatio_"+sam, 20, 0., 1 ) allHistos[ "jet2SubjetPtRatio_"+sam ].Sumw2() allHistos[ "jet1BtagCSV_"+sam ] = TH1F( "jet1BtagCSV_"+sam, "jet1BtagCSV_"+sam, 5, 0., 5 ) allHistos[ "jet1BtagCSV_"+sam ].Sumw2() allHistos[ "jet2BtagCSV_"+sam ] = TH1F( "jet2BtagCSV_"+sam, "jet2BtagCSV_"+sam, 5, 0., 5 ) allHistos[ "jet2BtagCSV_"+sam ].Sumw2() allHistos[ "jetsBtagCSV_"+sam ] = TH1F( "jetsBtagCSV_"+sam, "jetsBtagCSV_"+sam, 5, 0., 5 ) allHistos[ "jetsBtagCSV_"+sam ].Sumw2() allHistos[ "deltaEtaDijet_n-1_"+sam ] = TH1F( "deltaEtaDijet_n-1_"+sam, "deltaEtaDijet_n-1_"+sam, 50, 0., 5 ) allHistos[ "deltaEtaDijet_n-1_"+sam ].Sumw2() allHistos[ "prunedMassAsym_n-1_"+sam ] = TH1F( "prunedMassAsym_n-1_"+sam, "prunedMassAsym_n-1_"+sam, 20, 0., 1 ) allHistos[ "prunedMassAsym_n-1_"+sam ].Sumw2() allHistos[ "jet1Tau21_n-1_"+sam ] = TH1F( "jet1Tau21_n-1_"+sam, "jet1Tau21_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau21_n-1_"+sam ].Sumw2() allHistos[ "jet2Tau21_n-1_"+sam ] = TH1F( "jet2Tau21_n-1_"+sam, "jet2Tau21_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau21_n-1_"+sam ].Sumw2() ''' if 'low' in args.RANGE: allHistos[ "jet1Tau31_n-1_"+sam ] = TH1F( "jet1Tau31_n-1_"+sam, "jet1Tau31_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet1Tau31_n-1_"+sam ].Sumw2() allHistos[ "jet2Tau31_n-1_"+sam ] = TH1F( "jet2Tau31_n-1_"+sam, "jet2Tau31_n-1_"+sam, 20, 0., 1 ) allHistos[ "jet2Tau31_n-1_"+sam ].Sumw2() ''' listCuts.append( [ 'btag' ] ) for var in listCuts: if 'deltaEta' in var[0]: allHistos[ var[0]+'_'+sam ] = TH1F( var[0]+'_'+sam, var[0]+'_'+sam, 50, 0., 5. ) for var1 in listCuts: allHistos[ var[0]+'_'+var1[0]+"_"+sam ] = TH1F( var[0]+'_'+var1[0]+"_"+sam, var[0]+'_'+var1[0]+"_"+sam, 50, 0., 5. ) else: allHistos[ var[0]+'_'+sam ] = TH1F( var[0]+'_'+sam, var[0]+'_'+sam, 20, 0., 1. ) for var1 in listCuts: allHistos[ var[0]+'_'+var1[0]+"_"+sam ] = TH1F( var[0]+'_'+var1[0]+"_"+sam, var[0]+'_'+var1[0]+"_"+sam, 20, 0., 1. ) allHistos[ var[0]+'_'+sam ].Sumw2() allHistos[ "massAve_"+var[0]+'_'+sam ] = TH1F( "massAve_"+var[0]+'_'+sam, "massAve_"+var[0]+'_'+sam, massBins, massXmin, massXmax ) allHistos[ "massAve_"+var[0]+'_'+sam ].Sumw2() allHistos[ "HT_"+var[0]+"_"+sam ] = TH1F( "HT_"+var[0]+"_"+sam, "HT_"+var[0]+"_"+sam, 5000, 0., 5000 ) allHistos[ "HT_"+var[0]+"_"+sam ].Sumw2() allHistos[ "MET_"+var[0]+"_"+sam ] = TH1F( "MET_"+var[0]+"_"+sam, "MET_"+var[0]+"_"+sam, 500, 0., 500 ) allHistos[ "MET_"+var[0]+"_"+sam ].Sumw2() allHistos[ "numJets_"+var[0]+"_"+sam ] = TH1F( "numJets_"+var[0]+"_"+sam, "numJets_"+var[0]+"_"+sam, 20, 0., 20 ) allHistos[ "numJets_"+var[0]+"_"+sam ].Sumw2() allHistos[ "jet1Pt_"+var[0]+"_"+sam ] = TH1F( "jet1Pt_"+var[0]+"_"+sam, "jet1Pt_"+var[0]+"_"+sam, 2000, 0., 2000 ) allHistos[ "jet1Pt_"+var[0]+"_"+sam ].Sumw2() allHistos[ "jet2Pt_"+var[0]+"_"+sam ] = TH1F( "jet2Pt_"+var[0]+"_"+sam, "jet2Pt_"+var[0]+"_"+sam, 2000, 0., 2000 ) allHistos[ "jet2Pt_"+var[0]+"_"+sam ].Sumw2() listCuts.remove( ['btag'] ) for ind in listOfOptions: tmpName = listCuts[ind[0]][0]+'Vs'+listCuts[ind[1]][0]+'_'+sam allHistos[ tmpName ] = TH2F( tmpName, tmpName, (50 if 'deltaEta' in listCuts[ind[0]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[0]][0] else 1. ), (50 if 'deltaEta' in listCuts[ind[1]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[1]][0] else 1. ) ) allHistos[ tmpName ].Sumw2() #tmpNameSam = listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sam tmpNameSam = tmpName #listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sam #if 'RPV' in sam: massBins = 50 #allHistos[ "massAve_"+tmpNameSam+'_ABCDProj' ] = TH1F( "massAve_"+tmpNameSam+'_ABCDProj', "massAve_"+tmpNameSam+'_ABCDProj', len(boostedMassAveBins)-1, boostedMassAveBins) #allHistos[ "massAve_"+tmpNameSam+'_BC' ] = TH1F( "massAve_"+tmpNameSam+'_BC', "massAve_"+tmpNameSam+'_BC', len(boostedMassAveBins)-1, boostedMassAveBins ) #else: allHistos[ "massAve_"+tmpNameSam+'_ABCDProj' ] = TH1F( "massAve_"+tmpNameSam+'_ABCDProj', "massAve_"+tmpNameSam+'_ABCDProj', massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_BC' ] = TH1F( "massAve_"+tmpNameSam+'_BC', "massAve_"+tmpNameSam+'_BC', massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_ABCDProj' ].Sumw2() allHistos[ "massAve_"+tmpNameSam+'_BC' ].Sumw2() allHistos[ tmpNameSam+'_Bkg' ] = TH2F( tmpNameSam+'_Bkg', tmpNameSam+'_Bkg', #(50 if 'deltaEta' in listCuts[-2][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-2][0] else 1. ), #(50 if 'deltaEta' in listCuts[-1][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-1][0] else 1. ) (50 if 'deltaEta' in listCuts[ind[0]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[0]][0] else 1. ), (50 if 'deltaEta' in listCuts[ind[1]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[1]][0] else 1. ) ) allHistos[ tmpNameSam+'_Bkg' ].Sumw2() for k in [ 'A', 'B', 'C', 'D' ]: #allHistos[ "massAve_"+tmpNameSam+'_'+k ] = TH1F( "massAve_"+tmpNameSam+'_'+k, "massAve_"+tmpNameSam+'_'+k, len(boostedMassAveBins)-1, boostedMassAveBins ) allHistos[ "massAve_"+tmpNameSam+'_'+k ] = TH1F( "massAve_"+tmpNameSam+'_'+k, "massAve_"+tmpNameSam+'_'+k, massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_'+k ].Sumw2() allHistos[ tmpNameSam+'_'+k ] = TH2F( tmpNameSam+'_'+k, tmpNameSam+'_'+k, #(50 if 'deltaEta' in listCuts[-2][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-2][0] else 1. ), #(50 if 'deltaEta' in listCuts[-1][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-1][0] else 1. ) (50 if 'deltaEta' in listCuts[ind[0]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[0]][0] else 1. ), (50 if 'deltaEta' in listCuts[ind[1]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[1]][0] else 1. ) ) allHistos[ tmpNameSam+'_'+k ].Sumw2() allHistos[ "massAve_"+tmpNameSam+'_btag_'+k ] = TH1F( "massAve_"+tmpNameSam+'_btag_'+k, "massAve_"+tmpNameSam+'_btag_'+k, massBins, massXmin, massXmax ) allHistos[ "massAve_"+tmpNameSam+'_btag_'+k ].Sumw2() allHistos[ tmpNameSam+'_btag_'+k ] = TH2F( tmpNameSam+'_btag_'+k, tmpNameSam+'_btag_'+k, #(50 if 'deltaEta' in listCuts[-2][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-2][0] else 1. ), #(50 if 'deltaEta' in listCuts[-1][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[-1][0] else 1. ) (50 if 'deltaEta' in listCuts[ind[0]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[0]][0] else 1. ), (50 if 'deltaEta' in listCuts[ind[1]][0] else 20 ), 0., (5. if 'deltaEta' in listCuts[ind[1]][0] else 1. ) ) allHistos[ tmpNameSam+'_btag_'+k ].Sumw2() #print allHistos ################################################################################################## Running the Analysis for sample in dictSamples: ####### Get GenTree inputFile, events, numEntries = getTree( dictSamples[ sample ], ('BoostedAnalysisPlotsPuppi'+( '' if 'PDF' in UNC else UNC)+'/RUNATree' if 'Puppi' in args.grooming else 'BoostedAnalysisPlots'+( '' if 'PDF' in UNC else UNC)+'/RUNATree' ) ) print '-'*40 print '------> ', sample print '------> Number of events: '+str(numEntries) d = 0 cutFlowList = OrderedDict() cutFlowScaledList = OrderedDict() cutFlowScaledListWeights = OrderedDict() cutFlowList[ 'Process' ] = 0 cutFlowList[ 'Preselection' ] = 0 cutFlowScaledList[ 'Process' ] = 0 cutFlowScaledList[ 'Preselection' ] = 0 cutFlowScaledListWeights[ 'Process' ] = 0 cutFlowScaledListWeights[ 'Preselection' ] = 0 for k in listCuts: cutFlowList[ k[0] ] = 0 cutFlowScaledList[ k[0] ] = 0 cutFlowScaledListWeights[ k[0] ] = 0 cutFlowList[ 'btag' ] = 0 cutFlowScaledList[ 'btag' ] = 0 cutFlowScaledListWeights[ 'btag' ] = 0 for i in xrange(numEntries): events.GetEntry(i) #---- progress of the reading -------- fraction = 10.*i/(1.*numEntries) if TMath.FloorNint(fraction) > d: print str(10*TMath.FloorNint(fraction))+'%' d = TMath.FloorNint(fraction) #if ( i > 100000 ): break Run = events.run Lumi = events.lumi NumEvent = events.event puWeight = events.puWeight if 'v06' in args.version: pdfWeight = events.pdfWeight lumiWeight = events.lumiWeight HT = events.HT MET = events.MET numJets = events.numJets massAve = getattr( events, (args.grooming+"MassAve").replace('Puppi','') ) jet1Mass = getattr( events, 'jet1'+(args.grooming+"Mass").replace('pruned','Pruned').replace('soft','Soft').replace('Puppi','')) jet2Mass = getattr( events, 'jet2'+(args.grooming+"Mass").replace('pruned','Pruned').replace('soft','Soft').replace('Puppi','')) jet1Pt = events.jet1Pt jet2Pt = events.jet2Pt jet1Eta = events.jet1Eta jet2Eta = events.jet2Eta jet1CosThetaStar = events.jet1CosThetaStar jet2CosThetaStar = events.jet2CosThetaStar jet1BtagCSV = ( events.jet1btagCSVv2 > 0.800 ) jet2BtagCSV = ( events.jet2btagCSVv2 > 0.800 ) #print 'Entry ', Run, ':', Lumi, ':', NumEvent if 'DATA' in sample: scale = 1 #elif 'RPV' in sample: scale = 2606 * puWeight * SF else: scale = 2666 * puWeight * lumiWeight if 'PDF' in UNC: if 'Up' in UNC: scale = scale*(1+pdfWeight) else: scale = scale*(1-pdfWeight) cutFlowList[ 'Process' ] += 1 cutFlowScaledList[ 'Process' ] += scale cutFlowScaledList[ 'Process' ] += (puWeight*puWeight) ########## DDT jet1RhoDDT = TMath.Log( jet1Mass*jet1Mass/jet1Pt ) jet2RhoDDT = TMath.Log( jet2Mass*jet2Mass/jet2Pt ) jet1Tau21DDT = events.jet1Tau21 + 0.063 * jet1RhoDDT jet2Tau21DDT = events.jet2Tau21 + 0.063 * jet2RhoDDT #### Pre-selection HTCut = ( HT > 900 ) dijetCut = ( numJets > 1 ) #jetPtCut = ( jet1Pt > 500 ) and ( jet2Pt > 450 ) jetPtCut = ( jet1Pt > 150 ) and ( jet2Pt > 150 ) #if HTCut and dijetCut and jetPtCut: if HTCut and dijetCut : cutFlowList[ 'Preselection' ] += 1 cutFlowScaledList[ 'Preselection' ] += scale cutFlowScaledList[ 'Preselection' ] += (puWeight*puWeight) sigCutsList = [] allHistos[ "HT_"+sam ].Fill( HT, scale ) allHistos[ "MET_"+sam ].Fill( MET, scale ) allHistos[ "massAve_"+sam ].Fill( massAve, scale ) allHistos[ "numJets_"+sam ].Fill( numJets, scale ) allHistos[ "jet1Pt_"+sam ].Fill( jet1Pt, scale ) allHistos[ "jet2Pt_"+sam ].Fill( jet2Pt, scale ) allHistos[ "jet1RhoDDT_"+sam ].Fill( jet1RhoDDT, scale ) allHistos[ "jet2RhoDDT_"+sam ].Fill( jet2RhoDDT, scale ) allHistos[ "jet1Tau21VsRhoDDT_"+sam ].Fill( events.jet1Tau21, jet1RhoDDT, scale ) allHistos[ "jet2Tau21VsRhoDDT_"+sam ].Fill( events.jet2Tau21, jet2RhoDDT, scale ) allHistos[ "jet1Tau21DDT_"+sam ].Fill( jet1Tau21DDT, scale ) allHistos[ "jet2Tau21DDT_"+sam ].Fill( jet2Tau21DDT, scale ) allHistos[ "jet1Tau21DDTVsRhoDDT_"+sam ].Fill( jet1Tau21DDT, jet1RhoDDT, scale ) allHistos[ "jet2Tau21DDTVsRhoDDT_"+sam ].Fill( jet2Tau21DDT, jet2RhoDDT, scale ) allHistos[ "prunedMassAsym_"+sam ].Fill( events.prunedMassAsym, scale ) allHistos[ "deltaEtaDijet_"+sam ].Fill( events.deltaEtaDijet, scale ) allHistos[ "jet1CosThetaStar_"+sam ].Fill( jet1CosThetaStar, scale ) allHistos[ "jet2CosThetaStar_"+sam ].Fill( jet2CosThetaStar, scale ) allHistos[ "jet1Tau21_"+sam ].Fill( events.jet1Tau21, scale ) allHistos[ "jet2Tau21_"+sam ].Fill( events.jet2Tau21, scale ) allHistos[ "jet1Tau31_"+sam ].Fill( events.jet1Tau31, scale ) allHistos[ "jet2Tau31_"+sam ].Fill( events.jet2Tau31, scale ) allHistos[ "jet1Tau32_"+sam ].Fill( events.jet1Tau32, scale ) allHistos[ "jet2Tau32_"+sam ].Fill( events.jet2Tau32, scale ) allHistos[ "jet1SubjetPtRatio_"+sam ].Fill( events.jet1SubjetPtRatio, scale ) allHistos[ "jet2SubjetPtRatio_"+sam ].Fill( events.jet2SubjetPtRatio, scale ) allHistos[ "jet1BtagCSV_"+sam ].Fill( 1 if jet1BtagCSV else 0 ) allHistos[ "jet2BtagCSV_"+sam ].Fill( 1 if jet2BtagCSV else 0 ) bothBtag = ( jet1BtagCSV and jet2BtagCSV ) oneBtag = ( jet1BtagCSV or jet2BtagCSV ) if bothBtag: allHistos[ "jetsBtagCSV_"+sam ].Fill( 2 ) elif oneBtag: allHistos[ "jetsBtagCSV_"+sam ].Fill( 1 ) else: allHistos[ "jetsBtagCSV_"+sam ].Fill( 0 ) for var in listCuts: #allHistos[ var[0]+'_'+sample ].Fill( getattr( events, var[0] ), scale ) nextCut = False if ( getattr( events, var[0] ) < var[1] ): nextCut = True else: nextCut = False sigCutsList.append( nextCut ) if all(sigCutsList): allHistos[ 'massAve_'+var[0]+'_'+sample ].Fill( massAve, scale ) ### adding two prong scale factor allHistos[ 'jet1Tau21_'+var[0]+'_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_'+var[0]+'_'+sample ].Fill( events.jet2Tau21, scale ) #if 'low' in args.RANGE: allHistos[ 'jet1Tau31_'+var[0]+'_'+sample ].Fill( events.jet1Tau31, scale ) #if 'low' in args.RANGE: allHistos[ 'jet2Tau31_'+var[0]+'_'+sample ].Fill( events.jet2Tau31, scale ) allHistos[ 'prunedMassAsym_'+var[0]+'_'+sample ].Fill( events.prunedMassAsym, scale ) allHistos[ 'deltaEtaDijet_'+var[0]+'_'+sample ].Fill( events.deltaEtaDijet, scale ) allHistos[ "HT_"+var[0]+"_"+sam ].Fill( HT, scale ) allHistos[ "MET_"+var[0]+"_"+sam ].Fill( MET, scale ) allHistos[ "numJets_"+var[0]+"_"+sam ].Fill( numJets, scale ) allHistos[ "jet1Pt_"+var[0]+"_"+sam ].Fill( jet1Pt, scale ) allHistos[ "jet2Pt_"+var[0]+"_"+sam ].Fill( jet2Pt, scale ) cutFlowList[ var[0] ] += 1 cutFlowScaledList[ var[0] ] += scale cutFlowScaledList[ var[0] ] += (puWeight*puWeight) #if oneBtag and all(sigCutsList): if bothBtag and all(sigCutsList): allHistos[ 'massAve_btag_'+sample ].Fill( massAve, scale ) ### adding two prong scale factor allHistos[ 'jet1Tau21_btag_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_btag_'+sample ].Fill( events.jet2Tau21, scale ) #if 'low' in args.RANGE: allHistos[ 'jet1Tau31_btag_'+sample ].Fill( events.jet1Tau31, scale ) #if 'low' in args.RANGE: allHistos[ 'jet2Tau31_btag_'+sample ].Fill( events.jet2Tau31, scale ) allHistos[ 'prunedMassAsym_btag_'+sample ].Fill( events.prunedMassAsym, scale ) allHistos[ 'deltaEtaDijet_btag_'+sample ].Fill( events.deltaEtaDijet, scale ) allHistos[ "HT_btag_"+sam ].Fill( HT, scale ) allHistos[ "MET_btag_"+sam ].Fill( MET, scale ) allHistos[ "numJets_btag_"+sam ].Fill( numJets, scale ) allHistos[ "jet1Pt_btag_"+sam ].Fill( jet1Pt, scale ) allHistos[ "jet2Pt_btag_"+sam ].Fill( jet2Pt, scale ) cutFlowList[ 'btag' ] += 1 cutFlowScaledList[ 'btag' ] += scale cutFlowScaledList[ 'btag' ] += (puWeight*puWeight) #### n-1 plots ''' if ( 'low' in args.RANGE ): if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ): allHistos[ 'deltaEtaDijet_n-1_'+sample ].Fill( events.deltaEtaDijet, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'prunedMassAsym_n-1_'+sample ].Fill( events.prunedMassAsym, scale ) if ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'jet1Tau21_n-1_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_n-1_'+sample ].Fill( events.jet2Tau21, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[4][0] ) < listCuts[4][1] ) and ( getattr( events, listCuts[5][0] ) < listCuts[5][1] ): allHistos[ 'jet1Tau31_n-1_'+sample ].Fill( events.jet1Tau31, scale ) allHistos[ 'jet2Tau31_n-1_'+sample ].Fill( events.jet2Tau31, scale ) else: ''' if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ): allHistos[ 'prunedMassAsym_n-1_'+sample ].Fill( events.prunedMassAsym, scale ) if ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ) and ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ) and ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ): allHistos[ 'deltaEtaDijet_n-1_'+sample ].Fill( events.deltaEtaDijet, scale ) if ( getattr( events, listCuts[2][0] ) < listCuts[2][1] ) and ( getattr( events, listCuts[3][0] ) < listCuts[3][1] ): allHistos[ 'jet1Tau21_n-1_'+sample ].Fill( events.jet1Tau21, scale ) allHistos[ 'jet2Tau21_n-1_'+sample ].Fill( events.jet2Tau21, scale ) ########## for Ind in listOfOptions: allHistos[ listCuts[Ind[0]][0]+'Vs'+listCuts[Ind[1]][0]+'_'+sample ].Fill( getattr( events, listCuts[Ind[0]][0] ), getattr( events, listCuts[Ind[1]][0] ), scale ) tmpSigCutsList = [ x for i,x in enumerate(sigCutsList) if i not in Ind ] ##### Bkg estimation/ABCD method if ( all(sigCutsList[:-2]) ): # and ( getattr( events, listCuts[5][0] ) > (listCuts[5][1]*2) )): allHistos[ listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sample+'_Bkg' ].Fill( getattr( events, listCuts[0][0] ), getattr( events, listCuts[1][0] ), scale ) plotABCD( [ ( getattr( events, listCuts[-2][0] ) < listCuts[-2][1] ), ( getattr( events, listCuts[-1][0] ) < listCuts[-1][1] ) ], [ listCuts[-2][0], listCuts[-1][0] ], events, massAve, scale, sample ) if bothBtag: plotABCD( [ ( getattr( events, listCuts[-2][0] ) < listCuts[-2][1] ), ( getattr( events, listCuts[-1][0] ) < listCuts[-1][1] ) ], [ listCuts[-2][0], listCuts[-1][0] ], events, massAve, scale, sample+'_btag' ) ####### bkg estimation alternatives if sigCutsList[2]: allHistos[ 'jet1Tau21VsdeltaEtaDijet_'+sample+'_Bkg' ].Fill( getattr( events, 'jet1Tau21' ), getattr( events, 'deltaEtaDijet' ), scale ) allHistos[ 'jet2Tau21VsdeltaEtaDijet_'+sample+'_Bkg' ].Fill( getattr( events, 'jet2Tau21' ), getattr( events, 'deltaEtaDijet' ), scale ) plotABCDv2( [ ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ), ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ), ( getattr( events, listCuts[-1][0] ) < listCuts[-1][1] ) ], [ listCuts[0][0], listCuts[-1][0] ], events, massAve, scale, sample ) plotABCDv2( [ ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ), ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ), ( getattr( events, listCuts[-1][0] ) < listCuts[-1][1] ) ], [ listCuts[1][0], listCuts[-1][0] ], events, massAve, scale, sample ) ''' if sigCutsList[-1]: allHistos[ 'jet1Tau21VsprunedMassAsym_'+sample+'_Bkg' ].Fill( getattr( events, 'jet1Tau21' ), getattr( events, 'prunedMassAsym' ), scale ) allHistos[ 'jet2Tau21VsprunedMassAsym_'+sample+'_Bkg' ].Fill( getattr( events, 'jet2Tau21' ), getattr( events, 'prunedMassAsym' ), scale ) plotABCDv2( [ ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ), ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ), ( getattr( events, listCuts[-2][0] ) < listCuts[-2][1] ) ], [ listCuts[0][0], listCuts[-2][0] ], events, massAve, scale, sample ) plotABCDv2( [ ( getattr( events, listCuts[0][0] ) < listCuts[0][1] ), ( getattr( events, listCuts[1][0] ) < listCuts[1][1] ), ( getattr( events, listCuts[-2][0] ) < listCuts[-2][1] ) ], [ listCuts[1][0], listCuts[-2][0] ], events, massAve, scale, sample ) ''' dummy = 1 for q in cutFlowList: allHistos[ 'cutFlow_'+sample ].SetBinContent( dummy, cutFlowList[q] ) allHistos[ 'cutFlow_'+sample ].GetXaxis().SetBinLabel( dummy, q ) allHistos[ 'cutFlow_Scaled_'+sample ].SetBinContent( dummy, cutFlowScaledList[q] ) allHistos[ 'cutFlow_Scaled_'+sample ].GetXaxis().SetBinLabel( dummy, q ) allHistos[ 'cutFlow_Scaled_Weights_'+sample ].SetBinContent( dummy, cutFlowScaledListWeights[q] ) allHistos[ 'cutFlow_Scaled_Weights_'+sample ].GetXaxis().SetBinLabel( dummy, q ) dummy+=1 for sample in dictSamples: nameABCD = listCuts[-2][0]+'Vs'+listCuts[-1][0]+'_'+sample allHistos[ 'massAve_'+nameABCD+'_BC' ].Multiply( allHistos[ 'massAve_'+nameABCD+'_B' ], allHistos[ 'massAve_'+nameABCD+'_C' ], 1, 1, '') allHistos[ 'massAve_'+nameABCD+'_ABCDProj' ].Divide( allHistos[ 'massAve_'+nameABCD+'_BC' ], allHistos[ 'massAve_'+nameABCD+'_D' ], 1, 1, '') ''' ### The two lines above are doing exactly the following: for ibin in range( 0, allHistos[ 'massAve_'+nameABCD+'_B' ].GetNbinsX() ): Bcont = allHistos[ 'massAve_'+nameABCD+'_B' ].GetBinContent( ibin ) Berr = allHistos[ 'massAve_'+nameABCD+'_B' ].GetBinError( ibin ) Ccont = allHistos[ 'massAve_'+nameABCD+'_C' ].GetBinContent( ibin ) Cerr = allHistos[ 'massAve_'+nameABCD+'_C' ].GetBinError( ibin ) Dcont = allHistos[ 'massAve_'+nameABCD+'_D' ].GetBinContent( ibin ) Derr = allHistos[ 'massAve_'+nameABCD+'_D' ].GetBinError( ibin ) try: Nbkg = ( Bcont * Ccont ) / Dcont except ZeroDivisionError: Nbkg = 0 allHistos[ "massAve_"+nameABCD+'_ABCDProj' ].SetBinContent( ibin, Nbkg ) #try: NbkgErr = Nbkg * TMath.Sqrt( TMath.Power( Berr / Bcont, 2 ) + TMath.Power( Cerr / Ccont, 2 ) + TMath.Power( Derr / Dcont, 2 ) ) try: NbkgErr = Nbkg * TMath.Sqrt( TMath.Power( TMath.Sqrt(Bcont) / Bcont, 2 ) + TMath.Power( TMath.Sqrt(Ccont) / Ccont, 2 ) + TMath.Power( TMath.Sqrt(Dcont) / Dcont, 2 ) ) except ZeroDivisionError: NbkgErr = 0 allHistos[ "massAve_"+nameABCD+'_ABCDProj' ].SetBinError( ibin, NbkgErr ) ''' outputFile.Write() ##### Closing print 'Writing output file: '+ outputFileName outputFile.Close()
def myAnalyzer(sample, couts): inputFile = TFile(sample, 'read') outputFileName = sample.replace('RUNAnalysis', 'RUNMiniResolvedAnalysis') outputFile = TFile(outputFileName, 'RECREATE') #outputFile = TFile( 'test.root', 'RECREATE' ) ###################################### output Tree tree = TTree('RUNAMiniTree', 'RUNAMiniTree') weight = array('f', [0.]) dijet1Mass = array('f', [0.]) dijet2Mass = array('f', [0.]) dijet1sPt = array('f', [0.]) dijet2sPt = array('f', [0.]) massAve = array('f', [0.]) j4Pt = array('f', [0.]) ht = array('f', [0.]) mindR = array('f', [0.]) deltaEtaDijet1 = array('f', [0.]) deltaEtaDijet2 = array('f', [0.]) deltaEtaAveDijets = array('f', [0.]) deltaEtaDijets = array('f', [0.]) massAsymmetry = array('f', [0.]) cosThetaStarDijet1 = array('f', [0.]) cosThetaStarDijet2 = array('f', [0.]) deltaDijet1 = array('f', [0.]) deltaDijet2 = array('f', [0.]) xi1 = array('f', [0.]) xi2 = array('f', [0.]) deltaRDijet1 = array('f', [0.]) deltaRDijet2 = array('f', [0.]) tree.Branch('weight', weight, 'weight/F') tree.Branch('massAve', massAve, 'massAve/F') tree.Branch('dijet1Mass', dijet1Mass, 'dijet1Mass/F') tree.Branch('dijet2Mass', dijet2Mass, 'dijet2Mass/F') tree.Branch('dijet1sPt', dijet1sPt, 'dijet1sPt/F') tree.Branch('dijet2sPt', dijet2sPt, 'dijet2sPt/F') tree.Branch('mindR', mindR, 'mindR/F') tree.Branch('ht', ht, 'ht/F') tree.Branch('j4Pt', j4Pt, 'j4Pt/F') tree.Branch('deltaEtaDijet1', deltaEtaDijet1, 'deltaEtaDijet1/F') tree.Branch('deltaEtaDijet2', deltaEtaDijet2, 'deltaEtaDijet2/F') tree.Branch('deltaEtaAveDijets', deltaEtaAveDijets, 'deltaEtaAveDijets/F') tree.Branch('deltaEtaDijets', deltaEtaDijets, 'deltaEtaDijets/F') tree.Branch('massAsymmetry', massAsymmetry, 'massAsymmetry/F') tree.Branch('cosThetaStarDijet1', cosThetaStarDijet1, 'cosThetaStarDijet1/F') tree.Branch('cosThetaStarDijet2', cosThetaStarDijet2, 'cosThetaStarDijet2/F') tree.Branch('deltaDijet1', deltaDijet1, 'deltaDijet1/F') tree.Branch('deltaDijet2', deltaDijet2, 'deltaDijet2/F') tree.Branch('xi1', xi1, 'xi1/F') tree.Branch('xi2', xi2, 'xi2/F') tree.Branch('deltaRDijet1', deltaRDijet1, 'deltaRDijet1/F') tree.Branch('deltaRDijet2', deltaRDijet2, 'deltaRDijet2/F') ################################################################################################## Trigger Histos nBinsMass = 200 maxMass = 2000 nBinsHT = 150 maxHT = 1500 hmindR = TH1F('mindR', 'mindR', 100, 0, 5.) hmassAve = TH1F('massAve', 'massAve', nBinsMass, 0, maxMass) hdeltaEtaDijet1 = TH1F('deltaEtaDijet1', 'deltaEtaDijet1', 100, 0, 5.) hdeltaEtaDijet2 = TH1F('deltaEtaDijet2', 'deltaEtaDijet2', 100, 0, 5.) hdeltaEtaAveDijets = TH1F('deltaEtaAveDijets', 'deltaEtaAveDijets', 100, 0, 5.) hdeltaEtaDijets = TH1F('deltaEtaDijets', 'deltaEtaDijets', 100, 0, 5.) hmassAsymmetry = TH1F('massAsymmetry', 'massAsymmetry', 20, 0, 1.) hcosThetaStarDijet1 = TH1F('cosThetaStarDijet1', 'cosThetaStarDijet1', 20, 0, 1.) hcosThetaStarDijet2 = TH1F('cosThetaStarDijet2', 'cosThetaStarDijet2', 20, 0, 1.) hdeltaDijet1 = TH1F('deltaDijet1', 'deltaDijet1', 1000, -1000, 1000.) hdeltaDijet2 = TH1F('deltaDijet2', 'deltaDijet2', 1000, -1000, 1000.) hxi1 = TH1F('xi1', 'xi1', 50, 0, 5.) hxi2 = TH1F('xi2', 'xi2', 50, 0, 5.) hdeltaRDijet1 = TH1F('deltaRDijet1', 'deltaRDijet1', 50, 0, 5.) hdeltaRDijet2 = TH1F('deltaRDijet2', 'deltaRDijet2', 50, 0, 5.) massAveVsDijet1sPt = TH2F('massAveVsDijet1sPt', 'massAveVsDijet1sPt', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsDijet2sPt = TH2F('massAveVsDijet2sPt', 'massAveVsDijet2sPt', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsdeltaDijet1 = TH2F('massAveVsdeltaDijet1', 'massAveVsdeltaDijet1', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsdeltaDijet2 = TH2F('massAveVsdeltaDijet2', 'massAveVsdeltaDijet2', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsmindR = TH2F('massAveVsmindR', 'massAveVsmindR', nBinsMass, 0, maxMass, 100, 0, 5) massAveVsdeltaRDijet1 = TH2F('massAveVsdeltaRDijet1', 'massAveVsdeltaRDijet1', nBinsMass, 0, maxMass, 50, 0, 5) massAveVsdeltaRDijet2 = TH2F('massAveVsdeltaRDijet2', 'massAveVsdeltaRDijet2', nBinsMass, 0, maxMass, 50, 0, 5) mindR_cutMassAsym = TH1F('mindR_cutMassAsym', 'mindR_cutMassAsym', 100, 0, 5.) massAve_cutMassAsym = TH1F('massAve_cutMassAsym', 'massAve_cutMassAsym', nBinsMass, 0, maxMass) deltaEtaDijet1_cutMassAsym = TH1F('deltaEtaDijet1_cutMassAsym', 'deltaEtaDijet1_cutMassAsym', 100, 0, 5.) deltaEtaDijet2_cutMassAsym = TH1F('deltaEtaDijet2_cutMassAsym', 'deltaEtaDijet2_cutMassAsym', 100, 0, 5.) deltaEtaAveDijets_cutMassAsym = TH1F('deltaEtaAveDijets_cutMassAsym', 'deltaEtaAveDijets_cutMassAsym', 100, 0, 5.) deltaEtaDijets_cutMassAsym = TH1F('deltaEtaDijets_cutMassAsym', 'deltaEtaDijets_cutMassAsym', 100, 0, 5.) massAsymmetry_cutMassAsym = TH1F('massAsymmetry_cutMassAsym', 'massAsymmetry_cutMassAsym', 20, 0, 1.) cosThetaStarDijet1_cutMassAsym = TH1F('cosThetaStarDijet1_cutMassAsym', 'cosThetaStarDijet1_cutMassAsym', 20, 0, 1.) cosThetaStarDijet2_cutMassAsym = TH1F('cosThetaStarDijet2_cutMassAsym', 'cosThetaStarDijet2_cutMassAsym', 20, 0, 1.) deltaDijet1_cutMassAsym = TH1F('deltaDijet1_cutMassAsym', 'deltaDijet1_cutMassAsym', 1000, -1000, 1000.) deltaDijet2_cutMassAsym = TH1F('deltaDijet2_cutMassAsym', 'deltaDijet2_cutMassAsym', 1000, -1000, 1000.) xi1_cutMassAsym = TH1F('xi1_cutMassAsym', 'xi1_cutMassAsym', 20, 0, 1.) xi2_cutMassAsym = TH1F('xi2_cutMassAsym', 'xi2_cutMassAsym', 20, 0, 1.) deltaRDijet1_cutMassAsym = TH1F('deltaRDijet1_cutMassAsym', 'deltaRDijet1_cutMassAsym', 50, 0, 5.) deltaRDijet2_cutMassAsym = TH1F('deltaRDijet2_cutMassAsym', 'deltaRDijet2_cutMassAsym', 50, 0, 5.) massAveVsDijet1sPt_cutMassAsym = TH2F('massAveVsDijet1sPt_cutMassAsym', 'massAveVsDijet1sPt_cutMassAsym', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsDijet2sPt_cutMassAsym = TH2F('massAveVsDijet2sPt_cutMassAsym', 'massAveVsDijet2sPt_cutMassAsym', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsdeltaDijet1_cutMassAsym = TH2F( 'massAveVsdeltaDijet1_cutMassAsym', 'massAveVsdeltaDijet1_cutMassAsym', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsdeltaDijet2_cutMassAsym = TH2F( 'massAveVsdeltaDijet2_cutMassAsym', 'massAveVsdeltaDijet2_cutMassAsym', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsmindR_cutMassAsym = TH2F('massAveVsmindR_cutMassAsym', 'massAveVsmindR_cutMassAsym', nBinsMass, 0, maxMass, 100, 0, 5) massAveVsdeltaRDijet1_cutMassAsym = TH2F( 'massAveVsdeltaRDijet1_cutMassAsym', 'massAveVsdeltaRDijet1_cutMassAsym', nBinsMass, 0, maxMass, 50, 0, 5) massAveVsdeltaRDijet2_cutMassAsym = TH2F( 'massAveVsdeltaRDijet2_cutMassAsym', 'massAveVsdeltaRDijet2_cutMassAsym', nBinsMass, 0, maxMass, 50, 0, 5) mindR_cutDEta = TH1F('mindR_cutDEta', 'mindR_cutDEta', 100, 0, 5.) massAve_cutDEta = TH1F('massAve_cutDEta', 'massAve_cutDEta', nBinsMass, 0, maxMass) deltaEtaDijet1_cutDEta = TH1F('deltaEtaDijet1_cutDEta', 'deltaEtaDijet1_cutDEta', 100, 0, 5.) deltaEtaDijet2_cutDEta = TH1F('deltaEtaDijet2_cutDEta', 'deltaEtaDijet2_cutDEta', 100, 0, 5.) deltaEtaAveDijets_cutDEta = TH1F('deltaEtaAveDijets_cutDEta', 'deltaEtaAveDijets_cutDEta', 100, 0, 5.) deltaEtaDijets_cutDEta = TH1F('deltaEtaDijets_cutDEta', 'deltaEtaDijets_cutDEta', 100, 0, 5.) massAsymmetry_cutDEta = TH1F('massAsymmetry_cutDEta', 'massAsymmetry_cutDEta', 20, 0, 1.) cosThetaStarDijet1_cutDEta = TH1F('cosThetaStarDijet1_cutDEta', 'cosThetaStarDijet1_cutDEta', 20, 0, 1.) cosThetaStarDijet2_cutDEta = TH1F('cosThetaStarDijet2_cutDEta', 'cosThetaStarDijet2_cutDEta', 20, 0, 1.) deltaDijet1_cutDEta = TH1F('deltaDijet1_cutDEta', 'deltaDijet1_cutDEta', 1000, -1000, 1000.) deltaDijet2_cutDEta = TH1F('deltaDijet2_cutDEta', 'deltaDijet2_cutDEta', 1000, -1000, 1000.) xi1_cutDEta = TH1F('xi1_cutDEta', 'xi1_cutDEta', 20, 0, 1.) xi2_cutDEta = TH1F('xi2_cutDEta', 'xi2_cutDEta', 20, 0, 1.) deltaRDijet1_cutDEta = TH1F('deltaRDijet1_cutDEta', 'deltaRDijet1_cutDEta', 50, 0, 5.) deltaRDijet2_cutDEta = TH1F('deltaRDijet2_cutDEta', 'deltaRDijet2_cutDEta', 50, 0, 5.) massAveVsDijet1sPt_cutDEta = TH2F('massAveVsDijet1sPt_cutDEta', 'massAveVsDijet1sPt_cutDEta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsDijet2sPt_cutDEta = TH2F('massAveVsDijet2sPt_cutDEta', 'massAveVsDijet2sPt_cutDEta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsdeltaDijet1_cutDEta = TH2F('massAveVsdeltaDijet1_cutDEta', 'massAveVsdeltaDijet1_cutDEta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsdeltaDijet2_cutDEta = TH2F('massAveVsdeltaDijet2_cutDEta', 'massAveVsdeltaDijet2_cutDEta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsmindR_cutDEta = TH2F('massAveVsmindR_cutDEta', 'massAveVsmindR_cutDEta', nBinsMass, 0, maxMass, 100, 0, 5) massAveVsdeltaRDijet1_cutDEta = TH2F('massAveVsdeltaRDijet1_cutDEta', 'massAveVsdeltaRDijet1_cutDEta', nBinsMass, 0, maxMass, 50, 0, 5) massAveVsdeltaRDijet2_cutDEta = TH2F('massAveVsdeltaRDijet2_cutDEta', 'massAveVsdeltaRDijet2_cutDEta', nBinsMass, 0, maxMass, 50, 0, 5) mindR_cutDelta = TH1F('mindR_cutDelta', 'mindR_cutDelta', 100, 0, 5.) massAve_cutDelta = TH1F('massAve_cutDelta', 'massAve_cutDelta', nBinsMass, 0, maxMass) massAve_cutDelta240 = TH1F('massAve_cutDelta240', 'massAve_cutDelta240', nBinsMass, 0, maxMass) massAve_cutDelta220 = TH1F('massAve_cutDelta220', 'massAve_cutDelta220', nBinsMass, 0, maxMass) massAve_cutDelta180 = TH1F('massAve_cutDelta180', 'massAve_cutDelta180', nBinsMass, 0, maxMass) massAve_cutDelta160 = TH1F('massAve_cutDelta160', 'massAve_cutDelta160', nBinsMass, 0, maxMass) deltaEtaDijet1_cutDelta = TH1F('deltaEtaDijet1_cutDelta', 'deltaEtaDijet1_cutDelta', 100, 0, 5.) deltaEtaDijet2_cutDelta = TH1F('deltaEtaDijet2_cutDelta', 'deltaEtaDijet2_cutDelta', 100, 0, 5.) deltaEtaAveDijets_cutDelta = TH1F('deltaEtaAveDijets_cutDelta', 'deltaEtaAveDijets_cutDelta', 100, 0, 5.) deltaEtaDijets_cutDelta = TH1F('deltaEtaDijets_cutDelta', 'deltaEtaDijets_cutDelta', 100, 0, 5.) massAsymmetry_cutDelta = TH1F('massAsymmetry_cutDelta', 'massAsymmetry_cutDelta', 20, 0, 1.) cosThetaStarDijet1_cutDelta = TH1F('cosThetaStarDijet1_cutDelta', 'cosThetaStarDijet1_cutDelta', 20, 0, 1.) cosThetaStarDijet2_cutDelta = TH1F('cosThetaStarDijet2_cutDelta', 'cosThetaStarDijet2_cutDelta', 20, 0, 1.) deltaDijet1_cutDelta = TH1F('deltaDijet1_cutDelta', 'deltaDijet1_cutDelta', 1000, -1000, 1000.) deltaDijet2_cutDelta = TH1F('deltaDijet2_cutDelta', 'deltaDijet2_cutDelta', 1000, -1000, 1000.) xi1_cutDelta = TH1F('xi1_cutDelta', 'xi1_cutDelta', 20, 0, 1.) xi2_cutDelta = TH1F('xi2_cutDelta', 'xi2_cutDelta', 20, 0, 1.) deltaRDijet1_cutDelta = TH1F('deltaRDijet1_cutDelta', 'deltaRDijet1_cutDelta', 50, 0, 5.) deltaRDijet2_cutDelta = TH1F('deltaRDijet2_cutDelta', 'deltaRDijet2_cutDelta', 50, 0, 5.) massAveVsDijet1sPt_cutDelta = TH2F('massAveVsDijet1sPt_cutDelta', 'massAveVsDijet1sPt_cutDelta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsDijet2sPt_cutDelta = TH2F('massAveVsDijet2sPt_cutDelta', 'massAveVsDijet2sPt_cutDelta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsdeltaDijet1_cutDelta = TH2F('massAveVsdeltaDijet1_cutDelta', 'massAveVsdeltaDijet1_cutDelta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsdeltaDijet2_cutDelta = TH2F('massAveVsdeltaDijet2_cutDelta', 'massAveVsdeltaDijet2_cutDelta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsmindR_cutDelta = TH2F('massAveVsmindR_cutDelta', 'massAveVsmindR_cutDelta', nBinsMass, 0, maxMass, 100, 0, 5) massAveVsdeltaRDijet1_cutDelta = TH2F('massAveVsdeltaRDijet1_cutDelta', 'massAveVsdeltaRDijet1_cutDelta', nBinsMass, 0, maxMass, 50, 0, 5) massAveVsdeltaRDijet2_cutDelta = TH2F('massAveVsdeltaRDijet2_cutDelta', 'massAveVsdeltaRDijet2_cutDelta', nBinsMass, 0, maxMass, 50, 0, 5) mindR_cutCosTheta = TH1F('mindR_cutCosTheta', 'mindR_cutCosTheta', 100, 0, 5.) massAve_cutCosTheta = TH1F('massAve_cutCosTheta', 'massAve_cutCosTheta', nBinsMass, 0, maxMass) massAve_cutCosTheta65 = TH1F('massAve_cutCosTheta65', 'massAve_cutCosTheta65', nBinsMass, 0, maxMass) massAve_cutCosTheta55 = TH1F('massAve_cutCosTheta55', 'massAve_cutCosTheta55', nBinsMass, 0, maxMass) deltaEtaDijet1_cutCosTheta = TH1F('deltaEtaDijet1_cutCosTheta', 'deltaEtaDijet1_cutCosTheta', 100, 0, 5.) deltaEtaDijet2_cutCosTheta = TH1F('deltaEtaDijet2_cutCosTheta', 'deltaEtaDijet2_cutCosTheta', 100, 0, 5.) deltaEtaAveDijets_cutCosTheta = TH1F('deltaEtaAveDijets_cutCosTheta', 'deltaEtaAveDijets_cutCosTheta', 100, 0, 5.) deltaEtaDijets_cutCosTheta = TH1F('deltaEtaDijets_cutCosTheta', 'deltaEtaDijets_cutCosTheta', 100, 0, 5.) massAsymmetry_cutCosTheta = TH1F('massAsymmetry_cutCosTheta', 'massAsymmetry_cutCosTheta', 20, 0, 1.) cosThetaStarDijet1_cutCosTheta = TH1F('cosThetaStarDijet1_cutCosTheta', 'cosThetaStarDijet1_cutCosTheta', 20, 0, 1.) cosThetaStarDijet2_cutCosTheta = TH1F('cosThetaStarDijet2_cutCosTheta', 'cosThetaStarDijet2_cutCosTheta', 20, 0, 1.) deltaDijet1_cutCosTheta = TH1F('deltaDijet1_cutCosTheta', 'deltaDijet1_cutCosTheta', 1000, -1000, 1000.) deltaDijet2_cutCosTheta = TH1F('deltaDijet2_cutCosTheta', 'deltaDijet2_cutCosTheta', 1000, -1000, 1000.) xi1_cutCosTheta = TH1F('xi1_cutCosTheta', 'xi1_cutCosTheta', 20, 0, 1.) xi2_cutCosTheta = TH1F('xi2_cutCosTheta', 'xi2_cutCosTheta', 20, 0, 1.) deltaRDijet1_cutCosTheta = TH1F('deltaRDijet1_cutCosTheta', 'deltaRDijet1_cutCosTheta', 50, 0, 5.) deltaRDijet2_cutCosTheta = TH1F('deltaRDijet2_cutCosTheta', 'deltaRDijet2_cutCosTheta', 50, 0, 5.) massAveVsDijet1sPt_cutCosTheta = TH2F('massAveVsDijet1sPt_cutCosTheta', 'massAveVsDijet1sPt_cutCosTheta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsDijet2sPt_cutCosTheta = TH2F('massAveVsDijet2sPt_cutCosTheta', 'massAveVsDijet2sPt_cutCosTheta', nBinsMass, 0, maxMass, 100, 0, 1000) massAveVsdeltaDijet1_cutCosTheta = TH2F( 'massAveVsdeltaDijet1_cutCosTheta', 'massAveVsdeltaDijet1_cutCosTheta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsdeltaDijet2_cutCosTheta = TH2F( 'massAveVsdeltaDijet2_cutCosTheta', 'massAveVsdeltaDijet2_cutCosTheta', nBinsMass, 0, maxMass, 1000, -1000, 1000) massAveVsmindR_cutCosTheta = TH2F('massAveVsmindR_cutCosTheta', 'massAveVsmindR_cutCosTheta', nBinsMass, 0, maxMass, 100, 0, 5) massAveVsdeltaRDijet1_cutCosTheta = TH2F( 'massAveVsdeltaRDijet1_cutCosTheta', 'massAveVsdeltaRDijet1_cutCosTheta', nBinsMass, 0, maxMass, 50, 0, 5) massAveVsdeltaRDijet2_cutCosTheta = TH2F( 'massAveVsdeltaRDijet2_cutCosTheta', 'massAveVsdeltaRDijet2_cutCosTheta', nBinsMass, 0, maxMass, 50, 0, 5) ###################################### Get GenTree events = inputFile.Get('RUNATree/RUNATree') numEntries = events.GetEntriesFast() print '------> Number of events: ' + str(numEntries) d = 0 newLumi = 0 tmpLumi = 0 eventsRaw = eventsHT = eventsPassed = eventsDijet = eventsMassAsym = eventsDEta = eventsDEtaSubjet = eventsDEtaTau21 = eventsDEtaTau31 = eventsCosTheta = eventsTau21 = eventsTau21CosTheta = eventsTau21CosThetaDEta = 0 for i in xrange(numEntries): events.GetEntry(i) eventsRaw += 1 #if eventsRaw > 2000: break #---- progress of the reading -------- fraction = 10. * i / (1. * numEntries) if TMath.FloorNint(fraction) > d: print str(10 * TMath.FloorNint(fraction)) + '%' d = TMath.FloorNint(fraction) Run = events.run Lumi = events.lumi NumEvent = events.event #print 'Entry ', Run, ':', Lumi, ':', NumEvent HT = events.HT numJets = events.numJets numPV = events.numPV puWeight = events.puWeight lumiWeight = events.lumiWeight HT = events.HT mass1 = events.mass1 mass2 = events.mass2 avgMass = events.avgMass delta1 = events.delta1 delta2 = events.delta2 massRes = events.massRes eta1 = events.eta1 eta2 = events.eta2 deltaEta = events.deltaEta jetsPt = events.jetsPt jetsEta = events.jetsEta jetsPhi = events.jetsPhi jetsE = events.jetsE if 'Data' in samples: scale = 1 else: scale = 2476 * puWeight * lumiWeight j1 = TLorentzVector() j2 = TLorentzVector() j3 = TLorentzVector() j4 = TLorentzVector() jet4Pt = min([jetsPt[0], jetsPt[1], jetsPt[2], jetsPt[3]]) if (len(jetsPt) == 4) and (jet4Pt > 80): j1.SetPtEtaPhiE(jetsPt[0], jetsEta[0], jetsPhi[0], jetsE[0]) j2.SetPtEtaPhiE(jetsPt[1], jetsEta[1], jetsPhi[1], jetsE[1]) j3.SetPtEtaPhiE(jetsPt[2], jetsEta[2], jetsPhi[2], jetsE[2]) j4.SetPtEtaPhiE(jetsPt[3], jetsEta[3], jetsPhi[3], jetsE[3]) pairMass = MassAsyming(j1, j2, j3, j4) pairoff08 = DeltaRPairing(j1, j2, j3, j4, 0.8) if pairoff08[0]: variables = dijetVar(pairoff08[1:5]) j4Pt[0] = jet4Pt ht[0] = HT weight[0] = scale mindR[0] = mindRpair08 = pairoff08[5] dijet1Mass[0] = dijet1Masspair08 = (pairoff08[1] + pairoff08[2]).M() dijet1sPt[0] = dijet1sPtpair08 = pairoff08[1].Pt( ) + pairoff08[2].Pt() dijet2Mass[0] = dijet2Masspair08 = (pairoff08[3] + pairoff08[4]).M() dijet2sPt[0] = dijet2sPtpair08 = pairoff08[3].Pt( ) + pairoff08[4].Pt() massAve[0] = massAvepair08 = variables[0] deltaEtaDijet1[0] = deltaEtaDijet1pair08 = variables[1] deltaEtaDijet2[0] = deltaEtaDijet2pair08 = variables[2] deltaEtaAveDijets[0] = deltaEtaAveDijetspair08 = variables[3] deltaEtaDijets[0] = deltaEtaDijetspair08 = variables[4] massAsymmetry[0] = massAsymmetrypair08 = variables[5] cosThetaStarDijet1[0] = cosThetaStarDijet1pair08 = variables[6] cosThetaStarDijet2[0] = cosThetaStarDijet2pair08 = variables[7] deltaDijet1[0] = deltaDijet1pair08 = variables[8] deltaDijet2[0] = deltaDijet2pair08 = variables[9] xi1[0] = xi1pair08 = variables[10] xi2[0] = xi2pair08 = variables[11] deltaRDijet1[0] = deltaRDijet1pair08 = variables[12] deltaRDijet2[0] = deltaRDijet2pair08 = variables[13] hmindR.Fill(mindRpair08, scale) hmassAve.Fill(massAvepair08, scale) hdeltaEtaDijet1.Fill(deltaEtaDijet1pair08, scale) hdeltaEtaDijet2.Fill(deltaEtaDijet2pair08, scale) hdeltaEtaDijets.Fill(deltaEtaDijetspair08, scale) hdeltaEtaAveDijets.Fill(deltaEtaAveDijetspair08, scale) hmassAsymmetry.Fill(massAsymmetrypair08, scale) hcosThetaStarDijet1.Fill(cosThetaStarDijet1pair08, scale) hcosThetaStarDijet2.Fill(cosThetaStarDijet2pair08, scale) hdeltaDijet1.Fill(deltaDijet1pair08, scale) hdeltaDijet2.Fill(deltaDijet2pair08, scale) hxi1.Fill(xi1pair08, scale) hxi2.Fill(xi2pair08, scale) hdeltaRDijet1.Fill(deltaRDijet1pair08, scale) hdeltaRDijet2.Fill(deltaRDijet2pair08, scale) massAveVsDijet1sPt.Fill(massAvepair08, dijet1sPtpair08, scale) massAveVsDijet2sPt.Fill(massAvepair08, dijet2sPtpair08, scale) massAveVsdeltaDijet1.Fill(massAvepair08, deltaDijet1pair08, scale) massAveVsdeltaDijet2.Fill(massAvepair08, deltaDijet2pair08, scale) massAveVsmindR.Fill(massAvepair08, mindRpair08, scale) massAveVsdeltaRDijet1.Fill(massAvepair08, deltaRDijet1pair08, scale) massAveVsdeltaRDijet2.Fill(massAvepair08, deltaRDijet2pair08, scale) if (massAsymmetrypair08 < 0.2): mindR_cutMassAsym.Fill(mindRpair08, scale) massAve_cutMassAsym.Fill(massAvepair08, scale) deltaEtaDijet1_cutMassAsym.Fill(deltaEtaDijet1pair08, scale) deltaEtaDijet2_cutMassAsym.Fill(deltaEtaDijet2pair08, scale) deltaEtaDijets_cutMassAsym.Fill(deltaEtaDijetspair08, scale) deltaEtaAveDijets_cutMassAsym.Fill(deltaEtaAveDijetspair08, scale) massAsymmetry_cutMassAsym.Fill(massAsymmetrypair08, scale) cosThetaStarDijet1_cutMassAsym.Fill( cosThetaStarDijet1pair08, scale) cosThetaStarDijet2_cutMassAsym.Fill( cosThetaStarDijet2pair08, scale) deltaDijet1_cutMassAsym.Fill(deltaDijet1pair08, scale) deltaDijet2_cutMassAsym.Fill(deltaDijet2pair08, scale) xi1_cutMassAsym.Fill(xi1pair08, scale) xi2_cutMassAsym.Fill(xi2pair08, scale) deltaRDijet1_cutMassAsym.Fill(deltaRDijet1pair08, scale) deltaRDijet2_cutMassAsym.Fill(deltaRDijet2pair08, scale) massAveVsDijet1sPt_cutMassAsym.Fill( massAvepair08, dijet1sPtpair08, scale) massAveVsDijet2sPt_cutMassAsym.Fill( massAvepair08, dijet2sPtpair08, scale) massAveVsdeltaDijet1_cutMassAsym.Fill( massAvepair08, deltaDijet1pair08, scale) massAveVsdeltaDijet2_cutMassAsym.Fill( massAvepair08, deltaDijet2pair08, scale) massAveVsmindR_cutMassAsym.Fill(massAvepair08, mindRpair08, scale) massAveVsdeltaRDijet1_cutMassAsym.Fill( massAvepair08, deltaRDijet1pair08, scale) massAveVsdeltaRDijet2_cutMassAsym.Fill( massAvepair08, deltaRDijet2pair08, scale) if (deltaEtaDijetspair08 < 0.75): mindR_cutDEta.Fill(mindRpair08, scale) massAve_cutDEta.Fill(massAvepair08, scale) deltaEtaDijet1_cutDEta.Fill(deltaEtaDijet1pair08, scale) deltaEtaDijet2_cutDEta.Fill(deltaEtaDijet2pair08, scale) deltaEtaDijets_cutDEta.Fill(deltaEtaDijetspair08, scale) deltaEtaAveDijets_cutDEta.Fill(deltaEtaAveDijetspair08, scale) massAsymmetry_cutDEta.Fill(massAsymmetrypair08, scale) cosThetaStarDijet1_cutDEta.Fill( cosThetaStarDijet1pair08, scale) cosThetaStarDijet2_cutDEta.Fill( cosThetaStarDijet2pair08, scale) deltaDijet1_cutDEta.Fill(deltaDijet1pair08, scale) deltaDijet2_cutDEta.Fill(deltaDijet2pair08, scale) xi1_cutDEta.Fill(xi1pair08, scale) xi2_cutDEta.Fill(xi2pair08, scale) deltaRDijet1_cutDEta.Fill(deltaRDijet1pair08, scale) deltaRDijet2_cutDEta.Fill(deltaRDijet2pair08, scale) massAveVsDijet1sPt_cutDEta.Fill( massAvepair08, dijet1sPtpair08, scale) massAveVsDijet2sPt_cutDEta.Fill( massAvepair08, dijet2sPtpair08, scale) massAveVsdeltaDijet1_cutDEta.Fill( massAvepair08, deltaDijet1pair08, scale) massAveVsdeltaDijet2_cutDEta.Fill( massAvepair08, deltaDijet2pair08, scale) massAveVsmindR_cutDEta.Fill(massAvepair08, mindRpair08, scale) massAveVsdeltaRDijet1_cutDEta.Fill( massAvepair08, deltaRDijet1pair08, scale) massAveVsdeltaRDijet2_cutDEta.Fill( massAvepair08, deltaRDijet2pair08, scale) if ((deltaDijet1pair08 > 180) and (deltaDijet2pair08 > 180)): mindR_cutDelta.Fill(mindRpair08, scale) massAve_cutDelta.Fill(massAvepair08, scale) deltaEtaDijet1_cutDelta.Fill( deltaEtaDijet1pair08, scale) deltaEtaDijet2_cutDelta.Fill( deltaEtaDijet2pair08, scale) deltaEtaDijets_cutDelta.Fill( deltaEtaDijetspair08, scale) deltaEtaAveDijets_cutDelta.Fill( deltaEtaAveDijetspair08, scale) massAsymmetry_cutDelta.Fill( massAsymmetrypair08, scale) cosThetaStarDijet1_cutDelta.Fill( cosThetaStarDijet1pair08, scale) cosThetaStarDijet2_cutDelta.Fill( cosThetaStarDijet2pair08, scale) deltaDijet1_cutDelta.Fill(deltaDijet1pair08, scale) deltaDijet2_cutDelta.Fill(deltaDijet2pair08, scale) xi1_cutDelta.Fill(xi1pair08, scale) xi2_cutDelta.Fill(xi2pair08, scale) deltaRDijet1_cutDelta.Fill(deltaRDijet1pair08, scale) deltaRDijet2_cutDelta.Fill(deltaRDijet2pair08, scale) massAveVsDijet1sPt_cutDelta.Fill( massAvepair08, dijet1sPtpair08, scale) massAveVsDijet2sPt_cutDelta.Fill( massAvepair08, dijet2sPtpair08, scale) massAveVsdeltaDijet1_cutDelta.Fill( massAvepair08, deltaDijet1pair08, scale) massAveVsdeltaDijet2_cutDelta.Fill( massAvepair08, deltaDijet2pair08, scale) massAveVsmindR_cutDelta.Fill( massAvepair08, mindRpair08, scale) massAveVsdeltaRDijet1_cutDelta.Fill( massAvepair08, deltaRDijet1pair08, scale) massAveVsdeltaRDijet2_cutDelta.Fill( massAvepair08, deltaRDijet2pair08, scale) if ((cosThetaStarDijet1pair08 < .60) and (cosThetaStarDijet2pair08 < .60)): mindR_cutCosTheta.Fill(mindRpair08, scale) massAve_cutCosTheta.Fill(massAvepair08, scale) deltaEtaDijet1_cutCosTheta.Fill( deltaEtaDijet1pair08, scale) deltaEtaDijet2_cutCosTheta.Fill( deltaEtaDijet2pair08, scale) deltaEtaDijets_cutCosTheta.Fill( deltaEtaDijetspair08, scale) deltaEtaAveDijets_cutCosTheta.Fill( deltaEtaAveDijetspair08, scale) massAsymmetry_cutCosTheta.Fill( massAsymmetrypair08, scale) cosThetaStarDijet1_cutCosTheta.Fill( cosThetaStarDijet1pair08, scale) cosThetaStarDijet2_cutCosTheta.Fill( cosThetaStarDijet2pair08, scale) deltaDijet1_cutCosTheta.Fill( deltaDijet1pair08, scale) deltaDijet2_cutCosTheta.Fill( deltaDijet2pair08, scale) xi1_cutCosTheta.Fill(xi1pair08, scale) xi2_cutCosTheta.Fill(xi2pair08, scale) deltaRDijet1_cutCosTheta.Fill( deltaRDijet1pair08, scale) deltaRDijet2_cutCosTheta.Fill( deltaRDijet2pair08, scale) massAveVsDijet1sPt_cutCosTheta.Fill( massAvepair08, dijet1sPtpair08, scale) massAveVsDijet2sPt_cutCosTheta.Fill( massAvepair08, dijet2sPtpair08, scale) massAveVsdeltaDijet1_cutCosTheta.Fill( massAvepair08, deltaDijet1pair08, scale) massAveVsdeltaDijet2_cutCosTheta.Fill( massAvepair08, deltaDijet2pair08, scale) massAveVsmindR_cutCosTheta.Fill( massAvepair08, mindRpair08, scale) massAveVsdeltaRDijet1_cutCosTheta.Fill( massAvepair08, deltaRDijet1pair08, scale) massAveVsdeltaRDijet2_cutCosTheta.Fill( massAvepair08, deltaRDijet2pair08, scale) if ((cosThetaStarDijet1pair08 < .65) and (cosThetaStarDijet2pair08 < .65)): massAve_cutCosTheta65.Fill(massAvepair08, scale) if ((cosThetaStarDijet1pair08 < .55) and (cosThetaStarDijet2pair08 < .55)): massAve_cutCosTheta55.Fill(massAvepair08, scale) tree.Fill() outputFile.Write() ##### Closing print 'Writing output file: ' + outputFileName outputFile.Close()