CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
FlavourHistograms< T > Class Template Reference

#include <FlavourHistorgrams.h>

Inheritance diagram for FlavourHistograms< T >:
TrackIPHistograms< T >

Public Member Functions

int * arrayDimension () const
 
std::string baseNameDescription () const
 
std::string baseNameTitle () const
 
void divide (const FlavourHistograms< T > &bHD) const
 
void epsPlot (const std::string &name)
 
void fill (const int &flavour, const T &variable) const
 
void fill (const int &flavour, const T &variable, const T &w) const
 
void fill (const int &flavour, const T *variable) const
 
 FlavourHistograms (const std::string &baseNameTitle_, const std::string &baseNameDescription_, const int &nBins_, const double &lowerBound_, const double &upperBound_, const bool &statistics_, const bool &plotLog_, const bool &plotNormalized_, const std::string &plotFirst_, const bool &update, const std::string &folder, const unsigned int &mc, DQMStore::IBooker &ibook)
 
std::vector< TH1F * > getHistoVector () const
 
TH1F * histo_all () const
 
TH1F * histo_b () const
 
TH1F * histo_c () const
 
TH1F * histo_d () const
 
TH1F * histo_dus () const
 
TH1F * histo_dusg () const
 
TH1F * histo_g () const
 
TH1F * histo_ni () const
 
TH1F * histo_pu () const
 
TH1F * histo_s () const
 
TH1F * histo_u () const
 
int indexToPlot () const
 
double lowerBound () const
 
int maxDimension () const
 
int nBins () const
 
void plot (TPad *theCanvas=0)
 
std::string plotFirst () const
 
bool plotLog () const
 
bool plotNormalized () const
 
void SetMaximum (const double &max)
 
void SetMinimum (const double &min)
 
void settitle (const char *title)
 
bool statistics () const
 
double upperBound () const
 
virtual ~FlavourHistograms ()
 

Protected Member Functions

void fillVariable (const int &flavour, const T &var, const T &w) const
 

Protected Attributes

int * theArrayDimension
 
std::string theBaseNameDescription
 
std::string theBaseNameTitle
 
TCanvas * theCanvas
 
MonitorElementtheHisto_all
 
MonitorElementtheHisto_b
 
MonitorElementtheHisto_c
 
MonitorElementtheHisto_d
 
MonitorElementtheHisto_dus
 
MonitorElementtheHisto_dusg
 
MonitorElementtheHisto_g
 
MonitorElementtheHisto_ni
 
MonitorElementtheHisto_pu
 
MonitorElementtheHisto_s
 
MonitorElementtheHisto_u
 
int theIndexToPlot
 
double theLowerBound
 
double theMax
 
int theMaxDimension
 
double theMin
 
int theNBins
 
std::string thePlotFirst
 
bool thePlotLog
 
bool thePlotNormalized
 
bool theStatistics
 
double theUpperBound
 

Private Member Functions

 FlavourHistograms ()
 

Private Attributes

unsigned int mcPlots_
 

Detailed Description

template<class T>
class FlavourHistograms< T >

Definition at line 28 of file FlavourHistorgrams.h.

Constructor & Destructor Documentation

template<class T >
FlavourHistograms< T >::FlavourHistograms ( const std::string &  baseNameTitle_,
const std::string &  baseNameDescription_,
const int &  nBins_,
const double &  lowerBound_,
const double &  upperBound_,
const bool &  statistics_,
const bool &  plotLog_,
const bool &  plotNormalized_,
const std::string &  plotFirst_,
const bool &  update,
const std::string &  folder,
const unsigned int &  mc,
DQMStore::IBooker ibook 
)

Definition at line 149 of file FlavourHistorgrams.h.

References HistoProviderDQM::access(), HistoProviderDQM::book1D(), gather_cfg::cout, MonitorElement::getTH1F(), FlavourHistograms< T >::mcPlots_, FlavourHistograms< T >::theArrayDimension, FlavourHistograms< T >::theBaseNameDescription, FlavourHistograms< T >::theBaseNameTitle, FlavourHistograms< T >::theCanvas, FlavourHistograms< T >::theHisto_all, FlavourHistograms< T >::theHisto_b, FlavourHistograms< T >::theHisto_c, FlavourHistograms< T >::theHisto_d, FlavourHistograms< T >::theHisto_dus, FlavourHistograms< T >::theHisto_dusg, FlavourHistograms< T >::theHisto_g, FlavourHistograms< T >::theHisto_ni, FlavourHistograms< T >::theHisto_pu, FlavourHistograms< T >::theHisto_s, FlavourHistograms< T >::theHisto_u, FlavourHistograms< T >::theLowerBound, FlavourHistograms< T >::theNBins, FlavourHistograms< T >::thePlotFirst, FlavourHistograms< T >::theStatistics, and FlavourHistograms< T >::theUpperBound.

