CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
PatBTagAnalyzer Class Reference
Inheritance diagram for PatBTagAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 PatBTagAnalyzer (const edm::ParameterSet &)
 
 ~PatBTagAnalyzer ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &) override
 
virtual void beginJob () override
 
virtual void endJob () override
 

Private Attributes

std::string bname [10]
 
double BTagdisccut_
 
double BTagdiscmax_
 
std::string BTagdiscriminator_
 
bJetSelector BTagger
 
PatBTagCommonHistos BTagHistograms
 
std::string BTagmethod_
 
BTagPerformance BTagPerf [10]
 
std::string BTagpurity_
 
bool BTagverbose
 
std::string cname [10]
 
std::string discname [10]
 
std::map< std::string, TGraph * > graphcontainer_
 
std::map< std::string,
TGraphErrors * > 
grapherrorscontainer_
 
std::map< std::string, TH2D * > h2_
 
std::map< std::string, TH1D * > histocontainer_
 
edm::EDGetTokenT< edm::View
< pat::Jet > > 
jetToken_
 
edm::ParameterSet PatBjet_
 
std::map< int, std::string > udsgname
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 22 of file PatBTagAnalyzer.cc.

Constructor & Destructor Documentation

PatBTagAnalyzer::PatBTagAnalyzer ( const edm::ParameterSet iConfig)
explicit

Definition at line 71 of file PatBTagAnalyzer.cc.

71  :
73  PatBjet_(iConfig.getParameter< edm::ParameterSet >("BjetTag")),
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)
82 {
83  //now do what ever initialization is needed
84 }
bJetSelector BTagger
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::string BTagmethod_
PatBTagCommonHistos BTagHistograms
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::string BTagpurity_
std::string BTagdiscriminator_
edm::EDGetTokenT< edm::View< pat::Jet > > jetToken_
edm::ParameterSet PatBjet_
PatBTagAnalyzer::~PatBTagAnalyzer ( )

Definition at line 87 of file PatBTagAnalyzer.cc.

88 {
89 
90  // do anything here that needs to be done at desctruction time
91  // (e.g. close files, deallocate resources etc.)
92 
93 }

Member Function Documentation

void PatBTagAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::EDAnalyzer.

Definition at line 97 of file PatBTagAnalyzer.cc.

References funct::abs(), BTagPerformance::Add(), BTagdiscriminator_, BTagHistograms, BTagPerf, PatBTagCommonHistos::Fill(), edm::Event::getByToken(), fwrapper::jets, and jetToken_.

98 {
99  using namespace edm;
100 
101  // first: get all objects from the event.
102 
104  iEvent.getByToken(jetToken_,jetHandle);
105  edm::View<pat::Jet> jets = *jetHandle; // get JETS
106 
107  // LOOP over all jets
108 
109  for(edm::View<pat::Jet>::const_iterator jet_iter = jets.begin(); jet_iter!=jets.end(); ++jet_iter){
110 
111  float bdiscriminator = jet_iter->bDiscriminator(BTagdiscriminator_);
112  int flavor = jet_iter->partonFlavour();
113  //
114  // Fill in for performance standard pt(uncorrected) >10 and abs(eta)<2.4
115  if( jet_iter->correctedJet("raw").pt() > 10 &&
116  fabs(jet_iter->eta()) < 2.4 ) {
117 
118  BTagPerf[0].Add(bdiscriminator,abs(flavor));
119 
120  }
121 
122  //Fill histograms
123  BTagHistograms.Fill(jet_iter,"all");
124  if (flavor == 0 ) BTagHistograms.Fill(jet_iter,"no_flavor");
125  if (flavor == 5 || flavor == -5 ) BTagHistograms.Fill(jet_iter,"b");
126  if (flavor == 4 || flavor == -4 ) BTagHistograms.Fill(jet_iter,"c");
127  if ((-4 < flavor && flavor < 4 && flavor != 0 )||(flavor == 21 || flavor == -21 ))
128  BTagHistograms.Fill(jet_iter,"udsg");
129 
130 
131  }//end loop over jets
132 
133 }
void Fill(edm::View< pat::Jet >::const_iterator &, std::string)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
PatBTagCommonHistos BTagHistograms
vector< PseudoJet > jets
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string BTagdiscriminator_
BTagPerformance BTagPerf[10]
void Add(double discriminator, int flavor)
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:85
edm::EDGetTokenT< edm::View< pat::Jet > > jetToken_
void PatBTagAnalyzer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 136 of file PatBTagAnalyzer.cc.

