From b4b033771d41cc919f1b6d174ca629da389060ab Mon Sep 17 00:00:00 2001
From: Domenico Giordano
 <sha1-07f7bb78311ae556a5edf2d08855b34552c86a25@cern.ch>
Date: Mon, 6 Apr 2009 16:38:45 +0000
Subject: [PATCH] --- yaml --- r: 64383 b: "refs/heads/CMSSW_7_1_X" c:
 eb9815ecd7cc51d0106d0d8817a765f9268e8c2a h: "refs/heads/CMSSW_7_1_X" i:  
 64381: 47ee10934d166402b27bd3449a02ba700a13125a   64379:
 539c985aaf809bf98686290921083e82bd4c925e   64375:
 ef4e534c379fa257d92c2861a952dccb8bdc407d   64367:
 f8b04a40e68eecc1a333104cb92bf2a0352a71c9   64351:
 a5edb2d39f5e5a43e8d4d0b30fad1a3221b2e52f   64319:
 4109e7147829ac8377edc7de62dcbf405861fa94   64255:
 9adaea7b4ed8e8877bedacf3dfa91a9a1453ddcc v: v3

---
 [refs]                                        |   2 +-
 .../interface/DQMHistoryServiceBase.h         |  11 +-
 .../Diagnostic/src/DQMHistoryServiceBase.cc   | 121 ++++++++++--------
 3 files changed, 81 insertions(+), 53 deletions(-)

diff --git a/[refs] b/[refs]
index 00598d2138f31..12999fb54f074 100644
--- a/[refs]
+++ b/[refs]
@@ -1,3 +1,3 @@
 ---
 refs/heads/gh-pages: 82f76fd1a3f5d9423d7c163d852a0c36647fc4ea
