def runIsrAnalysis( file_list , is_data , is_full_sim , tree_name = 'susy' , dsid = 1 , out_file_special_name = None , is_tnt = False , fancy_progress_bar = True , job_num = 0 , total_num_jobs = 1 , total_num_events = 0 , total_num_entries = 0 , out_dir = './' ): # ============================================================================== # If the num events are not set and we are running over TNTs, get the total NumEvents print 'total num events: %s' % total_num_events if total_num_events == 0 and is_tnt: print 'Getting total num unskimmed events' print ' -- this is slow. you should do this once per data set - not for each stream!' total_num_events = getTotalNumEvents(file_list, is_tnt) print "Adding files to TChain" t = RunHelpers.getTChain(file_list, tree_name) # ============================================================================== print 'Creating IsrAnalysis object' isra = ROOT.PennSusyFrame.IsrAnalysis(t) print 'configuring IsrAnalysis object' if out_file_special_name is not None: isra.setProcessLabel(out_file_special_name) isra.setFancyProgressBar(False) # set is data or MC if is_data: isra.setIsData() else: isra.setIsMC() xsec_dict = CrossSectionReader.getCrossSection(dsid) if xsec_dict is None: return isra.setCrossSection(xsec_dict['xsec']) isra.setKFactor( xsec_dict['kfac']) isra.setFilterEff( xsec_dict['eff']) isra.setTotalNumEntries( total_num_entries ) isra.setNumGeneratedEvents( total_num_events ) # set is full sim/fast sim if is_full_sim: isra.setFullSim() # set start entry and max number events if total_num_jobs > 1: print 'total num jobs (%s) > 1' % total_num_jobs this_job_events = int(math.ceil( float(total_num_entries) / total_num_jobs )) this_job_start = job_num*this_job_events print 'total num entries; %s' % total_num_entries print 'setting max num events: %s' % this_job_events print type(this_job_events) isra.setMaxNumEvents(this_job_events) print 'setting start entry: %s' % this_job_start isra.setStartEntry(this_job_start) # set out histogram file name print 'setting histogram names' out_hist_file_name = '%s/Isr.' % out_dir if out_file_special_name is not None: out_hist_file_name += '%s.' % out_file_special_name out_hist_file_name += 'hists' if total_num_jobs > 1: out_hist_file_name += '.%d_of_%d' % (job_num, total_num_jobs) out_hist_file_name += '.root' isra.setOutHistFileName(out_hist_file_name) # Set critical cuts print 'setting critical cuts' # isra.setCritCutGrl( 1) # isra.setCritCutIncompleteEvent(1) # isra.setCritCutLarError( 1) # isra.setCritCutTileError( 1) # isra.setCritCutTileHotSpot( 1) # isra.setCritCutTileTrip( 1) # isra.setCritCutBadJetVeto( 1) # isra.setCritCutCaloProblemJet( 1) # isra.setCritCutPrimaryVertex( 1) # isra.setCritCutBadMuonVeto( 1) # isra.setCritCutCosmicMuonVeto( 1) # isra.setCritCutHFOR( 1) # isra.setCritCutMcOverlap( 1) # isra.setCritCutGe2Lepton( 1) # isra.setCritCut2Lepton( 1) # isra.setCritCut2SignalLepton( 1) # prepare tools and run analysis loop print 'preparing tools' isra.prepareTools() print 'looping -- %s' % out_file_special_name isra.Loop() print 'done looping -- %s' % out_file_special_name # ============================================================================== print '' print ''
def runBMinusLAnalysis( file_list , is_data , is_egamma_stream , is_full_sim , syst_struct = None , tree_name = 'susy' , dsid = 1 , out_file_special_name = None , is_tnt = False , fancy_progress_bar = True , job_num = 0 , total_num_jobs = 1 , total_num_events = 0 , total_num_entries = 0 , sum_mc_event_weights = 0 , out_dir = './' ): # ============================================================================== # If the num events are not set and we are running over TNTs, get the total # NumEvents print 'total num events: ', total_num_events if total_num_events == 0 and is_tnt: print 'Getting total num unskimmed events' print ' -- this is slow. you should do this once per data set - not for each stream!' total_num_events = getTotalNumEvents(file_list, is_tnt) print "Adding files to TChain" print ' Tree name: ' , tree_name t = RunHelpers.getTChain(file_list, tree_name) print t print t.GetEntries() # ============================================================================== print 'Creating BMinusLAnalysis object' bmla = ROOT.PennSusyFrame.BMinusLAnalysis(t) print 'configuring BMinusLAnalysis object' if out_file_special_name is not None: process_label = ''.join( [ out_file_special_name , '__' , str(job_num) , '_of_' , str(total_num_jobs) ] ) bmla.setProcessLabel(process_label) bmla.setFancyProgressBar(False) # set is data or MC # if MC, we need to set various other things like cross section, k-factor, ... if is_data: bmla.setIsData() if is_egamma_stream: bmla.setIsEgammaStream() else: bmla.setIsMuonStream() else: bmla.setIsMC() xsec_dict = CrossSectionReader.getCrossSection(dsid) if xsec_dict is None: return bmla.setCrossSection(xsec_dict['xsec']) bmla.setKFactor( xsec_dict['kfac']) bmla.setFilterEff( xsec_dict['eff']) bmla.setTotalNumEntries( total_num_entries ) bmla.setNumGeneratedEvents( total_num_events ) bmla.setSumMCEventWeights( sum_mc_event_weights ) # set is full sim/fast sim if is_full_sim: bmla.setFullSim() # set unblind! bmla.setIsBlind(False) # turn on systematics syst_tag = '' if syst_struct: print 'turning on systematics' syst_struct.configureAnalysisObject(bmla) syst_tag = ''.join([syst_struct.getRunName(), '.']) # set start entry and max number events if total_num_jobs > 1: print 'total num jobs (', total_num_jobs, ') > 1' this_job_events = int( math.ceil( float(total_num_entries) / total_num_jobs ) ) this_job_start = job_num*this_job_events print 'total num entries: ', total_num_entries print 'setting max num events: ', this_job_events print type(this_job_events) bmla.setMaxNumEvents(this_job_events) print 'setting start entry: ', this_job_start bmla.setStartEntry(this_job_start) # set out histogram file name # base name out_ntup_file_name = [out_dir, '/', 'BMinusL.', syst_tag] # append any special tags if out_file_special_name is not None: out_ntup_file_name.extend([out_file_special_name, '.']) # append 'hist' tag out_ntup_file_name.append('hist') # append job number if total_num_jobs > 1: out_ntup_file_name.extend( ['.' , str(job_num) , '_of_' , str(total_num_jobs) ] ) # this is a root file out_ntup_file_name.append('.root') # set output file name in analyzer bmla.setOutHistFileName(''.join(out_ntup_file_name)) # Set critical cuts bmla.setCritCutGrl( 1) bmla.setCritCutIncompleteEvent(1) bmla.setCritCutLarError( 1) bmla.setCritCutTileError( 1) bmla.setCritCutTileHotSpot( 1) bmla.setCritCutTileTrip( 1) bmla.setCritCutBadJetVeto( 1) bmla.setCritCutCaloProblemJet( 1) bmla.setCritCutPrimaryVertex( 1) bmla.setCritCutBadMuonVeto( 1) bmla.setCritCutCosmicMuonVeto( 1) bmla.setCritCutHFOR( 1) bmla.setCritCutMcOverlap( 1) bmla.setCritCutGe2Lepton( 1) bmla.setCritCut2Lepton( 0) bmla.setCritCut2SignalLepton( 0) bmla.setCritCut2BJets( 0) bmla.setCritCutBadJetVeto( 1) bmla.setCritCutBLPairing( 0) # Set cut values bmla.setElPtCut( lep_pt_cut, -1 ) bmla.setMuPtCut( lep_pt_cut, -1 ) bmla.setBJetPtCut(jet_pt_cut, -1 ) bmla.setMV1Cut(btag_working_point) # Turn on/off Z fudge factor bmla.setDoZKFactor(True) # bmla.setDoZKFactor(False) # Turn on/off detailed B-L histograms bmla.setDoDetailedBLHists(False) # prepare tools and run analysis loop print 'preparing tools' bmla.prepareTools() print 'looping -- ', out_file_special_name bmla.Loop() print 'done looping -- ', out_file_special_name # ============================================================================== print '' print ''
def runBMinusLTTNTMaker( file_list , is_data , is_egamma_stream , is_full_sim , tree_name = 'susy' , dsid = 1 , out_file_special_name = None , is_tnt = False , fancy_progress_bar = True , job_num = 0 , total_num_jobs = 1 , total_num_events = 0 , total_num_entries = 0 , sum_mc_event_weights = 0 , out_dir = './' ): # ============================================================================== # If the num events are not set and we are running over TNTs, get the total NumEvents print 'total num events: %s' % total_num_events if total_num_events == 0 and is_tnt: print 'Getting total num unskimmed events' print ' -- this is slow. you should do this once per data set - not for each stream!' total_num_events = getTotalNumEvents(file_list, is_tnt) print "Adding files to TChain" t = RunHelpers.getTChain(file_list, tree_name) # ============================================================================== print 'Creating BMinusLTTNTMaker object' bmlttntm = ROOT.PennSusyFrame.BMinusLTTNTMaker(t) print 'configuring BMinusLTTNTMaker object' if out_file_special_name is not None: bmlttntm.setProcessLabel(out_file_special_name) bmlttntm.setFancyProgressBar(False) # set is data or MC if is_data: bmlttntm.setIsData() else: bmlttntm.setIsMC() xsec_dict = CrossSectionReader.getCrossSection(dsid) if xsec_dict is None: return bmlttntm.setCrossSection(xsec_dict['xsec']) bmlttntm.setKFactor( xsec_dict['kfac']) bmlttntm.setFilterEff( xsec_dict['eff']) print 'Setting TotalNumEntries: ' , total_num_entries print 'Setting NumGeneratedEvents: ' , total_num_events print 'Setting SumMCEventWeights: ' , sum_mc_event_weights bmlttntm.setTotalNumEntries( total_num_entries ) bmlttntm.setNumGeneratedEvents( total_num_events ) bmlttntm.setSumMCEventWeights( sum_mc_event_weights ) # set is full sim/fast sim if is_full_sim: bmlttntm.setFullSim() # set start entry and max number events if total_num_jobs > 1: print 'total num jobs (%s) > 1' % total_num_jobs this_job_events = int(math.ceil( float(total_num_entries) / total_num_jobs )) this_job_start = job_num*this_job_events print 'total num entries; %s' % total_num_entries print 'setting max num events: %s' % this_job_events print type(this_job_events) bmlttntm.setMaxNumEvents(this_job_events) print 'setting start entry: %s' % this_job_start bmlttntm.setStartEntry(this_job_start) # set out histogram file name print 'setting histogram names' out_ntup_file_name = '%s/BMinusL.' % out_dir if out_file_special_name is not None: out_ntup_file_name += '%s.' % out_file_special_name out_ntup_file_name += 'tnt' if total_num_jobs > 1: out_ntup_file_name += '.%d_of_%d' % (job_num, total_num_jobs) out_ntup_file_name += '.root' bmlttntm.setOutNtupleFileName(out_ntup_file_name) # # Set critical cuts # print 'setting critical cuts' # bmlttntm.setCritCutGrl( 1) # bmlttntm.setCritCutIncompleteEvent(1) # bmlttntm.setCritCutLarError( 1) # bmlttntm.setCritCutTileError( 1) # bmlttntm.setCritCutTileHotSpot( 1) # bmlttntm.setCritCutTileTrip( 1) # bmlttntm.setCritCutBadJetVeto( 1) # bmlttntm.setCritCutCaloProblemJet( 1) # bmlttntm.setCritCutPrimaryVertex( 1) # bmlttntm.setCritCutBadMuonVeto( 1) # bmlttntm.setCritCutCosmicMuonVeto( 1) # bmlttntm.setCritCutHFOR( 1) # bmlttntm.setCritCutMcOverlap( 1) # bmlttntm.setCritCutGe2Lepton( 1) # bmlttntm.setCritCut2Lepton( 0) # bmlttntm.setCritCut2SignalLepton( 0) # bmlttntm.setCritCut2BJets( 0) # bmlttntm.setCritCutBadJetVeto( 1) # bmlttntm.setCritCutBLPairing( 0) # Set cut values bmlttntm.setElPtCut( lep_pt_cut, -1 ) bmlttntm.setMuPtCut( lep_pt_cut, -1 ) bmlttntm.setBJetPtCut(jet_pt_cut, -1 ) bmlttntm.setMV1Cut(btag_working_point) # prepare tools and run analysis loop print 'preparing tools' bmlttntm.prepareTools() print 'looping -- %s' % out_file_special_name bmlttntm.Loop() print 'done looping -- %s' % out_file_special_name # ============================================================================== print '' print ''