References bname, BTagdisccut_, BTagdiscmax_, BTagHistograms, BTagmethod_, BTagPerf, cname, discname, BTagPerformance::GetN(), graphcontainer_, grapherrorscontainer_, histocontainer_, i, TFileService::make(), BTagPerformance::Set(), PatBTagCommonHistos::Set(), BTagPerformance::SetMaxDiscriminator(), BTagPerformance::SetMinDiscriminator(), PatBTagCommonHistos::Sumw2(), and udsgname.

137 {
138  //
139  // define some histograms using the framework tfileservice. Define the output file name in your .cfg.
140  //
142 
143  TString suffix1="_test";
144 
145  //set performance variables collector
146  for (int i=0; i < 10; i++){
150  }
151 
152  histocontainer_["njets"]=fs->make<TH1D>("njets","jet multiplicity for jets with p_{T} > 50 GeV/c",10,0,10);
153 // Std. 30 pt uncorr cut for performance
154  discname[0]="disc"+BTagmethod_+"_udsg";
155  bname[0] ="g"+BTagmethod_+"_b";
156  cname[0] ="g"+BTagmethod_+"_c";
157  udsgname[0]="g"+BTagmethod_+"_udsg";
158 
159 // 10 pt uncorr for performance + all,>0,>1,>2 tracks
160  discname[1]="Uncor10_disc"+BTagmethod_+"_udsg";
161  bname[1] ="Uncor10_g"+BTagmethod_+"_b";
162  cname[1] ="Uncor10_g"+BTagmethod_+"_c";
163  udsgname[1]="Uncor10_g"+BTagmethod_+"_udsg";
164  discname[2]="Uncor10t0_disc"+BTagmethod_+"_udsg";
165  bname[2] ="Uncor10t0_g"+BTagmethod_+"_b";
166  cname[2] ="Uncor10t0_g"+BTagmethod_+"_c";
167  udsgname[2]="Uncor10t0_g"+BTagmethod_+"_udsg";
168  discname[3]="Uncor10t1_disc"+BTagmethod_+"_udsg";
169  bname[3] ="Uncor10t1_g"+BTagmethod_+"_b";
170  cname[3] ="Uncor10t1_g"+BTagmethod_+"_c";
171  udsgname[3]="Uncor10t1_g"+BTagmethod_+"_udsg";
172  discname[4]="Uncor10t2_disc"+BTagmethod_+"_udsg";
173  bname[4] ="Uncor10t2_g"+BTagmethod_+"_b";
174  cname[4] ="Uncor10t2_g"+BTagmethod_+"_c";
175  udsgname[4]="Uncor10t2_g"+BTagmethod_+"_udsg";
176 
177 // 30 pt corr for performance + all,>0,>1,>2 tracks
178  discname[5]="Corr30_disc"+BTagmethod_+"_udsg";
179  bname[5] ="Corr30_g"+BTagmethod_+"_b";
180  cname[5] ="Corr30_g"+BTagmethod_+"_c";
181  udsgname[5]="Corr30_g"+BTagmethod_+"_udsg";
182  discname[6]="Corr30t0_disc"+BTagmethod_+"_udsg";
183  bname[6] ="Corr30t0_g"+BTagmethod_+"_b";
184  cname[6] ="Corr30t0_g"+BTagmethod_+"_c";
185  udsgname[6]="Corr30t0_g"+BTagmethod_+"_udsg";
186  discname[7]="Corr30t1_disc"+BTagmethod_+"_udsg";
187  bname[7] ="Corr30t1_g"+BTagmethod_+"_b";
188  cname[7] ="Corr30t1_g"+BTagmethod_+"_c";
189  udsgname[7]="Corr30t1_g"+BTagmethod_+"_udsg";
190  discname[8]="Corr30t2_disc"+BTagmethod_+"_udsg";
191  bname[8] ="Corr30t2_g"+BTagmethod_+"_b";
192  cname[8] ="Corr30t2_g"+BTagmethod_+"_c";
193  udsgname[8]="Corr30t2_g"+BTagmethod_+"_udsg";
194 
195 // check filter
196  discname[9]="check_disc"+BTagmethod_+"_udsg";
197  bname[9] ="check_g"+BTagmethod_+"_b";
198  cname[9] ="check_g"+BTagmethod_+"_c";
199  udsgname[9]="check_g"+BTagmethod_+"_udsg";
200 
201  for(int i=1; i<10;i++){
202  graphcontainer_[discname[i]] =fs->make<TGraph>(BTagPerf[i].GetN()); graphcontainer_[discname[i]]->SetName(discname[i].c_str());
203  grapherrorscontainer_[bname[i]] =fs->make<TGraphErrors>(BTagPerf[i].GetN()); grapherrorscontainer_[bname[i]] ->SetName(bname[i].c_str());
204  grapherrorscontainer_[cname[i]] =fs->make<TGraphErrors>(BTagPerf[i].GetN()); grapherrorscontainer_[cname[i]] ->SetName(cname[i].c_str());
205  grapherrorscontainer_[udsgname[i]]=fs->make<TGraphErrors>(BTagPerf[i].GetN()); grapherrorscontainer_[udsgname[i]]->SetName(udsgname[i].c_str());
206  }
207  //Define histograms
208  BTagHistograms.Set("all");
209  BTagHistograms.Set("no_flavor");
210  BTagHistograms.Set("b");
211  BTagHistograms.Set("c");
212  BTagHistograms.Set("udsg");
213 
214  // Set to save histogram errors
216 
217 }
int i
Definition: DBlmapReader.cc:9
void SetMaxDiscriminator(double value)
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
std::map< std::string, TGraphErrors * > grapherrorscontainer_
std::string BTagmethod_
PatBTagCommonHistos BTagHistograms
std::map< int, std::string > udsgname
void Set(std::string name)
std::string cname[10]
std::string discname[10]
std::map< std::string, TGraph * > graphcontainer_
BTagPerformance BTagPerf[10]
std::map< std::string, TH1D * > histocontainer_
std::string bname[10]
void SetMinDiscriminator(double value)
void PatBTagAnalyzer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 221 of file PatBTagAnalyzer.cc.