153  :
154  // BaseFlavourHistograms () ,
155  // theVariable ( variable_ ) ,
156  theMaxDimension(-1), theIndexToPlot(-1), theBaseNameTitle ( baseNameTitle_ ) , theBaseNameDescription ( baseNameDescription_ ) ,
157  theNBins ( nBins_ ) , theLowerBound ( lowerBound_ ) , theUpperBound ( upperBound_ ) ,
158  theStatistics ( statistics_ ) , thePlotLog ( plotLog_ ) , thePlotNormalized ( plotNormalized_ ) ,
159  thePlotFirst ( plotFirst_ ), theMin(-1.), theMax(-1.), mcPlots_(mc)
160 {
161  // defaults for array dimensions
162  theArrayDimension = 0 ;
163 
164  // check plot order string
165  if ( thePlotFirst == "l" || thePlotFirst == "c" || thePlotFirst == "b" ) {
166  // OK
167  }
168  else {
169  // not correct: print warning and set default (l)
170  std::cout << "FlavourHistograms::FlavourHistograms : thePlotFirst was not correct : " << thePlotFirst << std::endl ;
171  std::cout << "FlavourHistograms::FlavourHistograms : Set it to default value (l)! " << std::endl ;
172  thePlotFirst = "l" ;
173  }
174 
175  if (!update) {
176  // book histos
177  HistoProviderDQM prov("Btag",folder,ibook);
178  if(mcPlots_%2==0) theHisto_all = (prov.book1D( theBaseNameTitle + "ALL" , theBaseNameDescription + " all jets" , theNBins , theLowerBound , theUpperBound )) ;
179  else theHisto_all = 0;
180  if (mcPlots_) {
181  if(mcPlots_>2) {
182  theHisto_d = (prov.book1D ( theBaseNameTitle + "D" , theBaseNameDescription + " d-jets" , theNBins , theLowerBound , theUpperBound )) ;
183  theHisto_u = (prov.book1D ( theBaseNameTitle + "U" , theBaseNameDescription + " u-jets" , theNBins , theLowerBound , theUpperBound )) ;
184  theHisto_s = (prov.book1D ( theBaseNameTitle + "S" , theBaseNameDescription + " s-jets" , theNBins , theLowerBound , theUpperBound )) ;
185  theHisto_g = (prov.book1D ( theBaseNameTitle + "G" , theBaseNameDescription + " g-jets" , theNBins , theLowerBound , theUpperBound )) ;
186  theHisto_dus = (prov.book1D ( theBaseNameTitle + "DUS" , theBaseNameDescription + " dus-jets" , theNBins , theLowerBound , theUpperBound )) ;
187  }
188  else{
189  theHisto_d = 0;
190  theHisto_u = 0;
191  theHisto_s = 0;
192  theHisto_g = 0;
193  theHisto_dus = 0;
194  }
195  theHisto_c = (prov.book1D ( theBaseNameTitle + "C" , theBaseNameDescription + " c-jets" , theNBins , theLowerBound , theUpperBound )) ;
196  theHisto_b = (prov.book1D ( theBaseNameTitle + "B" , theBaseNameDescription + " b-jets" , theNBins , theLowerBound , theUpperBound )) ;
197  theHisto_ni = (prov.book1D ( theBaseNameTitle + "NI" , theBaseNameDescription + " ni-jets" , theNBins , theLowerBound , theUpperBound )) ;
198  theHisto_dusg = (prov.book1D ( theBaseNameTitle + "DUSG" , theBaseNameDescription + " dusg-jets" , theNBins , theLowerBound , theUpperBound )) ;
199  theHisto_pu = (prov.book1D ( theBaseNameTitle + "PU" , theBaseNameDescription + " pu-jets" , theNBins , theLowerBound , theUpperBound )) ;
200  }else{
201  theHisto_d = 0;
202  theHisto_u = 0;
203  theHisto_s = 0;
204  theHisto_c = 0;
205  theHisto_b = 0;
206  theHisto_g = 0;
207  theHisto_ni = 0;
208  theHisto_dus = 0;
209  theHisto_dusg = 0;
210  theHisto_pu = 0;
211  }
212 
213  // statistics if requested
214  if ( theStatistics ) {
215  if(theHisto_all) theHisto_all ->getTH1F()->Sumw2() ;
216  if (mcPlots_ ) {
217  if (mcPlots_>2 ) {
218  theHisto_d ->getTH1F()->Sumw2() ;
219  theHisto_u ->getTH1F()->Sumw2() ;
220  theHisto_s ->getTH1F()->Sumw2() ;
221  theHisto_g ->getTH1F()->Sumw2() ;
222  theHisto_dus ->getTH1F()->Sumw2() ;
223  }
224  theHisto_c ->getTH1F()->Sumw2() ;
225  theHisto_b ->getTH1F()->Sumw2() ;
226  theHisto_ni ->getTH1F()->Sumw2() ;
227  theHisto_dusg->getTH1F()->Sumw2() ;
228  theHisto_pu ->getTH1F()->Sumw2() ;
229  }
230  }
231  } else {
232  //is it useful? anyway access function is deprecated...
233  HistoProviderDQM prov("Btag",folder,ibook);
234  if(theHisto_all) theHisto_all = prov.access(theBaseNameTitle + "ALL" ) ;
235  if (mcPlots_) {
236  if (mcPlots_>2 ) {
237  theHisto_d = prov.access(theBaseNameTitle + "D" ) ;
238  theHisto_u = prov.access(theBaseNameTitle + "U" ) ;
239  theHisto_s = prov.access(theBaseNameTitle + "S" ) ;
240  theHisto_g = prov.access(theBaseNameTitle + "G" ) ;
241  theHisto_dus = prov.access(theBaseNameTitle + "DUS" ) ;
242  }
243  theHisto_c = prov.access(theBaseNameTitle + "C" ) ;
244  theHisto_b = prov.access(theBaseNameTitle + "B" ) ;
245  theHisto_ni = prov.access(theBaseNameTitle + "NI" ) ;
246  theHisto_dusg = prov.access(theBaseNameTitle + "DUSG") ;
247  theHisto_pu = prov.access(theBaseNameTitle + "PU") ;
248  }
249  }
250 
251  // defaults for other data members
252  theCanvas = 0 ;
253 }
MonitorElement * theHisto_g
MonitorElement * theHisto_c
MonitorElement * theHisto_u
MonitorElement * theHisto_all
MonitorElement * theHisto_pu
MonitorElement * theHisto_d
MonitorElement * theHisto_dusg
std::string theBaseNameDescription
TH1F * getTH1F(void) const
MonitorElement * theHisto_b
std::string theBaseNameTitle
#define update(a, b)
tuple cout
Definition: gather_cfg.py:121
MonitorElement * theHisto_s
MonitorElement * theHisto_dus
MonitorElement * theHisto_ni
template<class T >
FlavourHistograms< T >::~FlavourHistograms ( )
virtual

