#include <HDQMInspector.h>
Classes | |
struct | DetIdItemList |
Public Member Functions | |
void | closeFile () |
void | createTrend (const std::string ListItems, const std::string CanvasName="", const int logy=0, const std::string Conditions="", std::string const &Labels="", const unsigned int firstRun=1, const unsigned int lastRun=0xFFFFFFFE, int const UseYRange=0, double const &YMin=999999, double const &YMax=-999999) |
void | createTrendLastRuns (const std::string ListItems, const std::string CanvasName="", const int logy=0, const std::string Conditions="", std::string const &Labels="", const unsigned int nRuns=10, int const UseYRange=0, double const &YMin=999999, double const &YMax=-999999) |
double | findGraphMax (TGraphErrors *) |
double | findGraphMin (TGraphErrors *) |
std::vector< std::string > | getListItems () |
std::vector< unsigned int > | getRuns () |
std::vector< float > | getSummary () |
std::vector< unsigned int > | getvDetId () |
HDQMInspector () | |
HDQMInspector (const HDQMInspectorConfigBase *InConfig) | |
std::string | readListFromFile (const std::string &listFileName) |
void | setBlackList (std::string const &ListItems) |
void | setDB (const std::string &DBName, const std::string &DBTag, const std::string &DBauth="") |
void | setDebug (int i) |
void | setDoStat (int i) |
void | setSeparator (std::string const in) |
void | setSkip0s (bool const in) |
void | setSkip99s (bool const in) |
void | setWhiteList (std::string const &ListItems) |
virtual | ~HDQMInspector () |
Public Attributes | |
TFile * | fOutFile |
Private Member Functions | |
void | accessDB () |
bool | ApplyConditions (std::string &, std::vector< DetIdItemList > &) |
void | InitializeIOVList () |
bool | isListed (unsigned int run, std::vector< unsigned int > &vList) |
void | plot (size_t &nPads, std::string CanvasName, int logy=0, std::string const &Labels="", int const UseYRange=0, double const XMin=999999, double const YMin=-999999) |
void | setItems (std::string) |
bool | setRange (unsigned int &firstRun, unsigned int &lastRun) |
void | style () |
void | unpackConditions (std::string &, std::vector< DetIdItemList > &) |
size_t | unpackItems (std::string &) |
Private Attributes | |
std::vector< unsigned int > | blackList |
std::string | DBauth_ |
std::string | DBName_ |
std::string | DBTag_ |
const HDQMInspectorConfigBase * | fHDQMInspectorConfig |
std::string | fSep |
bool | fSkip0s |
bool | fSkip99s |
int | iDebug |
int | iDoStat |
std::vector< unsigned int > | iovList |
CondCachedIter< HDQMSummary > * | Iterator |
std::vector< unsigned int > | vdetId_ |
std::vector< DetIdItemList > | vDetIdItemList_ |
std::vector< std::string > | vlistItems_ |
std::vector< unsigned int > | vRun_ |
std::vector< float > | vSummary_ |
std::vector< unsigned int > | whiteList |
Definition at line 28 of file HDQMInspector.h.
HDQMInspector::HDQMInspector | ( | ) | [inline] |
HDQMInspector::HDQMInspector | ( | const HDQMInspectorConfigBase * | InConfig | ) | [inline] |
virtual HDQMInspector::~HDQMInspector | ( | ) | [inline, virtual] |
void HDQMInspector::accessDB | ( | ) | [private] |
Definition at line 82 of file HDQMInspector.cc.
References gather_cfg::cout, CondBasicIter::create(), DBauth_, DBName_, DBTag_, InitializeIOVList(), and Iterator.
Referenced by setDB().
{ //double start, end; // start = clock(); if(Iterator!=0) delete Iterator; Iterator = new CondCachedIter<HDQMSummary>(); std::cout << "creating connection" << std::endl; Iterator->create(DBName_,DBTag_,DBauth_); std::cout << "connection created" << std::endl; InitializeIOVList(); // end = clock(); // if(iDebug) //std::cout <<"Time Creation link with Database = " << ((double) (end - start)) << " (a.u.)" <<std::endl; }
bool HDQMInspector::ApplyConditions | ( | std::string & | Conditions, |
std::vector< DetIdItemList > & | vdetIdItemList | ||
) | [private] |
Definition at line 736 of file HDQMInspector.cc.
References gather_cfg::cout, cond::rpcobgas::detid, fSep, iDebug, NULL, and makeHLTPrescaleTable::values.
Referenced by createTrend().
{ double resultdbl=1; char cConditions[1024]; char singleCondition[1024]; char condCVal[1024]; sprintf(cConditions,"%s",Conditions.c_str()); if (iDebug) { std::cout << "Conditions " << cConditions << std::endl; } for(size_t ic=0;ic<vdetIdItemList.size();++ic) for(size_t jc=0;jc<vdetIdItemList[ic].items.size();++jc){ //scientific precision doesn't work in HDQMExpressionEvaluator... //sprintf(condCVal,"%g",vdetIdItemList[ic].values[jc]); sprintf(condCVal,"%f",vdetIdItemList[ic].values[jc]); sprintf(singleCondition,"%d%s%s",vdetIdItemList[ic].detid,fSep.c_str(),vdetIdItemList[ic].items[jc].c_str()); //printf("dhidas %d %s %s\n",vdetIdItemList[ic].detid,fSep.c_str(),vdetIdItemList[ic].items[jc].c_str()); //printf("dhidas %s %s\n", cConditions, singleCondition); char* fpos = strstr(cConditions,singleCondition); //printf("dhidas %s %s %i\n", fpos, condCVal, strlen(condCVal)); strncpy(fpos,condCVal,strlen(condCVal)); memset(fpos+strlen(condCVal),' ',strlen(singleCondition)-strlen(condCVal)); //std::cout << "fpos " << fpos << " len condCVal " << strlen(condCVal) << " strlen(singleCondition) " << strlen(singleCondition) << " len cConditions " << strlen(cConditions)<<std::endl; //std::cout << "Conditions Replace: Condition " << singleCondition << " string changed in " << cConditions << std::endl; } std::string stringToEvaluate; char * pch; pch = strtok (cConditions," "); while (pch != NULL){ stringToEvaluate.append(pch); pch = strtok (NULL, " "); } //for(size_t i=0;i<strlen(cConditions);++i) // if(cConditions[i] != " ") // stringToEvaluate.push_back(cConditions[i]); if(iDebug) { std::cout << "Conditions After SubStitution " << stringToEvaluate << std::endl; } TFormula Formula("condition", stringToEvaluate.c_str()); resultdbl = Formula.Eval(0); if(iDebug) { std::cout << "Result " << resultdbl << std::endl; } if(!resultdbl) { return false; } return true; }
void HDQMInspector::closeFile | ( | ) | [inline] |
Definition at line 86 of file HDQMInspector.h.
References fOutFile.
void HDQMInspector::createTrend | ( | const std::string | ListItems, |
const std::string | CanvasName = "" , |
||
const int | logy = 0 , |
||
const std::string | Conditions = "" , |
||
std::string const & | Labels = "" , |
||
const unsigned int | firstRun = 1 , |
||
const unsigned int | lastRun = 0xFFFFFFFE , |
||
int const | UseYRange = 0 , |
||
double const & | YMin = 999999 , |
||
double const & | YMax = -999999 |
||
) |
Definition at line 320 of file HDQMInspector.cc.
References ApplyConditions(), blackList, gather_cfg::cout, cond::rpcobgas::detid, HDQMSummary::getRunNr(), CondBasicIter::getStartTime(), HDQMSummary::getSummaryObj(), i, iDebug, isListed(), HDQMInspector::DetIdItemList::items, Iterator, CondIter< DataT >::next(), plot(), CondIter< DataT >::rewind(), setRange(), unpackConditions(), unpackItems(), HDQMInspector::DetIdItemList::values, vDetIdItemList_, vRun_, vSummary_, and whiteList.
Referenced by createTrendLastRuns().
{ std::cout << "\n****************\nCreateTrend\n****************\n" << std::endl; std::cout << "ListItems : " << ListItems << std::endl; std::cout << "Conditions : " << Conditions << std::endl; vRun_.clear(); vSummary_.clear(); vDetIdItemList_.clear(); std::vector<DetIdItemList> vDetIdItemListCut; size_t nPads=unpackItems(ListItems); unpackConditions(Conditions,vDetIdItemListCut); // double start = clock(); std::cout << "firstRun " << firstRun << " lastRun " << lastRun << std::endl; if(!setRange(firstRun,lastRun)){ Iterator->rewind(); return; } const HDQMSummary* reference; while((reference = Iterator->next())) { // Check the run and black and white lists if(Iterator->getStartTime()<firstRun || Iterator->getStartTime()>lastRun || isListed(reference->getRunNr(), blackList)) { continue; } if (whiteList.size() > 0 && !isListed(reference->getRunNr(), whiteList)) { continue; } if(vDetIdItemListCut.size()){ for(size_t ij=0;ij!=vDetIdItemListCut.size();++ij){ vDetIdItemListCut[ij].values=reference->getSummaryObj(vDetIdItemListCut[ij].detid, vDetIdItemListCut[ij].items); } if(!ApplyConditions(Conditions,vDetIdItemListCut)) continue; } vRun_.push_back(reference->getRunNr()); for(size_t ij=0;ij!=vDetIdItemList_.size();++ij){ vDetIdItemList_[ij].values=reference->getSummaryObj(vDetIdItemList_[ij].detid, vDetIdItemList_[ij].items); vSummary_.insert(vSummary_.end(),vDetIdItemList_[ij].values.begin(),vDetIdItemList_[ij].values.end()); if(iDebug){ std::cout << ListItems << " run " << vRun_.back() << " values \n" ; DetIdItemList detiditemlist=vDetIdItemList_[ij]; for(size_t i=0;i<detiditemlist.items.size();++i) { std::cout << "\t" << detiditemlist.items[i] << " " << detiditemlist.values[i] <<" " << i << " \n"; } std::cout << "\n" << std::endl; } } } if(vRun_.size()) { plot(nPads, CanvasName, logy, Labels, UseYRange, YMin, YMax); } std::cout << "\n****** Ignore this error *****\n" << std::endl; Iterator->rewind(); std::cout << "\n******************************\n" << std::endl; }
void HDQMInspector::createTrendLastRuns | ( | const std::string | ListItems, |
const std::string | CanvasName = "" , |
||
const int | logy = 0 , |
||
const std::string | Conditions = "" , |
||
std::string const & | Labels = "" , |
||
const unsigned int | nRuns = 10 , |
||
int const | UseYRange = 0 , |
||
double const & | YMin = 999999 , |
||
double const & | YMax = -999999 |
||
) |
Definition at line 297 of file HDQMInspector.cc.
References createTrend(), first, iovList, and prof2calltree::last.
{ unsigned int first,last; unsigned int iovListSize = iovList.size(); if (iovListSize>0) { last = iovList.back(); if (iovListSize>=nRuns) { first = iovList.at(iovListSize-nRuns); } else { first = *iovList.begin(); } } else return; createTrend(ListItems,CanvasName,logy,Conditions,Labels,first,last, UseYRange, YMin, YMax); return; }
double HDQMInspector::findGraphMax | ( | TGraphErrors * | g | ) |
Definition at line 832 of file HDQMInspector.cc.
References n, and ExpressReco_HICollisions_FallBack::y.
Referenced by plot().
double HDQMInspector::findGraphMin | ( | TGraphErrors * | g | ) |
Definition at line 842 of file HDQMInspector.cc.
References n, and ExpressReco_HICollisions_FallBack::y.
Referenced by plot().
std::vector<std::string> HDQMInspector::getListItems | ( | ) | [inline] |
std::vector<unsigned int> HDQMInspector::getRuns | ( | ) | [inline] |
std::vector<float> HDQMInspector::getSummary | ( | ) | [inline] |
std::vector<unsigned int> HDQMInspector::getvDetId | ( | ) | [inline] |
void HDQMInspector::InitializeIOVList | ( | ) | [private] |
Definition at line 248 of file HDQMInspector.cc.
References gather_cfg::cout, CondBasicIter::getStartTime(), iDebug, iovList, Iterator, CondIter< DataT >::next(), and CondIter< DataT >::rewind().
Referenced by accessDB().
bool HDQMInspector::isListed | ( | unsigned int | run, |
std::vector< unsigned int > & | vList | ||
) | [private] |
Definition at line 230 of file HDQMInspector.cc.
References gather_cfg::cout, iDebug, and CrabTask::run.
Referenced by createTrend().
{ // This routine expectes a sorted list and returns true if the run is in the list, // false otherwise // Binary search is much faster, but you MUST give it a sorted list. if (std::binary_search(vList.begin(), vList.end(), run)) { if(iDebug) { std::cout << "\n Run "<< run << " is listed !!\n" << std::endl; } return true; } return false; }
void HDQMInspector::plot | ( | size_t & | nPads, |
std::string | CanvasName, | ||
int | logy = 0 , |
||
std::string const & | Labels = "" , |
||
int const | UseYRange = 0 , |
||
double const | XMin = 999999 , |
||
double const | YMin = -999999 |
||
) | [private] |
Definition at line 391 of file HDQMInspector.cc.
References funct::C, HDQMInspectorConfigBase::computeIntegral(), gather_cfg::cout, fHDQMInspectorConfig, spr::find(), findGraphMax(), findGraphMin(), fSep, fSkip0s, fSkip99s, i, iDebug, getHLTprescales::index, j, max(), min, AlCaRecoCosmics_cfg::name, mathSSE::sqrt(), style(), indexGen::title, HDQMInspectorConfigBase::translateDetId(), vdetId_, vDetIdItemList_, vlistItems_, vRun_, vSummary_, and X.
Referenced by createTrend().
{ std::cout << "\n********\nplot\n*****\n"<< std::endl; style(); double *X, *Y, *EX, *EY, *YCumul; X=new double[vRun_.size()]; Y=new double[vRun_.size()]; EX=new double[vRun_.size()]; EY=new double[vRun_.size()]; YCumul=new double[vRun_.size()]; size_t index; TCanvas *C; TGraphErrors *graph; if(CanvasName==""){ char name[128]; sprintf(name,"%d",(int) clock()); CanvasName=std::string(name); } std::string rootCName = CanvasName; rootCName.replace(rootCName.find("."),rootCName.size()-rootCName.find("."),""); C=new TCanvas(rootCName.c_str(),""); int ndiv=(int) sqrt(nPads); C->Divide(ndiv,nPads/ndiv+ (nPads%ndiv?1:0)); int padCount=0; vlistItems_.clear(); vdetId_.clear(); for(size_t ic=0;ic<vDetIdItemList_.size();++ic){ vlistItems_.insert(vlistItems_.end(),vDetIdItemList_[ic].items.begin(),vDetIdItemList_[ic].items.end()); vdetId_.insert(vdetId_.end(),vDetIdItemList_[ic].items.size(),vDetIdItemList_[ic].detid); } // Vector of graphs in this request and DetNames which correspond to them std::vector<TGraphErrors*> VectorOfGraphs; std::vector<std::string> VectorOfDetNames; for(size_t i=0;i<vlistItems_.size();++i){ std::cout << "TkRegion " << vdetId_[i] << " " << vlistItems_[i] << std::endl; if(vlistItems_.at(i).find("Summary")!= std::string::npos) vlistItems_.at(i).replace(vlistItems_.at(i).find("Summary_"),8,""); if(vlistItems_.at(i).find(fSep)!= std::string::npos) vlistItems_.at(i).replace(vlistItems_.at(i).find(fSep),fSep.size(),"_"); std::stringstream ss; if (fHDQMInspectorConfig != 0x0) { ss << fHDQMInspectorConfig->translateDetId( vdetId_[i] ) << vlistItems_[i]; VectorOfDetNames.push_back( fHDQMInspectorConfig->translateDetId( vdetId_[i] )); } else { ss << "Id " << vdetId_[i] << " " << vlistItems_[i]; VectorOfDetNames.push_back( "???" ); } bool const itemForIntegration = fHDQMInspectorConfig ? fHDQMInspectorConfig->computeIntegral(vlistItems_[i]) : false; int addShift=0; for(size_t j=0;j<vRun_.size();++j){ index=j*vlistItems_.size()+i; X[j]=vRun_[j]; EX[j]=0; Y[j]=vSummary_[index]; //if (Y[j]==-10 || Y[j]==-9999 || Y[j] ==-99) {EY[j] = 0; Y[j] = 0;} // -9999 : existing HDQMSummary object in DB but part of the information not uploaded // -99 : HDQMSummary object not existing for this detId, informations are missing for all quantities // -10 bad fit ? //std::cout << "dhidas " << vlistItems_[i] << " " << vRun_[j] << " " << vSummary_[index] << std::endl; if(vlistItems_[i].find("mean")!=std::string::npos){ //if the quantity requested is mean, the error is evaluated as the error on the mean=rms/sqrt(entries) EY[j]=vSummary_[index+2]>0?vSummary_[index+1]/sqrt(vSummary_[index+2]):0; addShift=2; }else if (vlistItems_[i].find("entries")!=std::string::npos) { addShift=0; }else if (vlistItems_[i].find("landauPeak")!=std::string::npos){ EY[j]=vSummary_[index+1]; addShift=1; } else if (vlistItems_[i].find("gaussMean")!=std::string::npos){ EY[j]=vSummary_[index+1]; addShift=1; } else if (vlistItems_[i].find("Chi2NDF")!=std::string::npos || vlistItems_[i].find("rms")!=std::string::npos){ EY[j]= 0.; } else { //EY[j]=vSummary_[index+1]; EY[j]=0;// dhidas hack fix for now. needs to be fixed addShift=1; } // integrate if (j == 0 ) YCumul[j] = Y[j]; else YCumul[j] = Y[j] + YCumul[j-1]; // dhidas HACK for now EY[j] = 0; if(iDebug) { std::cout << index-j*vlistItems_.size() << " " << j << " " << X[j] << " " << Y[j] << " " << EY[j] << std::endl; } } C->cd(++padCount); gPad->SetLogy(logy); // Loop over all values and correct them for user defined range if (UseYRange != 0) { for (size_t iRun = 0; iRun != vRun_.size(); ++iRun) { if (UseYRange % 2 == 1 && Y[iRun] < YMin) { Y[iRun] = YMin; EY[iRun] = 0; } if (UseYRange >= 2 && Y[iRun] > YMax) { Y[iRun] = YMax; EY[iRun] = 0; } } } graph = new TGraphErrors((int) vRun_.size(),X,Y,EX,EY); if( fSkip99s || fSkip0s ) { int iptTGraph = 0; for (size_t ipt = 0; ipt != vRun_.size(); ++ipt) { // skip 99s or 0s when requested // std::cout << "point = " << Y[ipt] << std::endl; // if( Y[ipt] == 0 ) { // std::cout << "fSkip0s = " << fSkip0s << std::endl; // } // if( (Y[ipt] == -10 || Y[ipt] == -9999 || Y[ipt] == -999 || Y[ipt] == -99) ) { // std::cout << "fSkip99s = " << fSkip99s << std::endl; // } if( ((Y[ipt] == -10 || Y[ipt] == -9999 || Y[ipt] == -999 || Y[ipt] == -99) && fSkip99s) || (Y[ipt] == 0 && fSkip0s) ) { // std::cout << "removing point Y["<<ipt<<"] = " << Y[ipt] << ", when graph->GetN() = " << graph->GetN() << " and iptTGraph = " << iptTGraph << std::endl; // Int_t point = graph->RemovePoint(iptTGraph); // std::cout << "point removed = " << point << std::endl; graph->RemovePoint(iptTGraph); } else { // The TGraph is shrinked everytime a point is removed. We use another counter that // is increased only when not removing elements from the TGraph. ++iptTGraph; } } } graph->SetTitle(ss.str().c_str()); if (UseYRange % 2 == 1) { graph->SetMinimum(YMin); } if (UseYRange >= 2) { graph->SetMaximum(YMax); } graph->Draw("Ap"); graph->SetName(ss.str().c_str()); graph->GetXaxis()->SetTitle("Run number"); graph->Write(); // put the graph in the vector eh. VectorOfGraphs.push_back(graph); // dhidas // Want to get some values into file... testing //for (int iDean = 0; iDean != graph.GetN(); ++iDean) { // static std::ofstream OutFile("DeanOut.txt"); // fprintf("%9i %9i %12.3f\n", iDean, graph.GetX()[iDean], graph.GetY()[iDean]); //} if (itemForIntegration) { std::stringstream ss2; std::stringstream ss3; std::stringstream ss4; std::string title = vlistItems_.at(i); ss2 << title << "_Integral"; ss3 << title << "_Integrated.gif"; ss4 << title << "_Integrated.root"; TCanvas* C2 = new TCanvas(ss2.str().c_str(),""); TGraphErrors* graph2 = new TGraphErrors((int) vRun_.size(),X,YCumul,EX,EX); graph2->SetTitle(ss2.str().c_str()); graph2->SetMarkerColor(1); graph2->Draw("Ap"); graph2->SetName(ss2.str().c_str()); graph2->GetXaxis()->SetTitle("Run number"); graph2->Write(); C2->Write(); C2->SaveAs(ss3.str().c_str()); C2->SaveAs(ss4.str().c_str()); // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me. //C2->SaveAs(ss3.str().replace(ss3.str().find("."),ss3.str().size()-ss3.str().find("."),".C").c_str()); } i+=addShift; } C->Write(); C->SaveAs(CanvasName.c_str()); // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me. //C->SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),".C").c_str());//savewith .C // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me. //C->SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),".C").c_str());//savewith .C // Okay, we wrote the first canvas, not let's try to overlay the graphs on another one.. if (VectorOfGraphs.size() > 1) { // Create the legend for this overlay graph TLegend OverlayLegend(0.80,0.35,0.99,0.65); // Use for storing the global min/max. float max = -9999; float min = 9999; // Canvas we'll paint the overlays on TCanvas DeanCan("DeanCan", "DeanCan"); TVirtualPad* VPad = DeanCan.cd(); VPad->SetRightMargin(0.21); VPad->SetTopMargin(0.13); // Replace default legend names with labels if they exist TString const LNames = Labels; TObjArray* MyArrayPtr = LNames.Tokenize(","); if (MyArrayPtr) { MyArrayPtr->SetOwner(kTRUE); for( int i = 0; i <= MyArrayPtr->GetLast(); ++i ) { if( i < int(VectorOfDetNames.size()) ) { VectorOfDetNames[i] = ((TObjString*) MyArrayPtr->At(i) )->GetString().Data(); } } MyArrayPtr->Delete(); } // Let's loop over all graphs in this request for (size_t i = 0; i != VectorOfGraphs.size(); ++i) { // Strip off the det name in the i-th hist title TString MyTitle = VectorOfGraphs[i]->GetTitle(); std::cout << "dhidas " << MyTitle << " : " << VectorOfDetNames[i] << std::endl; MyTitle.ReplaceAll(VectorOfDetNames[i]+"_", ""); MyTitle.ReplaceAll("_"+VectorOfDetNames[i], ""); MyTitle.ReplaceAll(VectorOfDetNames[i], ""); std::cout << "dhidas " << MyTitle << std::endl; VectorOfGraphs[i]->SetTitle( MyTitle ); // Add this to the legend, sure, good OverlayLegend.AddEntry(VectorOfGraphs[i], VectorOfDetNames[i].c_str(), "p"); // You have to get the min and max by hand because root is completely retarded if (min > findGraphMin(VectorOfGraphs[i]) ) { min = findGraphMin(VectorOfGraphs[i]); } if (max < findGraphMax(VectorOfGraphs[i])) { max = findGraphMax(VectorOfGraphs[i]); } // let's use these colors and shapes for now VectorOfGraphs[i]->SetMarkerStyle(20+i); VectorOfGraphs[i]->SetMarkerColor(2+i); } // May as well set the min and max for first graph we'll draw VectorOfGraphs[0]->SetMinimum((min)-((max)-(min))/5.); VectorOfGraphs[0]->SetMaximum((max)+((max)-(min))/5.); if (UseYRange % 2 == 1) { VectorOfGraphs[0]->SetMinimum(YMin); } if (UseYRange >= 2) { VectorOfGraphs[0]->SetMaximum(YMax); } // Draw the first one with axis (A) and the rest just points (p), draw the legend, and save that canvas VectorOfGraphs[0]->Draw("Ap"); for (size_t i = 1; i != VectorOfGraphs.size(); ++i) { VectorOfGraphs[i]->Draw("p"); } OverlayLegend.Draw("same"); //OverlayLegend.SetTextSize(1.5); DeanCan.SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),"_Overlay.gif").c_str()); } // While I'm here I may as well try deleting the graphs since people don't like to clean up after themselves for (size_t i = 0; i != VectorOfGraphs.size(); ++i) { delete VectorOfGraphs[i]; } // Why do people never put a friggin return statement? return; }
std::string HDQMInspector::readListFromFile | ( | const std::string & | listFileName | ) |
Definition at line 204 of file HDQMInspector.cc.
References gather_cfg::cout, geometryCSVtoXML::line, and pos.
{ std::ifstream listFile; listFile.open(listFileName.c_str()); std::string listString; if( !listFile ) { std::cout << "Warning: list file" << listFileName << " not found" << std::endl; return listString; } while( !listFile.eof() ) { std::string line; listFile >> line; if( line != "" ) { listString += line; listString += ","; } } // Remove the last "," std::string::size_type pos = listString.find_last_of(","); if( pos != std::string::npos ) { listString.erase(pos); } std::cout << "whiteList = " << listString << std::endl; return listString; }
void HDQMInspector::setBlackList | ( | std::string const & | ListItems | ) |
Definition at line 104 of file HDQMInspector.cc.
References blackList, ExpressReco_HICollisions_FallBack::cerr, cmsRelvalreport::exit, i, and python::multivaluedict::sort().
{ // Run over entire input string for (std::string::const_iterator Pos = ListItems.begin(); Pos != ListItems.end(); ) { // The rest of the string std::string Remainder(Pos, ListItems.end()); // This entry will be from the beginning of the remainder to either a "," // or the end of the string std::string Entry = Remainder.substr(0, Remainder.find(",")); // If we find a "-" we know it's a blacklist range if ( Entry.find("-") ) { // Get the first and last runs from this range int const FirstRun = atoi( Entry.substr(0, Entry.find("-")).c_str() ); int const LastRun = atoi( Entry.substr(Entry.find("-")+1).c_str() ); // If you entered it stupidly we're going to stop here. if (FirstRun > LastRun) { std::cerr << "ERROR: FirstRun > LastRun in blackList" << std::endl; exit(1); } // For now the simplest thing to do is fill in gaps including each end for (int i = FirstRun; i <= LastRun; ++i) { blackList.push_back(i); } } else { // If we didn't see a "-" just add it to the list blackList.push_back( atoi(Entry.c_str()) ); } // This is to make sure we are in the correct position as we go on. Pos += Entry.size(); if (Pos != ListItems.end()) { Pos += 1; } } // sort the list for faster searching later std::sort(blackList.begin(), blackList.end()); return; }
void HDQMInspector::setDB | ( | const std::string & | DBName, |
const std::string & | DBTag, | ||
const std::string & | DBauth = "" |
||
) |
Definition at line 58 of file HDQMInspector.cc.
References accessDB(), ExpressReco_HICollisions_FallBack::cerr, gather_cfg::cout, DBauth_, DBName_, DBTag_, cmsRelvalreport::exit, and fOutFile.
{ if( DBName_==DBName && DBTag_==DBTag && DBauth_ == DBauth) return; DBName_= DBName; DBTag_= DBTag; DBauth_ = DBauth; std::cout << "Name of DB = "<< DBName << std::endl; std::cout << "DBTag = "<< DBTag << std::endl; std::cout << "DBauth = "<< DBauth << std::endl; std::cout <<std::endl; accessDB(); fOutFile = new TFile( "historicDQM.root","RECREATE" ); if (!fOutFile->IsOpen()) { std::cerr << "ERROR: cannot open output file" << std::endl; exit(1); } fOutFile->cd(); }
void HDQMInspector::setDebug | ( | int | i | ) | [inline] |
void HDQMInspector::setDoStat | ( | int | i | ) | [inline] |
void HDQMInspector::setItems | ( | std::string | itemD | ) | [private] |
Definition at line 788 of file HDQMInspector.cc.
References gather_cfg::cout, HDQMInspector::DetIdItemList::detid, fSep, iDebug, HDQMInspector::DetIdItemList::items, and vDetIdItemList_.
Referenced by unpackItems().
{ DetIdItemList detiditemlist; detiditemlist.detid=atol(itemD.substr(0,itemD.find(fSep)).c_str()); std::string item=itemD.substr(itemD.find(fSep)+fSep.size()); detiditemlist.items.push_back(item); if(iDebug) std::cout << "Found new item " << detiditemlist.items.back() << " for detid " << detiditemlist.detid << std::endl; if(item.find("mean")!=std::string::npos){ detiditemlist.items.push_back(item.replace(item.find("mean"),4,"rms")); if(iDebug) std::cout << "Found new item " << detiditemlist.items.back() << std::endl; detiditemlist.items.push_back(item.replace(item.find("rms"),3,"entries")); if(iDebug) std::cout << "Found new item " << detiditemlist.items.back() << std::endl; } else if(item.find("landauPeak")!=std::string::npos){ detiditemlist.items.push_back(item.replace(item.find("landauPeak"),10,"landauPeakErr")); if(iDebug) std::cout << "Found new item " << detiditemlist.items.back() << std::endl; } else if(item.find("gaussMean")!=std::string::npos){ detiditemlist.items.push_back(item.replace(item.find("gaussMean"),9,"gaussSigma")); if(iDebug) std::cout << "Found new item " << detiditemlist.items.back() << std::endl; } if(vDetIdItemList_.size()) { if(vDetIdItemList_.back().detid==detiditemlist.detid) { vDetIdItemList_.back().items.insert(vDetIdItemList_.back().items.end(),detiditemlist.items.begin(),detiditemlist.items.end()); } else { vDetIdItemList_.push_back(detiditemlist); } } else { vDetIdItemList_.push_back(detiditemlist); } return; }
bool HDQMInspector::setRange | ( | unsigned int & | firstRun, |
unsigned int & | lastRun | ||
) | [private] |
Definition at line 260 of file HDQMInspector.cc.
References gather_cfg::cout, first, MergeJob_cfg::firstRun, i, iDebug, iovList, Iterator, prof2calltree::last, MergeJob_cfg::lastRun, and CondBasicIter::setRange().
Referenced by createTrend().
{ unsigned int first,last; for(size_t i=0;i<iovList.size();++i) { if (iDebug) { std::cout << iovList.at(i)<< std::endl; } } std::vector<unsigned int>::iterator iter; iter=std::lower_bound(iovList.begin(),iovList.end(),firstRun); if (iter!=iovList.end()) first=*iter; else{ std::cout << "firstRun (" << firstRun << ") > last iov ("<<iovList.back()<< ")"<<std::endl; return false; } iter=std::lower_bound(iovList.begin(),iovList.end(),lastRun); if (iter!=iovList.end()){ if (*iter>lastRun) last = *(iter-1); else last=*iter; } else{ last=iovList.back(); } firstRun=first; lastRun=last; std::cout << "setting Range firstRun (" << first << ") - lastRun ("<<last<< ")"<<std::endl; Iterator->setRange(first,last); return true; }
void HDQMInspector::setSeparator | ( | std::string const | in | ) | [inline] |
Definition at line 94 of file HDQMInspector.h.
References fSep, and recoMuon::in.
void HDQMInspector::setSkip0s | ( | bool const | in | ) | [inline] |
Definition at line 82 of file HDQMInspector.h.
References fSkip0s, and recoMuon::in.
void HDQMInspector::setSkip99s | ( | bool const | in | ) | [inline] |
Definition at line 78 of file HDQMInspector.h.
References fSkip99s, and recoMuon::in.
void HDQMInspector::setWhiteList | ( | std::string const & | ListItems | ) |
Definition at line 154 of file HDQMInspector.cc.
References ExpressReco_HICollisions_FallBack::cerr, cmsRelvalreport::exit, i, python::multivaluedict::sort(), and whiteList.
{ // Run over entire input string for (std::string::const_iterator Pos = ListItems.begin(); Pos != ListItems.end(); ) { // The rest of the string std::string Remainder(Pos, ListItems.end()); // This entry will be from the beginning of the remainder to either a "," // or the end of the string std::string Entry = Remainder.substr(0, Remainder.find(",")); // If we find a "-" we know it's a whitelist range if ( Entry.find("-") ) { // Get the first and last runs from this range int const FirstRun = atoi( Entry.substr(0, Entry.find("-")).c_str() ); int const LastRun = atoi( Entry.substr(Entry.find("-")+1).c_str() ); // If you entered it stupidly we're going to stop here. if (FirstRun > LastRun) { std::cerr << "ERROR: FirstRun > LastRun in WhiteList" << std::endl; exit(1); } // For now the simplest thing to do is fill in gaps including each end for (int i = FirstRun; i <= LastRun; ++i) { whiteList.push_back(i); } } else { // If we didn't see a "-" just add it to the list whiteList.push_back( atoi(Entry.c_str()) ); } // This is to make sure we are in the correct position as we go on. Pos += Entry.size(); if (Pos != ListItems.end()) { Pos += 1; } } // sort the list for faster searching later std::sort(whiteList.begin(), whiteList.end()); return; }
void HDQMInspector::style | ( | ) | [private] |
Definition at line 30 of file HDQMInspector.cc.
Referenced by plot().
{ TStyle* theStyle= new TStyle(); theStyle->SetOptStat(0); //gROOT->SetStyle("Plain"); theStyle->SetOptStat(0); theStyle->SetOptFit(111); theStyle->SetStatFont(12); theStyle->SetStatBorderSize(1); theStyle->SetCanvasColor(0); theStyle->SetCanvasBorderMode(0); theStyle->SetPadBorderMode(0); theStyle->SetPadColor(0); theStyle->SetLineWidth(1); theStyle->SetLineStyle(2); theStyle->SetPalette(1); theStyle->SetMarkerStyle(20); theStyle->SetMarkerColor(2); theStyle->SetLabelSize(0.05,"y"); theStyle->SetLabelSize(0.04,"x"); theStyle->SetTitleFontSize(0.2); theStyle->SetTitleW(0.9); theStyle->SetTitleH(0.06); theStyle->SetPadLeftMargin(0.12); theStyle->SetPadTopMargin(0.13); theStyle->cd(); }
void HDQMInspector::unpackConditions | ( | std::string & | Conditions, |
std::vector< DetIdItemList > & | vdetIdItemList | ||
) | [private] |
Definition at line 707 of file HDQMInspector.cc.
References gather_cfg::cout, HDQMInspector::DetIdItemList::detid, fSep, iDebug, HDQMInspector::DetIdItemList::items, and NULL.
Referenced by createTrend().
{ char * pch; char delimiters[128]="><=+-*/&|() "; char copyConditions[1024]; sprintf(copyConditions,"%s",Conditions.c_str()); pch = strtok (copyConditions,delimiters); while (pch != NULL){ if(strstr(pch,fSep.c_str())!=NULL){ DetIdItemList detiditemlist; std::string itemD(pch); detiditemlist.detid=atol(itemD.substr(0,itemD.find(fSep)).c_str()); detiditemlist.items.push_back(itemD.substr(itemD.find(fSep)+fSep.size())); // dhidas update +.size instead of "1" if (iDebug) { std::cout << "Found a Condition " << detiditemlist.items.back() << " for detId " << detiditemlist.detid << std::endl; } if(vdetIdItemList.size()) if(vdetIdItemList.back().detid==detiditemlist.detid) vdetIdItemList.back().items.insert(vdetIdItemList.back().items.end(),detiditemlist.items.begin(),detiditemlist.items.end()); else vdetIdItemList.push_back(detiditemlist); else vdetIdItemList.push_back(detiditemlist); } pch = strtok (NULL,delimiters); } }
size_t HDQMInspector::unpackItems | ( | std::string & | ListItems | ) | [private] |
Definition at line 690 of file HDQMInspector.cc.
References prof2calltree::count, gather_cfg::cout, and setItems().
Referenced by createTrend().
{ std::string::size_type oldloc=0; std::string::size_type loc = ListItems.find( ",", oldloc ); size_t count=1; while( loc != std::string::npos ) { setItems(ListItems.substr(oldloc,loc-oldloc)); oldloc=loc+1; loc=ListItems.find( ",", oldloc ); count++; } //there is a single item setItems(ListItems.substr(oldloc,loc-oldloc)); std::cout << std::endl; return count; }
std::vector<unsigned int> HDQMInspector::blackList [private] |
Definition at line 125 of file HDQMInspector.h.
Referenced by createTrend(), and setBlackList().
std::string HDQMInspector::DBauth_ [private] |
Definition at line 120 of file HDQMInspector.h.
Referenced by accessDB(), and setDB().
std::string HDQMInspector::DBName_ [private] |
Definition at line 120 of file HDQMInspector.h.
Referenced by accessDB(), and setDB().
std::string HDQMInspector::DBTag_ [private] |
Definition at line 120 of file HDQMInspector.h.
Referenced by accessDB(), and setDB().
const HDQMInspectorConfigBase* HDQMInspector::fHDQMInspectorConfig [private] |
Definition at line 139 of file HDQMInspector.h.
Referenced by plot().
TFile* HDQMInspector::fOutFile |
Definition at line 144 of file HDQMInspector.h.
Referenced by closeFile(), and setDB().
std::string HDQMInspector::fSep [private] |
Definition at line 141 of file HDQMInspector.h.
Referenced by ApplyConditions(), plot(), setItems(), setSeparator(), and unpackConditions().
bool HDQMInspector::fSkip0s [private] |
Definition at line 137 of file HDQMInspector.h.
Referenced by plot(), and setSkip0s().
bool HDQMInspector::fSkip99s [private] |
Definition at line 136 of file HDQMInspector.h.
Referenced by plot(), and setSkip99s().
int HDQMInspector::iDebug [private] |
Definition at line 134 of file HDQMInspector.h.
Referenced by ApplyConditions(), createTrend(), InitializeIOVList(), isListed(), plot(), setDebug(), setItems(), setRange(), and unpackConditions().
int HDQMInspector::iDoStat [private] |
Definition at line 135 of file HDQMInspector.h.
Referenced by setDoStat().
std::vector<unsigned int> HDQMInspector::iovList [private] |
Definition at line 124 of file HDQMInspector.h.
Referenced by createTrendLastRuns(), InitializeIOVList(), and setRange().
CondCachedIter<HDQMSummary>* HDQMInspector::Iterator [private] |
Definition at line 122 of file HDQMInspector.h.
Referenced by accessDB(), createTrend(), InitializeIOVList(), setRange(), and ~HDQMInspector().
std::vector<unsigned int> HDQMInspector::vdetId_ [private] |
Definition at line 132 of file HDQMInspector.h.
Referenced by getvDetId(), and plot().
std::vector<DetIdItemList> HDQMInspector::vDetIdItemList_ [private] |
Definition at line 130 of file HDQMInspector.h.
Referenced by createTrend(), plot(), and setItems().
std::vector<std::string> HDQMInspector::vlistItems_ [private] |
Definition at line 131 of file HDQMInspector.h.
Referenced by getListItems(), and plot().
std::vector<unsigned int> HDQMInspector::vRun_ [private] |
Definition at line 128 of file HDQMInspector.h.
Referenced by createTrend(), getRuns(), and plot().
std::vector<float> HDQMInspector::vSummary_ [private] |
Definition at line 129 of file HDQMInspector.h.
Referenced by createTrend(), getSummary(), and plot().
std::vector<unsigned int> HDQMInspector::whiteList [private] |
Definition at line 126 of file HDQMInspector.h.
Referenced by createTrend(), and setWhiteList().