6 #include "TGraphErrors.h"
33 virtual void endJob()
override ;
59 std::map<std::string,TH2D*>
h2_;
72 jetToken_(consumes<edm::
View<pat::
Jet> >(iConfig.getUntrackedParameter<edm::
InputTag>(
"jetTag"))),
73 PatBjet_(iConfig.getParameter< edm::
ParameterSet >(
"BjetTag")),
74 BTagpurity_(PatBjet_.getParameter<std::
string>(
"purity")),
75 BTagmethod_(PatBjet_.getUntrackedParameter<std::
string>(
"tagger",
"TC2")),
76 BTagdiscriminator_(PatBjet_.getParameter<std::
string>(
"discriminator")),
77 BTagverbose(PatBjet_.getUntrackedParameter<bool>(
"verbose",
false)),
78 BTagdisccut_(PatBjet_.getUntrackedParameter<double>(
"mindiscriminatorcut",5.0)),
79 BTagdiscmax_(PatBjet_.getUntrackedParameter<double>(
"maxdiscriminatorcut",15.0)),
80 BTagger(iConfig.getParameter< edm::
ParameterSet >(
"BJetOperatingPoints")),
81 BTagHistograms(iConfig)
112 int flavor = jet_iter->partonFlavour();
115 if( jet_iter->correctedJet(
"raw").pt() > 10 &&
116 fabs(jet_iter->eta()) < 2.4 ) {
127 if ((-4 < flavor && flavor < 4 && flavor != 0 )||(flavor == 21 || flavor == -21 ))
143 TString suffix1=
"_test";
146 for (
int i=0;
i < 10;
i++){
152 histocontainer_[
"njets"]=fs->
make<TH1D>(
"njets",
"jet multiplicity for jets with p_{T} > 50 GeV/c",10,0,10);
201 for(
int i=1;
i<10;
i++){
228 for (
int i=1;
i<10;
i++){
255 TGraphErrors *BTagger_c =
new TGraphErrors(
BTagPerf[0].GetN(),
257 BTagPerf[0].GetArray(
"bErr").GetArray(),
BTagPerf[0].GetArray(
"cErr").GetArray());
259 TGraphErrors *BTagger_udsg =
new TGraphErrors(
BTagPerf[0].GetN(),
260 BTagPerf[0].GetArray(
"b").GetArray(),
BTagPerf[0].GetArray(
"udsg").GetArray(),
261 BTagPerf[0].GetArray(
"bErr").GetArray(),
BTagPerf[0].GetArray(
"udsgErr").GetArray());
262 TGraph *discBTagger_udsg =
new TGraph(
BTagPerf[0].GetN(),
263 BTagPerf[0].GetArray(
"udsg").GetArray(),
264 BTagPerf[0].GetArray(
"discriminator").GetArray());
266 BTagger_b->SetName(
bname[0].c_str());
267 BTagger_c->SetName(
cname[0].c_str());
268 BTagger_udsg->SetName(
udsgname[0].c_str());
269 discBTagger_udsg->SetName(
discname[0].c_str());
271 BTagger_b->SetTitle(
"Jet b-efficiency");
272 BTagger_c->SetTitle(
"Jet c-mistagging");
273 BTagger_udsg->SetTitle(
"Jet udsg-mistagging");
274 discBTagger_udsg->SetTitle(
"discriminator vs udsg-mistagging");
277 for (
int i=1;
i<10;
i++){
286 BTagger_udsg->Write();
287 discBTagger_udsg->Write();
void Fill(edm::View< pat::Jet >::const_iterator &, std::string)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
T * make(const Args &...args) const
make new ROOT object
std::map< std::string, TGraphErrors * > grapherrorscontainer_
PatBTagCommonHistos BTagHistograms
std::map< int, std::string > udsgname
Abs< T >::type abs(const T &t)
T * make(const Args &...args) const
make new ROOT object
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
virtual void endJob() override
std::string BTagdiscriminator_
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
std::map< std::string, TGraph * > graphcontainer_
virtual void beginJob() override
BTagPerformance BTagPerf[10]
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
std::map< std::string, TH1D * > histocontainer_
std::map< std::string, TH2D * > h2_
volatile std::atomic< bool > shutdown_flag false
edm::EDGetTokenT< edm::View< pat::Jet > > jetToken_
PatBTagAnalyzer(const edm::ParameterSet &)
edm::ParameterSet PatBjet_