CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/DQMOffline/RecoB/interface/EffPurFromHistos.h

Go to the documentation of this file.
00001 #ifndef EffPurFromHistos_H
00002 #define EffPurFromHistos_H
00003 
00004 #include "DQMOffline/RecoB/interface/FlavourHistorgrams.h"
00005 #include "DQMOffline/RecoB/interface/HistoProviderDQM.h"
00006 
00007 #include "TH1F.h"
00008 #include "TCanvas.h"
00009 
00010 #include <string>
00011 
00012 //class DQMStore;
00013 
00014 class EffPurFromHistos {
00015 
00016 
00017  public:
00018 
00019   EffPurFromHistos ( const std::string & ext, TH1F * h_d, TH1F * h_u,
00020         TH1F * h_s, TH1F * h_c, TH1F * h_b, TH1F * h_g, TH1F * h_ni,
00021                      TH1F * h_dus, TH1F * h_dusg, const std::string& label, const bool& mc,
00022         int nBin = 100 , double startO = 0.005 , double endO = 1.005 ) ;
00023         // defaults reasonable for lifetime based tags
00024 
00025   EffPurFromHistos (const FlavourHistograms<double> * dDiscriminatorFC, const std::string& label, const bool& mc,
00026         int nBin = 100 , double startO = 0.005 , double endO = 1.005 ) ;
00027         // defaults reasonable for lifetime based tags
00028 
00029   ~EffPurFromHistos () ;
00030 
00031   // do the computation
00032   void compute () ;
00033 
00034   // return the newly created histos
00035   TH1F * getEffFlavVsBEff_d    () { 
00036     return EffFlavVsBEff_d->getTH1F()    ; };
00037   TH1F * getEffFlavVsBEff_u    () { return EffFlavVsBEff_u->getTH1F()    ; };
00038   TH1F * getEffFlavVsBEff_s    () { return EffFlavVsBEff_s ->getTH1F()   ; };
00039   TH1F * getEffFlavVsBEff_c    () { return EffFlavVsBEff_c ->getTH1F()   ; };
00040   TH1F * getEffFlavVsBEff_b    () { return EffFlavVsBEff_b ->getTH1F()   ; };
00041   TH1F * getEffFlavVsBEff_g    () { return EffFlavVsBEff_g ->getTH1F()   ; };
00042   TH1F * getEffFlavVsBEff_ni   () { return EffFlavVsBEff_ni ->getTH1F()  ; };
00043   TH1F * getEffFlavVsBEff_dus  () { return EffFlavVsBEff_dus ->getTH1F() ; };
00044   TH1F * getEffFlavVsBEff_dusg () { return EffFlavVsBEff_dusg ->getTH1F(); };
00045 
00046  
00047 
00048   void epsPlot(const std::string & name);
00049 
00050   void psPlot(const std::string & name);
00051 
00052   void plot(TPad * theCanvas = 0) ;
00053 
00054   void plot(const std::string & name, const std::string & ext);
00055 
00056 //   void print () const ;
00057 
00058   FlavourHistograms<double> * discriminatorNoCutEffic() const {return discrNoCutEffic;}
00059   FlavourHistograms<double> * discriminatorCutEfficScan() const {return discrCutEfficScan;}
00060 
00061  private:
00062 
00063 
00064   // consistency check (same binning)
00065   void check () ;
00066   bool fromDiscriminatorDistr;
00067 
00068 
00069   // the string for the histo name extension
00070   std::string histoExtension ;
00071 
00072   FlavourHistograms<double> * discrNoCutEffic, *discrCutEfficScan;
00073 
00074   // the input histograms (efficiency versus discriminator cut)
00075   // IMPORTANT: IT'S ASSUMED THAT ALL HISTOS HAVE THE SAME BINNING!!
00076   // (can in principle be relaxed by checking explicitely for the discriminator value
00077   //  instead of bin index)
00078   TH1F * effVersusDiscr_d    ;
00079   TH1F * effVersusDiscr_u    ;
00080   TH1F * effVersusDiscr_s    ;
00081   TH1F * effVersusDiscr_c    ;
00082   TH1F * effVersusDiscr_b    ;
00083   TH1F * effVersusDiscr_g    ;
00084   TH1F * effVersusDiscr_ni   ;
00085   TH1F * effVersusDiscr_dus  ;
00086   TH1F * effVersusDiscr_dusg ;
00087 
00088 
00089   // the corresponding output histograms (flavour-eff vs. b-efficiency)
00090 
00091   // binning for output histograms
00092   int   nBinOutput ;
00093   double startOutput ;
00094   double endOutput ;
00095 
00096   bool mcPlots_;
00097 
00098 
00099   MonitorElement * EffFlavVsBEff_d    ;
00100   MonitorElement * EffFlavVsBEff_u    ;
00101   MonitorElement * EffFlavVsBEff_s    ;
00102   MonitorElement * EffFlavVsBEff_c    ;
00103   MonitorElement * EffFlavVsBEff_b    ;
00104   MonitorElement * EffFlavVsBEff_g    ;
00105   MonitorElement * EffFlavVsBEff_ni   ;
00106   MonitorElement * EffFlavVsBEff_dus  ;
00107   MonitorElement * EffFlavVsBEff_dusg ;
00108 
00109   //  DQMStore * dqmStore_; 
00110   std::string label_;
00111 
00112 } ;
00113 
00114 #endif