CMS 3D CMS Logo

HcalPedestalClient.cc

Go to the documentation of this file.
00001 #include <DQM/HcalMonitorClient/interface/HcalPedestalClient.h>
00002 #include <DQM/HcalMonitorClient/interface/HcalClientUtils.h>
00003 #include "DQMServices/Core/interface/DQMStore.h"
00004 #include "DQMServices/Core/interface/MonitorElement.h"
00005 #include <math.h>
00006 #include <iostream>
00007 
00008 HcalPedestalClient::HcalPedestalClient(){} // constructor 
00009 
00010 void HcalPedestalClient::init(const ParameterSet& ps, DQMStore* dbe,string clientName){
00011   //Call the base class first
00012   HcalBaseClient::init(ps,dbe,clientName);
00013 
00014   // Get variable values from cfg file
00015   nominalPedMeanInADC_      = ps.getUntrackedParameter<double>("PedestalClient_nominalPedMeanInADC",3);
00016   nominalPedWidthInADC_     = ps.getUntrackedParameter<double>("PedestalClient_nominalPedWidthInADC",1);
00017   maxPedMeanDiffADC_        = ps.getUntrackedParameter<double>("PedestalClient_maxPedMeanDiffADC",1);
00018   maxPedWidthDiffADC_       = ps.getUntrackedParameter<double>("PedestalClient_maxPedWidthDiffADC",1);
00019   doFCpeds_                 = ps.getUntrackedParameter<bool>("PedestalClient_pedestalsInFC",1);
00020   startingTimeSlice_        = ps.getUntrackedParameter<int>("PedestalClient_startingTimeSlice",0);
00021   endingTimeSlice_          = ps.getUntrackedParameter<int>("PedestalClient_endingTimgSlice",1);
00022   minErrorFlag_             = ps.getUntrackedParameter<double>("PedestalClient_minErrorFlag",0.05);
00023 
00024   // Set individual pointers to NULL
00025   ProblemPedestals=0;
00026 
00027   for (int i=0;i<6;++i)
00028     {
00029       // Set each array's pointers to NULL
00030       ProblemPedestalsByDepth[i]=0;
00031       MeanMapByDepth[i]=0;
00032       RMSMapByDepth[i]=0;
00033 
00034       // Basic Pedestal plots
00035       ADC_PedestalFromDBByDepth[i]=0;
00036       ADC_WidthFromDBByDepth[i]=0;
00037       fC_PedestalFromDBByDepth[i]=0;
00038       fC_WidthFromDBByDepth[i]=0;
00039 
00040       // Pedestals from Database
00041       ADC_PedestalFromDBByDepth[i]=0;
00042       ADC_WidthFromDBByDepth[i]=0;
00043       fC_PedestalFromDBByDepth[i]=0;
00044       fC_WidthFromDBByDepth[i]=0;
00045 
00046       // Raw pedestals in ADC
00047       rawADCPedestalMean[i]=0;
00048       rawADCPedestalRMS[i]=0;
00049       rawADCPedestalMean_1D[i]=0;
00050       rawADCPedestalRMS_1D[i]=0;
00051       
00052       // Subtracted pedestals in ADC
00053       subADCPedestalMean[i]=0;
00054       subADCPedestalRMS[i]=0;
00055       subADCPedestalMean_1D[i]=0;
00056       subADCPedestalRMS_1D[i]=0;
00057       
00058       // Raw pedestals in FC
00059       rawFCPedestalMean[i]=0;
00060       rawFCPedestalRMS[i]=0;
00061       rawFCPedestalMean_1D[i]=0;
00062       rawFCPedestalRMS_1D[i]=0;
00063       
00064       // Subtracted pedestals in FC
00065       subFCPedestalMean[i]=0;
00066       subFCPedestalRMS[i]=0;
00067       subFCPedestalMean_1D[i]=0;
00068       subFCPedestalRMS_1D[i]=0;
00069     }  
00070 
00071   subdets_.push_back("HB HF Depth 1 ");
00072   subdets_.push_back("HB HF Depth 2 ");
00073   subdets_.push_back("HE Depth 3 ");
00074   subdets_.push_back("HO ZDC ");
00075   subdets_.push_back("HE Depth 1 ");
00076   subdets_.push_back("HE Depth 2 ");
00077 
00078 
00079   return;
00080 } // void HcalPedestalClient::init(...)
00081 
00082 
00083 HcalPedestalClient::~HcalPedestalClient()
00084 {
00085   this->cleanup();
00086 } // destructor
00087 
00088 
00089 void HcalPedestalClient::beginJob(const EventSetup& eventSetup){
00090 
00091   if ( debug_ ) cout << "HcalPedestalClient: beginJob" << endl;
00092 
00093   ievt_ = 0;
00094   jevt_ = 0;
00095   this->setup();
00096   return;
00097 } // void HcalPedestalClient::beginJob(const EventSetup& eventSetup);
00098 
00099 
00100 void HcalPedestalClient::beginRun(void)
00101 {
00102   if ( debug_ ) cout << "HcalPedestalClient: beginRun" << endl;
00103 
00104   jevt_ = 0;
00105   this->setup();
00106   this->resetAllME();
00107   return;
00108 } // void HcalPedestalClient::beginRun(void)
00109 
00110 
00111 void HcalPedestalClient::endJob(void) 
00112 {
00113   if ( debug_ ) cout << "HcalPedestalClient: endJob, ievt = " << ievt_ << endl;
00114 
00115   this->cleanup();
00116   return;
00117 } // void HcalPedestalClient::endJob(void)
00118 
00119 
00120 void HcalPedestalClient::endRun(void) 
00121 {
00122   if ( debug_ ) cout << "HcalPedestalClient: endRun, jevt = " << jevt_ << endl;
00123 
00124   this->cleanup();
00125   return;
00126 } // void HcalPedestalClient::endRun(void)
00127 
00128 
00129 void HcalPedestalClient::setup(void) 
00130 {
00131   return;
00132 } // void HcalPedestalClient::setup(void)
00133 
00134 
00135 void HcalPedestalClient::cleanup(void) 
00136 {
00137   if(cloneME_)
00138     {
00139       // delete individual histogram pointers
00140       if (ProblemPedestals) delete ProblemPedestals;
00141       
00142       for (int i=0;i<6;++i)
00143         {
00144           // delete pointers within arrays of histograms
00145           if (ProblemPedestalsByDepth[i]) delete ProblemPedestalsByDepth[i];
00146           if (MeanMapByDepth[i]) delete MeanMapByDepth[i];
00147           if (RMSMapByDepth[i]) delete RMSMapByDepth[i];
00148 
00149           // Pedestals from Database
00150           if (ADC_PedestalFromDBByDepth[i]) delete ADC_PedestalFromDBByDepth[i];
00151           if (ADC_WidthFromDBByDepth[i]) delete ADC_WidthFromDBByDepth[i];
00152           if (fC_PedestalFromDBByDepth[i]) delete fC_PedestalFromDBByDepth[i];
00153           if (fC_WidthFromDBByDepth[i]) delete fC_WidthFromDBByDepth[i];
00154           
00155           // Raw pedestals in ADC
00156           if (rawADCPedestalMean[i]) delete rawADCPedestalMean[i];
00157           if (rawADCPedestalRMS[i]) delete rawADCPedestalRMS[i];
00158           if (rawADCPedestalMean_1D[i]) delete rawADCPedestalMean_1D[i];
00159           if (rawADCPedestalRMS_1D[i]) delete rawADCPedestalRMS_1D[i];
00160           
00161           // Subtracted pedestals in ADC
00162           if (subADCPedestalMean[i]) delete subADCPedestalMean[i];
00163           if (subADCPedestalRMS[i]) delete subADCPedestalRMS[i];
00164           if (subADCPedestalMean_1D[i]) delete subADCPedestalMean_1D[i];
00165           if (subADCPedestalRMS_1D[i]) delete subADCPedestalRMS_1D[i];
00166   
00167           // Raw pedestals in FC
00168           if (rawFCPedestalMean[i]) delete rawFCPedestalMean[i];
00169           if (rawFCPedestalRMS[i]) delete rawFCPedestalRMS[i];
00170           if (rawFCPedestalMean_1D[i]) delete rawFCPedestalMean_1D[i];
00171           if (rawFCPedestalRMS_1D[i]) delete rawFCPedestalRMS_1D[i];
00172           
00173           // Subtracted pedestals in FC
00174           if (subFCPedestalMean[i]) delete subFCPedestalMean[i];
00175           if (subFCPedestalRMS[i]) delete subFCPedestalRMS[i];
00176           if (subFCPedestalMean_1D[i]) delete subFCPedestalMean_1D[i];
00177           if (subFCPedestalRMS_1D[i]) delete subFCPedestalRMS_1D[i];
00178         }
00179     }
00180 
00181   // Set individual pointers to NULL
00182   ProblemPedestals = 0;
00183 
00184   for (int i=0;i<6;++i)
00185     {
00186       // Set each array's pointers to NULL
00187       ProblemPedestalsByDepth[i]=0;
00188       MeanMapByDepth[i]=0;
00189       RMSMapByDepth[i]=0;
00190       ADC_PedestalFromDBByDepth[i]=0;
00191       ADC_WidthFromDBByDepth[i]=0;
00192       fC_PedestalFromDBByDepth[i]=0;
00193       fC_WidthFromDBByDepth[i]=0;
00194       // Raw pedestals in ADC
00195       rawADCPedestalMean[i]=0;
00196       rawADCPedestalRMS[i]=0;
00197       rawADCPedestalMean_1D[i]=0;
00198       rawADCPedestalRMS_1D[i]=0;
00199       
00200       // Raw pedestals in ADC
00201       subADCPedestalMean[i]=0;
00202       subADCPedestalRMS[i]=0;
00203       subADCPedestalMean_1D[i]=0;
00204       subADCPedestalRMS_1D[i]=0;
00205       
00206       // Raw pedestals in FC
00207       rawFCPedestalMean[i]=0;
00208       rawFCPedestalRMS[i]=0;
00209       rawFCPedestalMean_1D[i]=0;
00210       rawFCPedestalRMS_1D[i]=0;
00211       
00212       // Raw pedestals in FC
00213       subFCPedestalMean[i]=0;
00214       subFCPedestalRMS[i]=0;
00215       subFCPedestalMean_1D[i]=0;
00216       subFCPedestalRMS_1D[i]=0;
00217     }
00218 
00219   dqmReportMapErr_.clear(); 
00220   dqmReportMapWarn_.clear(); 
00221   dqmReportMapOther_.clear();
00222   dqmQtests_.clear();
00223   
00224   return;
00225 } // void HcalPedestalClient::cleanup(void)
00226 
00227 
00228 void HcalPedestalClient::report()
00229 {
00230   if(!dbe_) return;
00231   if ( debug_ ) cout << "HcalPedestalClient: report" << endl;
00232   this->setup();
00233 
00234   ostringstream name;
00235   name<<process_.c_str()<<"Hcal/PedestalMonitor_Hcal/Pedestal Task Event Number";
00236   MonitorElement* me = dbe_->get(name.str().c_str());
00237   if ( me ) {
00238     string s = me->valueString();
00239     ievt_ = -1;
00240     sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &ievt_);
00241     if ( debug_ ) cout << "Found '" << name.str().c_str() << "'" << endl;
00242   }
00243   getHistograms();
00244 
00245   return;
00246 } // HcalPedestalClient::report()
00247 
00248 
00249 void HcalPedestalClient::getHistograms()
00250 {
00251   if(!dbe_) return;
00252 
00253   // Grab individual histograms
00254   ostringstream name;
00255   TH2F* dummy2D = new TH2F();
00256   name<<process_.c_str()<<"PedestalMonitor_Hcal/ ProblemPedestals";
00257   ProblemPedestals = getAnyHisto(dummy2D, name.str(), process_, dbe_, debug_, cloneME_);
00258   name.str("");
00259 
00260   for (int i=0;i<6;++i)
00261     {
00262       // Grab arrays of histograms
00263       getSJ6histos("PedestalMonitor_Hcal/problem_pedestals/"," Problem Pedestal Rate", ProblemPedestalsByDepth);
00264 
00265       if (ProblemPedestalsByDepth[i])
00266         {
00267           ProblemPedestalsByDepth[i]->SetMaximum(1);
00268           ProblemPedestalsByDepth[i]->SetMinimum(0);
00269         }
00270 
00271 
00272       // Get Overall Pedestal Maps
00273       getSJ6histos("PedestalMonitor_Hcal/","Pedestal Mean Map ADC",MeanMapByDepth);
00274       if (MeanMapByDepth[i])
00275         {
00276           // This forces green color to get centered at nominal value in colz plots.
00277           // It also causes overflow values to get filled at 2*nominalPedMeanInADC_, rather than their true values.
00278           // But this is okay -- true values are dumped on main page when listing problem cells.
00279           MeanMapByDepth[i]->SetMaximum(2*nominalPedMeanInADC_);
00280           MeanMapByDepth[i]->SetMinimum(0);
00281         }
00282       getSJ6histos("PedestalMonitor_Hcal/","Pedestal RMS Map ADC",RMSMapByDepth);
00283       if (RMSMapByDepth[i])
00284         {
00285           RMSMapByDepth[i]->SetMaximum(2*nominalPedWidthInADC_ );
00286           RMSMapByDepth[i]->SetMinimum(0);
00287         }
00288       
00289       // Database Pedestal values
00290       getSJ6histos("PedestalMonitor_Hcal/reference_pedestals/adc/","Pedestal Values from DataBase ADC",ADC_PedestalFromDBByDepth);
00291       getSJ6histos("PedestalMonitor_Hcal/reference_pedestals/adc/","Pedestal Widths from DataBase ADC",ADC_WidthFromDBByDepth);
00292       getSJ6histos("PedestalMonitor_Hcal/reference_pedestals/fc/","Pedestal Values from DataBase fC",fC_PedestalFromDBByDepth);
00293       getSJ6histos("PedestalMonitor_Hcal/reference_pedestals/fc/","Pedestal Widths from DataBase fC",fC_WidthFromDBByDepth);
00294 
00295 
00296       // Raw, sub Pedestals in ADC
00297       getSJ6histos("PedestalMonitor_Hcal/adc/raw/","Pedestal Values Map ADC", rawADCPedestalMean);
00298       getSJ6histos("PedestalMonitor_Hcal/adc/raw/","Pedestal Widths Map ADC", rawADCPedestalRMS);
00299       getSJ6histos("PedestalMonitor_Hcal/adc/subtracted__beta_testing/","Subtracted Pedestal Values Map ADC", subADCPedestalMean);
00300       getSJ6histos("PedestalMonitor_Hcal/adc/subtracted__beta_testing/","Subtracted Pedestal Widths Map ADC", subADCPedestalRMS);
00301       getSJ6histos("PedestalMonitor_Hcal/adc/raw/","1D Pedestal Values ADC",rawADCPedestalMean_1D);
00302       getSJ6histos("PedestalMonitor_Hcal/adc/raw/","1D Pedestal Widths ADC",rawADCPedestalRMS_1D);
00303       getSJ6histos("PedestalMonitor_Hcal/adc/subtracted__beta_testing/","1D Subtracted Pedestal Values ADC", subADCPedestalMean_1D);
00304       getSJ6histos("PedestalMonitor_Hcal/adc/subtracted__beta_testing/","1D Subtracted Pedestal Widths ADC", subADCPedestalRMS_1D);
00305 
00306       // Raw, sub Pedestals in fC
00307       getSJ6histos("PedestalMonitor_Hcal/fc/raw/","Pedestal Values Map fC", rawFCPedestalMean);
00308       getSJ6histos("PedestalMonitor_Hcal/fc/raw/","Pedestal Widths Map fC", rawFCPedestalRMS);
00309       getSJ6histos("PedestalMonitor_Hcal/fc/subtracted__beta_testing/","Subtracted Pedestal Values Map fC", subFCPedestalMean);
00310       getSJ6histos("PedestalMonitor_Hcal/fc/subtracted__beta_testing/","Subtracted Pedestal Widths Map fC", subFCPedestalRMS);
00311       getSJ6histos("PedestalMonitor_Hcal/fc/raw/","1D Pedestal Values fC",rawFCPedestalMean_1D);
00312       getSJ6histos("PedestalMonitor_Hcal/fc/raw/","1D Pedestal Widths fC",rawFCPedestalRMS_1D);
00313       getSJ6histos("PedestalMonitor_Hcal/fc/subtracted__beta_testing/","1D Subtracted Pedestal Values fC", subFCPedestalMean_1D);
00314       getSJ6histos("PedestalMonitor_Hcal/fc/subtracted__beta_testing/","1D Subtracted Pedestal Widths fC", subFCPedestalRMS_1D);
00315 
00316     } // for (int i=0;i<6;++i)
00317 
00318   return;
00319 } //void HcalPedestalClient::getHistograms()
00320 
00321 
00322 void HcalPedestalClient::analyze(void)
00323 {
00324   jevt_++;
00325   if ( jevt_ % 10 == 0 ) 
00326     {
00327       if ( debug_ ) cout << "<HcalPedestalClient::analyze>  Running analyze "<<endl;
00328     }
00329   getHistograms();
00330   return;
00331 } // void HcalPedestalClient::analyze(void)
00332 
00333 
00334 void HcalPedestalClient::createTests()
00335 {
00336   // Removed a bunch of code that was in older versions of HcalPedestalClient
00337   // tests should now be handled from outside
00338   if(!dbe_) return;
00339   return;
00340 } // void HcalPedestalClient::createTests()
00341 
00342 
00343 void HcalPedestalClient::resetAllME()
00344 {
00345   if(!dbe_) return;
00346   
00347   ostringstream name;
00348 
00349   // Reset individual histograms
00350   name<<process_.c_str()<<"PedestalMonitor_Hcal/ ProblemPedestals";
00351   resetME(name.str().c_str(),dbe_);
00352   name.str("");
00353 
00354   for (int i=0;i<6;++i)
00355     {
00356       // Reset arrays of histograms
00357 
00358       // Problem Pedestal Plots
00359       name<<process_.c_str()<<"PedestalMonitor_Hcal/problem_pedestals/"<<subdets_[i]<<" Problem Pedestal Rate";
00360       resetME(name.str().c_str(),dbe_);
00361       name.str("");
00362 
00363       // Overall Mean Map
00364       name<<process_.c_str()<<"PedestalMonitor_Hcal/"<<subdets_[i]<<"Pedestal Mean Map ADC";
00365       resetME(name.str().c_str(),dbe_);
00366       name.str("");
00367       
00368       // Overall Pedestal Map
00369       name<<process_.c_str()<<"PedestalMonitor_Hcal/"<<subdets_[i]<<"Pedestal RMS Map ADC";
00370       resetME(name.str().c_str(),dbe_);
00371       name.str("");
00372 
00373 
00374       // Database Pedestal values
00375       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/adc/"<<subdets_[i]<<"Pedestal Values from DataBase ADC";
00376       resetME(name.str().c_str(),dbe_);
00377       name.str("");
00378 
00379       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/adc/"<<subdets_[i]<<"Pedestal Widths from DataBase ADC";
00380       resetME(name.str().c_str(),dbe_);
00381       name.str("");
00382 
00383       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/fc/"<<subdets_[i]<<"Pedestal Values from DataBase fC";
00384       resetME(name.str().c_str(),dbe_);
00385       name.str("");
00386 
00387       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/fc/"<<subdets_[i]<<"Pedestal Widths from DataBase fC";
00388       resetME(name.str().c_str(),dbe_);
00389       name.str("");
00390 
00391       // Raw, sub Pedestals in ADC
00392       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"Pedestal Values Map ADC";
00393       resetME(name.str().c_str(),dbe_);
00394       name.str("");
00395       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"Pedestal Widths Map ADC";
00396       resetME(name.str().c_str(),dbe_);
00397       name.str("");
00398       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Values Map ADC";
00399       resetME(name.str().c_str(),dbe_);
00400       name.str("");
00401       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Widths Map ADC";
00402   
00403       name.str("");
00404       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"1D Pedestal Values ADC";
00405       resetME(name.str().c_str(),dbe_);
00406       name.str("");
00407       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"1D Pedestal Widths ADC";
00408       resetME(name.str().c_str(),dbe_);
00409       name.str("");
00410       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Values ADC";
00411       resetME(name.str().c_str(),dbe_);
00412       name.str("");
00413       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Widths ADC";
00414       resetME(name.str().c_str(),dbe_);
00415       name.str("");
00416 
00417       // Raw, sub Pedestals in fC
00418       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"Pedestal Values Map fC";
00419       resetME(name.str().c_str(),dbe_);
00420       name.str("");
00421       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"Pedestal Widths Map fC";
00422       resetME(name.str().c_str(),dbe_);
00423       name.str("");
00424       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Values Map fC";
00425       resetME(name.str().c_str(),dbe_);
00426       name.str("");
00427       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Widths Map fC";
00428       resetME(name.str().c_str(),dbe_);
00429       name.str("");
00430       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"1D Pedestal Values fC";
00431       resetME(name.str().c_str(),dbe_);
00432       name.str("");
00433       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"1D Pedestal Widths fC";
00434       resetME(name.str().c_str(),dbe_);
00435       name.str("");
00436       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Values fC";
00437       resetME(name.str().c_str(),dbe_);
00438       name.str("");
00439       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Widths fC";
00440       resetME(name.str().c_str(),dbe_);
00441       name.str("");
00442 
00443     }
00444   return;
00445 } // void HcalPedestalClient::resetAllME()
00446 
00447 
00448 void HcalPedestalClient::htmlOutput(int runNo, string htmlDir, string htmlName)
00449 {
00450   if (showTiming_)
00451     {
00452       cpu_timer.reset(); cpu_timer.start();
00453     }
00454 
00455   if (debug_) cout << "Preparing HcalPedestalClient html output ..." << endl;
00456 
00457   string client = "PedestalMonitor";
00458 
00459   ofstream htmlFile;
00460   htmlFile.open((htmlDir + htmlName).c_str());
00461 
00462   // html page header
00463   htmlFile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">  " << endl;
00464   htmlFile << "<html>  " << endl;
00465   htmlFile << "<head>  " << endl;
00466   htmlFile << "  <meta content=\"text/html; charset=ISO-8859-1\"  " << endl;
00467   htmlFile << " https-equiv=\"content-type\">  " << endl;
00468   htmlFile << "  <title>Monitor: Hcal Pedestal Task output</title> " << endl;
00469   htmlFile << "</head>  " << endl;
00470   htmlFile << "<style type=\"text/css\"> td { font-weight: bold } </style>" << endl;
00471   htmlFile << "<body>  " << endl;
00472   htmlFile << "<br>  " << endl;
00473   htmlFile << "<h2>Run:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << endl;
00474   htmlFile << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span " << endl;
00475   htmlFile << " style=\"color: rgb(0, 0, 153);\">" << runNo << "</span></h2>" << endl;
00476   htmlFile << "<h2>Monitoring task:&nbsp;&nbsp;&nbsp;&nbsp; <span " << endl;
00477   htmlFile << " style=\"color: rgb(0, 0, 153);\">Hcal Pedestals</span></h2> " << endl;
00478 
00479   htmlFile << "<h2>Events processed:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << endl;
00480   htmlFile << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span " << endl;
00481   htmlFile << " style=\"color: rgb(0, 0, 153);\">" << ievt_ << "</span></h2>" << endl;
00482   htmlFile << "<hr>" << endl;
00483 
00484   htmlFile << "<h2><strong>Hcal Pedestal Status</strong></h2>" << endl;
00485   htmlFile << "<h3>" << endl;
00486   htmlFile << "</h3>" << endl;
00487 
00488   htmlFile << "<table align=\"center\" border=\"0\" cellspacing=\"0\" " << endl;
00489   htmlFile << "cellpadding=\"10\"> " << endl;
00490   htmlFile << "<tr align=\"center\">" << endl;
00491   gStyle->SetPalette(20,pcol_error_); // set palette to standard error color scheme
00492   htmlAnyHisto(runNo,ProblemPedestals,"i#eta","i#phi", 92, htmlFile, htmlDir);
00493   htmlFile<<"</tr>"<<endl;
00494   htmlFile<<"<tr align=\"center\"><td> A pedestal is considered problematic if its mean differs from the nominal mean value of "<<nominalPedMeanInADC_<<" by more than "<<maxPedMeanDiffADC_<<" ADC counts.<br>";
00495   htmlFile<<"It is also considered problematic if its RMS differs from the nominal RMS of "<<nominalPedWidthInADC_<<" by more than "<<maxPedWidthDiffADC_<<" ADC counts.<br>"<<endl;
00496   htmlFile<<"</tr></table>"<<endl;
00497   htmlFile<<"<hr><table align=\"center\" border=\"0\" cellspacing=\"0\" " << endl;
00498   htmlFile << "cellpadding=\"10\"> " << endl;
00499   htmlFile << "<tr align=\"center\">" << endl;
00500   htmlFile<<"<tr><td align=center><a href=\"Expert_"<< htmlName<<"\"><h2>Detailed Pedestal Plots</h2> </a></br></td>"<<endl;
00501   htmlFile<<"</tr></table><br><hr>"<<endl;
00502   
00503   // Now print out problem cells
00504   htmlFile <<"<br>"<<endl;
00505   htmlFile << "<h2><strong>Hcal Problem Cells</strong></h2>" << endl;
00506   htmlFile << "(A problem cell is listed below if its failure rate exceeds "<<(100.*minErrorFlag_)<<"%).<br><br>"<<endl;
00507   htmlFile << "<table align=\"center\" border=\"1\" cellspacing=\"0\" " << endl;
00508   htmlFile << "cellpadding=\"10\"> " << endl;
00509   htmlFile << "<tr align=\"center\">" << endl;
00510   htmlFile <<"<td> Problem Cells<br>(ieta, iphi, depth)</td><td align=\"center\"> Fraction of Events <br>in which cells are bad (%)</td><td align=\"center\"> Mean (ADC)</td><td align=\"center\"> RMS (ADC)</td></tr>"<<endl;
00511 
00512   if (ProblemPedestals==0)
00513     {
00514       cout <<"<HcalPedestalClient::htmlOutput>  ERROR: can't find ProblemPedestal plot!"<<endl;
00515       return;
00516     }
00517   int etabins  = ProblemPedestals->GetNbinsX();
00518   int phibins  = ProblemPedestals->GetNbinsY();
00519   float etaMin = ProblemPedestals->GetXaxis()->GetXmin();
00520   float phiMin = ProblemPedestals->GetYaxis()->GetXmin();
00521 
00522   int eta,phi;
00523 
00524   ostringstream name;
00525   for (int depth=0;depth<6; ++depth)
00526     {
00527       for (int ieta=1;ieta<=etabins;++ieta)
00528         {
00529           for (int iphi=1; iphi<=phibins;++iphi)
00530             {
00531               eta=ieta+int(etaMin)-1;
00532               phi=iphi+int(phiMin)-1;
00533               int mydepth=depth+1;
00534               if (mydepth>4) mydepth-=4; // last two depth values are for HE depth 1,2
00535               if (ProblemPedestalsByDepth[depth]==0)
00536                 {
00537                   continue;
00538                 }
00539               if (ProblemPedestalsByDepth[depth]->GetBinContent(ieta,iphi)>minErrorFlag_)
00540                 {
00541                   if (depth<2)
00542                     (fabs(eta)<29) ? name<<"HB" : name<<"HF";
00543                   else if (depth==3)
00544                     (fabs(eta)<42) ? name<<"HO" : name<<"ZDC";
00545                   else name <<"HE";
00546                   if (MeanMapByDepth[depth]!=0 && RMSMapByDepth[depth]!=0)
00547                     htmlFile<<"<td>"<<name.str().c_str()<<" ("<<eta<<", "<<phi<<", "<<mydepth<<")</td><td align=\"center\">"<<ProblemPedestalsByDepth[depth]->GetBinContent(ieta,iphi)*100.<<"</td><td align=\"center\"> "<<MeanMapByDepth[depth]->GetBinContent(ieta,iphi)<<" </td>  <td align=\"center\">"<<RMSMapByDepth[depth]->GetBinContent(ieta,iphi)<<"</td></tr>"<<endl;
00548                   name.str("");
00549                 }
00550             } // for (int iphi=1;...)
00551         } // for (int ieta=1;...)
00552     } // for (int depth=0;...)
00553   
00554   
00555   // html page footer
00556   htmlFile <<"</table> " << endl;
00557   htmlFile << "</body> " << endl;
00558   htmlFile << "</html> " << endl;
00559 
00560   htmlFile.close();
00561   htmlExpertOutput(runNo, htmlDir, htmlName);
00562 
00563   if (showTiming_)
00564     {
00565       cpu_timer.stop();  cout <<"TIMER:: HcalPedestalClient HTMLOUTPUT  -> "<<cpu_timer.cpuTime()<<endl;
00566     }
00567 
00568   return;
00569 } //void HcalPedestalClient::htmlOutput(int runNo, ...) 
00570 
00571 
00572 void HcalPedestalClient::htmlExpertOutput(int runNo, string htmlDir, string htmlName)
00573 {
00574   if (showTiming_)
00575     {
00576       cpu_timer.reset(); cpu_timer.start();
00577     }
00578 
00579   if (debug_) 
00580     cout <<" <HcalPedestalClient::htmlExpertOutput>  Preparing Expert html output ..." <<endl;
00581   
00582   string client = "PedestalMonitor";
00583   htmlErrors(runNo,htmlDir,client,process_,dbe_,dqmReportMapErr_,dqmReportMapWarn_,dqmReportMapOther_); // does this do anything?
00584 
00585 ofstream htmlFile;
00586   htmlFile.open((htmlDir +"Expert_"+ htmlName).c_str());
00587 
00588   // html page header
00589   htmlFile << "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">  " << endl;
00590   htmlFile << "<html>  " << endl;
00591   htmlFile << "<head>  " << endl;
00592   htmlFile << "  <meta content=\"text/html; charset=ISO-8859-1\"  " << endl;
00593   htmlFile << " https-equiv=\"content-type\">  " << endl;
00594   htmlFile << "  <title>Monitor: Hcal Pedestal Task output</title> " << endl;
00595   htmlFile << "</head>  " << endl;
00596   htmlFile << "<style type=\"text/css\"> td { font-weight: bold } </style>" << endl;
00597   htmlFile << "<body>  " << endl;
00598   htmlFile <<"<a name=\"EXPERT_PEDESTAL_TOP\" href = \".\"> Back to Main HCAL DQM Page </a><br>"<<endl;
00599   htmlFile <<"<a href= \""<<htmlName.c_str()<<"\" > Back to Pedestal Status Page </a><br>"<<endl;
00600   htmlFile << "<br>  " << endl;
00601   htmlFile << "<h2>Run:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << endl;
00602   htmlFile << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span " << endl;
00603   htmlFile << " style=\"color: rgb(0, 0, 153);\">" << runNo << "</span></h2>" << endl;
00604   htmlFile << "<h2>Monitoring task:&nbsp;&nbsp;&nbsp;&nbsp; <span " << endl;
00605   htmlFile << " style=\"color: rgb(0, 0, 153);\">Hcal Pedestals</span></h2> " << endl;
00606   htmlFile << "<h2>Events processed:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" << endl;
00607   htmlFile << "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span " << endl;
00608   htmlFile << " style=\"color: rgb(0, 0, 153);\">" << ievt_ << "</span></h2>" << endl;
00609   htmlFile << "<hr>" << endl;
00610 
00611   htmlFile << "<table width=100%  border = 1>"<<endl;
00612   htmlFile << "<tr><td align=\"center\" colspan=2><a href=\"#OVERALL_PEDS\">Pedestal Mean and RMS Maps </a></td></tr>"<<endl;
00613   htmlFile << "<tr><td align=\"center\">Pedestals in ADC counts<br><a href=\"#RAW_ADC\">Raw Pedestals</a><br><a href=\"#SUB_ADC\">Subtracted Pedestals</a><br></td>"<<endl;
00614   htmlFile << "<td align=\"center\">Pedestals in femtoCoulombs<br><a href=\"#RAW_fC\">Raw Pedestals</a><br><a href=\"#SUB_fC\">Subtracted Pedestals</a><br></td></tr>"<<endl;
00615   htmlFile << "<tr><td align=\"center\" colspan=2><a href=\"#PROBLEM_PEDS\">Problem Pedestals</a></td></tr>"<<endl;
00616   htmlFile << "<td align=\"center\"><a href=\"#REF_ADC\">Reference Pedestals <br>from database (ADC)</a><br></td><td align=\"center\"><a href=\"#REF_fC\"> Reference Pedestals <br>from database (fC)</a><br></td></tr>"<<endl;
00617   htmlFile <<"</table>"<<endl;
00618   htmlFile <<"<br><br>"<<endl;
00619 
00620 
00621   // Plot Pedestal Mean and RMS values
00622   htmlFile << "<h2><strong><a name=\"OVERALL_PEDS\">2D Maps of Pedestal Means and RMS Values</strong></h2>"<<endl;
00623   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00624   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00625   htmlFile << "cellpadding=\"10\"> " << endl;
00626   gStyle->SetPalette(1); // set back to normal rainbow color
00627   
00628 
00629   // Depths are stored as:  0:  HB/HF depth 1, 1:  HB/HF 2, 2:  HE 3, 3:  HO/ZDC, 4: HE 1, 5:  HE2
00630   // remap so that HE depths are plotted consecutively
00631   int mydepth[6]={0,1,4,5,2,3};
00632   for (int i=0;i<6;++i)
00633     {
00634       htmlFile << "<tr align=\"left\">" << endl;
00635       htmlAnyHisto(runNo,MeanMapByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00636       htmlAnyHisto(runNo,RMSMapByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00637       htmlFile <<"</tr>"<<endl;
00638     }
00639   htmlFile <<"</table>"<<endl;
00640   htmlFile <<"<br><hr><br>"<<endl;
00641   
00642   // Raw Pedestals (ADC)
00643   htmlFile << "<h2><strong><a name=\"RAW_ADC\">Raw Pedestals from database (ADC)</strong></h2>"<<endl;
00644   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00645   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00646   htmlFile << "cellpadding=\"10\"> " << endl;
00647   gStyle->SetPalette(1); //set back to normal rainbow color
00648   for (int i=0;i<6;++i)
00649     {
00650       htmlFile << "<tr align=\"left\">" << endl;
00651       htmlAnyHisto(runNo,rawADCPedestalMean[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00652       htmlAnyHisto(runNo,rawADCPedestalRMS[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00653       htmlFile <<"</tr>"<<endl;
00654     }
00655   for (int i=0;i<6;++i)
00656     {
00657       htmlFile << "<tr align=\"left\">" << endl;
00658       htmlAnyHisto(runNo,rawADCPedestalMean_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00659       htmlAnyHisto(runNo,rawADCPedestalRMS_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00660       htmlFile <<"</tr>"<<endl;
00661     }
00662   htmlFile <<"</table>"<<endl;
00663   htmlFile <<"<br><hr><br>"<<endl;
00664 
00665   // Subtracted Pedestals (ADC)
00666   htmlFile << "<h2><strong><a name=\"SUB_ADC\">Subtracted Pedestals from database (ADC)</strong></h2>"<<endl;
00667   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00668   htmlFile <<"Plots of (computed pedestal values) - (reference pedestal values).<br>"<<endl;
00669   htmlFile <<"(If the database stores values in fC, the subtracted pedestal widths in ADC may not be plotted correctly here.)<br>"<<endl;
00670   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00671   htmlFile << "cellpadding=\"10\"> " << endl;
00672   gStyle->SetPalette(1); //set back to normal rainbow color
00673   for (int i=0;i<6;++i)
00674     {
00675       htmlFile << "<tr align=\"left\">" << endl;
00676       htmlAnyHisto(runNo,subADCPedestalMean[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00677       htmlAnyHisto(runNo,subADCPedestalRMS[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00678       htmlFile <<"</tr>"<<endl;
00679     }
00680   for (int i=0;i<6;++i)
00681     {
00682       htmlFile << "<tr align=\"left\">" << endl;
00683       htmlAnyHisto(runNo,subADCPedestalMean_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00684       htmlAnyHisto(runNo,subADCPedestalRMS_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00685       htmlFile <<"</tr>"<<endl;
00686     }
00687   htmlFile <<"</table>"<<endl;
00688 
00689    // Raw Pedestals (fC)
00690   htmlFile << "<h2><strong><a name=\"RAW_fC\">Raw Pedestals from database (fC)</strong></h2>"<<endl;
00691   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00692   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00693   htmlFile << "cellpadding=\"10\"> " << endl;
00694   gStyle->SetPalette(1); //set back to normal rainbow color
00695   for (int i=0;i<6;++i)
00696     {
00697       htmlFile << "<tr align=\"left\">" << endl;
00698       htmlAnyHisto(runNo,rawFCPedestalMean[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00699       htmlAnyHisto(runNo,rawFCPedestalRMS[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00700       htmlFile <<"</tr>"<<endl;
00701     }
00702   for (int i=0;i<6;++i)
00703     {
00704       htmlFile << "<tr align=\"left\">" << endl;
00705       htmlAnyHisto(runNo,rawFCPedestalMean_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00706       htmlAnyHisto(runNo,rawFCPedestalRMS_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00707       htmlFile <<"</tr>"<<endl;
00708     }
00709   htmlFile <<"</table>"<<endl;
00710   htmlFile <<"<br><hr><br>"<<endl;
00711 
00712   // Subtracted Pedestals (fC)
00713   htmlFile << "<h2><strong><a name=\"SUB_fC\">Subtracted Pedestals from database (fC)</strong></h2>"<<endl;
00714   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl; 
00715   htmlFile <<"Plots of (computed pedestal values) - (reference pedestal values).<br>"<<endl;
00716   htmlFile <<"(If the database stores values in ADC, the subtracted pedestal widths in fC may not be plotted correctly here.)<br>"<<endl;
00717   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00718   htmlFile << "cellpadding=\"10\"> " << endl;
00719   gStyle->SetPalette(1); //set back to normal rainbow color
00720   for (int i=0;i<6;++i)
00721     {
00722       htmlFile << "<tr align=\"left\">" << endl;
00723       htmlAnyHisto(runNo,subFCPedestalMean[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00724       htmlAnyHisto(runNo,subFCPedestalRMS[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00725       htmlFile <<"</tr>"<<endl;
00726     }
00727   for (int i=0;i<6;++i)
00728     {
00729       htmlFile << "<tr align=\"left\">" << endl;
00730       htmlAnyHisto(runNo,subFCPedestalMean_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00731       htmlAnyHisto(runNo,subFCPedestalRMS_1D[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00732       htmlFile <<"</tr>"<<endl;
00733     }
00734   htmlFile <<"</table>"<<endl;
00735 
00736 
00737   // Plot Pedestal Plot Errors 
00738   htmlFile << "<h2><strong><a name=\"PROBLEM_PEDS\">Problem Pedestals</strong></h2>"<<endl;
00739   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00740   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00741   htmlFile << "cellpadding=\"10\"> " << endl;
00742   gStyle->SetPalette(20,pcol_error_); //set back to normal rainbow color
00743   for (int i=0;i<3;++i)
00744     {
00745       htmlFile << "<tr align=\"left\">" << endl;
00746       htmlAnyHisto(runNo,ProblemPedestalsByDepth[2*i],"i#eta","i#phi", 92, htmlFile, htmlDir);
00747       htmlAnyHisto(runNo,ProblemPedestalsByDepth[2*i+1],"i#eta","i#phi", 92, htmlFile, htmlDir);
00748       htmlFile <<"</tr>"<<endl;
00749     }
00750   htmlFile <<"</table>"<<endl;
00751   htmlFile <<"<br><hr><br>"<<endl;
00752 
00753   //Plot Reference Pedestals
00754   // Reference Pedestals in ADC
00755   htmlFile << "<h2><strong><a name=\"REF_ADC\">Reference Pedestals from database (ADC)</strong></h2>"<<endl;
00756   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00757   htmlFile <<"(If the database stores values in fC, the pedestal widths in ADC may not be plotted correctly here.)<br>"<<endl;
00758   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00759   htmlFile << "cellpadding=\"10\"> " << endl;
00760   gStyle->SetPalette(1); //set back to normal rainbow color
00761   for (int i=0;i<6;++i)
00762     {
00763       htmlFile << "<tr align=\"left\">" << endl;
00764       htmlAnyHisto(runNo,ADC_PedestalFromDBByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00765       htmlAnyHisto(runNo,ADC_WidthFromDBByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00766       htmlFile <<"</tr>"<<endl;
00767     }
00768   htmlFile <<"</table>"<<endl;
00769 
00770   htmlFile <<"<br><hr><br>"<<endl;
00771 
00772   // Reference Pedestals in fC
00773   htmlFile << "<h2><strong><a name=\"REF_fC\">Reference Pedestals from database (fC)</strong></h2>"<<endl;
00774   htmlFile <<"<a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top</a><br>"<<endl;
00775   htmlFile <<"(If the database stores values in ADC, the pedestal widths in fC may not be plotted correctly here.)<br>"<<endl;
00776   htmlFile << "<table border=\"0\" cellspacing=\"0\" " << endl;
00777   htmlFile << "cellpadding=\"10\"> " << endl;
00778   gStyle->SetPalette(1); //set back to normal rainbow color
00779   for (int i=0;i<6;++i)
00780     {
00781       htmlFile << "<tr align=\"left\">" << endl;
00782       htmlAnyHisto(runNo,fC_PedestalFromDBByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00783       htmlAnyHisto(runNo,fC_WidthFromDBByDepth[mydepth[i]],"i#eta","i#phi", 92, htmlFile, htmlDir);
00784       htmlFile <<"</tr>"<<endl;
00785     }
00786   htmlFile <<"</table>"<<endl;
00787 
00788   htmlFile <<"<br><hr><br><a href= \"#EXPERT_PEDESTAL_TOP\" > Back to Top of Page </a><br>"<<endl;
00789   htmlFile <<"<a href = \".\"> Back to Main HCAL DQM Page </a><br>"<<endl;
00790   htmlFile <<"<a href= \""<<htmlName.c_str()<<"\" > Back to Pedestal Status Page </a><br>"<<endl;
00791 
00792   htmlFile << "</body> " << endl;
00793   htmlFile << "</html> " << endl;
00794   
00795   htmlFile.close();
00796 
00797   if (showTiming_)
00798     {
00799       cpu_timer.stop();  cout <<"TIMER:: HcalPedestalClient  HTMLEXPERTOUTPUT ->"<<cpu_timer.cpuTime()<<endl;
00800     }
00801   return;
00802 } // void HcalPedestalClient::htmlExpertOutput(...)
00803 
00804 
00805 
00806 void HcalPedestalClient::loadHistograms(TFile* infile)
00807 {
00808   TNamed* tnd = (TNamed*)infile->Get("DQMData/Hcal/PedestalMonitor_Hcal/Pedestal Task Event Number");
00809   if(tnd)
00810     {
00811       string s =tnd->GetTitle();
00812       ievt_ = -1;
00813       sscanf((s.substr(2,s.length()-2)).c_str(), "%d", &ievt_);
00814     }
00815 
00816    ostringstream name;
00817   // Grab individual histograms
00818   name<<process_.c_str()<<"PedestalMonitor_Hcal/ ProblemPedestals";
00819   ProblemPedestals = (TH2F*)infile->Get(name.str().c_str());
00820   name.str("");
00821   
00822   for (int i=0;i<6;++i)
00823     {
00824       // Grab arrays of histograms
00825       name<<process_.c_str()<<"PedestalMonitor_Hcal/problem_pedestals/"<<subdets_[i]<<" Problem Pedestal Rate";
00826       ProblemPedestalsByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00827       name.str("");
00828 
00829       // Overall Pedestal Map Plots
00830       name<<process_.c_str()<<"PedestalMonitor_Hcal/"<<subdets_[i]<<"Pedestal Mean Map ADC";
00831       MeanMapByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00832       name.str("");
00833       
00834       name<<process_.c_str()<<"PedestalMonitor_Hcal/"<<subdets_[i]<<"Pedestal RMS Map ADC";
00835       RMSMapByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00836       name.str("");
00837 
00838       // Database Pedestal values
00839       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/adc/"<<subdets_[i]<<"Pedestal Values from DataBase ADC";
00840       ADC_PedestalFromDBByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00841       name.str("");
00842 
00843       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/adc/"<<subdets_[i]<<"Pedestal Widths from DataBase ADC";
00844       ADC_WidthFromDBByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00845       name.str("");
00846 
00847       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/fc/"<<subdets_[i]<<"Pedestal Values from DataBase fC";
00848       fC_PedestalFromDBByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00849       name.str("");
00850 
00851       name<<process_.c_str()<<"PedestalMonitor_Hcal/reference_pedestals/fc/"<<subdets_[i]<<"Pedestal Widths from DataBase fC";
00852       fC_WidthFromDBByDepth[i] = (TH2F*)infile->Get(name.str().c_str());
00853       name.str("");
00854 
00855       // Raw, sub Pedestals in ADC
00856       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"Pedestal Values Map ADC";
00857       rawADCPedestalMean[i] = (TH2F*)infile->Get(name.str().c_str());
00858       name.str("");
00859       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"Pedestal Widths Map ADC";
00860       rawADCPedestalRMS[i] = (TH2F*)infile->Get(name.str().c_str());
00861       name.str("");
00862       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Values Map ADC";
00863       subADCPedestalMean[i] = (TH2F*)infile->Get(name.str().c_str());
00864       name.str("");
00865       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Widths Map ADC";
00866       subADCPedestalRMS[i] = (TH2F*)infile->Get(name.str().c_str());
00867       name.str("");
00868       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"1D Pedestal Values ADC";
00869       rawADCPedestalMean_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00870       name.str("");
00871       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/raw/"<<subdets_[i]<<"1D Pedestal Widths ADC";
00872       rawADCPedestalRMS_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00873       name.str("");
00874       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Values ADC";
00875       subADCPedestalMean_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00876       name.str("");
00877       name<<process_.c_str()<<"PedestalMonitor_Hcal/adc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Widths ADC";
00878       subADCPedestalRMS_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00879       name.str("");
00880 
00881       // Raw, sub Pedestals in fC
00882       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"Pedestal Values Map fC";
00883       rawFCPedestalMean[i] = (TH2F*)infile->Get(name.str().c_str());
00884       name.str("");
00885       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"Pedestal Widths Map fC";
00886       rawFCPedestalRMS[i] = (TH2F*)infile->Get(name.str().c_str());
00887       name.str("");
00888       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Values Map fC";
00889       subFCPedestalMean[i] = (TH2F*)infile->Get(name.str().c_str());
00890       name.str("");
00891       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"Subtracted Pedestal Widths Map fC";
00892       subFCPedestalRMS[i] = (TH2F*)infile->Get(name.str().c_str());
00893       name.str("");
00894       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"1D Pedestal Values fC";
00895       rawFCPedestalMean_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00896       name.str("");
00897       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/raw/"<<subdets_[i]<<"1D Pedestal Widths fC";
00898       rawFCPedestalRMS_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00899       name.str("");
00900       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Values fC";
00901       subFCPedestalMean_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00902       name.str("");
00903       name<<process_.c_str()<<"PedestalMonitor_Hcal/fc/subtracted__beta_testing/"<<subdets_[i]<<"1D Subtracted Pedestal Widths fC";
00904       subFCPedestalRMS_1D[i] =(TH1F*)infile->Get(name.str().c_str());
00905       name.str("");
00906     } //for (int i=0;i<6;++i)
00907   return;
00908 } // void HcalPedestalClient::loadHistograms(...)
00909 

Generated on Tue Jun 9 17:32:56 2009 for CMSSW by  doxygen 1.5.4