Definition at line 257 of file FlavourHistorgrams.h.

257  {
258  // delete the canvas*/
259  delete theCanvas ;
260 }
template<class T>
FlavourHistograms< T >::FlavourHistograms ( )
inlineprivate

Definition at line 142 of file FlavourHistorgrams.h.

142 {}

Member Function Documentation

template<class T>
int* FlavourHistograms< T >::arrayDimension ( ) const
inline

Definition at line 77 of file FlavourHistorgrams.h.

Referenced by TrackIPHistograms< T >::fill().

77 { return theArrayDimension; }
template<class T>
std::string FlavourHistograms< T >::baseNameDescription ( ) const
inline

Definition at line 69 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

69 { return theBaseNameDescription ; }
std::string theBaseNameDescription
template<class T>
std::string FlavourHistograms< T >::baseNameTitle ( ) const
inline

Definition at line 68 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

68 { return theBaseNameTitle ; }
std::string theBaseNameTitle
template<class T>
void FlavourHistograms< T >::divide ( const FlavourHistograms< T > &  bHD) const

Definition at line 484 of file FlavourHistorgrams.h.

References MultipleCompare::Divide(), getTH1F(), FlavourHistograms< T >::histo_all(), FlavourHistograms< T >::histo_b(), FlavourHistograms< T >::histo_c(), FlavourHistograms< T >::histo_d(), FlavourHistograms< T >::histo_dus(), FlavourHistograms< T >::histo_dusg(), FlavourHistograms< T >::histo_g(), FlavourHistograms< T >::histo_ni(), FlavourHistograms< T >::histo_pu(), FlavourHistograms< T >::histo_s(), and FlavourHistograms< T >::histo_u().

Referenced by python.rootplot.utilities.Hist::__div__(), cuy.FindIssue::__init__(), and EffPurFromHistos::EffPurFromHistos().

