CMS 3D CMS Logo

Classes | Public Member Functions | Private Member Functions | Private Attributes

evf::iDie Class Reference

#include <iDie.h>

List of all members.

Classes

class  commonLsStat
class  lsStat
struct  sorted_indices

Public Member Functions

void actionPerformed (xdata::Event &e)
void defaultWeb (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void detailsTable (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void dumpTable (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
xoap::MessageReference fsmCallback (xoap::MessageReference msg) throw (xoap::exception::Exception)
void iChoke (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void iChokeMiniInterface (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
 iDie (xdaq::ApplicationStub *s)
void postEntry (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void postEntryiChoke (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void spotlight (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void summaryTable (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
void updater (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception)
 XDAQ_INSTANTIATOR ()
virtual ~iDie ()

Private Member Functions

void deleteFramework ()
void doFlush ()
void fillDQMModFractionHist (unsigned int nbsIdx, unsigned int lsid, unsigned int nonIdle, std::vector< std::pair< unsigned int, unsigned int >> offenders)
void fillDQMStatHist (unsigned int nbsIdx, unsigned int lsid)
void initFramework ()
void initMonitorElements ()
void initMonitorElementsStreams ()
void parseModuleHisto (const char *, unsigned int)
void parseModuleLegenda (std::string)
void parsePathHisto (const unsigned char *, unsigned int)
void parsePathLegenda (std::string)
void perLumiFileSaver (unsigned int lsid)
void reset ()
void updateRollingHistos (unsigned int nbsIdx, unsigned int lsid, lsStat *lst, commonLsStat *clst, bool roll)
void updateStreamHistos (unsigned int forls, commonLsStat *clst, commonLsStat *prevclst)

Private Attributes

TBranch * b1_
TBranch * b2_
TBranch * b3_
TBranch * b4_
TBranch * b_
MonitorElementbusyModules_
MonitorElementbusySummary2_
MonitorElementbusySummary_
xdata::String class_
std::deque< commonLsStat * > commonLsHistory
std::string configString_
std::vector< int > cpuentries_
std::vector< std::vector< int > > cpustat_
std::vector< unsigned int > currentLs_
MonitorElementdaqBusySummary_
int * datap_
xdata::String dqmCollectorHost_
xdata::String dqmCollectorPort_
xdata::Boolean dqmEnabled_
xdata::Boolean dqmFilesWritable_
xdata::String dqmSaveDir_
DQMServicedqmService_
std::string dqmState_
DQMStoredqmStore_
std::vector< MonitorElement * > endPathCumulative_
std::vector< std::string > endPathNames_
std::vector< MonitorElement * > endPathRates_
std::vector< unsigned int > epInstances
std::vector< unsigned int > epMax
edm::EventProcessorevtProcessor_
TFile * f_
std::string fileBaseName_
MonitorElementfuReportsSummary_
fmap fus_
xdata::String hostname_
std::vector< float > HTscaling
unsigned int ilumiprev_
xdata::UnsignedInteger32 instance_
unsigned int last_ls_
timeval lastModuleLegendaMessageTimeStamp_
timeval lastPathLegendaMessageTimeStamp_
Logger log_
std::deque< lsStat * > * lsHistory
std::vector< float > machineWeight
std::vector< float > machineWeightInst
std::vector< std::string > mapmod_
std::vector< std::string > mappath_
bool meInitialized_
bool meInitializedStreams_
std::vector< MonitorElement * > meVecOffenders_
std::vector< MonitorElement * > meVecRate_
std::vector< MonitorElement * > meVecTime_
std::vector< unsigned int > nbMachines
unsigned int nbSubsClasses
std::map< unsigned int, int > nbSubsList
std::map< int, unsigned int > nbSubsListInv
int nModuleHistoMessageReceived_
int nModuleLegendaMessageReceived_
int nModuleLegendaMessageWithDataReceived_
int nPathHistoMessageReceived_
int nPathLegendaMessageReceived_
int nPathLegendaMessageWithDataReceived_
unsigned int nstates_
std::vector< std::map
< unsigned int, unsigned int > > 
occupancyNameMap
std::list< std::string > pastSavedFiles_
boost::shared_ptr< std::vector
< edm::ParameterSet > > 
pServiceSets_
internal::rate r_
MonitorElementrateSummary_
xdata::UnsignedInteger32 runNumber_
timeval runStartDetectedTimeStamp_
unsigned int savedForLs_
xdata::UnsignedInteger32 saveLsInterval_
edm::ServiceToken serviceToken_
unsigned int summaryLastLs_
TTree * t_
MonitorElementtimingSummary_
xdata::String topLevelFolder_
unsigned int totalCores_
std::vector< TriggerReportStatictrp_
std::vector< int > trpentries_
TriggerReportStatictrppriv_
xdata::String url_
bool writeDirectoryPresent_

Detailed Description

Definition at line 79 of file iDie.h.


Constructor & Destructor Documentation

iDie::iDie ( xdaq::ApplicationStub *  s)

Definition at line 53 of file iDie.cc.

References class_, configString_, currentLs_, defaultWeb(), detailsTable(), dqmCollectorHost_, dqmCollectorPort_, dqmEnabled_, dqmFilesWritable_, dqmSaveDir_, dumpTable(), epInstances, epMax, fsmCallback(), hostname_, HTscaling, i, iChoke(), iChokeMiniInterface(), instance_, lastModuleLegendaMessageTimeStamp_, lastPathLegendaMessageTimeStamp_, lsHistory, machineWeight, machineWeightInst, nbSubsClasses, nbSubsList, nbSubsListInv, occupancyNameMap, postEntry(), postEntryiChoke(), runNumber_, runStartDetectedTimeStamp_, saveLsInterval_, spotlight(), summaryTable(), topLevelFolder_, updater(), and url_.

  : xdaq::Application(s)
  , log_(getApplicationLogger())
  , dqmState_("Null")
  , instance_(0)
  , runNumber_(0)
  , dqmCollectorHost_()
  , dqmCollectorPort_()
  , totalCores_(0)
  , nstates_(0)
  , cpustat_(std::vector<std::vector<int> >(0))
  , last_ls_(0)
  , f_(0)
  , t_(0)
  , b_(0)
  , b1_(0)
  , b2_(0)
  , b3_(0)
  , b4_(0)
  , datap_(0)
  , trppriv_(0)
  , nModuleLegendaMessageReceived_(0)
  , nPathLegendaMessageReceived_(0)
  , nModuleLegendaMessageWithDataReceived_(0)
  , nPathLegendaMessageWithDataReceived_(0)
  , nModuleHistoMessageReceived_(0)
  , nPathHistoMessageReceived_(0)
  , evtProcessor_(0)
  , meInitialized_(false)
  , meInitializedStreams_(false)
  , dqmService_(nullptr)
  , dqmStore_(nullptr)
  , dqmEnabled_(false)
  , saveLsInterval_(10)
  , ilumiprev_(0)
  , dqmSaveDir_("")
  , dqmFilesWritable_(true)
  , topLevelFolder_("DAQ")
  , savedForLs_(0)
{
  // initialize application info
  url_     =
    getApplicationDescriptor()->getContextDescriptor()->getURL()+"/"+
    getApplicationDescriptor()->getURN();
  class_   =getApplicationDescriptor()->getClassName();
  instance_=getApplicationDescriptor()->getInstance();
  hostname_=getApplicationDescriptor()->getContextDescriptor()->getURL();
  getApplicationDescriptor()->setAttribute("icon", "/evf/images/idieapp.jpg");

  //soap interface
  xoap::bind(this,&evf::iDie::fsmCallback,"Configure",XDAQ_NS_URI);
  xoap::bind(this,&evf::iDie::fsmCallback,"Enable",   XDAQ_NS_URI);
  xoap::bind(this,&evf::iDie::fsmCallback,"Stop",     XDAQ_NS_URI);
  xoap::bind(this,&evf::iDie::fsmCallback,"Halt",     XDAQ_NS_URI);

  // web interface
  xgi::bind(this,&evf::iDie::defaultWeb,               "Default");
  xgi::bind(this,&evf::iDie::summaryTable,             "summary");
  xgi::bind(this,&evf::iDie::detailsTable,             "details");
  xgi::bind(this,&evf::iDie::dumpTable,                "dump"   );
  xgi::bind(this,&evf::iDie::updater,                  "updater");
  xgi::bind(this,&evf::iDie::iChoke,                   "iChoke" );
  xgi::bind(this,&evf::iDie::iChokeMiniInterface,      "iChokeMiniInterface" );
  xgi::bind(this,&evf::iDie::spotlight,                "Spotlight" );
  xgi::bind(this,&evf::iDie::postEntry,                "postEntry");
  xgi::bind(this,&evf::iDie::postEntryiChoke,          "postChoke");
  //  gui_->setSmallAppIcon("/evf/images/Hilton.gif");
  //  gui_->setLargeAppIcon("/evf/images/Hilton.gif");

  xdata::InfoSpace *ispace = getApplicationInfoSpace();
  ispace->fireItemAvailable("runNumber",            &runNumber_                   );
  getApplicationInfoSpace()->addItemChangedListener("runNumber",              this);
  ispace->fireItemAvailable("dqmCollectorHost",         &dqmCollectorHost_        );
  ispace->fireItemAvailable("dqmCollectorPort",         &dqmCollectorPort_        );
  ispace->fireItemAvailable("saveLsInterval",           &saveLsInterval_          );
  ispace->fireItemAvailable("dqmSaveDir",               &dqmSaveDir_              );
  ispace->fireItemAvailable("dqmFilesWritableByAll",    &dqmFilesWritable_        );
  ispace->fireItemAvailable("dqmTopLevelFolder",        &topLevelFolder_          );
  ispace->fireItemAvailable("dqmEnabled",               &dqmEnabled_              );

  // timestamps
  lastModuleLegendaMessageTimeStamp_.tv_sec=0;
  lastModuleLegendaMessageTimeStamp_.tv_usec=0;
  lastPathLegendaMessageTimeStamp_.tv_sec=0;
  lastPathLegendaMessageTimeStamp_.tv_usec=0;
  runStartDetectedTimeStamp_.tv_sec=0;
  runStartDetectedTimeStamp_.tv_usec=0;

  //dqm python configuration
  configString_= "import FWCore.ParameterSet.Config as cms\n";
  configString_+="process = cms.Process(\"iDieDQM\")\n";
  configString_+="process.source = cms.Source(\"EmptySource\")\n";
  configString_+="process.DQMStore = cms.Service(\"DQMStore\",\n";
  configString_+="  referenceFileName = cms.untracked.string(''),\n";
  configString_+="  verbose = cms.untracked.int32(0),\n";
  configString_+="  verboseQT = cms.untracked.int32(0),\n";
  configString_+="  collateHistograms = cms.untracked.bool(False))\n";
  configString_+="process.DQM = cms.Service(\"DQM\",\n";
  configString_+="  debug = cms.untracked.bool(False),\n";
  configString_+="  publishFrequency = cms.untracked.double(1.0),\n";
  configString_+="  collectorPort = cms.untracked.int32(EMPTYPORT),\n";
  configString_+="  collectorHost = cms.untracked.string('EMPTYHOST'),\n";
  configString_+="  filter = cms.untracked.string(''),\n";
  configString_+="  verbose = cms.untracked.bool(False))\n";
  configString_+="process.p = cms.Path()\n";

  epInstances   =     {7,    8,     12,  16,  22,  24,  32};
  epMax         =     {8,    8,     24,  32,  24,  24,  32};
  HTscaling     =     {1,    1,   0.28,0.28,0.28,0.28,0.28};
  machineWeight =     {91.6, 91.6, 253, 352, 253, 253, 352};
  machineWeightInst = {80.15,91.6, 196, 352, 237, 253, 352};

  for (unsigned int i=0;i<epInstances.size();i++) {
    currentLs_.push_back(0);
    nbSubsList[epInstances[i]]=i;
    nbSubsListInv[i]=epInstances[i];
    std::map<unsigned int, unsigned int> mptmp;
    occupancyNameMap.push_back(mptmp);
  }
  nbSubsClasses = epInstances.size();
  lsHistory = new std::deque<lsStat*>[nbSubsClasses];
  //umask for setting permissions of created directories
  umask(000);

}
iDie::~iDie ( ) [virtual]

Definition at line 181 of file iDie.cc.

{
}

Member Function Documentation

void iDie::actionPerformed ( xdata::Event &  e)

Definition at line 186 of file iDie.cc.

References doFlush(), dqmEnabled_, dqmState_, alignCSCRings::e, evtProcessor_, initFramework(), initMonitorElements(), meInitialized_, and reset().

{
  
  if (e.type()=="ItemChangedEvent" ) {
    std::string item = dynamic_cast<xdata::ItemChangedEvent&>(e).itemName();
    
    if ( item == "runNumber") {
      LOG4CPLUS_WARN(getApplicationLogger(),
                     "New Run was started - iDie will reset");
      reset();

      dqmState_ = "Prepared";
      if (dqmEnabled_.value_) { 
        if (!evtProcessor_) initFramework();
        if (!meInitialized_) initMonitorElements();
        doFlush();
      }
    }
    
  }
}
void iDie::defaultWeb ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 287 of file iDie.cc.

References evf::internal::fu::ccount, recoMuon::in, PFRecoTauDiscriminationAgainstElectronMVA_cfi::method, dbtoconf::out, reset(), DTTTrigCorrFirst::run, and sistrip::runNumber_.

Referenced by iDie().

{
  cgicc::Cgicc cgi(in);
  std::string method = cgi.getEnvironment().getRequestMethod();
  if(method == "POST"){
    unsigned int run = 0;
    std::vector<cgicc::FormEntry> el1 = cgi.getElements();
    cgi.getElement("run",el1);
    if(el1.size()!=0){
      run = el1[0].getIntegerValue();
      if(run > runNumber_.value_ || runNumber_.value_==0){
        runNumber_.value_ = run;
        if(runNumber_.value_!=0) 
          {
            reset();
            if(f_ == 0)
              {
                std::ostringstream ost;
                ost << "microReport"<<runNumber_<<".root";
                f_ = new TFile(ost.str().c_str(),"RECREATE","microreport");
              }
          }
      }
    }
    internal::fu fuinstance;

    fuinstance.ccount = 0;
    std::string hostname = cgi.getEnvironment().getRemoteHost();
    std::transform(hostname.begin(), hostname.end(),
                   hostname.begin(), ::toupper);
    fus_[hostname] = fuinstance;
  }
  else{
    *out << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">" 
         << "<html><head><title>" << getApplicationDescriptor()->getClassName()
         << getApplicationDescriptor()->getInstance() << "</title>"
         << "<meta https-equiv=\"REFRESH\" content=\"0;url=/evf/html/idiePage.html\">"
         << "</head></html>";
  }
}
void iDie::deleteFramework ( ) [private]

Definition at line 1200 of file iDie.cc.

References evtProcessor_.

{
  if (evtProcessor_) delete evtProcessor_;
}
void iDie::detailsTable ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 344 of file iDie.cc.

References i, cmsPerfSuiteHarvest::now, and dbtoconf::out.

Referenced by iDie().

{
  timeval tv;
  gettimeofday(&tv,0);
  time_t now = tv.tv_sec;
  for(ifmap i = fus_.begin(); i != fus_.end(); i++)
    if((*i).second.ccount != 0){
      *out << "<tr><td " 
           << (now-(*i).second.tstamp<300 ? "style=\"background-color:red\"" : "")
           << ">"<<(*i).first<<"</td><td>" 
           << (*i).second.ccount << "</td>"
           << "<td onClick=loaddump(\'" << url_.value_ << "/dump?name="
           << (*i).first << "\')>" << (*i).second.cpids.back()
           << "</td><td>" <<(*i).second.signals.back() 
           << "</td></tr>" << std::endl;
    }
}
void iDie::doFlush ( ) [private]

Definition at line 1440 of file iDie.cc.

References dqmEnabled_, dqmService_, and DQMService::flushStandalone().

Referenced by actionPerformed(), and parseModuleHisto().

void iDie::dumpTable ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 364 of file iDie.cc.

References gather_cfg::cout, recoMuon::in, and dbtoconf::out.

Referenced by iDie().

{
  cgicc::Cgicc cgi(in); 

  std::vector<cgicc::FormEntry> el1;
  cgi.getElement("name",el1);
  if(el1.size()!=0){
    std::string hostname = el1[0].getValue();
    std::transform(hostname.begin(), hostname.end(),
                   hostname.begin(), ::toupper);
    ifmap fi = fus_.find(hostname);    
    if(fi!=fus_.end()){
      *out << (*fi).second.stacktraces.back() << std::endl;
    }
    else{ 
      for(fi=fus_.begin(); fi != fus_.end(); fi++) 
        std::cout << "known hosts: " << (*fi).first << std::endl;
    }
  }
}
void iDie::fillDQMModFractionHist ( unsigned int  nbsIdx,
unsigned int  lsid,
unsigned int  nonIdle,
std::vector< std::pair< unsigned int, unsigned int >>  offenders 
) [private]

Definition at line 1345 of file iDie.cc.

References begin, newFWLiteAna::bin, prof2calltree::count, evtProcessor_, f, evf::fround(), MonitorElement::getBinContent(), i, j, gen::k, combine::key, lsHistory, mapmod_, meVecOffenders_, MODNAMES, occupancyNameMap, ROLL, MonitorElement::setBinContent(), MonitorElement::setBinLabel(), x, and detailsBasic3DVector::y.

Referenced by parseModuleHisto().

{
  if (!evtProcessor_) return;
  MonitorElement * me = meVecOffenders_[nbsIdx];
  //shift bin names by 1
  unsigned int xBinToFill=lsid;
  if (lsid>ROLL) {
    for (unsigned int i=1;i<=ROLL;i++) {
      for (unsigned int j=1;j<=MODNAMES;j++) {
        if (i<ROLL)
          me->setBinContent(i,j,me->getBinContent(i+1,j));
        else
          me->setBinContent(i,j,0);
      }
      std::ostringstream ostr;
      ostr << lsid-ROLL+i;
      me->setBinLabel(i,ostr.str(),1);
    }
    std::ostringstream ostr;
    ostr << lsid;
    xBinToFill=ROLL;
  }
  float nonIdleInv=0.;
  if (nonIdle>0)nonIdleInv=1./(double)nonIdle;
  //1st pass (there are free bins left)
  for (unsigned int i=0;i<offenders.size();i++) {
    unsigned int x=offenders[i].first;
    float percentageUsed=offenders[i].second*nonIdleInv;
    if (percentageUsed>0.02) {//2% threshold
      if (occupancyNameMap[nbsIdx].count(x)==0) {//new element
        unsigned int y=occupancyNameMap[nbsIdx].size();
        if (y<MODNAMES) {
          (occupancyNameMap[nbsIdx])[x]=y;
          me->setBinContent(xBinToFill,y+1,fround(percentageUsed,0.001f));
          me->setBinLabel(y+1,mapmod_[x],2);
        }
        else break;
      }
    }
  }
  //2nd pass (beyond available bins)
  //if (0) //hack 
  for (unsigned int i=0;i<offenders.size();i++) {
    unsigned int x=offenders[i].first;
    float percentageUsed=offenders[i].second*nonIdleInv;
    if (percentageUsed>0.02) {//2% threshold
      if (occupancyNameMap[nbsIdx].count(x)==0) {
        unsigned int y=occupancyNameMap[nbsIdx].size();
        if (y>=MODNAMES && xBinToFill>1) {
          //filled up, replace another one
          float minbinval=1.;
          unsigned int toReplace=0;
          for (size_t j=1;j<=MODNAMES;j++) {
            //decide based on the smallest value
            float bin=me->getBinContent(xBinToFill,j);
            if (bin<minbinval) {toReplace=j;minbinval=bin;}
          }
          if (percentageUsed>minbinval && toReplace) {
            int key=-1;
            for (auto it = occupancyNameMap[nbsIdx].begin(); it != occupancyNameMap[nbsIdx].end(); ++it) {
              if (it->second == toReplace-1) {
                key = it->first;
                break;
              }
            }
            if (key>-1) {
              //erase old
              occupancyNameMap[nbsIdx].erase(key);
              //add new
              (occupancyNameMap[nbsIdx])[x]=toReplace-1;
              //fill histogram
              me->setBinContent(xBinToFill,toReplace,fround(percentageUsed,0.001f));
              me->setBinLabel(toReplace,mapmod_[x],2);
              //reset fields for previous lumis
              unsigned qsize = lsHistory[nbsIdx].size();
              for (size_t k=1;k<xBinToFill;k++) {
                if (xBinToFill-k+1<qsize) {
                  float fr = (lsHistory[nbsIdx])[qsize-xBinToFill+k-1]->getOffenderFracAt(x);
                  if (fr>0.02) me->setBinContent(k,toReplace,fround(fr,0.001f));
                }
                else
                  me->setBinContent(k,toReplace,0);
              }
            }
          }
        }
      }
      else {
        unsigned int y=(occupancyNameMap[nbsIdx])[x];
        me->setBinContent(xBinToFill,y+1,fround(percentageUsed,0.001f));
      }
    }
  }
}
void iDie::fillDQMStatHist ( unsigned int  nbsIdx,
unsigned int  lsid 
) [private]

Definition at line 1205 of file iDie.cc.

References commonLsHistory, evtProcessor_, i, lsHistory, lst, meVecRate_, meVecTime_, PASTUPDATES, updateRollingHistos(), and updateStreamHistos().

Referenced by parseModuleHisto().

{
  if (!evtProcessor_ || lsid==0) return;
  unsigned int qsize = lsHistory[nbsIdx].size();
  //may be larger size
  unsigned int cqsize = lsHistory[nbsIdx].size();

  //update lumis
  if (qsize) {
    for (int i =(int)qsize-1;i>=0 && i>=(int)qsize-PASTUPDATES;i--) {
      unsigned int qpos=(unsigned int) i;
      unsigned int forls = lsid - (qsize-1-i);
      lsStat * lst = (lsHistory[nbsIdx])[qpos];
      unsigned int clsPos = unsigned((int)qpos+ (int)cqsize - (int)qsize);
      commonLsStat * clst = commonLsHistory[unsigned((int)qpos+ (int)cqsize - (int)qsize)];

      meVecRate_[nbsIdx]->setBinContent(forls,lst->getRatePerMachine());
      meVecRate_[nbsIdx]->setBinError(forls,lst->getRateErrPerMachine());
      meVecTime_[nbsIdx]->setBinContent(forls>2? forls:0,lst->getEvtTime()*1000);//msec
      meVecTime_[nbsIdx]->setBinError(forls>2? forls:0,lst->getEvtTimeErr()*1000);//msec
      updateRollingHistos(nbsIdx, forls,lst,clst,i==(int)qsize-1);
      commonLsStat * prevclst = clsPos>0 ? commonLsHistory[clsPos-1]:nullptr;
      updateStreamHistos(forls,clst,prevclst);
    }
  }
}
xoap::MessageReference iDie::fsmCallback ( xoap::MessageReference  msg) throw (xoap::exception::Exception)

Definition at line 209 of file iDie.cc.

References edmPickEvents::command, alignCSCRings::e, Exception, i, lumiQueryAPI::msg, python::Node::node, stor::utils::sleep(), and evf::utils::state.

Referenced by iDie().

{
  
  xoap::SOAPPart     part    =msg->getSOAPPart();
  xoap::SOAPEnvelope env     =part.getEnvelope();
  xoap::SOAPBody     body    =env.getBody();
  DOMNode           *node    =body.getDOMNode();
  DOMNodeList       *bodyList=node->getChildNodes();
  DOMNode           *command =0;
  std::string             commandName;
  
  for (unsigned int i=0;i<bodyList->getLength();i++) {
    command = bodyList->item(i);
    if(command->getNodeType() == DOMNode::ELEMENT_NODE) {
      commandName = xoap::XMLCh2String(command->getLocalName());
      break;
    }
  }
  
  if (commandName.empty()) {
    XCEPT_RAISE(xoap::exception::Exception,"Command not found.");
  }
  
  // fire appropriate event and create according response message
  try {

    // response string
    xoap::MessageReference reply = xoap::createMessage();
    xoap::SOAPEnvelope envelope  = reply->getSOAPPart().getEnvelope();
    xoap::SOAPName responseName  = envelope.createName(commandName+"Response",
                                                       "xdaq",XDAQ_NS_URI);
    xoap::SOAPBodyElement responseElem =
      envelope.getBody().addBodyElement(responseName);
    
    // generate correct return state string
    std::string state;
    if(commandName == "Configure") {dqmState_ = "Ready"; state = "Ready";}
    else if(commandName == "Enable") {dqmState_ = "Enabled"; state = "Enabled";}
    else if(commandName == "Stop") {
      //remove histograms
      if (meInitialized_) {
        dqmState_ = "Removed";
        usleep(10000);//propagating dqmState to caches
        meInitialized_=false;
        meInitializedStreams_=false;
        //endPathNames_.clear();
        sleep(1);//making sure that any running ls update finishes

        dqmStore_->setCurrentFolder(topLevelFolder_.value_ + "/Layouts/");
        dqmStore_->removeContents();
        dqmStore_->setCurrentFolder(topLevelFolder_.value_ + "/Layouts/Streams/");
        dqmStore_->removeContents();
        doFlush(); 
      }
      state = "Ready";
    }
    else if(commandName == "Halt") state = "Halted";
    else state = "BOH";

    xoap::SOAPName    stateName     = envelope.createName("state",
                                                          "xdaq",XDAQ_NS_URI);
    xoap::SOAPElement stateElem     = responseElem.addChildElement(stateName);
    xoap::SOAPName    attributeName = envelope.createName("stateName",
                                                          "xdaq",XDAQ_NS_URI);
    stateElem.addAttribute(attributeName,state);
    
    return reply;
  }
  catch (toolbox::fsm::exception::Exception & e) {
    XCEPT_RETHROW(xoap::exception::Exception,"invalid command.",e);
  }     
  


}
void iDie::iChoke ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 443 of file iDie.cc.

References dbtoconf::out.

Referenced by iDie().

{
    *out << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">" 
         << "<html><head><title>" << getApplicationDescriptor()->getClassName()
         << getApplicationDescriptor()->getInstance() << "</title>"
         << "<meta https-equiv=\"REFRESH\" content=\"0;url=/evf/html/ichokePage.html\">"
         << "</head></html>";



}
void iDie::iChokeMiniInterface ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 387 of file iDie.cc.

References begin, i, evf::iDie::sorted_indices::ii(), j, dbtoconf::out, and tmp.

Referenced by iDie().

{
  unsigned int i = 0;

  if(last_ls_==0) return; //wait until at least one complete cycle so we have all arrays sized correctly !!!
  *out << "<div id=\"cls\">" << last_ls_ << "</div>" 
       << "<div id=\"clr\">" << cpuentries_[last_ls_-1] << "</div>" << std::endl;
  sorted_indices tmp(cpustat_[last_ls_-1]);
  //  std::sort(tmp.begin(),tmp.end());// figure out how to remap indices of legenda
  *out << "<tbody id=\"cpue\">";
  while(i<nstates_){
    if(tmp[i]!=0) *out << "<tr><td>" << mapmod_[tmp.ii(i)] << "</td>" << "<td>" 
                       << float(tmp[i])/float(cpuentries_[last_ls_-1]) << "</td></tr>";
    i++;
  }
  *out << "</tbody>\n";
  *out << "<tbody id=\"cpui\"><tr><td></td>";
  unsigned int begin = last_ls_<5 ? 0 : last_ls_-5;
  for(i=begin; i < last_ls_; i++)
    *out << "<td>" << i +1 << "</td>";
  *out << "</tr><tr><td></td>";
  for(i=begin; i < last_ls_; i++)
    *out << "<td>" << float(cpustat_[i][2])/float(cpuentries_[i]) << "</td>";
  *out << "</tr></tbody>\n";

  *out << "<tbody id=\"rate\"><tr><td></td>";
  begin = last_ls_<5 ? 0 : last_ls_-5;
  for(i=begin; i < last_ls_; i++)
    *out << "<td>" << float(trp_[i].eventSummary.totalEventsPassed)/float(trp_[i].eventSummary.totalEvents) << "</td>"; 
  *out << "</tr>\n<tr><td></td>";
  for(i=begin; i < last_ls_; i++)
    *out << "<td>" << trp_[i].eventSummary.totalEvents << "</td>"; 
  *out << "</tr>\n<tr><td></td>";
  for(int j = 0; j < trp_[0].trigPathsInMenu; j++)
    {
      *out << "<tr><td></td>";
      for(i=begin; i < last_ls_; i++)
        *out << "<td>" << trp_[i].trigPathSummaries[j].timesPassed << "("
             << trp_[i].trigPathSummaries[j].timesPassedL1 << ")("
             << trp_[i].trigPathSummaries[j].timesPassedPs << ")</td>";
      *out << "<td>" << mappath_[j] << "</td>";
      *out << "</tr>\n";
    }
  for(int j = 0; j < trp_[0].endPathsInMenu; j++)
    {
      *out << "<tr><td></td>";
      for(i=begin; i < last_ls_; i++)
        *out << "<td>" << trp_[i].endPathSummaries[j].timesPassed << "</td>";
      *out << "<td>" << mappath_[j+trp_[last_ls_-1].trigPathsInMenu] << "</td>";
      *out << "</tr>\n";
    }
  *out << "</tbody>\n";
}
void iDie::initFramework ( ) [private]

Definition at line 1011 of file iDie.cc.

References edmplugin::standard::config(), configString_, edmplugin::PluginManager::configure(), edm::ServiceRegistry::createSet(), dqmCollectorHost_, dqmCollectorPort_, dqmEnabled_, dqmService_, dqmState_, dqmStore_, alignCSCRings::e, evtProcessor_, exception, reco::get(), initMonitorElements(), edm::serviceregistry::kTokenOverrides, edm::PresenceFactory::makePresence(), cppFunctionSkipper::operator, PythonProcessDesc::processDesc(), pServiceSets_, alignCSCRings::s, serviceToken_, and cms::Exception::what().

Referenced by actionPerformed().

{

  //ParameterSetRetriever pr(configString_);
  //std::string configuration_ = pr.getAsString();

  std::string configuration_ = configString_;
  configuration_.replace(configuration_.find("EMPTYHOST"),9,dqmCollectorHost_.value_);

  //check if port is a number
  {
    std::string & s = dqmCollectorPort_.value_;
    std::string::const_iterator it = s.begin();
    while (it != s.end() && std::isdigit(*it)) ++it;
    if (it != s.end() || s.empty()) dqmCollectorPort_="0";
  }
  configuration_.replace(configuration_.find("EMPTYPORT"),9,dqmCollectorPort_.value_);

  PythonProcessDesc ppdesc = PythonProcessDesc(configuration_);
  boost::shared_ptr<edm::ProcessDesc> pdesc;
  std::vector<std::string> defaultServices = {"InitRootHandlers"};
  pdesc = ppdesc.processDesc();
  pdesc->addServices(defaultServices);

  if (!pServiceSets_) {
    pServiceSets_ = pdesc->getServicesPSets();
    edmplugin::PluginManager::configure(edmplugin::standard::config());
  }
  try {
    edm::PresenceFactory *pf = edm::PresenceFactory::get();
    if(pf != 0) {
      pf->makePresence("MessageServicePresence").release();
    }
    else {
    LOG4CPLUS_WARN(getApplicationLogger(),"Unable to create message service presence");
    }
  } 
  catch(edm::Exception e) {
    LOG4CPLUS_WARN(getApplicationLogger(),e.what());
  }

  catch(cms::Exception e) {
    LOG4CPLUS_WARN(getApplicationLogger(),e.what());
  }
 
  catch(std::exception e) {
    LOG4CPLUS_WARN(getApplicationLogger(),e.what());
  }
  catch(...) {
    LOG4CPLUS_WARN(getApplicationLogger(),"Unknown Exception (Message Presence)");
  }

  try {
  serviceToken_ = edm::ServiceRegistry::createSet(*pServiceSets_);
  }
  catch (...) {
    LOG4CPLUS_WARN(getApplicationLogger(),"Failed creation of service token ");
    dqmEnabled_.value_=false;
  }
  edm::ServiceRegistry::Operate operate(serviceToken_);

  evtProcessor_ = new edm::EventProcessor(pdesc,
      serviceToken_,
      edm::serviceregistry::kTokenOverrides);

  try{
    if(edm::Service<DQMStore>().isAvailable())
      dqmStore_ = edm::Service<DQMStore>().operator->();
  }
  catch(...) {
    LOG4CPLUS_WARN(getApplicationLogger(),"exception when trying to get service DQMStore");
    dqmEnabled_.value_=false;
  }
  try{
    if(edm::Service<DQMService>().isAvailable())
      dqmService_ = edm::Service<DQMService>().operator->();
  }
  catch(...) {
    LOG4CPLUS_WARN(getApplicationLogger(),"exception when trying to get service DQMService");
    dqmEnabled_.value_=false;
  }
  if (!dqmEnabled_.value_) LOG4CPLUS_ERROR(getApplicationLogger(),"Failed to initialize DQMService/DQMStore");

  if (dqmState_!="Removed")
    initMonitorElements();

}
void iDie::initMonitorElements ( ) [private]

Definition at line 1099 of file iDie.cc.

References DQMStore::book1D(), DQMStore::book2D(), busySummary2_, busySummary_, DQMStore::cd(), commonLsHistory, currentLs_, daqBusySummary_, dqmStore_, epInstances, evtProcessor_, fuReportsSummary_, i, ilumiprev_, lsHistory, meInitialized_, meVecOffenders_, meVecRate_, meVecTime_, MODNAMES, nbSubsClasses, nbSubsListInv, occupancyNameMap, pastSavedFiles_, rateSummary_, ROLL, runNumber_, savedForLs_, MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), findQualityFiles::size, summaryLastLs_, timingSummary_, and topLevelFolder_.

Referenced by actionPerformed(), and initFramework().

{
  if (!evtProcessor_) return;
  dqmStore_->cd();

  meVecRate_.clear();
  meVecTime_.clear();
  meVecOffenders_.clear();
  for (unsigned int i=0;i<epInstances.size();i++) {
          currentLs_[i]=0;
  }
  ilumiprev_ = 0;
  savedForLs_=0;
  summaryLastLs_ = 0;
  pastSavedFiles_.clear();
 
  dqmStore_->setCurrentFolder(topLevelFolder_.value_ + "/Layouts/");
  for (unsigned int i=0;i<nbSubsClasses;i++) {
    std::ostringstream str;
    str << nbSubsListInv[i];
    meVecRate_.push_back(dqmStore_->book1D("EVENT_RATE_"+TString(str.str().c_str()),
                         "Average event rate for nodes with " + TString(str.str().c_str()) + " EP instances",
                         4000,1.,4001));
    meVecTime_.push_back(dqmStore_->book1D("EVENT_TIME_"+TString(str.str().c_str()),
                         "Average event processing time for nodes with " + TString(str.str().c_str()) + " EP instances",
                         4000,1.,4001));
    meVecOffenders_.push_back(dqmStore_->book2D("MODULE_FRACTION_"+TString(str.str().c_str()),
                                                "Module processing time fraction_"+ TString(str.str().c_str()),
                                                ROLL,1.,1.+ROLL,MODNAMES,0,MODNAMES));
    //fill 1 in underrflow bin
    meVecOffenders_[i]->Fill(0,1);
    occupancyNameMap[i].clear();
  }
  rateSummary_   = dqmStore_->book2D("00_RATE_SUMMARY","Rate Summary (Hz)",ROLL,0,ROLL,epInstances.size()+1,0,epInstances.size()+1);
  timingSummary_ = dqmStore_->book2D("01_TIMING_SUMMARY","Event Time Summary (ms)",ROLL,0,ROLL,epInstances.size()+1,0,epInstances.size()+1);
  busySummary_ = dqmStore_->book2D("02_BUSY_SUMMARY","Busy fraction ",ROLL,0,ROLL,epInstances.size()+2,0,epInstances.size()+2);
  busySummary2_ = dqmStore_->book2D("03_BUSY_SUMMARY_PROCSTAT","Busy fraction from /proc/stat",ROLL,0,ROLL,epInstances.size()+2,0,epInstances.size()+2);
  fuReportsSummary_ = dqmStore_->book2D("04_EP_REPORTS_SUMMARY","Number of reports received",ROLL,0,ROLL,epInstances.size()+1,0,epInstances.size()+1);

  //busyModules_  = dqmStore_->book2D("MODULES_BUSY",ROLL,1.,1.+ROLL,MODNAMES,0,MODNAMES);
  //everything goes into layouts folder
  //dqmStore_->setCurrentFolder(topLevelFolder_.value_ + "/EventInfo/");
  std::ostringstream busySummaryTitle;
  busySummaryTitle << "DAQ HLT Farm busy (%) for run "<< runNumber_.value_;
  daqBusySummary_ = dqmStore_->book1D("reportSummaryMap",busySummaryTitle.str(),4000,1,4001.);

  for (size_t i=1;i<=ROLL;i++) {
    std::ostringstream ostr;
    ostr << i;
    rateSummary_->setBinLabel(i,ostr.str(),1);
    timingSummary_->setBinLabel(i,ostr.str(),1);
    busySummary_->setBinLabel(i,ostr.str(),1);
    busySummary2_->setBinLabel(i,ostr.str(),1);
    fuReportsSummary_->setBinLabel(i,ostr.str(),1);
  }
  for (size_t i=1;i<epInstances.size()+1;i++) {
    std::ostringstream ostr;
    ostr << epInstances[i-1];
    rateSummary_->setBinLabel(i,ostr.str(),2);
    timingSummary_->setBinLabel(i,ostr.str(),2);
    busySummary_->setBinLabel(i,ostr.str(),2);
    busySummary2_->setBinLabel(i,ostr.str(),2);
    fuReportsSummary_->setBinLabel(i,ostr.str(),2);
  }
  rateSummary_->setBinLabel(epInstances.size()+1,"All",2);
  //timingSummary_->setBinLabel(i,"Avg",2);
  busySummary_->setBinLabel(epInstances.size()+1,"%Conf",2);
  busySummary_->setBinLabel(epInstances.size()+2,"%Max",2);
  busySummary2_->setBinLabel(epInstances.size()+1,"%Conf",2);
  busySummary2_->setBinLabel(epInstances.size()+2,"%Max",2);
  fuReportsSummary_->setBinLabel(epInstances.size()+1,"All",2);

  //wipe out all ls history
  for (size_t i=0;i<epInstances.size();i++) {
    while (lsHistory[i].size()) {
      delete lsHistory[i].front();
      lsHistory[i].pop_front();
    }
  }
  while (commonLsHistory.size()) {
    delete commonLsHistory.front();
    commonLsHistory.pop_front();
  }
  meInitialized_=true;

}
void iDie::initMonitorElementsStreams ( ) [private]

Definition at line 1186 of file iDie.cc.

References DQMStore::book1D(), dqmEnabled_, dqmStore_, endPathNames_, endPathRates_, evtProcessor_, i, meInitializedStreams_, DQMStore::setCurrentFolder(), and topLevelFolder_.

Referenced by updateStreamHistos().

                                      {
  if (!dqmEnabled_.value_ || !evtProcessor_) return;
  if (meInitializedStreams_) return;

  //add OUTPUT Stream histograms
  endPathRates_.clear();
  dqmStore_->setCurrentFolder(topLevelFolder_.value_ + "/Layouts/Streams/");
  for (size_t i=0;i<endPathNames_.size();i++) {
    endPathRates_.push_back(dqmStore_->book1D(std::string("00 ") + endPathNames_[i]+"_RATE",endPathNames_[i]+" events/s",4000,1,4001.));
    //endPathCumulative_.push_back(dqmStore_->book1D(std::string("01 ") + endPathNames_[i]+"_CUMULATIVE",endPathNames_[i]+" events",4000,1,4001.));
  }
  meInitializedStreams_=true;
}
void iDie::parseModuleHisto ( const char *  crp,
unsigned int  lsid 
) [private]

Definition at line 694 of file iDie.cc.

References b1_, b_, commonLsHistory, cpuentries_, cpustat_, currentLs_, datap_, delta, doFlush(), epInstances, f_, fillDQMModFractionHist(), fillDQMStatHist(), evf::iDie::lsStat::getModuleSamplingPtr(), evf::iDie::lsStat::getNSampledNonIdle(), evf::iDie::lsStat::getOffendersVector(), i, lsHistory, lst, mapmod_, meInitialized_, nbSubsList, nModuleHistoMessageReceived_, nModuleLegendaMessageReceived_, nstates_, perLumiFileSaver(), ROLL, findQualityFiles::size, t_, and evf::iDie::lsStat::update().

{
  if(lsid==0) return;
  nModuleHistoMessageReceived_++;
  int *trp = (int*)crp;
  if(t_==0 && f_!=0){
    datap_ = new int[nstates_+5];
    std::ostringstream ost;
    ost<<mapmod_[0]<<"/I";
    for(unsigned int i = 1; i < nstates_; i++)
      ost<<":"<<mapmod_[i];
    ost<<":nsubp:instance:nproc:ncpubusy";//
    f_->cd();
    t_ = new TTree("microReport","microstate report tree");
    t_->SetAutoSave(500000);
    b_ = t_->Branch("microstates",datap_,ost.str().c_str());
    b1_ = t_->Branch("ls",&lsid,"ls/I");

  }

  memcpy(datap_,trp,(nstates_+5)*sizeof(int));
  //check ls for subprocess type
  unsigned int datapLen_ = nstates_+5;
  unsigned int nbsubs_ = datap_[datapLen_-5];
  unsigned int nbproc_ = datap_[datapLen_-3];
  unsigned int ncpubusy_ = datap_[datapLen_-2];
  unsigned int deltaTms_ = datap_[datapLen_-1];

  //find index number
  int nbsIdx = -1;

  /* debugging test
  unsigned int randls = 0;
  unsigned int randslot = 0;
  if (lsid>3) {
    randslot = rand();
    if (randslot%2) nbsubs_=7;
    else nbsubs_=8;
    randls = rand();
    randls%=3;
    lsid-=randls;
  }
  */

  if (meInitialized_ && nbSubsList.find(nbsubs_)!=nbSubsList.end() && lsid) {
     nbsIdx = nbSubsList[nbsubs_];
    if (currentLs_[nbsIdx]<lsid) {//new lumisection for this ep class
      if (currentLs_[nbsIdx]!=0) {
        if (lsHistory[nbsIdx].size()) {
          //push update for last lumi
          lsStat * lst = lsHistory[nbsIdx].back();

          fillDQMStatHist(nbsIdx,currentLs_[nbsIdx]);
          fillDQMModFractionHist(nbsIdx,currentLs_[nbsIdx],lst->getNSampledNonIdle(),
              lst->getOffendersVector());
          //fillDQMModBusyHist(currentLs_[nbsIx]);
          doFlush();
          perLumiFileSaver(currentLs_[nbsIdx]);
        }
      }

      currentLs_[nbsIdx]=lsid;

      //add elements for new lumisection, fill the gap if needed
      unsigned int lclast = commonLsHistory.size() ? commonLsHistory.back()->ls_:0;
      for (unsigned int newls=lclast+1;newls<=lsid;newls++) {
          commonLsHistory.push_back(new commonLsStat(newls,epInstances.size()));
      }

      unsigned int lhlast = lsHistory[nbsIdx].size() ? lsHistory[nbsIdx].back()->ls_:0;
      for (size_t newls=lhlast+1;newls<=lsid;newls++) {
        lsHistory[nbsIdx].push_back(new lsStat(newls,nbsubs_,nModuleLegendaMessageReceived_,nstates_));
      }

      //remove old elements from queues
      while (commonLsHistory.size()>ROLL) {delete commonLsHistory.front(); commonLsHistory.pop_front();}
      while (lsHistory[nbsIdx].size()>ROLL) {delete lsHistory[nbsIdx].front(); lsHistory[nbsIdx].pop_front();}
    }
    if (currentLs_[nbsIdx]>=lsid) { // update for current or previous lumis
      unsigned int qsize=lsHistory[nbsIdx].size();
      unsigned int delta = currentLs_[nbsIdx]-lsid;
      if (qsize>delta && delta<ROLL) {
        lsStat * lst = (lsHistory[nbsIdx])[qsize-delta-1];
        unsigned int cumulative_ = 0;
        auto fillvec = lst->getModuleSamplingPtr();
        for (unsigned int i=0;i<nstates_;i++) {
          cumulative_+=datap_[i];
          if (fillvec) {
            fillvec[i].second+=datap_[i];
          }
        }
        unsigned int busyCounts = cumulative_-datap_[2];
        lst->update(busyCounts,datap_[2],nbproc_,ncpubusy_,deltaTms_);
      }
    }
  }
  else {
    //no predefined plots for this number of sub processes
  }

  if(t_!=0){
    t_->SetEntries(t_->GetEntries()+1); b_->Fill(); b1_->Fill();
  }

  for(unsigned int i=0;i<nstates_; i++)
    {
      cpustat_[lsid-1][i] += trp[i];
      cpuentries_[lsid-1] += trp[i];
    }
}
void iDie::parseModuleLegenda ( std::string  leg) [private]

Definition at line 673 of file iDie.cc.

References lastModuleLegendaMessageTimeStamp_, mapmod_, nModuleLegendaMessageReceived_, nModuleLegendaMessageWithDataReceived_, and nstates_.

{
  nModuleLegendaMessageReceived_++;
  if(leg=="") return;
  gettimeofday(&lastModuleLegendaMessageTimeStamp_,0);
  nModuleLegendaMessageWithDataReceived_++;
  mapmod_.clear();
  //  if(cpustat_) delete cpustat_;
  boost::char_separator<char> sep(",");
  boost::tokenizer<boost::char_separator<char> > tokens(leg, sep);
  for (boost::tokenizer<boost::char_separator<char> >::iterator tok_iter = tokens.begin();
       tok_iter != tokens.end(); ++tok_iter){
    mapmod_.push_back((*tok_iter));
  }
  nstates_ = mapmod_.size();
  //  cpustat_ = new int[nstates_];
//   for(int i = 0; i < nstates_; i++)
//     cpustat_[i]=0;   
//   cpuentries_ = 0;
}
void iDie::parsePathHisto ( const unsigned char *  crp,
unsigned int  lsid 
) [private]

Definition at line 845 of file iDie.cc.

References evf::funcs::addToReport(), b2_, b3_, b4_, commonLsHistory, evf::iDie::commonLsStat::endPathCounts_, evf::TriggerReportStatic::endPathsInMenu, evf::TriggerReportStatic::endPathSummaries, evf::internal::rate::etimesExcept, evf::internal::rate::etimesFailed, evf::internal::rate::etimesPassed, evf::internal::rate::etimesPassedL1, evf::internal::rate::etimesPassedPs, evf::internal::rate::etimesRun, evf::TriggerReportStatic::eventSummary, f_, i, evf::iDie::commonLsStat::ls_, meInitialized_, evf::TriggerReportStatic::nbExpected, evf::TriggerReportStatic::nbReporting, nPathHistoMessageReceived_, evf::internal::rate::nproc, evf::internal::rate::nrep, evf::internal::rate::nsub, evf::internal::rate::ptimesExcept, evf::internal::rate::ptimesFailed, evf::internal::rate::ptimesPassed, evf::internal::rate::ptimesPassedL1, evf::internal::rate::ptimesPassedPs, evf::internal::rate::ptimesRun, r_, t_, evf::PathSummaryStatic::timesExcept, evf::PathSummaryStatic::timesFailed, evf::PathSummaryStatic::timesPassed, evf::PathSummaryStatic::timesPassedL1, evf::PathSummaryStatic::timesPassedPs, evf::PathSummaryStatic::timesRun, edm::EventSummary::totalEvents, evf::TriggerReportStatic::trigPathsInMenu, evf::TriggerReportStatic::trigPathSummaries, trp_, trpentries_, and trppriv_.

{
  if(lsid==0) return;
  nPathHistoMessageReceived_++;
//   if(lsid>=trp_.size()){
//     trp_.resize(lsid);
//     funcs::reset(&trp_[lsid-1]);
//     trpentries_.resize(lsid,0);
//   }
  trppriv_ = (TriggerReportStatic*)crp;
  for( int i=0; i< trppriv_->trigPathsInMenu; i++)
    {
      r_.ptimesRun[i] = trppriv_->trigPathSummaries[i].timesRun;
      r_.ptimesPassedPs[i] = trppriv_->trigPathSummaries[i].timesPassedPs;
      r_.ptimesPassedL1[i] = trppriv_->trigPathSummaries[i].timesPassedL1;
      r_.ptimesPassed[i] = trppriv_->trigPathSummaries[i].timesPassed;
      r_.ptimesFailed[i] = trppriv_->trigPathSummaries[i].timesFailed;
      r_.ptimesExcept[i] = trppriv_->trigPathSummaries[i].timesExcept;
    }
  //find |common ls history" object for current ls
  commonLsStat * cst = 0;
  if (meInitialized_) {
    if (commonLsHistory.size()) cst=commonLsHistory.back();
    if (cst && cst->ls_>=lsid) {
      unsigned int countback=commonLsHistory.size()-1;
      while (cst->ls_>lsid && countback) {
        countback--;
        cst=commonLsHistory[countback];
      }
    }
  }

  for( int i=0; i< trppriv_->endPathsInMenu; i++)
    {
      r_.etimesRun[i] = trppriv_->endPathSummaries[i].timesRun;
      r_.etimesPassedPs[i] = trppriv_->endPathSummaries[i].timesPassedPs;
      r_.etimesPassedL1[i] = trppriv_->endPathSummaries[i].timesPassedL1;
      r_.etimesPassed[i] = trppriv_->endPathSummaries[i].timesPassed;
      r_.etimesFailed[i] = trppriv_->endPathSummaries[i].timesFailed;
      r_.etimesExcept[i] = trppriv_->endPathSummaries[i].timesExcept;
      if (cst) {
        if ((unsigned)i < cst->endPathCounts_.size()) cst->endPathCounts_[i]+=r_.etimesPassed[i];
        else cst->endPathCounts_.push_back(r_.etimesPassed[i]);
      }
    }
  r_.nproc = trppriv_->eventSummary.totalEvents;
  r_.nsub = trppriv_->nbExpected;
  r_.nrep = trppriv_->nbReporting;

  if(t_!=0 && f_!=0 && b2_==0){

    b2_ = t_->Branch("rate",&r_,"nproc/I:nsub:nrep");
    std::ostringstream ost1;
    ost1 << "p_nrun[" << trppriv_->trigPathsInMenu
         << "]/I:p_npps[" << trppriv_->trigPathsInMenu
         << "]:p_npl1[" << trppriv_->trigPathsInMenu
         << "]:p_npp[" << trppriv_->trigPathsInMenu 
         << "]:p_npf[" << trppriv_->trigPathsInMenu
         << "]:p_npe[" << trppriv_->trigPathsInMenu <<"]";

    b3_ = t_->Branch("paths",r_.ptimesRun,ost1.str().c_str());
    std::ostringstream ost2;
    ost2 << "ep_nrun[" << trppriv_->endPathsInMenu
         << "]/I:en_npps[" << trppriv_->endPathsInMenu
         << "]:ep_npl1[" << trppriv_->endPathsInMenu
         << "]:ep_npp[" << trppriv_->endPathsInMenu
         << "]:ep_npf[" << trppriv_->endPathsInMenu
         << "]:ep_npe[" << trppriv_->endPathsInMenu << "]";
    b4_ = t_->Branch("endpaths",r_.etimesRun,ost2.str().c_str());
  }
  if(b2_!=0) b2_->Fill();
  if(b3_!=0) b3_->Fill();
  if(b4_!=0) b4_->Fill();

  funcs::addToReport(&trp_[lsid-1],trppriv_,lsid);
  trpentries_[lsid-1]++;

}
void iDie::parsePathLegenda ( std::string  leg) [private]

Definition at line 806 of file iDie.cc.

References endPathNames_, lastPathLegendaMessageTimeStamp_, mappath_, meInitializedStreams_, nPathLegendaMessageReceived_, and nPathLegendaMessageWithDataReceived_.

{
  nPathLegendaMessageReceived_++;
  if(leg=="")return;
  gettimeofday(&lastPathLegendaMessageTimeStamp_,0);
  nPathLegendaMessageWithDataReceived_++;
  mappath_.clear();
  boost::char_separator<char> sep(",");
  boost::tokenizer<boost::char_separator<char> > tokens(leg, sep);
  endPathNames_.clear();
  for (boost::tokenizer<boost::char_separator<char> >::iterator tok_iter = tokens.begin();
       tok_iter != tokens.end(); ++tok_iter){
      mappath_.push_back((*tok_iter));

      if (!meInitializedStreams_ && std::string(*tok_iter).find("Output")!=std::string::npos) {
        std::string path_token = *tok_iter;
        if (path_token.find("=")!=std::string::npos)
          endPathNames_.push_back(path_token.substr(path_token.find("=")+1));
        else
          endPathNames_.push_back(*tok_iter);
      }
  }
  //look for daqval-type menu if no "Output" endpaths found
  if (!endPathNames_.size()) {
          
    for (boost::tokenizer<boost::char_separator<char> >::iterator tok_iter = tokens.begin();
        tok_iter != tokens.end(); ++tok_iter){

      if (!meInitializedStreams_ && std::string(*tok_iter).find("output")!=std::string::npos) {
        std::string path_token = *tok_iter;
        if (path_token.find("=")!=std::string::npos)
          endPathNames_.push_back(path_token.substr(path_token.find("=")+1));
        else
          endPathNames_.push_back(*tok_iter);
      }
    }
  }
}
void iDie::perLumiFileSaver ( unsigned int  lsid) [private]

Definition at line 1445 of file iDie.cc.

References dqmFilesWritable_, dqmSaveDir_, dqmStore_, alignCSCRings::e, f_, fileBaseName_, lut2db_cfg::filename, i, ilumiprev_, pastSavedFiles_, runNumber_, DQMStore::save(), savedForLs_, saveLsInterval_, DQMStore::SaveWithReference, testRegression::stat, ntuplemaker::status, dqm::qstatus::STATUS_OK, createPayload::suffix, topLevelFolder_, BeamSplash_cfg::version, and writeDirectoryPresent_.

Referenced by parseModuleHisto().

{
 
  if (dqmSaveDir_.value_=="") return;
  //try to create directory if not there

  if (savedForLs_==0)
  {
    struct stat st;
    if (stat((dqmSaveDir_.value_+"/output").c_str(),&st) != 0) {
      if (mkdir((dqmSaveDir_.value_+"/output").c_str(), 0777) != 0) {
        LOG4CPLUS_ERROR(getApplicationLogger(),"iDie could not find nor create DQM \"output\" directory. DQM archiving -> Off.");
        dqmSaveDir_.value_="";//reset parameter
        return;
      }
    }
    if (stat((dqmSaveDir_.value_+"/done").c_str(),&st) != 0) {
      if (mkdir((dqmSaveDir_.value_+"/done").c_str(), 0777) != 0) {
        LOG4CPLUS_WARN(getApplicationLogger(),"iDie could not find nor create DQM \"done\" directory. DQM archiving might fail.");
      }
    }
    //static filename part
    char version[8];
    sprintf(version, "_V%04d_", int(1));
    version[7]='\0';
    std::string sDir = dqmSaveDir_.value_;
    if (sDir[sDir.size()-1]!='/') sDir+="/";
    sDir+="output/";
    fileBaseName_ = sDir + "DQM" + version;

    //checking if directory is there
    if ( access( sDir.c_str(), 0 ) == 0 )
    {
      struct stat status;
      stat( sDir.c_str(), &status );

      if ( status.st_mode & S_IFDIR ) writeDirectoryPresent_=true;
      else writeDirectoryPresent_=false;
    }
  }

  if (lsid > 0 && (lsid%saveLsInterval_.value_)==0  && lsid>savedForLs_ && writeDirectoryPresent_)
  {
    savedForLs_=lsid;
    char suffix[64];
    char rewrite[128];
    sprintf(suffix, "_R%09d_L%06d", runNumber_.value_, lsid);
    sprintf(rewrite, "\\1Run %d/\\2/By Lumi Section %d-%d", runNumber_.value_, ilumiprev_, lsid);

    std::vector<std::string> systems = {topLevelFolder_.value_};

    for (size_t i = 0, e = systems.size(); i != e; ++i) {
      std::string filename = fileBaseName_ + systems[i] + suffix + ".root";
      try {
        dqmStore_->save(filename, systems[i] , "^(Reference/)?([^/]+)",
            rewrite, (DQMStore::SaveReferenceTag) DQMStore::SaveWithReference, dqm::qstatus::STATUS_OK);
        pastSavedFiles_.push_back(filename);
        if (dqmFilesWritable_.value_)
          chmod(filename.c_str(),0777);//allow deletion by dqm script
        //if (pastSavedFiles_.size() > 500)
        //{
          //remove(pastSavedFiles_.front().c_str());
          //pastSavedFiles_.pop_front();
        //}
      }
      catch (...) {
        LOG4CPLUS_ERROR(getApplicationLogger(),"iDie could not create root file " << filename);
      }
    }

    ilumiprev_ = lsid;

    //cd() to micro report root file
    if (f_)
      f_->cd();
  }
}
void iDie::postEntry ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 457 of file iDie.cc.

References alignCSCRings::e, exception, reco::JetExtendedAssociation::getValue(), query::host, recoMuon::in, cmsPerfSuiteHarvest::now, DTTTrigCorrFirst::run, and cms::Exception::what().

Referenced by iDie().

{

  timeval tv;
  gettimeofday(&tv,0);
  time_t now = tv.tv_sec;

  try {
    cgicc::Cgicc cgi(in); 
    unsigned int run = 0;
    pid_t cpid = 0;
    /*  cgicc::CgiEnvironment cgie(in);
        cout << "query = "  << cgie.getContentLength() << endl;
        */
    std::vector<cgicc::FormEntry> el1;
    el1 = cgi.getElements();
    //   for(unsigned int i = 0; i < el1.size(); i++)
    //     std::cout << "name="<<el1[i].getName() << std::endl;
    el1.clear();
    cgi.getElement("run",el1);
    if(el1.size()!=0)
    {
      run =  el1[0].getIntegerValue();
    }
    el1.clear();
    cgi.getElement("stacktrace",el1);
    if(el1.size()!=0)
    {
      cpid = run;
      //      std::cout << "=============== stacktrace =============" << std::endl;
      //      std::cout << el1[0].getValue() << std::endl;
      if(el1[0].getValue().find("Dead")==0){

        std::string host = cgi.getEnvironment().getRemoteHost();
        std::transform(host.begin(), host.end(),
                       host.begin(), ::toupper);
        ifmap fi = fus_.find(host);
        if(fi!=fus_.end()){
          fus_.erase(fi);
        }
        if(fus_.size()==0) { //close the root file if we know the run is over

          if(f_!=0){
            f_->cd();
            f_->Write();
          }
          if(t_ != 0) {
            delete t_;
            t_ = 0;
          }
          if(f_!=0){
            f_->Close();
            delete f_; f_ = 0;
          }
        }
      }
      else{
        totalCores_++;
        std::string st = el1[0].getValue();
        std::string sig; 
        size_t psig = st.find("signal");
        if(psig != std::string::npos)
          sig = st.substr(psig,9);
        std::string host = cgi.getEnvironment().getRemoteHost();
        std::transform(host.begin(), host.end(),
                       host.begin(), ::toupper);
        ifmap fi = fus_.find(host);
        if(fi!=fus_.end()){
          (*fi).second.tstamp = now;
          (*fi).second.ccount++;
          (*fi).second.cpids.push_back(cpid);
          (*fi).second.signals.push_back(sig);
          (*fi).second.stacktraces.push_back(st);
        }
      }
    }
    el1.clear();
    cgi.getElement("legenda",el1);
    if(el1.size()!=0)
    {
      parsePathLegenda(el1[0].getValue());
    }
    cgi.getElement("trp",el1);
    if(el1.size()!=0)
    {
      unsigned int lsid = run;
      parsePathHisto((unsigned char*)(el1[0].getValue().c_str()),lsid);
    }
    el1.clear();
  }
  catch (edm::Exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught edm exception in postEntry: " << e.what());
  }
  catch (cms::Exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught cms exception in postEntry: " << e.what());
  }
  catch (std::exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught std exception in postEntry: " << e.what());
  }
  catch (...) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught unknown exception in postEntry");
  }

}
void iDie::postEntryiChoke ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 564 of file iDie.cc.

References alignCSCRings::e, exception, reco::JetExtendedAssociation::getValue(), recoMuon::in, evf::funcs::reset(), and cms::Exception::what().

Referenced by iDie().

{
  //  std::cout << "postEntryiChoke " << std::endl;
 
  if (dqmEnabled_.value_) {
    if (!evtProcessor_) initFramework();
    if (!meInitialized_) {
      if (dqmState_!="Removed") initMonitorElements();
    }
  }


  unsigned int lsid = 0;
  try {
    cgicc::Cgicc cgi(in); 
    /*  cgicc::CgiEnvironment cgie(in);
        cout << "query = "  << cgie.getContentLength() << endl;
        */
    std::vector<cgicc::FormEntry> el1;
    el1 = cgi.getElements();
    //   for(unsigned int i = 0; i < el1.size(); i++)
    //     std::cout << "name="<<el1[i].getName() << std::endl;
    el1.clear();
    cgi.getElement("run",el1);
    if(el1.size()!=0)
    {
      lsid =  el1[0].getIntegerValue();
    }
    el1.clear();

    //with the first message for the new lsid, resize all containers so 
    // a web access won't address an invalid location in case it interleaves between 
    // the first cpustat update and the first scalers update or viceversa
    if(lsid!=0){
      if(lsid>cpustat_.size()){
        cpustat_.resize(lsid,std::vector<int>(nstates_,0));
        cpuentries_.resize(lsid,0);
      }
      if(lsid>trp_.size()){
        trp_.resize(lsid);
        funcs::reset(&trp_[lsid-1]);
        trpentries_.resize(lsid,0);
      }
      if(last_ls_ < lsid) {
        last_ls_ = lsid; 
        funcs::reset(&trp_[lsid-1]);
        if(t_ && (last_ls_%10==0)) t_->Write();
      } 
    }

    cgi.getElement("legenda",el1);
    if(el1.size()!=0)
    {
      parseModuleLegenda(el1[0].getValue());
    }
    cgi.getElement("trp",el1);
    if(el1.size()!=0)
    {
      parseModuleHisto(el1[0].getValue().c_str(),lsid);
    }
    el1.clear();
  }

  catch (edm::Exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught edm exception in postEntryiChoke: " << e.what());
  }
  catch (cms::Exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught cms exception in postEntryiChoke: " << e.what());
  }
  catch (std::exception &e) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught std exception in postEntryiChoke: " << e.what());
  }
  catch (...) {
    LOG4CPLUS_ERROR(getApplicationLogger(),"Caught unknown exception in postEntryiChoke");
  }
}
void iDie::reset ( void  ) [private]

Definition at line 643 of file iDie.cc.

References b1_, b2_, b3_, b4_, b_, cpuentries_, cpustat_, datap_, f_, fus_, last_ls_, t_, totalCores_, trp_, and trpentries_.

Referenced by actionPerformed().

{
  fus_.erase(fus_.begin(),fus_.end());
  totalCores_=0;
  last_ls_ = 0;
  trp_.clear();
  trpentries_.clear();
  cpustat_.clear();
  cpuentries_.clear();

  if(f_!=0){
    f_->cd();
    f_->Write();
  }

  if(t_ != 0)
  {
    delete t_; t_=0;
  }

  if(f_!=0){
    f_->Close();
    delete f_; f_ = 0;
  }
  if(datap_ != 0)
    {delete datap_; datap_ = 0;}
  b_=0; b1_=0; b2_=0; b3_=0; b4_=0;

}
void iDie::spotlight ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 926 of file iDie.cc.

References dbtoconf::out.

Referenced by iDie().

{

  std::string urn = getApplicationDescriptor()->getURN();

  *out << "<!-- base href=\"/" <<  urn
       << "\"> -->" << std::endl;
  *out << "<html>"                                                   << std::endl;
  *out << "<head>"                                                   << std::endl;
  *out << "<link type=\"text/css\" rel=\"stylesheet\"";
  *out << " href=\"/evf/html/styles.css\"/>"                   << std::endl;
  *out << "<title>" << getApplicationDescriptor()->getClassName() 
       << getApplicationDescriptor()->getInstance() 
       << " MAIN</title>"     << std::endl;
  *out << "</head>"                                                  << std::endl;
  *out << "<body>"                                                   << std::endl;
  *out << "<table border=\"0\" width=\"100%\">"                      << std::endl;
  *out << "<tr>"                                                     << std::endl;
  *out << "  <td align=\"left\">"                                    << std::endl;
  *out << "    <img"                                                 << std::endl;
  *out << "     align=\"middle\""                                    << std::endl;
  *out << "     src=\"/evf/images/spoticon.jpg\""                            << std::endl;
  *out << "     alt=\"main\""                                        << std::endl;
  *out << "     width=\"64\""                                        << std::endl;
  *out << "     height=\"64\""                                       << std::endl;
  *out << "     border=\"\"/>"                                       << std::endl;
  *out << "    <b>"                                                  << std::endl;
  *out << getApplicationDescriptor()->getClassName() 
       << getApplicationDescriptor()->getInstance()                  << std::endl;
  *out << "    </b>"                                                 << std::endl;
  *out << "  </td>"                                                  << std::endl;
  *out << "  <td width=\"32\">"                                      << std::endl;
  *out << "    <a href=\"/urn:xdaq-application:lid=3\">"             << std::endl;
  *out << "      <img"                                               << std::endl;
  *out << "       align=\"middle\""                                  << std::endl;
  *out << "       src=\"/hyperdaq/images/HyperDAQ.jpg\""             << std::endl;
  *out << "       alt=\"HyperDAQ\""                                  << std::endl;
  *out << "       width=\"32\""                                      << std::endl;
  *out << "       height=\"32\""                                     << std::endl;
  *out << "       border=\"\"/>"                                     << std::endl;
  *out << "    </a>"                                                 << std::endl;
  *out << "  </td>"                                                  << std::endl;
  *out << "  <td width=\"32\">"                                      << std::endl;
  *out << "  </td>"                                                  << std::endl;
  *out << "  <td width=\"32\">"                                      << std::endl;
  *out << "    <a href=\"/" << urn << "/\">"                         << std::endl;
  *out << "      <img"                                               << std::endl;
  *out << "       align=\"middle\""                                  << std::endl;
  *out << "       src=\"/evf/images/idieapp.jpg\""                   << std::endl;
  *out << "       alt=\"main\""                                      << std::endl;
  *out << "       width=\"32\""                                      << std::endl;
  *out << "       height=\"32\""                                     << std::endl;
  *out << "       border=\"\"/>"                                     << std::endl;
  *out << "    </a>"                                                 << std::endl;
  *out << "  </td>"                                                  << std::endl;
  *out << "</tr>"                                                    << std::endl;
  *out << "</table>"                                                 << std::endl;
  *out << "<hr/>"                                                    << std::endl;
  *out << "<table><tr><th>Parameter</th><th>Value</th></tr>"         << std::endl;
  *out << "<tr><td>module legenda messages received</td><td>" 
       << nModuleLegendaMessageReceived_ << "</td></tr>"      << std::endl;
  *out << "<tr><td>path legenda messages received</td><td>" 
       << nPathLegendaMessageReceived_ << "</td></tr>"        << std::endl;
  *out << "<tr><td>module legenda messages with data</td><td>" 
       << nModuleLegendaMessageWithDataReceived_ << "</td></tr>"      << std::endl;
  *out << "<tr><td>path legenda messages with data</td><td>" 
       << nPathLegendaMessageWithDataReceived_ << "</td></tr>"        << std::endl;
  *out << "<tr><td>module histo messages received</td><td>" 
       << nModuleHistoMessageReceived_<< "</td></tr>"        << std::endl;
  *out << "<tr><td>path histo messages received</td><td>" 
       << nPathHistoMessageReceived_<< "</td></tr>"        << std::endl;
  tm *uptm = localtime(&lastPathLegendaMessageTimeStamp_.tv_sec);
  char datestring[256];
  strftime(datestring, sizeof(datestring),"%c", uptm);
  *out << "<tr><td>time stamp of last path legenda with data</td><td>" 
       << datestring << "</td></tr>"        << std::endl;
  uptm = localtime(&lastModuleLegendaMessageTimeStamp_.tv_sec);
  strftime(datestring, sizeof(datestring),"%c", uptm);
  *out << "<tr><td>time stamp of last module legenda with data</td><td>" 
       << datestring << "</td></tr>"        << std::endl;
  *out << "</table></body>" << std::endl;

}
void iDie::summaryTable ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 336 of file iDie.cc.

References dbtoconf::out.

Referenced by iDie().

{
    *out << "<tr><td>"<<fus_.size()<<"</td><td>" << totalCores_ 
         << "</td><td></td></tr>" << std::endl;
}
void iDie::updater ( xgi::Input *  in,
xgi::Output *  out 
) throw (xgi::exception::Exception)

Definition at line 330 of file iDie.cc.

References dbtoconf::out, and sistrip::runNumber_.

Referenced by iDie().

{
  *out << runNumber_.value_ << std::endl;
}
void iDie::updateRollingHistos ( unsigned int  nbsIdx,
unsigned int  lsid,
lsStat lst,
commonLsStat clst,
bool  roll 
) [private]

Definition at line 1232 of file iDie.cc.

References busySummary2_, busySummary_, daqBusySummary_, epInstances, epMax, f, evf::fround(), fuReportsSummary_, MonitorElement::getBinContent(), evf::iDie::commonLsStat::getBusyTotalFrac(), evf::iDie::commonLsStat::getBusyTotalFracTheor(), evf::iDie::lsStat::getEvtTime(), evf::iDie::lsStat::getFracBusy(), evf::iDie::lsStat::getFracCPUBusy(), evf::iDie::commonLsStat::getNReports(), evf::iDie::lsStat::getRate(), evf::iDie::lsStat::getReports(), evf::iDie::commonLsStat::getTotalRate(), HTscaling, i, j, machineWeight, machineWeightInst, max(), rateSummary_, ROLL, MonitorElement::setBinContent(), MonitorElement::setBinError(), MonitorElement::setBinLabel(), evf::iDie::commonLsStat::setBusyForClass(), summaryLastLs_, and timingSummary_.

Referenced by fillDQMStatHist().

                                                                                                                    {
  unsigned int lsidBin;
  if (roll) {
    if (lsid>ROLL) {
      lsidBin=ROLL;
      if (lsid>summaryLastLs_) { //last ls in plots isn't up to date
        unsigned int lsdiff = lsid-summaryLastLs_;
        for (unsigned int i=1;i<=ROLL;i++) {
          if (i<ROLL) {
            bool emptyBin=false;
            if (i>ROLL-lsdiff) emptyBin=true;
            for (unsigned int j=1;j<=epInstances.size()+1;j++) {
              rateSummary_->setBinContent(i,j,emptyBin? 0 : rateSummary_->getBinContent(i+lsdiff,j));
              timingSummary_->setBinContent(i,j,emptyBin ? 0 : timingSummary_->getBinContent(i+lsdiff,j));
              busySummary_->setBinContent(i,j,emptyBin ? 0 : busySummary_->getBinContent(i+lsdiff,j));
              busySummary2_->setBinContent(i,j,emptyBin ? 0 : busySummary2_->getBinContent(i+lsdiff,j));
              fuReportsSummary_->setBinContent(i,j,emptyBin ? 0 : fuReportsSummary_->getBinContent(i+lsdiff,j));
            }
            busySummary_->setBinContent(i,epInstances.size()+2,emptyBin ? 0 : busySummary2_->getBinContent(i+lsdiff,epInstances.size()+2));
            busySummary2_->setBinContent(i,epInstances.size()+2,emptyBin ? 0 : busySummary2_->getBinContent(i+lsdiff,epInstances.size()+2));
          }

          std::ostringstream ostr;
          ostr << lsid-ROLL+i;
          rateSummary_->setBinLabel(i,ostr.str(),1);
          timingSummary_->setBinLabel(i,ostr.str(),1);
          busySummary_->setBinLabel(i,ostr.str(),1);
          busySummary2_->setBinLabel(i,ostr.str(),1);
          fuReportsSummary_->setBinLabel(i,ostr.str(),1);

        }
        summaryLastLs_=lsid;
      }
      else if (lsid<summaryLastLs_) {
        if (summaryLastLs_-lsid>=ROLL) return;//very old
        lsidBin=ROLL-(summaryLastLs_-lsid);
      }
    }
    else if (lsid) {lsidBin=lsid;} else return;
  }
  else {// previous lumisection updates
    unsigned int roll_pos = ROLL-(summaryLastLs_-lsid);
    lsidBin=lsid > roll_pos ? roll_pos : lsid;
  }

  //how busy is it with current setup
  float busyCorr = lst->getFracBusy() * (float)epInstances[nbsIdx]/epMax[nbsIdx];
  //max based on how much is configured and max possible
  float fracMax  = 0.5 + (std::max(epInstances[nbsIdx]-epMax[nbsIdx]/2.,0.)/(epMax[nbsIdx])) *HTscaling[nbsIdx];

  //corrections for the HT effect
  float busyFr=0;
  float busyCPUFr=0;
  float busyFrTheor=0;
  float busyFrCPUTheor=0;
  if (busyCorr>0.5) {//take into account HT scaling for the busy fraction
    busyFr=(0.5 + (busyCorr-0.5)*HTscaling[nbsIdx])/fracMax;
    busyCPUFr=(0.5 + (lst->getFracCPUBusy()-0.5)*HTscaling[nbsIdx])/fracMax;
    busyFrTheor = (0.5+(busyCorr-0.5)*HTscaling[nbsIdx])/ (0.5+HTscaling[nbsIdx]);
    busyFrCPUTheor = (0.5+(lst->getFracCPUBusy()-0.5)*HTscaling[nbsIdx])/ (0.5+HTscaling[nbsIdx]);
  }
  else {//below the HT threshold
    busyFr=busyCorr / fracMax;
    busyCPUFr=lst->getFracCPUBusy() / fracMax;
    busyFrTheor = busyCorr / (0.5+HTscaling[nbsIdx]);
    busyFrCPUTheor = lst->getFracCPUBusy() / (0.5+HTscaling[nbsIdx]);
  }
  //average
  clst->setBusyForClass(nbsIdx,lst->getRate(),busyFr,busyFrTheor,busyCPUFr,busyFrCPUTheor,lst->getReports());
  float busyAvg = clst->getBusyTotalFrac(false,machineWeightInst);

  //rounding
  busyFr=fround(busyFr,0.001f);
  busyCPUFr=fround(busyCPUFr,0.001f);
  busyFrTheor=fround(busyFrTheor,0.001f);
  busyFrCPUTheor=fround(busyFrCPUTheor,0.001f);
  busyAvg=fround(busyAvg,0.001f);

  //filling plots
  daqBusySummary_->setBinContent(lsid,busyAvg*100);
  daqBusySummary_->setBinError(lsid,0);

  //"rolling" histograms
  rateSummary_->setBinContent(lsidBin,nbsIdx+1,lst->getRate());
  timingSummary_->setBinContent(lsidBin,nbsIdx+1,lst->getEvtTime()*1000);
  fuReportsSummary_->setBinContent(lsidBin,nbsIdx+1,lst->getReports());
  busySummary_->setBinContent(lsidBin,nbsIdx+1,fround(busyFr,0.001f));
  busySummary2_->setBinContent(lsidBin,nbsIdx+1,fround(busyCPUFr,0.001f));
  rateSummary_->setBinContent(lsidBin,epInstances.size()+1,clst->getTotalRate());
  fuReportsSummary_->setBinContent(lsidBin,epInstances.size()+1,clst->getNReports());
  busySummary_->setBinContent(lsidBin,epInstances.size()+1,fround(busyAvg,0.001f));
  busySummary2_->setBinContent(lsidBin,epInstances.size()+1,fround(clst->getBusyTotalFrac(true,machineWeightInst),0.001f));
  busySummary_->setBinContent(lsidBin,epInstances.size()+2,fround(clst->getBusyTotalFracTheor(false,machineWeight),0.001f));
  busySummary2_->setBinContent(lsidBin,epInstances.size()+2,fround(clst->getBusyTotalFracTheor(true,machineWeight),0.001f));

}
void iDie::updateStreamHistos ( unsigned int  forls,
commonLsStat clst,
commonLsStat prevclst 
) [private]

Definition at line 1329 of file iDie.cc.

References evf::iDie::commonLsStat::endPathCounts_, endPathRates_, i, and initMonitorElementsStreams().

Referenced by fillDQMStatHist().

                                                                                            {
  initMonitorElementsStreams();//reinitialize if needed
  for (size_t i=0;i<endPathRates_.size();i++) {
    unsigned int count_current=0;
    unsigned int count_last=0;
    if (clst->endPathCounts_.size()>i) {
      count_current=clst->endPathCounts_[i];
    }
    //if (prevclst && prevclst->endPathCounts_.size()>i) {
      //count_last=clst->endPathCounts_[i];
    //}
    //endPathCumulative_[i]->setBinContent(forls,count_current);
    endPathRates_[i]->setBinContent(forls,(count_current-count_last)/23.1);//approx ls
  } 
}
evf::iDie::XDAQ_INSTANTIATOR ( )

Member Data Documentation

TBranch* evf::iDie::b1_ [private]

Definition at line 198 of file iDie.h.

Referenced by parseModuleHisto(), and reset().

TBranch* evf::iDie::b2_ [private]

Definition at line 199 of file iDie.h.

Referenced by parsePathHisto(), and reset().

TBranch* evf::iDie::b3_ [private]

Definition at line 200 of file iDie.h.

Referenced by parsePathHisto(), and reset().

TBranch* evf::iDie::b4_ [private]

Definition at line 201 of file iDie.h.

Referenced by parsePathHisto(), and reset().

TBranch* evf::iDie::b_ [private]

Definition at line 197 of file iDie.h.

Referenced by parseModuleHisto(), and reset().

Definition at line 529 of file iDie.h.

Definition at line 526 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

Definition at line 525 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

xdata::String evf::iDie::class_ [private]

Definition at line 177 of file iDie.h.

Referenced by iDie().

std::deque<commonLsStat*> evf::iDie::commonLsHistory [private]

Definition at line 533 of file iDie.h.

Referenced by fillDQMStatHist(), initMonitorElements(), parseModuleHisto(), and parsePathHisto().

std::string evf::iDie::configString_ [private]

Definition at line 514 of file iDie.h.

Referenced by iDie(), and initFramework().

std::vector<int> evf::iDie::cpuentries_ [private]

Definition at line 187 of file iDie.h.

Referenced by parseModuleHisto(), and reset().

std::vector<std::vector<int> > evf::iDie::cpustat_ [private]

Definition at line 188 of file iDie.h.

Referenced by parseModuleHisto(), and reset().

std::vector<unsigned int> evf::iDie::currentLs_ [private]

Definition at line 541 of file iDie.h.

Referenced by iDie(), initMonitorElements(), and parseModuleHisto().

Definition at line 528 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

int* evf::iDie::datap_ [private]

Definition at line 202 of file iDie.h.

Referenced by parseModuleHisto(), and reset().

xdata::String evf::iDie::dqmCollectorHost_ [private]

Definition at line 181 of file iDie.h.

Referenced by iDie(), and initFramework().

xdata::String evf::iDie::dqmCollectorPort_ [private]

Definition at line 182 of file iDie.h.

Referenced by iDie(), and initFramework().

xdata::Boolean evf::iDie::dqmEnabled_ [private]

Definition at line 515 of file iDie.h.

Referenced by actionPerformed(), doFlush(), iDie(), initFramework(), and initMonitorElementsStreams().

xdata::Boolean evf::iDie::dqmFilesWritable_ [private]

Definition at line 547 of file iDie.h.

Referenced by iDie(), and perLumiFileSaver().

xdata::String evf::iDie::dqmSaveDir_ [private]

Definition at line 546 of file iDie.h.

Referenced by iDie(), and perLumiFileSaver().

Definition at line 512 of file iDie.h.

Referenced by doFlush(), and initFramework().

std::string evf::iDie::dqmState_ [private]

Definition at line 174 of file iDie.h.

Referenced by actionPerformed(), and initFramework().

Definition at line 538 of file iDie.h.

std::vector<std::string > evf::iDie::endPathNames_ [private]

Definition at line 225 of file iDie.h.

Referenced by initMonitorElementsStreams(), and parsePathLegenda().

std::vector<MonitorElement *> evf::iDie::endPathRates_ [private]

Definition at line 537 of file iDie.h.

Referenced by initMonitorElementsStreams(), and updateStreamHistos().

std::vector<unsigned int> evf::iDie::epInstances [private]

Definition at line 218 of file iDie.h.

Referenced by iDie(), initMonitorElements(), parseModuleHisto(), and updateRollingHistos().

std::vector<unsigned int> evf::iDie::epMax [private]

Definition at line 219 of file iDie.h.

Referenced by iDie(), and updateRollingHistos().

TFile* evf::iDie::f_ [private]

Definition at line 195 of file iDie.h.

Referenced by parseModuleHisto(), parsePathHisto(), perLumiFileSaver(), and reset().

std::string evf::iDie::fileBaseName_ [private]

Definition at line 550 of file iDie.h.

Referenced by perLumiFileSaver().

Definition at line 527 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

fmap evf::iDie::fus_ [private]

Definition at line 183 of file iDie.h.

Referenced by reset().

xdata::String evf::iDie::hostname_ [private]

Definition at line 179 of file iDie.h.

Referenced by iDie().

std::vector<float> evf::iDie::HTscaling [private]

Definition at line 220 of file iDie.h.

Referenced by iDie(), and updateRollingHistos().

unsigned int evf::iDie::ilumiprev_ [private]

Definition at line 544 of file iDie.h.

Referenced by initMonitorElements(), and perLumiFileSaver().

xdata::UnsignedInteger32 evf::iDie::instance_ [private]

Definition at line 178 of file iDie.h.

Referenced by iDie().

unsigned int evf::iDie::last_ls_ [private]

Definition at line 190 of file iDie.h.

Referenced by reset().

Definition at line 214 of file iDie.h.

Referenced by iDie(), and parseModuleLegenda().

Definition at line 215 of file iDie.h.

Referenced by iDie(), and parsePathLegenda().

Logger evf::iDie::log_ [private]

Definition at line 173 of file iDie.h.

std::deque<lsStat*>* evf::iDie::lsHistory [private]
std::vector<float> evf::iDie::machineWeight [private]

Definition at line 222 of file iDie.h.

Referenced by iDie(), and updateRollingHistos().

std::vector<float> evf::iDie::machineWeightInst [private]

Definition at line 223 of file iDie.h.

Referenced by iDie(), and updateRollingHistos().

std::vector<std::string> evf::iDie::mapmod_ [private]

Definition at line 189 of file iDie.h.

Referenced by fillDQMModFractionHist(), parseModuleHisto(), and parseModuleLegenda().

std::vector<std::string> evf::iDie::mappath_ [private]

Definition at line 193 of file iDie.h.

Referenced by parsePathLegenda().

bool evf::iDie::meInitialized_ [private]

Definition at line 510 of file iDie.h.

Referenced by actionPerformed(), initMonitorElements(), parseModuleHisto(), and parsePathHisto().

Definition at line 511 of file iDie.h.

Referenced by initMonitorElementsStreams(), and parsePathLegenda().

std::vector<MonitorElement*> evf::iDie::meVecOffenders_ [private]

Definition at line 522 of file iDie.h.

Referenced by fillDQMModFractionHist(), and initMonitorElements().

std::vector<MonitorElement*> evf::iDie::meVecRate_ [private]

Definition at line 520 of file iDie.h.

Referenced by fillDQMStatHist(), and initMonitorElements().

std::vector<MonitorElement*> evf::iDie::meVecTime_ [private]

Definition at line 521 of file iDie.h.

Referenced by fillDQMStatHist(), and initMonitorElements().

std::vector<unsigned int> evf::iDie::nbMachines [private]

Definition at line 221 of file iDie.h.

unsigned int evf::iDie::nbSubsClasses [private]

Definition at line 519 of file iDie.h.

Referenced by iDie(), and initMonitorElements().

std::map<unsigned int,int> evf::iDie::nbSubsList [private]

Definition at line 517 of file iDie.h.

Referenced by iDie(), and parseModuleHisto().

std::map<int,unsigned int> evf::iDie::nbSubsListInv [private]

Definition at line 518 of file iDie.h.

Referenced by iDie(), and initMonitorElements().

Definition at line 211 of file iDie.h.

Referenced by parseModuleHisto().

Definition at line 207 of file iDie.h.

Referenced by parseModuleHisto(), and parseModuleLegenda().

Definition at line 209 of file iDie.h.

Referenced by parseModuleLegenda().

Definition at line 212 of file iDie.h.

Referenced by parsePathHisto().

Definition at line 208 of file iDie.h.

Referenced by parsePathLegenda().

Definition at line 210 of file iDie.h.

Referenced by parsePathLegenda().

unsigned int evf::iDie::nstates_ [private]

Definition at line 186 of file iDie.h.

Referenced by parseModuleHisto(), and parseModuleLegenda().

std::vector<std::map<unsigned int, unsigned int> > evf::iDie::occupancyNameMap [private]

Definition at line 531 of file iDie.h.

Referenced by fillDQMModFractionHist(), iDie(), and initMonitorElements().

std::list<std::string> evf::iDie::pastSavedFiles_ [private]

Definition at line 545 of file iDie.h.

Referenced by initMonitorElements(), and perLumiFileSaver().

boost::shared_ptr<std::vector<edm::ParameterSet> > evf::iDie::pServiceSets_ [private]

Definition at line 507 of file iDie.h.

Referenced by initFramework().

Definition at line 204 of file iDie.h.

Referenced by parsePathHisto().

Definition at line 523 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

xdata::UnsignedInteger32 evf::iDie::runNumber_ [private]

Definition at line 180 of file iDie.h.

Referenced by iDie(), initMonitorElements(), and perLumiFileSaver().

Definition at line 213 of file iDie.h.

Referenced by iDie().

unsigned int evf::iDie::savedForLs_ [private]

Definition at line 549 of file iDie.h.

Referenced by initMonitorElements(), and perLumiFileSaver().

xdata::UnsignedInteger32 evf::iDie::saveLsInterval_ [private]

Definition at line 543 of file iDie.h.

Referenced by iDie(), and perLumiFileSaver().

Definition at line 508 of file iDie.h.

Referenced by initFramework().

unsigned int evf::iDie::summaryLastLs_ [private]

Definition at line 530 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

TTree* evf::iDie::t_ [private]

Definition at line 196 of file iDie.h.

Referenced by parseModuleHisto(), parsePathHisto(), and reset().

Definition at line 524 of file iDie.h.

Referenced by initMonitorElements(), and updateRollingHistos().

xdata::String evf::iDie::topLevelFolder_ [private]

Definition at line 548 of file iDie.h.

Referenced by iDie(), initMonitorElements(), initMonitorElementsStreams(), and perLumiFileSaver().

unsigned int evf::iDie::totalCores_ [private]

Definition at line 185 of file iDie.h.

Referenced by reset().

std::vector<TriggerReportStatic> evf::iDie::trp_ [private]

Definition at line 191 of file iDie.h.

Referenced by parsePathHisto(), and reset().

std::vector<int> evf::iDie::trpentries_ [private]

Definition at line 192 of file iDie.h.

Referenced by parsePathHisto(), and reset().

Definition at line 203 of file iDie.h.

Referenced by parsePathHisto().

xdata::String evf::iDie::url_ [private]

Definition at line 176 of file iDie.h.

Referenced by iDie().

Definition at line 551 of file iDie.h.

Referenced by perLumiFileSaver().