Dear root experts,
I’m trying to compute trigger efficiencies and fit them using an unbinned fit with RooFit.
My input tree has a branch that stores a TString in which I concatenate all trigger paths triggering the event.
I thought it would be practical to do like this, in order to be sure to store a maximal information about the trigger paths in use in the input dataset.
I wonder if I can define a RooCategory from a condition on the TString branch (called trig_pass), in the form of a TCut.
Here is an extract from my code [*].
It does not work, and before starting creating 1 Int_t branch (with 0=failing, 1=passing) per trigger path of interest in the input tree, I was wondering if there is any way to proceed like this.
Thanks in advance for your answer!
Best,
Nadir
[*]
// Input variables
RooRealVar xaxis("metnomu","PFMETNoMu [GeV]",0,500);
RooRealVar pfMhtNoMu("mhtnomu","PFMHTNoMu [GeV]",0,5000);
// Trigger matching
RooCategory *category = new RooCategory("trig_pass.Contains('HLT')","");
category->defineType("accept",1) ;
category->defineType("reject",0) ;
// Input dataset
RooDataSet dataSet("data","data from tree",
RooArgSet(xaxis, *category, pfMhtNoMu),
Import(*_tree), Cut("mhtnomu>=0") );
dataSet.Print();
// PLOT EFFICIENCY //
Int_t color=kRed;
Int_t style=kOpenCircle;
RooPlot* frame = xaxis.frame(Bins(18000),Title("Fitted efficiency")) ;
dataSet.plotOn(frame, Binning(binning), Efficiency(*category), MarkerColor(color), LineColor(color), MarkerStyle(style) );