484  {
485  // divide histos using binomial errors
486  //
487  // ATTENTION: It's the responsability of the user to make sure that the HistoDescriptions
488  // involved in this operation have been constructed with the statistics option switched on!!
489  //
490  if(theHisto_all) theHisto_all ->getTH1F()-> Divide ( theHisto_all->getTH1F() , bHD.histo_all () , 1.0 , 1.0 , "b" ) ;
491  if (mcPlots_) {
492  if (mcPlots_>2 ) {
493  theHisto_d ->getTH1F()-> Divide ( theHisto_d ->getTH1F() , bHD.histo_d () , 1.0 , 1.0 , "b" ) ;
494  theHisto_u ->getTH1F()-> Divide ( theHisto_u ->getTH1F() , bHD.histo_u () , 1.0 , 1.0 , "b" ) ;
495  theHisto_s ->getTH1F()-> Divide ( theHisto_s ->getTH1F() , bHD.histo_s () , 1.0 , 1.0 , "b" ) ;
496  theHisto_g ->getTH1F()-> Divide ( theHisto_g ->getTH1F() , bHD.histo_g () , 1.0 , 1.0 , "b" ) ;
497  theHisto_dus ->getTH1F()-> Divide ( theHisto_dus->getTH1F() , bHD.histo_dus () , 1.0 , 1.0 , "b" ) ;
498  }
499  theHisto_c ->getTH1F()-> Divide ( theHisto_c ->getTH1F() , bHD.histo_c () , 1.0 , 1.0 , "b" ) ;
500  theHisto_b ->getTH1F()-> Divide ( theHisto_b ->getTH1F() , bHD.histo_b () , 1.0 , 1.0 , "b" ) ;
501  theHisto_ni ->getTH1F()-> Divide ( theHisto_ni->getTH1F() , bHD.histo_ni () , 1.0 , 1.0 , "b" ) ;
502  theHisto_dusg ->getTH1F()-> Divide ( theHisto_dusg->getTH1F() , bHD.histo_dusg() , 1.0 , 1.0 , "b" ) ;
503  theHisto_pu ->getTH1F()-> Divide ( theHisto_pu->getTH1F() , bHD.histo_pu() , 1.0 , 1.0 , "b" ) ;
504  }
505 }
MonitorElement * theHisto_g
MonitorElement * theHisto_c
TH1F * histo_all() const
MonitorElement * theHisto_u
TH1F * histo_c() const
MonitorElement * theHisto_all
TH1F * histo_dus() const
TH1F * histo_b() const
TH1F * histo_g() const
MonitorElement * theHisto_pu
TH1F * histo_d() const
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
MonitorElement * theHisto_d
MonitorElement * theHisto_dusg
TH1F * getTH1F(void) const
MonitorElement * theHisto_b
TH1F * histo_s() const
TH1F * histo_ni() const
TH1F * histo_u() const
MonitorElement * theHisto_s
TH1F * histo_dusg() const
MonitorElement * theHisto_dus
TH1F * histo_pu() const
MonitorElement * theHisto_ni
template<class T >
void FlavourHistograms< T >::epsPlot ( const std::string &  name)
template<class T>
void FlavourHistograms< T >::fill ( const int &  flavour,
const T variable 
) const

Definition at line 274 of file FlavourHistorgrams.h.

Referenced by SoftLeptonTagPlotter::analyzeTag(), TrackCountingTagPlotter::analyzeTag(), TrackIPTagPlotter::analyzeTag(), JetTagPlotter::analyzeTag(), and TrackIPHistograms< T >::fill().

275 {
276  // For single variables and arrays (for arrays only a single index can be filled)
277  fillVariable ( flavour , variable, 1.) ;
278 }
void fillVariable(const int &flavour, const T &var, const T &w) const
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
template<class T>
void FlavourHistograms< T >::fill ( const int &  flavour,
const T variable,
const T w 
) const

Definition at line 281 of file FlavourHistorgrams.h.

282 {
283  // For single variables and arrays (for arrays only a single index can be filled)
284  fillVariable ( flavour , variable, w) ;
285 }
const double w
Definition: UKUtility.cc:23
void fillVariable(const int &flavour, const T &var, const T &w) const
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
template<class T>
void FlavourHistograms< T >::fill ( const int &  flavour,
const T variable 
) const

Definition at line 288 of file FlavourHistorgrams.h.

References i.

289 {
290  if ( theArrayDimension == 0 ) {
291  // single variable
292  fillVariable ( flavour , *variable, 1.) ;
293  } else {
294  // array
296  //
297  for ( int i = 0 ; i != iMax ; ++i ) {
298  // check if only one index to be plotted (<0: switched off -> plot all)
299  if ( ( theIndexToPlot < 0 ) || ( i == theIndexToPlot ) ) {
300  fillVariable ( flavour , *(variable+i) , 1.) ;
301  }
302  }
303 
304  // if single index to be filled but not enough entries: fill 0.0 (convention!)
305  if ( theIndexToPlot >= iMax ) {
306  // cout << "==>> The index to be filled is too big -> fill 0.0 : " << theBaseNameTitle << " : " << theIndexToPlot << " >= " << iMax << endl ;
307  const T& theZero = static_cast<T> ( 0.0 ) ;
308  fillVariable ( flavour , theZero , 1.) ;
309  }
310  }
311 }
int i
Definition: DBlmapReader.cc:9
void fillVariable(const int &flavour, const T &var, const T &w) const
long double T
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
template<class T>
void FlavourHistograms< T >::fillVariable ( const int &  flavour,
const T var,
const T w 
) const
protected

