Go to the documentation of this file.00001 #ifndef UtilsClient_H
00002 #define UtilsClient_H
00003
00016 #include "DQMServices/Core/interface/MonitorElement.h"
00017 #include "TObject.h"
00018
00019 class TH1;
00020 class TProfile;
00021 class TProfile2D;
00022 class TClass;
00023
00024 class UtilsClient {
00025
00026 public:
00027
00034 template<class T> static T getHisto( const MonitorElement* me, bool clone = false, T ret = 0);
00035
00042 static void printBadChannels( const MonitorElement* me, TH1* hi, bool positive_only = false );
00043
00052 static bool getBinStatistics( TH1* histo, const int ix, const int iy, float& num, float& mean, float& rms, float minEntries = 1. );
00053
00059 static bool getBinQuality( const MonitorElement* me, const int ix, const int iy );
00060
00066 static bool getBinStatus( const MonitorElement* me, const int ix, const int iy );
00067
00073 static void maskBinContent( const MonitorElement* me, const int ix, const int iy );
00074
00079 static int getFirstNonEmptyChannel( const TProfile2D* histo );
00080
00081 private:
00082
00083 UtilsClient() {};
00084 ~UtilsClient() {};
00085
00086 };
00087
00088 template<class T>
00089 inline
00090 T
00091 UtilsClient::getHisto( const MonitorElement* me, bool clone, T ret)
00092 {
00093 if( me ) {
00094 TObject* ob = const_cast<MonitorElement*>(me)->getRootObject();
00095 if( ob ) {
00096 if( clone ) {
00097 if( ret ) {
00098 delete ret;
00099 }
00100 std::string s = "ME " + me->getName();
00101 ret = dynamic_cast<T>(ob->Clone(s.c_str()));
00102 if( ret ) {
00103 ret->SetDirectory(0);
00104 }
00105 } else {
00106 ret = dynamic_cast<T>(ob);
00107 }
00108 } else {
00109 ret = 0;
00110 }
00111 } else {
00112 if( !clone ) {
00113 ret = 0;
00114 }
00115 }
00116 return ret;
00117 }
00118
00119 #endif