-"refs/heads/CMSSW_7_1_X": e4aab8d1aac2f2c1c7a725ca66d6c0c71e420a8e
+"refs/heads/CMSSW_7_1_X": eb9815ecd7cc51d0106d0d8817a765f9268e8c2a
diff --git a/trunk/DQMServices/Diagnostic/interface/DQMHistoryServiceBase.h b/trunk/DQMServices/Diagnostic/interface/DQMHistoryServiceBase.h
index ac11a46513f32..6004b824e3103 100644
--- a/trunk/DQMServices/Diagnostic/interface/DQMHistoryServiceBase.h
+++ b/trunk/DQMServices/Diagnostic/interface/DQMHistoryServiceBase.h
@@ -35,7 +35,16 @@ class DQMHistoryServiceBase {
   virtual void scanTreeAndFillSummary(const std::vector<MonitorElement*>& MEs, HDQMSummary* summary,std::string& histoName, std::vector<std::string>& Quantities);
   virtual uint32_t getRunNumber() const;
   virtual uint32_t returnDetComponent(std::string& str){return 999999;}
-
+  
+  virtual bool setDBLabelsForLandau(std::string& keyName, std::vector<std::string>& userDBContent);
+  virtual bool setDBLabelsForGauss (std::string& keyName, std::vector<std::string>& userDBContent);
+  virtual bool setDBLabelsForStat  (std::string& keyName, std::vector<std::string>& userDBContent);
+  virtual bool setDBLabelsForUser  (std::string& keyName, std::vector<std::string>& userDBContent){return false;}
+
+  virtual bool setDBValuesForLandau(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values);
+  virtual bool setDBValuesForGauss(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values );
+  virtual bool setDBValuesForStat(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values  );
+  virtual bool setDBValuesForUser(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values  ){return false;}
   
   DQMStore* dqmStore_;
   edm::ParameterSet iConfig_;
diff --git a/trunk/DQMServices/Diagnostic/src/DQMHistoryServiceBase.cc b/trunk/DQMServices/Diagnostic/src/DQMHistoryServiceBase.cc
index 0127ea31192f0..0443d20e035d4 100644
--- a/trunk/DQMServices/Diagnostic/src/DQMHistoryServiceBase.cc
+++ b/trunk/DQMServices/Diagnostic/src/DQMHistoryServiceBase.cc
@@ -36,7 +36,6 @@ bool DQMHistoryServiceBase::checkForCompatibility(std::string ss){
   return previousRun<getRunNumber();
 }
 
-
 void DQMHistoryServiceBase::createSummary(){
     
   //LOOP OVER THE LIST OF SUMMARY OBJECTS TO INSERT IN DB
@@ -57,22 +56,14 @@ void DQMHistoryServiceBase::createSummary(){
     std::vector<std::string> Quantities = ithistoList->getUntrackedParameter<std::vector<std::string> >("quantitiesToExtract"); 
     for (size_t i=0;i<Quantities.size();++i){
       
-      if  ( Quantities[i] == "landau" ){ 
-	userDBContent.push_back(keyName+std::string("@")+std::string("landauPeak"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("landauPeakErr"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("landauSFWHM"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("landauChi2NDF"));
-      }
-      else if  ( Quantities[i] == "gauss" ){ 
-	userDBContent.push_back(keyName+std::string("@")+std::string("gaussMean"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("gaussSigma"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("gaussChi2NDF"));
-      }	
-      else if  ( Quantities[i] == "stat" ){ 
-	userDBContent.push_back(keyName+std::string("@")+std::string("entries"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("mean"));
-	userDBContent.push_back(keyName+std::string("@")+std::string("rms"));
-      }
+      if  ( Quantities[i] == "landau" )
+	setDBLabelsForLandau(keyName, userDBContent);
+      else if  ( Quantities[i] == "gauss" )
+	setDBLabelsForGauss(keyName, userDBContent);
+      else if  ( Quantities[i] == "stat" )
+	setDBLabelsForStat(keyName, userDBContent);
+      else if  ( Quantities[i] == "user" )
+	setDBLabelsForUser(keyName, userDBContent);
       else{
 	edm::LogError("DQMHistoryServiceBase") 
 	  << "Quantity " << Quantities[i] 
@@ -85,7 +76,7 @@ void DQMHistoryServiceBase::createSummary(){
     }
   }
   obj_->setUserDBContent(userDBContent);
-    
+  
   std::stringstream ss;
   ss << "[DQMHistoryServiceBase::scanTreeAndFillSummary] QUANTITIES TO BE INSERTED IN DB :" << std::endl;  
   std::vector<std::string> userDBContentA = obj_->getUserDBContent();
@@ -113,9 +104,6 @@ void DQMHistoryServiceBase::openRequestedFile() {
 
   dqmStore_ = edm::Service<DQMStore>().operator->(); 
 
-  // ** FIXME ** // 
-  dqmStore_->setVerbose(0); //add config param
-
   if( iConfig_.getParameter<bool>("accessDQMFile") ){
     
     std::string fileName = iConfig_.getUntrackedParameter<std::string>("FILE_NAME","");
@@ -152,38 +140,21 @@ void DQMHistoryServiceBase::scanTreeAndFillSummary(const std::vector<MonitorElem
       for(size_t i=0;i<Quantities.size();++i){
 	
 
-	if(Quantities[i]  == "landau"){  
-	  userDBContent.push_back(keyName+std::string("@landauPeak"));
-	  userDBContent.push_back(keyName+std::string("@landauPeakErr"));
-	  userDBContent.push_back(keyName+std::string("@landauSFWHM"));
-	  userDBContent.push_back(keyName+std::string("@landauChi2NDF"));
-
-	  fitME->doLanGaussFit(*iterMes);
-	  values.push_back( fitME->getLanGaussPar("mpv")    ); 
-	  values.push_back( fitME->getLanGaussParErr("mpv") ); 
-	  values.push_back( fitME->getLanGaussConv("fwhm")  );
-	  if (fitME->getFitnDof()!=0 ) values.push_back( fitME->getFitChi()/fitME->getFitnDof() );
-	  else                         values.push_back(-99.);
+	if(Quantities[i]  == "landau"){
+	  setDBLabelsForLandau(keyName, userDBContent);
+	  setDBValuesForLandau(iterMes,values);
+	}
+	else if(Quantities[i]  == "gauss"){
+	  setDBLabelsForGauss(keyName, userDBContent);
+	  setDBValuesForGauss(iterMes,values);
 	}
-	else if(Quantities[i]  == "gauss"){  
-	  userDBContent.push_back(keyName+std::string("@gaussMean"));
-	  userDBContent.push_back(keyName+std::string("@gaussSigma"));
-          userDBContent.push_back(keyName+std::string("@gaussChi2NDF"));
-
-	  fitME->doGaussFit(*iterMes);
-	  values.push_back( fitME->getGaussPar("mean")  );
-	  values.push_back( fitME->getGaussPar("sigma") );
-	  if (fitME->getFitnDof()!=0 ) values.push_back( fitME->getFitChi()/fitME->getFitnDof() );
-	  else                         values.push_back(-99.);
+	else if(Quantities[i]  == "stat"){
+	  setDBLabelsForStat(keyName, userDBContent);
+  	  setDBValuesForStat(iterMes,values);
 	}
-	else if(Quantities[i]  == "stat"){  
-	  userDBContent.push_back(keyName+std::string("@entries"));
-	  userDBContent.push_back(keyName+std::string("@mean"));
-	  userDBContent.push_back(keyName+std::string("@rms"));
-	  
-	  values.push_back( (*iterMes)->getEntries());
-	  values.push_back( (*iterMes)->getMean());
-	  values.push_back( (*iterMes)->getRMS());
+	else if  ( Quantities[i] == "user" ){
+	  setDBLabelsForUser(keyName, userDBContent);
+	  setDBValuesForUser(iterMes,values);
 	}
       }  
       
@@ -201,6 +172,54 @@ void DQMHistoryServiceBase::scanTreeAndFillSummary(const std::vector<MonitorElem
   edm::LogInfo("DQMHistoryServiceBase") <<  "[DQMHistoryServiceBase::scanTreeAndFillSummary] " << ss.str();
 }   
  
+
+bool DQMHistoryServiceBase::setDBLabelsForLandau(std::string& keyName, std::vector<std::string>& userDBContent){ 
+  userDBContent.push_back(keyName+std::string("@")+std::string("landauPeak"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("landauPeakErr"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("landauSFWHM"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("landauChi2NDF"));
+  return true;
+}
+
+bool DQMHistoryServiceBase::setDBLabelsForGauss(std::string& keyName, std::vector<std::string>& userDBContent){ 
+  userDBContent.push_back(keyName+std::string("@")+std::string("gaussMean"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("gaussSigma"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("gaussChi2NDF"));
+  return true;
+}	
+bool DQMHistoryServiceBase::setDBLabelsForStat(std::string& keyName, std::vector<std::string>& userDBContent){ 
+  userDBContent.push_back(keyName+std::string("@")+std::string("entries"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("mean"));
+  userDBContent.push_back(keyName+std::string("@")+std::string("rms"));
+  return true;
+}
+
+bool DQMHistoryServiceBase::setDBValuesForLandau(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values){
+  fitME->doLanGaussFit(*iterMes);
+  values.push_back( fitME->getLanGaussPar("mpv")    ); 
+  values.push_back( fitME->getLanGaussParErr("mpv") ); 
+  values.push_back( fitME->getLanGaussConv("fwhm")  );
+  if (fitME->getFitnDof()!=0 ) values.push_back( fitME->getFitChi()/fitME->getFitnDof() );
+  else                         values.push_back(-99.);
+  return true;
+}
+
+bool DQMHistoryServiceBase::setDBValuesForGauss(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values){  
+  fitME->doGaussFit(*iterMes);
+  values.push_back( fitME->getGaussPar("mean")  );
+  values.push_back( fitME->getGaussPar("sigma") );
+  if (fitME->getFitnDof()!=0 ) values.push_back( fitME->getFitChi()/fitME->getFitnDof() );
+  else                         values.push_back(-99.);
+  return true;
+}
+
+bool DQMHistoryServiceBase::setDBValuesForStat(std::vector<MonitorElement*>::const_iterator iterMes, HDQMSummary::InputVector& values){  
+  values.push_back( (*iterMes)->getEntries());
+  values.push_back( (*iterMes)->getMean());
+  values.push_back( (*iterMes)->getRMS());
+  return true;
+}
+
 uint32_t DQMHistoryServiceBase::getRunNumber() const {
   edm::LogInfo("DQMHistoryServiceBase") <<  "[DQMHistoryServiceBase::getRunNumber] " << iConfig_.getParameter<uint32_t>("RunNb");
   return iConfig_.getParameter<uint32_t>("RunNb");