Definition at line 509 of file FlavourHistorgrams.h.

509  {
510 
511  // all, except for the Jet Multiplicity which is not filled for each jets but for each events
512  if( (theBaseNameDescription != "Jet Multiplicity" || flavour == -1) && theHisto_all) theHisto_all->Fill ( var ,w) ;
513 
514  // flavour specific
515  if (!mcPlots_ || (theBaseNameDescription == "Jet Multiplicity" && flavour == -1)) return;
516 
517  switch(flavour) {
518  case 1:
519  if (mcPlots_>2 ) {
520  theHisto_d->Fill( var ,w);
521  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dus->Fill( var ,w);
522  }
523  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dusg->Fill( var ,w);
524  return;
525  case 2:
526  if (mcPlots_>2 ) {
527  theHisto_u->Fill( var ,w);
528  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dus->Fill( var ,w);
529  }
530  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dusg->Fill( var ,w);
531  return;
532  case 3:
533  if (mcPlots_>2 ) {
534  theHisto_s->Fill( var ,w);
535  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dus->Fill( var ,w);
536  }
537  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dusg->Fill( var ,w);
538  return;
539  case 4:
540  theHisto_c->Fill( var ,w);
541  return;
542  case 5:
543  theHisto_b->Fill( var ,w);
544  return;
545  case 21:
546  if (mcPlots_>2 ) theHisto_g->Fill( var ,w);
547  if(theBaseNameDescription != "Jet Multiplicity") theHisto_dusg->Fill( var ,w);
548  return;
549  case 123:
550  if (mcPlots_>2 && theBaseNameDescription == "Jet Multiplicity") theHisto_dus->Fill( var ,w);
551  return;
552  case 12321:
553  if (theBaseNameDescription == "Jet Multiplicity") theHisto_dusg->Fill( var ,w);
554  return;
555  case 20:
556  theHisto_pu->Fill( var ,w);
557  return;
558  default:
559  theHisto_ni->Fill( var ,w);
560  return;
561  }
562 }
MonitorElement * theHisto_g
MonitorElement * theHisto_c
const double w
Definition: UKUtility.cc:23
MonitorElement * theHisto_u
MonitorElement * theHisto_all
void Fill(long long x)
MonitorElement * theHisto_pu
MonitorElement * theHisto_d
MonitorElement * theHisto_dusg
std::string theBaseNameDescription
MonitorElement * theHisto_b
MonitorElement * theHisto_s
int flavour(const Candidate &part)
Definition: pdgIdUtils.h:31
MonitorElement * theHisto_dus
MonitorElement * theHisto_ni
template<class T >
std::vector< TH1F * > FlavourHistograms< T >::getHistoVector ( ) const

Definition at line 565 of file FlavourHistorgrams.h.

References getTH1F().

Referenced by EffPurFromHistos::EffPurFromHistos().

566 {
567  std::vector<TH1F*> histoVector;
568  if(theHisto_all) histoVector.push_back ( theHisto_all->getTH1F() );
569  if (mcPlots_) {
570  if (mcPlots_>2 ) {
571  histoVector.push_back ( theHisto_d->getTH1F() );
572  histoVector.push_back ( theHisto_u->getTH1F() );
573  histoVector.push_back ( theHisto_s->getTH1F() );
574  histoVector.push_back ( theHisto_g ->getTH1F() );
575  histoVector.push_back ( theHisto_dus->getTH1F() );
576  }
577  histoVector.push_back ( theHisto_c->getTH1F() );
578  histoVector.push_back ( theHisto_b->getTH1F() );
579  histoVector.push_back ( theHisto_ni->getTH1F() );
580  histoVector.push_back ( theHisto_dusg->getTH1F());
581  histoVector.push_back ( theHisto_pu->getTH1F());
582  }
583  return histoVector;
584 }
MonitorElement * theHisto_g
MonitorElement * theHisto_c
MonitorElement * theHisto_u
MonitorElement * theHisto_all
MonitorElement * theHisto_pu
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
MonitorElement * theHisto_d
MonitorElement * theHisto_dusg
TH1F * getTH1F(void) const
MonitorElement * theHisto_b
MonitorElement * theHisto_s
MonitorElement * theHisto_dus
MonitorElement * theHisto_ni
template<class T>
TH1F* FlavourHistograms< T >::histo_all ( ) const
inline

Definition at line 82 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide().

82 { return theHisto_all->getTH1F() ; }
MonitorElement * theHisto_all
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_b ( ) const
inline

Definition at line 87 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