References bname, BTagmethod_, BTagPerf, cname, discname, BTagPerformance::Eval(), BTagPerformance::GetArray(), BTagPerformance::GetN(), graphcontainer_, grapherrorscontainer_, i, TFileDirectory::make(), TFileService::mkdir(), gen::n, and udsgname.

221  {
222 //ed++
224 
225 // Save performance plots as Tgraphs
226 
227 
228  for (int i=1;i<10;i++){
229  BTagPerf[i].Eval();
230  for (int n=0; n<BTagPerf[i].GetN(); n++ ){
231  graphcontainer_[discname[i]] ->SetPoint(n,BTagPerf[i].GetArray("udsg")[n],BTagPerf[i].GetArray("discriminator")[n]);
232  grapherrorscontainer_[bname[i]] ->SetPoint(n,BTagPerf[i].GetArray("b")[n],BTagPerf[i].GetArray("b")[n]);
233  grapherrorscontainer_[cname[i]] ->SetPoint(n,BTagPerf[i].GetArray("b")[n],BTagPerf[i].GetArray("c")[n]);
234  grapherrorscontainer_[udsgname[i]] ->SetPoint(n,BTagPerf[i].GetArray("b")[n],BTagPerf[i].GetArray("udsg")[n]);
235  grapherrorscontainer_[bname[i]] ->SetPointError(n,BTagPerf[i].GetArray("bErr")[n],BTagPerf[i].GetArray("bErr")[n]);
236  grapherrorscontainer_[cname[i]] ->SetPointError(n,BTagPerf[i].GetArray("bErr")[n],BTagPerf[i].GetArray("cErr")[n]);
237  grapherrorscontainer_[udsgname[i]] ->SetPointError(n,BTagPerf[i].GetArray("bErr")[n],BTagPerf[i].GetArray("udsgErr")[n]);
238  }//end for over BTagPerf[i] elements
239  graphcontainer_[discname[i]] ->SetTitle("Jet udsg-mistagging");
240  grapherrorscontainer_[bname[i]] ->SetTitle("Jet b-efficiency");
241  grapherrorscontainer_[cname[i]] ->SetTitle("Jet c-mistagging");
242  grapherrorscontainer_[udsgname[i]]->SetTitle("discriminator vs udsg-mistagging");
243  }//end for over [i]
244 
245 
246 // Save default cut performance plot
247  BTagPerf[0].Eval();
248 
249 // TFileDirectory TaggerDir = fs->mkdir(BTagmethod_);
250 // TGraphErrors *BTagger_b = new TGraphErrors(BTagTool.GetN(),
251  TGraphErrors *BTagger_b = fs->mkdir(BTagmethod_).make<TGraphErrors>(BTagPerf[0].GetN(),
252  BTagPerf[0].GetArray("b").GetArray(),BTagPerf[0].GetArray("b").GetArray(),
253  BTagPerf[0].GetArray("bErr").GetArray(),BTagPerf[0].GetArray("bErr").GetArray());
254 
255  TGraphErrors *BTagger_c = new TGraphErrors(BTagPerf[0].GetN(),
256  BTagPerf[0].GetArray("b").GetArray(),BTagPerf[0].GetArray("c").GetArray(),
257  BTagPerf[0].GetArray("bErr").GetArray(),BTagPerf[0].GetArray("cErr").GetArray());
258 
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());
265 
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());
270 
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");
275 
276 
277  for (int i=1;i<10;i++){
278  graphcontainer_[discname[i]] ->Write();
279  grapherrorscontainer_[bname[i]] ->Write();
280  grapherrorscontainer_[cname[i]] ->Write();
281  grapherrorscontainer_[udsgname[i]]->Write();
282  }
283 
284  BTagger_b->Write();
285  BTagger_c->Write();
286  BTagger_udsg->Write();
287  discBTagger_udsg->Write();
288 
289 
290 }
int i
Definition: DBlmapReader.cc:9
std::map< std::string, TGraphErrors * > grapherrorscontainer_
std::string BTagmethod_
std::map< int, std::string > udsgname
TArrayD GetArray(TString option="b")
T * make(const Args &...args) const
make new ROOT object
TFileDirectory mkdir(const std::string &dir, const std::string &descr="")
create a new subdirectory
Definition: TFileService.h:69
std::string cname[10]
std::string discname[10]
std::map< std::string, TGraph * > graphcontainer_
BTagPerformance BTagPerf[10]
std::string bname[10]

