CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/DQMOffline/PFTau/interface/Benchmark.h

Go to the documentation of this file.
00001 #ifndef RecoParticleFlow_Benchmark_Benchmark_h
00002 #define RecoParticleFlow_Benchmark_Benchmark_h
00003 
00004 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00005 
00006 
00007 #include <string>
00008 
00009 class TH1;
00010 class TH1F;
00011 class TH2;
00012 
00013 class TH2F;
00014 class TDirectory;
00015 
00016 class DQMStore; 
00017 
00018 
00020 class Benchmark{
00021 
00022  public:
00023 
00024   class PhaseSpace {
00025   public:
00026     int n; 
00027     float m;
00028     float M;
00029     PhaseSpace() : n(1), m(0), M(1) {}
00030     PhaseSpace( int n, float m, float M):n(n), m(m), M(M) {}
00031   };
00032 
00033   enum Mode {
00034     DEFAULT,
00035     DQMOFFLINE,
00036     VALIDATION
00037   };
00038 
00039   static DQMStore *DQM_; 
00040 
00041   Benchmark(Mode mode = DEFAULT) : 
00042     dir_(0), mode_(mode), 
00043     ptMin_(0), ptMax_(10e10), 
00044     etaMin_(-10), etaMax_(10), 
00045     phiMin_(-10), phiMax_(10) {}
00046 
00047   virtual ~Benchmark();
00048 
00049   void setParameters( Mode mode) { mode_ = mode;}
00050   
00051   void setRange( float ptMin, float ptMax, 
00052                  float etaMin, float etaMax, 
00053                  float phiMin, float phiMax ) {
00054     ptMin_ = ptMin; ptMax_ = ptMax; etaMin_ = etaMin; etaMax_ = etaMax;
00055     phiMin_ = phiMin; phiMax_ = phiMax;
00056   }
00057 
00058   bool isInRange(float pt, float eta, float phi) const {
00059     return pt>ptMin_ && pt<ptMax_ && eta>etaMin_ && eta<etaMax_ && phi>phiMin_ && phi<phiMax_ ? true : false; 
00060   }
00061 
00062   virtual void setDirectory(TDirectory* dir);
00063   
00065   void write();
00066 
00067  protected:
00068 
00070   TH1F* book1D(const char* histname, const char* title, 
00071                int nbins, float xmin, float xmax);
00072 
00074   TH2F* book2D(const char* histname, const char* title, 
00075                int nbinsx, float xmin, float xmax,
00076                int nbinsy, float ymin, float ymax ); 
00077 
00079   TH2F* book2D(const char* histname, const char* title, 
00080                int nbinsx, float* xbins,
00081                int nbinsy, float ymin, float ymax ); 
00082 
00083  
00084   TDirectory* dir_;
00085 
00086   Mode        mode_;
00087 
00088   float       ptMin_;
00089   float       ptMax_;
00090   float       etaMin_;
00091   float       etaMax_;
00092   float       phiMin_;
00093   float       phiMax_;
00094 
00095 
00096 };
00097 
00098 #endif