87 { return theHisto_b->getTH1F() ; }
TH1F * getTH1F(void) const
MonitorElement * theHisto_b
template<class T>
TH1F* FlavourHistograms< T >::histo_c ( ) const
inline

Definition at line 86 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

86 { return theHisto_c->getTH1F() ; }
MonitorElement * theHisto_c
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_d ( ) const
inline

Definition at line 83 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

83 { return theHisto_d ->getTH1F() ; }
MonitorElement * theHisto_d
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_dus ( ) const
inline

Definition at line 90 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

90 { return theHisto_dus->getTH1F() ; }
TH1F * getTH1F(void) const
MonitorElement * theHisto_dus
template<class T>
TH1F* FlavourHistograms< T >::histo_dusg ( ) const
inline

Definition at line 91 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

91 { return theHisto_dusg->getTH1F() ; }
MonitorElement * theHisto_dusg
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_g ( ) const
inline

Definition at line 88 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

88 { return theHisto_g->getTH1F() ; }
MonitorElement * theHisto_g
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_ni ( ) const
inline

Definition at line 89 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

89 { return theHisto_ni->getTH1F() ; }
TH1F * getTH1F(void) const
MonitorElement * theHisto_ni
template<class T>
TH1F* FlavourHistograms< T >::histo_pu ( ) const
inline

Definition at line 92 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

92 { return theHisto_pu->getTH1F() ; }
MonitorElement * theHisto_pu
TH1F * getTH1F(void) const
template<class T>
TH1F* FlavourHistograms< T >::histo_s ( ) const
inline

Definition at line 85 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

85 { return theHisto_s->getTH1F() ; }
TH1F * getTH1F(void) const
MonitorElement * theHisto_s
template<class T>
TH1F* FlavourHistograms< T >::histo_u ( ) const
inline

Definition at line 84 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::divide(), and EffPurFromHistos::EffPurFromHistos().

84 { return theHisto_u->getTH1F() ; }
MonitorElement * theHisto_u
TH1F * getTH1F(void) const
template<class T>
int FlavourHistograms< T >::indexToPlot ( ) const
inline

Definition at line 79 of file FlavourHistorgrams.h.

Referenced by TrackIPHistograms< T >::fill().

79 {return theIndexToPlot; }
template<class T>
double FlavourHistograms< T >::lowerBound ( ) const
inline

Definition at line 71 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

71 { return theLowerBound ; }
template<class T>
int FlavourHistograms< T >::maxDimension ( ) const
inline

Definition at line 78 of file FlavourHistorgrams.h.

Referenced by TrackIPHistograms< T >::fill().

78 {return theMaxDimension; }
template<class T>
int FlavourHistograms< T >::nBins ( ) const
inline

Definition at line 70 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

70 { return theNBins ; }
template<class T >
void FlavourHistograms< T >::plot ( TPad *  theCanvas = 0)

Definition at line 335 of file FlavourHistorgrams.h.

References cuy::col, getTH1F(), MonitorElement::getTH1F(), timingPdfMaker::histo, i, bookConverter::max, and RecoBTag::setTDRStyle().

Referenced by cuy.FindIssue::__init__(), SoftLeptonTagPlotter::psPlot(), TrackCountingTagPlotter::psPlot(), TrackIPTagPlotter::psPlot(), TrackProbabilityTagPlotter::psPlot(), and JetTagPlotter::psPlot().

