def setupMuonPreselection(MET, name, mode, less_than_3jets=False): a = Analysis(name) filters = [] tree = Tree("Main") a += tree ## Add jet iD pfJetId = PFJetIDLoose() a.AddJetFilter("PreCC",pfJetId) filters += [pfJetId] # Add muon ID customMuID = CustomVBTFMuID(Mus.ps()) a.AddMuonFilter("PreCC", customMuID) filters += [customMuID] # Muon-jet DR cut # mu_jet_dr = MuonJetDRFilter(0.1, Mus.ps()) mu_jet_dr = MuonJetDRFilterRA4Sync(0.1, Mus.ps()) a.AddJetFilter("PreCC", mu_jet_dr) filters += [mu_jet_dr] # Add electron ID # eleID = LooseEleId() eleID = CustomEleIdRA4Sync(Els_Sig.ps()) a.AddElectronFilter("PreCC", eleID) filters += [eleID] # Electron-jet DR cut el_jet_dr = EleJetDRFilter(0.3) # el_jet_dr = EleJetDRFilterRA4Sync(0.3, Els_Sig.ps()) a.AddJetFilter("PreCC", el_jet_dr) filters += [el_jet_dr] # this replaces typeI and uncorrected PFMET if MET == "typeI": met_typeI_filter = pfMETtopfMETtypeI() a.AddMETFilter("pfMET",met_typeI_filter) filters += [met_typeI_filter] # the residual JetCorrections are different from PF and Calo, so be careful # when adding them. if mode == "data39": JetCorrections = JESCorrections( corPset.ps() ,0) a.AddJetFilter("PreCC",JetCorrections) filters += [JetCorrections] # 311 MC needs to be reweighted accoring to vertex multiplicity # see onelepton/python/onelepton/filters.py if mode == "MC311" or mode == "MC42ttw_Z41" or mode == "MC42QCD" or mode == "MCskims": vert = reweightVertices(a) filters += [vert] tree.Attach(selection) tree.TAttach(selection,TwoMu) tree.TAttach( TwoMu, ZPlots) return (a, tree, filters)
def setupElectronPreselection(MET, name, mode, less_than_3jets=False, qcd_antiselection=False): a = Analysis(name) filters = [] ## Add jet iD pfJetId = PFJetIDLoose() a.AddJetFilter("PreCC", pfJetId) filters += [pfJetId] # Add muon ID customMuID = CustomVBTFMuID(Mus.ps()) a.AddMuonFilter("PreCC", customMuID) filters += [customMuID] # Muon-jet DR cut # mu_jet_dr = MuonJetDRFilter(0.1, Mus.ps()) mu_jet_dr = MuonJetDRFilterRA4Sync(0.1, Mus.ps()) a.AddJetFilter("PreCC", mu_jet_dr) filters += [mu_jet_dr] # Add electron ID # eleID = LooseEleId() if qcd_antiselection: eleID = CustomEleIdRA4Sync(Els_QCD.ps()) else: eleID = CustomEleIdRA4Sync(Els_Sig.ps()) a.AddElectronFilter("PreCC", eleID) filters += [eleID] # Electron-jet DR cut el_jet_dr = EleJetDRFilter(0.3) # el_jet_dr = EleJetDRFilterRA4Sync(0.3, Els_Sig.ps()) a.AddJetFilter("PreCC", el_jet_dr) filters += [el_jet_dr] # the residual JetCorrections are different from PF and Calo, so be careful # when adding them. if mode == "data39": JetCorrections = JESCorrections(corPset.ps(), 0) a.AddJetFilter("PreCC", JetCorrections) filters += [JetCorrections] # 311 MC needs to be reweighted accoring to vertex multiplicity # see onelepton/python/onelepton/filters.py if mode == "MC311": vert = reweightVertices(a) filters += [vert] # Create analysis cut tree tree = Tree("Main") a += tree # Here we define the data triggers depending on the analysis mode to add a # different trigger mix simply add an entry here and they will automatically # be added to the tree below # Control region : not yet ready for electrons if less_than_3jets: dataTriggers = { "data4X": etriggerData42XCtrl_ReReco, "data42X_PromptReco": etriggerData42XCtrl_PromptReco, "data42X_ReReco": etriggerData42XCtrl_ReReco, } # Signal region else: dataTriggers = { "data4X": etriggerData42XCtrl_ReReco, "data42X_PromptReco": etriggerData42X_PromptReco, "data42X_ReReco": etriggerData42X_ReReco, } if mode == "data39": a.Attach(triggerData) a.TAttach(triggerData, selection) elif mode in dataTriggers: tree.Attach(json) tree.TAttach(json, dataTriggers[mode]) tree.TAttach(dataTriggers[mode], selection) elif mode == "MCGrid": # Attach a BSM grid before any cuts have been applied so that we can # calculate signal efficiency for limit setting tree.Attach(bsmgrid_no_cuts) tree.TAttach(bsmgrid_no_cuts, selection) else: tree.Attach(selection) # Add cut flow common to signal/control tree.TAttach(selection, HBBEnoise) tree.TAttach(HBBEnoise, BeamHalo) tree.TAttach(BeamHalo, NoTracks) tree.TAttach(NoTracks, OneEl) tree.TAttach(OneEl, ZeroLooseEl) tree.TAttach(ZeroLooseEl, ZeroLooseMu) tree.TAttach(ZeroLooseMu, ZeroMu) if less_than_3jets: # CONTROL REGION tree.TAttach(ZeroMu, AtLeast1Jts) tree.TAttach(AtLeast1Jts, LessThan3Jts) else: # SIGNAL REGION tree.TAttach(ZeroMu, SecondJetEtCut60) tree.TAttach(SecondJetEtCut60, RECO_CommonHTCut500) # tree.TAttach(RECO_CommonHTCut500, AtLeast2Jts) if mode == "data42X_ReReco": tree.TAttach(RECO_CommonHTCut500, ElHad_May10ReReco_Cut_BE) tree.TAttach(ElHad_May10ReReco_Cut_BE, ElHad_May10ReReco_Cut_TP) tree.TAttach(ElHad_May10ReReco_Cut_TP, AtLeast3Jts) elif mode == "data42X_PromptReco": tree.TAttach(RECO_CommonHTCut500, ElHad_Prompt_Cut_BE) tree.TAttach(ElHad_Prompt_Cut_BE, ElHad_Prompt_Cut_TP) tree.TAttach(ElHad_Prompt_Cut_TP, AtLeast3Jts) else: tree.TAttach(RECO_CommonHTCut500, AtLeast3Jts) return (a, tree, filters)
def setupElectronPreselection(MET, name, mode, less_than_3jets=False, qcd_antiselection=False): a = Analysis(name) filters = [] ## Add jet iD pfJetId = PFJetIDLoose() a.AddJetFilter("PreCC",pfJetId) filters += [pfJetId] # Add muon ID customMuID = CustomVBTFMuID(Mus.ps()) a.AddMuonFilter("PreCC", customMuID) filters += [customMuID] # Muon-jet DR cut # mu_jet_dr = MuonJetDRFilter(0.1, Mus.ps()) mu_jet_dr = MuonJetDRFilterRA4Sync(0.3, Mus.ps()) a.AddJetFilter("PreCC", mu_jet_dr) filters += [mu_jet_dr] # Add electron ID # eleID = LooseEleId() if qcd_antiselection: eleID = CustomEleIdRA4Sync(Els_QCD.ps()) else: eleID = CustomEleIdRA4Sync(Els_Sig.ps()) a.AddElectronFilter("PreCC", eleID) filters += [eleID] # Electron-jet DR cut el_jet_dr = EleJetDRFilter(0.3) # el_jet_dr = EleJetDRFilterRA4Sync(0.3, Els_Sig.ps()) a.AddJetFilter("PreCC", el_jet_dr) filters += [el_jet_dr] # this replaces typeI and uncorrected PFMET if MET == "typeI": met_typeI_filter = pfMETtopfMETtypeI() a.AddMETFilter("pfMET",met_typeI_filter) filters += [met_typeI_filter] # the residual JetCorrections are different from PF and Calo, so be careful # when adding them. if mode == "data39": JetCorrections = JESCorrections( corPset.ps() ,0) a.AddJetFilter("PreCC",JetCorrections) filters += [JetCorrections] # 311 MC needs to be reweighted accoring to vertex multiplicity # see onelepton/python/onelepton/filters.py if mode == "MC311" or mode == "MC42ttw_Z41" or mode == "MC42QCD" or mode == "MCskims" or mode == "MC_Summer11" or mode == "MC_Fall11" or mode == "MCGrid" or mode == "SMS": vert = reweightVertices(a,mode) filters += [vert] if mode == "MCGrid": filters += setupSUSYWeighting(a) # Create analysis cut tree tree = Tree("Main") a += tree # Here we define the data triggers depending on the analysis mode to add a # different trigger mix simply add an entry here and they will automatically # be added to the tree below # Control region : not yet ready for electrons if less_than_3jets: dataTriggers = { "data4X" : etriggerData42XCtrl_ReReco, "data42X_PromptReco" : etriggerData42XCtrl_PromptReco, "data42X_ReReco" : etriggerData42XCtrl_ReReco } # Signal region else: dataTriggers = { "data4X" : etriggerData42XCtrl_ReReco, "data42X_PromptReco" : etriggerData42X_PromptReco, "data42X_ReReco" : etriggerData42X_ReReco, "data42X_Run2011Full" : etriggerData42X_2011Full, "data42X_Sync" : etrigger_RA4sync_May10 } if mode == "data39": a.Attach(triggerData) a.TAttach(triggerData, selection) elif mode in dataTriggers: tree.Attach(json) tree.TAttach(json,myCountsAndBSMGrids_Json) tree.TAttach(myCountsAndBSMGrids_Json,dataTriggers[mode]) tree.TAttach(dataTriggers[mode],myCountsAndBSMGrids_Trigger) tree.TAttach(myCountsAndBSMGrids_Trigger,selection) elif mode == "MCGrid" or mode == "SMS": # Attach a BSM grid before any cuts have been applied so that we can # calculate signal efficiency for limit setting (bsmgrid, store) = tripleScale(cutTree = tree, label = "NoCuts", SM=False) tree.TAttach(bsmgrid, selection) filters += store else: tree.Attach(selection) # Add cut flow common to signal/control tree.TAttach(selection,myCountsAndBSMGrids_Sel) tree.TAttach(myCountsAndBSMGrids_Sel,HBBEnoise) tree.TAttach(HBBEnoise,myCountsAndBSMGrids_Noise) tree.TAttach(myCountsAndBSMGrids_Noise,BeamHalo) tree.TAttach(BeamHalo,myCountsAndBSMGrids_beam) tree.TAttach(myCountsAndBSMGrids_beam,RA2TrackingFailureFilterCut) tree.TAttach(RA2TrackingFailureFilterCut,myCountsAndBSMGrids_track) tree.TAttach(myCountsAndBSMGrids_track,RA2ecaldeadcellfilterflagCut) tree.TAttach(RA2ecaldeadcellfilterflagCut,myCountsAndBSMGrids_RA2TPflag) tree.TAttach(myCountsAndBSMGrids_RA2TPflag,ElHad_Cut_TP) tree.TAttach(ElHad_Cut_TP,myCountsAndBSMGrids_TP) tree.TAttach(myCountsAndBSMGrids_TP,ElHad_Cut_BE) tree.TAttach(ElHad_Cut_BE,myCountsAndBSMGrids_BE) tree.TAttach(myCountsAndBSMGrids_BE,AtLeast2Jts) tree.TAttach(AtLeast2Jts,myCountsAndBSMGrids_2jets) ### FOR SYCHRONIZATION###################################### # tree.TAttach(myCountsAndBSMGrids_2jets,AtLeast3JtsSync) # tree.TAttach(AtLeast3JtsSync,myCountsAndBSMGrids_3jets) # tree.TAttach(myCountsAndBSMGrids_3jets,AtLeast4Jts) # tree.TAttach(AtLeast4Jts,myCountsAndBSMGrids_4jets) # tree.TAttach(myCountsAndBSMGrids_4jets,OneEl) # tree.TAttach(OneEl,myCountsAndBSMGrids_1el) # tree.TAttach(myCountsAndBSMGrids_1el,ZeroMu) # tree.TAttach(ZeroMu,myCountsAndBSMGrids_0Mu) # tree.TAttach(myCountsAndBSMGrids_0Mu,ZeroLooseEl) # tree.TAttach(ZeroLooseEl,myCountsAndBSMGrids_0Eloose) # tree.TAttach(myCountsAndBSMGrids_0Eloose,ZeroLooseMu) # tree.TAttach(ZeroLooseMu,myCountsAndBSMGrids_0loosemu) # tree.TAttach(myCountsAndBSMGrids_0loosemu,RECO_CommonHTCut300) # tree.TAttach(RECO_CommonHTCut300,myCountsAndBSMGrids_300HT) # tree.TAttach(myCountsAndBSMGrids_300HT,PFMET100) # tree.TAttach(PFMET100,myCountsAndBSMGrids_150PFMET) # tree.TAttach(myCountsAndBSMGrids_150PFMET,PrintRunLSEvent) # tree.TAttach(myCountsAndBSMGrids_150PFMET,skim) ################################################################ tree.TAttach(myCountsAndBSMGrids_2jets,OneEl) if qcd_antiselection: tree.TAttach(OneEl,ZeroLooseMu) tree.TAttach(ZeroLooseMu,ZeroMu) else: tree.TAttach(OneEl,ZeroLooseEl) tree.TAttach(ZeroLooseEl,ZeroLooseMu) tree.TAttach(ZeroLooseMu,ZeroMu) if less_than_3jets: # CONTROL REGION tree.TAttach(ZeroMu, AtLeast1Jts) tree.TAttach(AtLeast1Jts, LessThan3Jts) else: # SIGNAL REGION tree.TAttach(ZeroMu,RECO_CommonHTCut500) # tree.TAttach(RECO_CommonHTCut500, AtLeast2Jts) if mode == "data42X_ReReco": tree.TAttach(RECO_CommonHTCut500,ElHad_May10ReReco_Cut_BE) tree.TAttach(ElHad_May10ReReco_Cut_BE,ElHad_May10ReReco_Cut_TP) tree.TAttach(ElHad_May10ReReco_Cut_TP,AtLeast3Jts) # tree.TAttach(AtLeast3Jts,AnalysisTree_El_Data) # tree.TAttach(ElHad_May10ReReco_Cut_TP,AtLeast4Jts) elif mode == "data42X_PromptReco": tree.TAttach(RECO_CommonHTCut500,ElHad_Prompt_Cut_BE) tree.TAttach(ElHad_Prompt_Cut_BE,ElHad_Prompt_Cut_TP) tree.TAttach(ElHad_Prompt_Cut_TP,ElHad_Aug5ReReco_v1_Cut_BE) tree.TAttach(ElHad_Aug5ReReco_v1_Cut_BE,ElHad_Aug5ReReco_v1_Cut_TP) tree.TAttach(ElHad_Aug5ReReco_v1_Cut_TP,ElHad_Prompt_v6_Cut_BE) tree.TAttach(ElHad_Prompt_v6_Cut_BE,ElHad_Prompt_v6_Cut_TP) tree.TAttach(ElHad_Prompt_v6_Cut_TP,ElHad_PromptB_v1_Cut_BE) tree.TAttach(ElHad_PromptB_v1_Cut_BE,ElHad_PromptB_v1_Cut_TP) tree.TAttach(ElHad_PromptB_v1_Cut_TP,AtLeast3Jts) # tree.TAttach(AtLeast3Jts,AnalysisTree_El_Data) # tree.TAttach(ElHad_PromptB_v1_Cut_TP,AtLeast4Jts) elif mode == "data42X_Run2011Full": tree.TAttach(RECO_CommonHTCut500,AtLeast3Jts) # tree.TAttach(RECO_CommonHTCut500,ElHad_Cut_TPandBE) # tree.TAttach(ElHad_Cut_TPandBE,myCountsAndBSMGrids_TP) # tree.TAttach(myCountsAndBSMGrids_TP,AtLeast3Jts) # tree.TAttach(AtLeast3Jts,AnalysisTree_El_Data) # tree.TAttach(ElHad_allBE_deadecal_Cut,AtLeast4Jts) else: tree.TAttach(RECO_CommonHTCut500, AtLeast3Jts) # tree.TAttach(AtLeast3Jts, NumOfGenLeptons) # tree.TAttach(AtLeast3Jts , AnalysisTree_El) # tree.TAttach(RECO_CommonHTCut500, AtLeast4Jts) return (a, tree, filters)
def setupMuonPreselection(MET, name, mode, less_than_3jets=False): a = Analysis(name) filters = [] ## Add jet iD # pfJetId = PFJetIDLoose() # a.AddJetFilter("PreCC",pfJetId) # filters += [pfJetId] # Add muon ID customMuID = CustomVBTFMuID(Mus.ps()) a.AddMuonFilter("PreCC", customMuID) filters += [customMuID] # Muon-jet DR cut # mu_jet_dr = MuonJetDRFilter(0.1, Mus.ps()) ## mu_jet_dr = MuonJetDRFilterRA4Sync(0.1, Mus.ps()) ## a.AddJetFilter("PreCC", mu_jet_dr) ## filters += [mu_jet_dr] # Add electron ID # eleID = LooseEleId() eleID = CustomEleIdRA4Sync(Els_Sig.ps()) a.AddElectronFilter("PreCC", eleID) filters += [eleID] # Electron-jet DR cut ## el_jet_dr = EleJetDRFilter(0.3) ## # el_jet_dr = EleJetDRFilterRA4Sync(0.3, Els_Sig.ps()) ## a.AddJetFilter("PreCC", el_jet_dr) ## filters += [el_jet_dr] # this replaces typeI and uncorrected PFMET if MET == "typeI": met_typeI_filter = pfMETtopfMETtypeI() a.AddMETFilter("pfMET", met_typeI_filter) filters += [met_typeI_filter] # the residual JetCorrections are different from PF and Calo, so be careful # when adding them. if mode == "data39": JetCorrections = JESCorrections(corPset.ps(), 0) a.AddJetFilter("PreCC", JetCorrections) filters += [JetCorrections] # 311 MC needs to be reweighted accoring to vertex multiplicity # see onelepton/python/onelepton/filters.py if mode == "MC311" or mode == "MC42ttw_Z41" or mode == "MC42QCD" or mode == "MCskims": vert = reweightVertices(a) filters += [vert] # Create analysis cut tree tree = Tree("Main") a += tree # Here we define the data triggers depending on the analysis mode to add a # different trigger mix simply add an entry here and they will automatically # be added to the tree below # Control region if less_than_3jets: dataTriggers = { "data4X": triggerData4XCtrl, "data42X_PromptReco": triggerData42XCtrl_PromptReco, "data42X_ReReco": triggerData42XCtrl_ReReco, } # Signal region else: dataTriggers = { "data4X": triggerData4X, "data42X_PromptReco": triggerData42X_PromptReco, "data42X_ReReco": triggerData42X_ReReco, } if mode == "data39": a.Attach(triggerData) a.TAttach(triggerData, selection) elif mode in dataTriggers: tree.Attach(json) # tree.TAttach(json, skim) # tree.TAttach(skim,dataTriggers[mode]) tree.Attach(json, myCountsAndBSMGrids_Init) tree.Attach(myCountsAndBSMGrids_InitdataTriggers[mode]) tree.TAttach(dataTriggers[mode], HBBEnoise) tree.TAttach(HBBEnoise, BeamHalo) tree.TAttach(BeamHalo, NoTracks) tree.TAttach(NoTracks, MonsterFilter) tree.TAttach(MonsterFilter, selection) elif mode == "MCGrid": # Attach a BSM grid before any cuts have been applied so that we can # calculate signal efficiency for limit setting tree.Attach(bsmgrid_no_cuts) tree.TAttach(bsmgrid_no_cuts, selection) else: tree.Attach(selection) # tree.TAttach(selection,OneMu) # tree.TAttach(OneMu, ZeroLooseMu) # tree.TAttach(ZeroLooseMu,PFMuonCheck) # tree.TAttach(PFMuonCheck,RECO_CommonHTCut200) # tree.TAttach(RECO_CommonHTCut200,ZeroLooseEl) # tree.TAttach(ZeroLooseEl,ZeroEl) tree.TAttach(selection, MuHad_Prompt_Cut_BE) tree.TAttach(MuHad_Prompt_Cut_BE, MuHad_Prompt_Cut_TP) tree.TAttach(MuHad_Prompt_Cut_TP, triggerData4XCtrl) tree.TAttach(triggerData4XCtrl, myCountsAndBSMGrids_Clean) tree.TAttach(myCountsAndBSMGrids_Clean, AtLeast2Jts) tree.TAttach(AtLeast2Jts, myCountsAndBSMGrids_2jets) tree.TAttach(myCountsAndBSMGrids_2jets, AtLeast3Jts) tree.TAttach(AtLeast3Jts, myCountsAndBSMGrids_3jets) tree.TAttach(myCountsAndBSMGrids_3jets, AtLeast4Jts) tree.TAttach(AtLeast4Jts, OneMu) tree.TAttach(OneMu, myCountsAndBSMGrids_1mu) tree.TAttach(myCountsAndBSMGrids_1mu, ZeroEl) tree.TAttach(ZeroEl, myCountsAndBSMGrids_0Eli) tree.TAttach(myCountsAndBSMGrids_0Eli, ZeroLooseMu) tree.TAttach(ZeroLooseMu, ZeroLooseEl) tree.TAttach(ZeroLooseEl, RECO_CommonHTCut300) tree.TAttach(RECO_CommonHTCut300, myCountsAndBSMGrids_300HT) tree.TAttach(myCountsAndBSMGrids_300HT, PFMETCut150) tree.TAttach(PFMETCut150, myCountsAndBSMGrids_150PFMET) # PFMuonCheck) # tree.TAttach(PFMuonCheck,RECO_CommonHTCut200) # tree.TAttach(RECO_CommonHTCut200,ZeroLooseEl) # tree.TAttach(ZeroLooseEl,ZeroEl) return (a, tree, filters)
def setupMuonPreselection(MET, name, mode, less_than_3jets=False): a = Analysis(name) filters = [] ## Add jet iD pfJetId = PFJetIDLoose() a.AddJetFilter("PreCC",pfJetId) filters += [pfJetId] # Add muon ID customMuID = CustomVBTFMuID(Mus.ps()) a.AddMuonFilter("PreCC", customMuID) filters += [customMuID] # Muon-jet DR cut # mu_jet_dr = MuonJetDRFilter(0.1, Mus.ps()) mu_jet_dr = MuonJetDRFilter(0.3, Mus.ps()) a.AddJetFilter("PreCC", mu_jet_dr) filters += [mu_jet_dr] # Add electron ID # eleID = LooseEleId() eleID = CustomEleIdRA4Sync(Els_Sig.ps()) a.AddElectronFilter("PreCC", eleID) filters += [eleID] # Electron-jet DR cut el_jet_dr = EleJetDRFilter(0.3) # el_jet_dr = EleJetDRFilterRA4Sync(0.3, Els_Sig.ps()) a.AddJetFilter("PreCC", el_jet_dr) filters += [el_jet_dr] # this replaces typeI and uncorrected PFMET if MET == "typeI": met_typeI_filter = pfMETtopfMETtypeI() a.AddMETFilter("pfMET",met_typeI_filter) filters += [met_typeI_filter] # 311 MC needs to be reweighted accoring to vertex multiplicity # see onelepton/python/onelepton/filters.py if mode == "MC311" or mode == "MC42ttw_Z41" or mode == "MC42QCD" or mode == "MCskims" or mode == "MC_Summer11" or mode == "MC_Fall11" or mode == "MCGrid" or mode == "SMS": vert = reweightVertices(a,mode) filters += [vert] if mode == "MCGrid": filters += setupSUSYWeighting(a) # Create analysis cut tree tree = Tree("Main") a += tree # Here we define the data triggers depending on the analysis mode to add a # different trigger mix simply add an entry here and they will automatically # be added to the tree below # Control region if less_than_3jets: dataTriggers = { "data4X" : triggerData4XCtrl, "data42X_PromptReco" : triggerData42XCtrl_PromptReco, "data42X_ReReco" : triggerData42XCtrl_ReReco } # Signal region else: dataTriggers = { "data4X" : triggerData4X, "data42X_PromptReco" : triggerData42X_PromptReco, "sample_Fall11_data" : triggerData42X_PromptReco, "data42X_ReReco" : triggerData42X_ReReco } if mode in dataTriggers: tree.Attach(json) tree.TAttach(json,myCountsAndBSMGrids_Json) tree.TAttach(myCountsAndBSMGrids_Json,dataTriggers[mode]) tree.TAttach(dataTriggers[mode],myCountsAndBSMGrids_Trigger) tree.TAttach(myCountsAndBSMGrids_Trigger,selection) elif mode == "MCGrid" or mode == "SMS": # Attach a BSM grid before any cuts have been applied so that we can # calculate signal efficiency for limit setting (bsmgrid, store) = tripleScale(cutTree = tree, label = "NoCuts", SM=False) #tree.Attach(bsmgrid) tree.TAttach(bsmgrid, selection) filters += store else: tree.Attach(myCountsAndBSMGrids_Json) tree.TAttach(myCountsAndBSMGrids_Json,myCountsAndBSMGrids_Trigger) tree.TAttach(myCountsAndBSMGrids_Trigger,myCountsAndBSMGrids_pythiabug) tree.TAttach(myCountsAndBSMGrids_pythiabug,selection) # Add cut flow common to signal/control tree.TAttach(selection,myCountsAndBSMGrids_Sel) tree.TAttach(myCountsAndBSMGrids_Sel,HBBEnoise) tree.TAttach(HBBEnoise,myCountsAndBSMGrids_Noise) tree.TAttach(myCountsAndBSMGrids_Noise,BeamHalo) tree.TAttach(BeamHalo,myCountsAndBSMGrids_beam) tree.TAttach(myCountsAndBSMGrids_beam,RA2TrackingFailureFilterCut) tree.TAttach(RA2TrackingFailureFilterCut,myCountsAndBSMGrids_track) tree.TAttach(myCountsAndBSMGrids_track,RA2ecaldeadcellfilterflagCut) if mode == "data42X_ReReco": tree.TAttach(myCountsAndBSMGrids_track,MuHad_May10ReReco_Cut_BE) tree.TAttach(MuHad_May10ReReco_Cut_BE,MuHad_May10ReReco_Cut_TP) tree.TAttach(MuHad_May10ReReco_Cut_TP,myCountsAndBSMGrids_TPBE) elif mode == "data42X_PromptReco": tree.TAttach(myCountsAndBSMGrids_track,MuHad_Prompt_Cut_BE) tree.TAttach(MuHad_Prompt_Cut_BE,MuHad_Prompt_Cut_TP) tree.TAttach(MuHad_Prompt_Cut_TP,myCountsAndBSMGrids_TPBE) elif mode == "sample_Fall11_data": tree.TAttach(RA2ecaldeadcellfilterflagCut,MuHad_allBE_deadecal_Cut) tree.TAttach(MuHad_allBE_deadecal_Cut,myCountsAndBSMGrids_TPBE) else: tree.TAttach(RA2ecaldeadcellfilterflagCut,myCountsAndBSMGrids_TPBE) tree.TAttach(myCountsAndBSMGrids_TPBE,AtLeast2Jts) tree.TAttach(AtLeast2Jts,myCountsAndBSMGrids_2jets) tree.TAttach(myCountsAndBSMGrids_2jets,AtLeast3JtsSync) tree.TAttach(AtLeast3JtsSync,myCountsAndBSMGrids_3jets) ### FOR SYCHRONIZATION###################################### # tree.TAttach(myCountsAndBSMGrids_3jets,AtLeast4Jts) # tree.TAttach(AtLeast4Jts,myCountsAndBSMGrids_4jets) # tree.TAttach(myCountsAndBSMGrids_4jets,OneMu) ############################################################ tree.TAttach(myCountsAndBSMGrids_3jets,OneMu) tree.TAttach(OneMu,myCountsAndBSMGrids_1mu) tree.TAttach(myCountsAndBSMGrids_1mu,myCountsAndBSMGrids_1muPF) tree.TAttach(myCountsAndBSMGrids_1muPF,ZeroEl) tree.TAttach(ZeroEl,myCountsAndBSMGrids_0El) tree.TAttach(myCountsAndBSMGrids_0El,ZeroLooseMu) tree.TAttach(ZeroLooseMu,myCountsAndBSMGrids_0loosemu) # tree.TAttach(myCountsAndBSMGrids_0loosemu,DphiPTW_muCut) # tree.TAttach(DphiPTW_muCut,ZeroLooseEl) tree.TAttach( myCountsAndBSMGrids_0loosemu,ZeroLooseEl) tree.TAttach(ZeroLooseEl,myCountsAndBSMGrids_0Eloose) #### FOR SYCHRONIZATION ################################################# tree.TAttach(myCountsAndBSMGrids_0Eloose,RECO_CommonHTCut300) tree.TAttach(RECO_CommonHTCut300,myCountsAndBSMGrids_300HT) tree.TAttach(myCountsAndBSMGrids_300HT,PFMET100) tree.TAttach(PFMET100,myCountsAndBSMGrids_150PFMET) ######################################################################## # Example to SKIM # tree.TAttach(ZeroEl,SumLepPT125) # tree.TAttach(SumLepPT125,skim) ########################################################################### if less_than_3jets: # CONTROL REGION tree.TAttach(ZeroLooseEl, AtLeast1Jts) if mode == "data42X_ReReco": tree.TAttach(ZeroLooseEl,MuHad_May10ReReco_Cut_BE) tree.TAttach(MuHad_May10ReReco_Cut_BE,MuHad_May10ReReco_Cut_TP) tree.TAttach(MuHad_May10ReReco_Cut_TP,LessThan3Jts) elif mode == "data42X_PromptReco": tree.TAttach(ZeroLooseEl,MuHad_Prompt_Cut_BE) tree.TAttach(MuHad_Prompt_Cut_BE,MuHad_Prompt_Cut_TP) tree.TAttach(MuHad_Prompt_Cut_TP,LessThan3Jts) else: tree.TAttach(AtLeast1Jts, LessThan3Jts) else: # SIGNAL REGION tree.TAttach(ZeroLooseEl,RECO_CommonHTCut500) tree.TAttach(RECO_CommonHTCut500,AtLeast3Jts) return (a, tree, filters)