Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions NtupleAna/bin/BTagAnalyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ int main(int argc, char * argv[]){

const edm::ParameterSet& parameters = process.getParameter<edm::ParameterSet>("BTagAnalyzer");
bool debug = parameters.getParameter<bool>("debug");
double minJetPt = parameters.getParameter<double>("minJetPt");
bool isMC = parameters.getParameter<bool>("isMC");
bool isTurnOnStudy = parameters.getParameter<bool>("isTurnOnStudy");
bool doLeptonSel = parameters.getParameter<bool>("doLeptonSel");
Expand Down Expand Up @@ -130,8 +131,9 @@ int main(int argc, char * argv[]){
a.eventLoop(maxEvents);

} else{
std::cout << "BTagAnalysis " << std::endl;
BTagAnalysis a = BTagAnalysis(treeRAW, treeAOD, fsh, isMC, year, histogramming, debug, PUFileName, jetDetailString, nnParameters, pfJetName);
std::cout << "BTagAnalysis with minJetPt " << minJetPt << std::endl;

BTagAnalysis a = BTagAnalysis(treeRAW, treeAOD, fsh, isMC, year, histogramming, debug, minJetPt, PUFileName, jetDetailString, nnParameters, pfJetName);
a.doLeptonSel = doLeptonSel;
//if(!isMC){
// a.lumiMask = lumiMask;
Expand Down
1 change: 1 addition & 0 deletions NtupleAna/bin/BTagAnalyzerHLT.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ int main(int argc, char * argv[]){

const edm::ParameterSet& parameters = process.getParameter<edm::ParameterSet>("BTagAnalyzer");
bool debug = parameters.getParameter<bool>("debug");
double minJetPt = parameters.getParameter<double>("minJetPt");
bool isMC = parameters.getParameter<bool>("isMC");
int histogramming = parameters.getParameter<int>("histogramming");
int skipEvents = parameters.getParameter<int>("skipEvents");
Expand Down
3 changes: 2 additions & 1 deletion NtupleAna/interface/BTagAnalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ namespace TriggerStudies {
TChain* eventsRAW;

bool debug = false;
float minJetPt = 30;
std::string year;
bool isMC = false;
TFileDirectory dir;
Expand Down Expand Up @@ -382,7 +383,7 @@ namespace TriggerStudies {
std::shared_ptr<NeuralNetworkAndConstants> neuralNet;


BTagAnalysis(TChain* _eventsRAW, TChain* _eventsAOD, fwlite::TFileService& fs, bool _isMC, std::string _year, int _histogramming, bool _debug, std::string PUFileName, std::string jetDetailString, const edm::ParameterSet& nnConfig, std::string pfJetName);
BTagAnalysis(TChain* _eventsRAW, TChain* _eventsAOD, fwlite::TFileService& fs, bool _isMC, std::string _year, int _histogramming, bool _debug, float minJetPt, std::string PUFileName, std::string jetDetailString, const edm::ParameterSet& nnConfig, std::string pfJetName);
void monitor(long int);
int eventLoop(int, int nSkipEvents = 0);
int processEvent();
Expand Down
9 changes: 6 additions & 3 deletions NtupleAna/scripts/BTagAnalyzer_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
#sys.path.insert(0, 'TriggerStudies/nTupleAnalysis/scripts/')
#from cfgHelper import *

print "Input command"
print " ".join(sys.argv)
print( "Input command")
print( " ".join(sys.argv))


parser = optparse.OptionParser()
Expand All @@ -27,6 +27,7 @@
parser.add_option('-o', '--outputBase', dest="outputBase", default="/uscms/home/bryantp/nobackup/TriggerStudies/", help="Base path for storing output histograms and picoAOD")
parser.add_option('--puFile', dest="puFile", default="", help="PUFileName")
parser.add_option('-n', '--nevents', dest="nevents", default="-1", help="Number of events to process. Default -1 for no limit.")
parser.add_option( '--minJetPt', dest="minJetPt", default="30", help="Minimm jet pt")
parser.add_option( '--histogramming', dest="histogramming", default="1e6", help="Histogramming level. 0 to make no kinematic histograms. 1: only make histograms for full event selection, larger numbers add hists in reverse cutflow order.")
parser.add_option( '--skipEvents', dest="skipEvents", default="0", help="")
parser.add_option( '--nnConfig', default=None, help="")
Expand Down Expand Up @@ -156,10 +157,11 @@

#Setup event loop object

if o.inputAOD is 'None':
if o.inputAOD == 'None':
print('Configuring HLTOnly...')
process.BTagAnalyzer = cms.PSet(
debug = cms.bool(o.debug),
minJetPt = cms.double(float(o.minJetPt)),
isMC = cms.bool(o.isMC),
year = cms.string(o.year),
jetDetailString = cms.string(jetDetailString),
Expand All @@ -173,6 +175,7 @@
print('Configuring RAW+AOD...')
process.BTagAnalyzer = cms.PSet(
debug = cms.bool(o.debug),
minJetPt = cms.double(float(o.minJetPt)),
fileNamesAOD = cms.vstring(fileNamesAOD),
isMC = cms.bool(o.isMC),
isTurnOnStudy = cms.bool(o.isTurnOnStudy),
Expand Down
18 changes: 10 additions & 8 deletions NtupleAna/src/BTagAnalysis.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,15 @@ const float OfflineDeepFlavourMediumCut2017 = 0.3033;
const float OfflineDeepFlavourLooseCut2017 = 0.0521;

//const float drTrackToJet = 0.29;
const float drTrackToJet = 1e6;
//const float drTrackToJet = 1e6;
const float drTrackToJet = 0.25;



BTagAnalysis::BTagAnalysis(TChain* _eventsRAW, TChain* _eventsAOD, fwlite::TFileService& fs, bool _isMC, std::string _year, int _histogramming, bool _debug, std::string PUFileName, std::string jetDetailString, const edm::ParameterSet& nnConfig, std::string pfJetName){
BTagAnalysis::BTagAnalysis(TChain* _eventsRAW, TChain* _eventsAOD, fwlite::TFileService& fs, bool _isMC, std::string _year, int _histogramming, bool _debug, float _minJetPt, std::string PUFileName, std::string jetDetailString, const edm::ParameterSet& nnConfig, std::string pfJetName){
if(_debug) cout<<"In BTagAnalysis constructor"<<endl;
debug = _debug;
minJetPt = _minJetPt;
isMC = _isMC;
year = _year;
eventsRAW = _eventsRAW;
Expand Down Expand Up @@ -379,7 +381,7 @@ int BTagAnalysis::processEvent(){
}

if(fabs(offJet->eta) > 4) continue;
if(offJet->pt < 30) continue;
if(offJet->pt < minJetPt) continue;


if(nTupleAnalysis::failOverlap(offJet->p,event->elecs,0.4)) continue;
Expand Down Expand Up @@ -466,7 +468,7 @@ int BTagAnalysis::processEvent(){
if(fabs(offJet->eta) > 4) continue;
cutflowJets->Fill("eta", eventWeight);

if(offJet->pt < 30) continue;
if(offJet->pt < minJetPt) continue;
cutflowJets->Fill("pt", eventWeight);

++nOffJetsPreOLap;
Expand Down Expand Up @@ -496,7 +498,7 @@ int BTagAnalysis::processEvent(){
if(offJetOther == offJet) continue;


if(offJetOther->pt < 30) continue;
if(offJetOther->pt < minJetPt) continue;
if(fabs(offJetOther->eta) > 4) continue;
if(nTupleAnalysis::failOverlap(offJetOther->p,event->elecs,0.4)) continue;
if(nTupleAnalysis::failOverlap(offJetOther->p,event->muons,0.4)) continue;
Expand Down Expand Up @@ -712,7 +714,7 @@ int BTagAnalysis::processEvent(){
//
for(const nTupleAnalysis::jetPtr& pfJet : event->pfJets){
if(fabs(pfJet->eta) > 4) continue;
if(pfJet->pt < 30) continue;
if(pfJet->pt < minJetPt) continue;

//pfJetHistsPreOLap.Fill(pfJet);

Expand Down Expand Up @@ -744,7 +746,7 @@ int BTagAnalysis::processEvent(){
if(doCaloJets){
for(const nTupleAnalysis::jetPtr& caloJet : event->caloJets){
if(fabs(caloJet->eta) > 4) continue;
if(caloJet->pt < 30) continue;
if(caloJet->pt < minJetPt) continue;

//caloJetHistsPreOLap.Fill(caloJet);
if(nTupleAnalysis::failOverlap(caloJet->p,event->elecs, 0.4)) continue;
Expand Down Expand Up @@ -788,7 +790,7 @@ int BTagAnalysis::processEvent(){
if(doPuppiJets){
for(const nTupleAnalysis::jetPtr& puppiJet : event->puppiJets){
if(fabs(puppiJet->eta) > 4) continue;
if(puppiJet->pt < 30) continue;
if(puppiJet->pt < minJetPt) continue;

//puppiJetHistsPreOLap.Fill(puppiJet);
if(nTupleAnalysis::failOverlap(puppiJet->p,event->elecs, 0.4)) continue;
Expand Down
Binary file not shown.
Binary file added plotting/CMU_Logo_Stack_Red.eps
Binary file not shown.
19 changes: 9 additions & 10 deletions plotting/JetLevelPlotUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ def makeEff(var,dirs,inFile,binning,bayesRatio=1,histForXBarycenterCalc=None):
numHist = getHist(inFile,dirs, var[0],binning,color=ROOT.kBlue)
denHist = getHist(inFile,dirs, var[1],binning,color=ROOT.kBlue)
else:
print "ERROR",var,dirs
print( "ERROR",var,dirs)


#print "max num is ",numHist.GetXaxis().GetXmax()
Expand Down Expand Up @@ -201,15 +201,15 @@ def drawComp(name,inputHists,yTitle,xTitle,outDir,otherText="",setLogy=1,yMax= 1
if doFit:
xAve = (ratio_axis.GetXaxis().GetXmin() + ratio_axis.GetXaxis().GetXmax()) /2
xmin = max(30,ratio_axis.GetXaxis().GetXmin())
print "Setting Range",xmin, ratio_axis.GetXaxis().GetXmax()
print( "Setting Range",xmin, ratio_axis.GetXaxis().GetXmax())
sigmoid = ROOT.TF1("func", "(1.0/(1+ TMath::Exp(-[0]*(x-[1]))))", xmin, ratio_axis.GetXaxis().GetXmax())
sigmoid.SetParameters(0.01, xAve)
inputHists[0][0].Fit(sigmoid)
sigmoid.Draw("same")

print hInfo[0].GetName(),":",
print sigmoid.GetParameter(0),
print sigmoid.GetParameter(1)
print( hInfo[0].GetName(),":",)
print( sigmoid.GetParameter(0),)
print( sigmoid.GetParameter(1))

textFits = []
for i in range(2):
Expand All @@ -228,17 +228,17 @@ def drawComp(name,inputHists,yTitle,xTitle,outDir,otherText="",setLogy=1,yMax= 1
if doFit:
xAve = (ratio_axis.GetXaxis().GetXmin() + ratio_axis.GetXaxis().GetXmax()) /2
xmin = max(30,ratio_axis.GetXaxis().GetXmin())
print "Setting Range",xmin, ratio_axis.GetXaxis().GetXmax()
print( "Setting Range",xmin, ratio_axis.GetXaxis().GetXmax())
sigmoid = ROOT.TF1("func", "(1.0/(1+ TMath::Exp(-[0]*(x-[1]))))", xmin, ratio_axis.GetXaxis().GetXmax())
sigmoid.SetParameters(0.01, xAve)
inputHists[0][0].Fit(sigmoid,"q")
sigmoid.SetLineStyle(ROOT.kDashed)
sigmoid.SetLineColor(ROOT.kRed)
sigmoid.Draw("same")

print hInfo[0].GetName(),":",
print sigmoid.GetParameter(0),
print sigmoid.GetParameter(1)
print( hInfo[0].GetName(),":", )
print( sigmoid.GetParameter(0),)
print( sigmoid.GetParameter(1) )

textFits = []
for i in range(2):
Expand Down Expand Up @@ -405,7 +405,6 @@ def drawCompRatioGraphs(name,inputHists,ratioHistBinning,yTitle,xTitle,outDir,ot
yWidth = 0
for hInfo in inputHists:
yWidth += 0.06
print hInfo[1]
legInfo.append((hInfo[0],"#scale[0.7]]{"+hInfo[1]+"}","LP"))
#leg = getLegend([(effHist,"#scale[0.7]]{Data}","PE"),(effHistMC,"#scale[0.7]{t#bar{t} MC}","PE")], xStart=0.2, xWidth=0.3, yStart=0.6, yWidth=0.16)
leg = getLegend(legInfo, xStart=xLeg, xWidth=0.3, yStart=yLeg-yWidth, yWidth=yWidth)
Expand Down
138 changes: 138 additions & 0 deletions plotting/MakeOffToOffComparison.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
import ROOT


ROOT.gROOT.SetBatch(True)
ROOT.gErrorIgnoreLevel = ROOT.kWarning


import sys
sys.path.insert(0, '../../')
import ROOTHelp.FancyROOTStyle

from JetLevelPlotUtils import makeEff, drawComp # , drawStackCompRatio, makeStack, makeInverseTurnOn, make2DComp, makeInverseTurnOnAll,plotRatio

def getOpts():
from optparse import OptionParser
p = OptionParser()
#p.add_option('--inputData', type = 'string', dest = 'inFileData', help = 'intput File' )
p.add_option('--inputFile', type = 'string', help = 'intput File' )
p.add_option('--outDir', type = 'string', help = 'output dir' )
p.add_option('--labName', type = 'string', default = "Reference,Monitored", help = '' )
#p.add_option('--doAlgoStudy', action="store_true" )
(o,a) = p.parse_args()

return o, a


def doTrackEffs():


#
# Offline Turnon curves:
#
#effBinning=5
vars = [
"phi" ,
"Chi2",
"DecayLenVal" ,
"DecayLenVal_l" ,
"DeltaR" ,
"DeltaR_l" ,
"Eta" ,
"EtaRel" ,
"HasInnerPixHit",
"IsFromSV" ,
"IsFromV0" ,
"JetDistVal" ,
"Momentum" ,
"NPixelHits" ,
"NStripHits" ,
"NTotalHits" ,
"PPar" ,
"PParRatio" ,
"PV" ,
"PVweight" ,
"Phi" ,
"PtRatio" ,
"PtRel" ,
"Pt_logx" ,
"pt_s" ,
"pt_m" ,
"SV" ,
"SVweight" ,
"algo" ,
"origAlgo" ,
"charge" ,
"eta" ,
"ip2d" ,
"ip2d_err" ,
"ip2d_err_l" ,
"ip2d_l" ,
"ip2d_sig" ,
"ip2d_sig_l" ,
"ip3d" ,
"ip3d_err" ,
"ip3d_err_l" ,
"ip3d_l" ,
"ip3d_sig" ,
"ip3d_sig_l" ,
]



for v in vars:
binning = 1

eff_Matched_Ref = makeEff(v , ["offTracks_matched","offTracks"],inFileMC,binning=binning)
eff_Matched_Mon = makeEff(v , ["pfTracks_matched","pfTracks"],inFileMC,binning=binning)

vBtag = "track"+v
if v=="phi": vBtag = "trackPhi"
if v=="eta": vBtag = "trackEta"

yLeg = 0.93
xLeg = 0.5

drawComp("Eff_"+v,[(eff_Matched_Ref,labName[0],ROOT.kBlack),
# (eff_Matched_noV0,"t#bar{t} MC (After V0 veto)",ROOT.kRed),
(eff_Matched_Mon,labName[1],ROOT.kRed),
#(eff_Matched_BTag,"t#bar{t} MC ",ROOT.kBlue),
#(eff_Matched_BTag_noV0,"t#bar{t} MC ",ROOT.kGreen)
]
,yTitle="Online Track Efficiency Relative to Offline",xTitle=eff_Matched_Ref.GetXaxis().GetTitle(),outDir=o.outDir,yMax=1.2,yLeg=yLeg,xLeg=xLeg,
xMax=eff_Matched_Ref.GetXaxis().GetXmax(),
xMin=eff_Matched_Ref.GetXaxis().GetXmin()
)




fake_Matched_Ref = makeEff(v , ["pfTracks_unmatched","pfTracks"], inFileMC,binning=1)
fake_Matched_Mon = makeEff(v , ["offTracks_unmatched","offTracks"],inFileMC,binning=1)
drawComp("Fake_"+v,[(fake_Matched_Ref,labName[0],ROOT.kBlack),
(fake_Matched_Mon,labName[1],ROOT.kRed),
]
,yTitle="Online Track Fake-Rate Relative to Offline",xTitle=fake_Matched_Mon.GetXaxis().GetTitle(),outDir=o.outDir,yMax=0.4,yLeg=0.9,xLeg=0.6,
xMax=fake_Matched_Mon.GetXaxis().GetXmax(),
xMin=fake_Matched_Mon.GetXaxis().GetXmin()
)






if __name__ == "__main__":
o, a = getOpts()

labName = o.labName.split(",")

#inFileData = ROOT.TFile(o.inFileData, "READ")
inFileMC = ROOT.TFile(o.inputFile, "READ")

import os
if not os.path.exists(o.outDir):
os.makedirs(o.outDir)


doTrackEffs()
Loading