335  {
336 
337 //fixme:
338  bool btppNI = false;
339  bool btppColour = true;
340 
341  if (theCanvas)
342  theCanvas->cd();
343 
344  RecoBTag::setTDRStyle()->cd();
345  gPad->UseCurrentStyle();
346 // if ( !btppTitle ) gStyle->SetOptTitle ( 0 ) ;
347 //
348 // // here: plot histograms in a canvas
349 // theCanvas = new TCanvas ( "C" + theBaseNameTitle , "C" + theBaseNameDescription ,
350 // btppXCanvas , btppYCanvas ) ;
351 // theCanvas->SetFillColor ( 0 ) ;
352 // theCanvas->cd ( 1 ) ;
353  gPad->SetLogy ( 0 ) ;
354  if ( thePlotLog ) gPad->SetLogy ( 1 ) ;
355  gPad->SetGridx ( 0 ) ;
356  gPad->SetGridy ( 0 ) ;
357  gPad->SetTitle ( 0 ) ;
358 
359  MonitorElement * histo[4];
360  int col[4], lineStyle[4], markerStyle[4];
361  int lineWidth = 1 ;
362 
363  const double markerSize = gPad->GetWh() * gPad->GetHNDC() / 500.;
364 
365  // default (l)
366  histo[0] = theHisto_dusg ;
367  //CW histo_1 = theHisto_dus ;
368  histo[1] = theHisto_b ;
369  histo[2] = theHisto_c ;
370  histo[3]= 0 ;
371 
372  double max = theMax;
373  if (theMax<=0.) {
374  max = theHisto_dusg->getTH1F()->GetMaximum();
375  if (theHisto_b->getTH1F()->GetMaximum() > max) max = theHisto_b->getTH1F()->GetMaximum();
376  if (theHisto_c->getTH1F()->GetMaximum() > max) max = theHisto_c->getTH1F()->GetMaximum();
377  }
378 
379  if (btppNI) {
380  histo[3] = theHisto_ni ;
381  if (theHisto_ni->getTH1F()->GetMaximum() > max) max = theHisto_ni->getTH1F()->GetMaximum();
382  }
383 
384  if ( btppColour ) { // print colours
385  col[0] = 4 ;
386  col[1] = 2 ;
387  col[2] = 6 ;
388  col[3] = 3 ;
389  lineStyle[0] = 1 ;
390  lineStyle[1] = 1 ;
391  lineStyle[2] = 1 ;
392  lineStyle[3] = 1 ;
393  markerStyle[0] = 20 ;
394  markerStyle[1] = 21 ;
395  markerStyle[2] = 22 ;
396  markerStyle[3] = 23 ;
397  lineWidth = 1 ;
398  }
399  else { // different marker/line styles
400  col[1] = 1 ;
401  col[2] = 1 ;
402  col[3] = 1 ;
403  col[0] = 1 ;
404  lineStyle[0] = 2 ;
405  lineStyle[1] = 1 ;
406  lineStyle[2] = 3 ;
407  lineStyle[3] = 4 ;
408  markerStyle[0] = 20 ;
409  markerStyle[1] = 21 ;
410  markerStyle[2] = 22 ;
411  markerStyle[3] = 23 ;
412  }
413 
414  // if changing order (NI stays always last)
415 
416  // c to plot first
417  if ( thePlotFirst == "c" ) {
418  histo[0] = theHisto_c ;
419  if ( btppColour ) col[0] = 6 ;
420  if ( !btppColour ) lineStyle[0] = 3 ;
421  histo[2] = theHisto_dusg ;
422  if ( btppColour ) col[2] = 4 ;
423  if ( !btppColour ) lineStyle[2] = 2 ;
424  }
425 
426  // b to plot first
427  if ( thePlotFirst == "b" ) {
428  histo[0] = theHisto_b ;
429  if ( btppColour ) col[0] = 2 ;
430  if ( !btppColour ) lineStyle[0] = 1 ;
431  histo[1] = theHisto_dusg ;
432  if ( btppColour ) col[1] = 4 ;
433  if ( !btppColour ) lineStyle[1] = 2 ;
434  }
435 
436 
437  histo[0] ->getTH1F()->GetXaxis()->SetTitle ( theBaseNameDescription.c_str() ) ;
438  histo[0] ->getTH1F()->GetYaxis()->SetTitle ( "Arbitrary Units" ) ;
439  histo[0] ->getTH1F()->GetYaxis()->SetTitleOffset(1.25) ;
440 
441  for (int i=0; i != 4; ++i) {
442  if (histo[i]== 0 ) continue;
443  histo[i] ->getTH1F()->SetStats ( false ) ;
444  histo[i] ->getTH1F()->SetLineStyle ( lineStyle[i] ) ;
445  histo[i] ->getTH1F()->SetLineWidth ( lineWidth ) ;
446  histo[i] ->getTH1F()->SetLineColor ( col[i] ) ;
447  histo[i] ->getTH1F()->SetMarkerStyle ( markerStyle[i] ) ;
448  histo[i] ->getTH1F()->SetMarkerColor ( col[i] ) ;
449  histo[i] ->getTH1F()->SetMarkerSize ( markerSize ) ;
450  }
451 
452  if ( thePlotNormalized ) {
453 // cout <<histo[0]->GetEntries() <<" "<< histo[1]->GetEntries() <<" "<< histo[2]->GetEntries()<<" "<<histo[3]->GetEntries()<<endl;
454  if (histo[0]->getTH1F()->GetEntries() != 0) {histo[0]->getTH1F() ->DrawNormalized() ;} else { histo[0]->getTH1F() ->SetMaximum(1.0);
455 histo[0] ->getTH1F()->Draw() ;}
456  if (histo[1]->getTH1F()->GetEntries() != 0) histo[1] ->getTH1F()->DrawNormalized("Same") ;
457  if (histo[2]->getTH1F()->GetEntries() != 0) histo[2]->getTH1F() ->DrawNormalized("Same") ;
458  if ((histo[3] != 0) && (histo[3]->getTH1F()->GetEntries() != 0)) histo[3] ->getTH1F()->DrawNormalized("Same") ;
459  }
460  else {
461  histo[0]->getTH1F()->SetMaximum(max*1.05);
462  if (theMin!=-1.) histo[0]->getTH1F()->SetMinimum(theMin);
463  histo[0]->getTH1F()->Draw() ;
464  histo[1]->getTH1F()->Draw("Same") ;
465  histo[2]->getTH1F()->Draw("Same") ;
466  if ( histo[3] != 0 ) histo[3]->getTH1F()->Draw("Same") ;
467  }
468 
469 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * theHisto_c
TStyle * setTDRStyle()
Definition: Tools.cc:287
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
MonitorElement * theHisto_dusg
std::string theBaseNameDescription
TH1F * getTH1F(void) const
MonitorElement * theHisto_b
int col
Definition: cuy.py:1008
MonitorElement * theHisto_ni
template<class T>
std::string FlavourHistograms< T >::plotFirst ( ) const
inline

Definition at line 76 of file FlavourHistorgrams.h.

76 { return thePlotFirst ; }
template<class T>
bool FlavourHistograms< T >::plotLog ( ) const
inline

Definition at line 74 of file FlavourHistorgrams.h.

74 { return thePlotLog ; }
template<class T>
bool FlavourHistograms< T >::plotNormalized ( ) const
inline

Definition at line 75 of file FlavourHistorgrams.h.

75 { return thePlotNormalized ; }
template<class T>
void FlavourHistograms< T >::SetMaximum ( const double &  max)
inline

Definition at line 63 of file FlavourHistorgrams.h.

template<class T>
void FlavourHistograms< T >::SetMinimum ( const double &  min)
inline

Definition at line 64 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

64 { theMin = min;}
T min(T a, T b)
Definition: MathUtil.h:58
template<class T >
void FlavourHistograms< T >::settitle ( const char *  title)

Definition at line 315 of file FlavourHistorgrams.h.

Referenced by JetTagPlotter::JetTagPlotter(), and TrackIPHistograms< T >::settitle().

315  {
317  if (mcPlots_) {
318  if (mcPlots_>2 ) {
324  }
330  }
331 }
MonitorElement * theHisto_g
MonitorElement * theHisto_c
MonitorElement * theHisto_u
MonitorElement * theHisto_all
MonitorElement * theHisto_pu
MonitorElement * theHisto_d
MonitorElement * theHisto_dusg
MonitorElement * theHisto_b
MonitorElement * theHisto_s
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * theHisto_dus
MonitorElement * theHisto_ni
template<class T>
bool FlavourHistograms< T >::statistics ( ) const
inline

Definition at line 73 of file FlavourHistorgrams.h.

73 { return theStatistics ; }
template<class T>
double FlavourHistograms< T >::upperBound ( ) const
inline

Definition at line 72 of file FlavourHistorgrams.h.

Referenced by EffPurFromHistos::EffPurFromHistos().

72 { return theUpperBound ; }

Member Data Documentation

template<class T>
unsigned int FlavourHistograms< T >::mcPlots_
private

Definition at line 144 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::FlavourHistograms().

template<class T>
int* FlavourHistograms< T >::theArrayDimension
protected
template<class T>
std::string FlavourHistograms< T >::theBaseNameDescription
protected
template<class T>
std::string FlavourHistograms< T >::theBaseNameTitle
protected
template<class T>
TCanvas* FlavourHistograms< T >::theCanvas
protected

Definition at line 140 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< T >::FlavourHistograms().

template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_all
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_b
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_c
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_d
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_dus
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_dusg
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_g
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_ni
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_pu
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_s
protected
template<class T>
MonitorElement* FlavourHistograms< T >::theHisto_u
protected
template<class T>
int FlavourHistograms< T >::theIndexToPlot
protected

Definition at line 110 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::indexToPlot().

template<class T>
double FlavourHistograms< T >::theLowerBound
protected
template<class T>
double FlavourHistograms< T >::theMax
protected

Definition at line 121 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::SetMaximum().

template<class T>
int FlavourHistograms< T >::theMaxDimension
protected

Definition at line 109 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::maxDimension().

template<class T>
double FlavourHistograms< T >::theMin
protected

Definition at line 121 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::SetMinimum().

template<class T>
int FlavourHistograms< T >::theNBins
protected
template<class T>
std::string FlavourHistograms< T >::thePlotFirst
protected
template<class T>
bool FlavourHistograms< T >::thePlotLog
protected

Definition at line 118 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::plotLog().

template<class T>
bool FlavourHistograms< T >::thePlotNormalized
protected

Definition at line 119 of file FlavourHistorgrams.h.

Referenced by FlavourHistograms< int >::plotNormalized().

template<class T>
bool FlavourHistograms< T >::theStatistics
protected
template<class T>
double FlavourHistograms< T >::theUpperBound
protected