Member Data Documentation

std::string PatBTagAnalyzer::bname[10]
private

Definition at line 49 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

double PatBTagAnalyzer::BTagdisccut_
private

Definition at line 44 of file PatBTagAnalyzer.cc.

Referenced by beginJob().

double PatBTagAnalyzer::BTagdiscmax_
private

Definition at line 45 of file PatBTagAnalyzer.cc.

Referenced by beginJob().

std::string PatBTagAnalyzer::BTagdiscriminator_
private

Definition at line 41 of file PatBTagAnalyzer.cc.

Referenced by analyze().

bJetSelector PatBTagAnalyzer::BTagger
private

Definition at line 67 of file PatBTagAnalyzer.cc.

PatBTagCommonHistos PatBTagAnalyzer::BTagHistograms
private

Definition at line 68 of file PatBTagAnalyzer.cc.

Referenced by analyze(), and beginJob().

std::string PatBTagAnalyzer::BTagmethod_
private

Definition at line 40 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

BTagPerformance PatBTagAnalyzer::BTagPerf[10]
private

Definition at line 51 of file PatBTagAnalyzer.cc.

Referenced by analyze(), beginJob(), and endJob().

std::string PatBTagAnalyzer::BTagpurity_
private

Definition at line 39 of file PatBTagAnalyzer.cc.

bool PatBTagAnalyzer::BTagverbose
private

Definition at line 43 of file PatBTagAnalyzer.cc.

std::string PatBTagAnalyzer::cname[10]
private

Definition at line 50 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

std::string PatBTagAnalyzer::discname[10]
private

Definition at line 48 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

std::map<std::string,TGraph*> PatBTagAnalyzer::graphcontainer_
private

simple map to contain all graphs; graphs are booked in beginJob()

Definition at line 62 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

std::map<std::string,TGraphErrors*> PatBTagAnalyzer::grapherrorscontainer_
private

simple map to contain all graphs; graphs are booked in beginJob()

Definition at line 65 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().

std::map<std::string,TH2D*> PatBTagAnalyzer::h2_
private

simple map to contain 2D histograms; histograms are booked in beginJob()

Definition at line 59 of file PatBTagAnalyzer.cc.

std::map<std::string,TH1D*> PatBTagAnalyzer::histocontainer_
private

simple map to contain all histograms; histograms are booked in beginJob()

Definition at line 56 of file PatBTagAnalyzer.cc.

Referenced by beginJob().

edm::EDGetTokenT<edm::View<pat::Jet> > PatBTagAnalyzer::jetToken_
private

Definition at line 36 of file PatBTagAnalyzer.cc.

Referenced by analyze().

edm::ParameterSet PatBTagAnalyzer::PatBjet_
private

Definition at line 37 of file PatBTagAnalyzer.cc.

std::map<int,std::string> PatBTagAnalyzer::udsgname
private

Definition at line 52 of file PatBTagAnalyzer.cc.

Referenced by beginJob(), and endJob().