CMS 3D CMS Logo

Classes | Public Types | Public Member Functions | Protected Member Functions | Private Attributes

edm::JobReport Class Reference

#include <JobReport.h>

Inheritance diagram for edm::JobReport:
edm::service::JobReportService

List of all members.

Classes

struct  InputFile
struct  JobReportImpl
struct  LumiSectionReport
struct  OutputFile
struct  RunReport

Public Types

typedef unsigned int RunNumber
typedef std::size_t Token

Public Member Functions

void childAfterFork (std::string const &jobReportFile, unsigned int childIndex, unsigned int numberOfChildren)
 New output file for child.
std::string dumpFiles (void)
 debug/test util
void eventReadFromFile (Token fileToken, unsigned int run, unsigned int event)
void eventWrittenToFile (Token fileToken, unsigned int run, unsigned int event)
void inputFileClosed (Token fileToken)
Token inputFileOpened (std::string const &physicalFileName, std::string const &logicalFileName, std::string const &catalog, std::string const &inputType, std::string const &inputSourceClassName, std::string const &moduleLabel, std::string const &guid, std::vector< std::string > const &branchNames)
 JobReport (std::ostream *outputStream)
 JobReport ()
void outputFileClosed (Token fileToken)
Token outputFileOpened (std::string const &physicalFileName, std::string const &logicalFileName, std::string const &catalog, std::string const &outputModuleClassName, std::string const &moduleLabel, std::string const &guid, std::string const &dataType, std::string const &branchHash, std::vector< std::string > const &branchNames)
void overrideContributingInputs (Token outputToken, std::vector< Token > const &inputTokens)
void overrideEventsRead (Token fileToken, int const eventsRead)
void overrideEventsWritten (Token fileToken, int const eventsWritten)
void parentAfterFork (std::string const &jobReportFile)
void parentBeforeFork (std::string const &jobReportFile, unsigned int numberOfChildren)
void reportAnalysisFile (std::string const &fileName, std::map< std::string, std::string > const &fileData)
void reportDataType (Token fileToken, std::string const &dataType)
void reportError (std::string const &shortDesc, std::string const &longDesc)
void reportError (std::string const &shortDesc, std::string const &longDesc, int const &exitCode)
void reportFallbackAttempt (std::string const &pfn, std::string const &lfn, std::string const &err)
void reportFastClonedBranches (std::set< std::string > const &fastClonedBranches, long long nEvents)
 Inform the job report that branches have been fast Cloned.
void reportFastCopyingStatus (Token t, std::string const &inputFileName, bool fastCopying)
void reportGeneratorInfo (std::string const &name, std::string const &value)
void reportInputLumiSection (unsigned int run, unsigned int lumiSectId)
void reportInputRunNumber (unsigned int run)
void reportLumiSection (unsigned int run, unsigned int lumiSectId)
void reportMemoryInfo (std::vector< std::string > const &memoryData)
void reportMessageInfo (std::map< std::string, double > const &messageData)
void reportPerformanceForModule (std::string const &metricClass, std::string const &moduleName, std::map< std::string, std::string > const &metrics)
void reportPerformanceSummary (std::string const &metricClass, std::map< std::string, std::string > const &metrics)
void reportPSetHash (std::string const &hashValue)
void reportRandomStateFile (std::string const &name)
void reportReadBranch (std::string const &branchName)
 Inform the job report that a branch has been read.
void reportReadBranches ()
void reportRunNumber (unsigned int run)
void reportSkippedEvent (unsigned int run, unsigned int event)
void reportSkippedFile (std::string const &pfn, std::string const &lfn)
 ~JobReport ()

Protected Member Functions

boost::scoped_ptr
< JobReportImpl > & 
impl ()

Private Attributes

boost::scoped_ptr< JobReportImplimpl_

Detailed Description

Definition at line 40 of file JobReport.h.


Member Typedef Documentation

typedef unsigned int edm::JobReport::RunNumber

Definition at line 42 of file JobReport.h.

typedef std::size_t edm::JobReport::Token

Definition at line 43 of file JobReport.h.


Constructor & Destructor Documentation

JobReport::JobReport ( )

Definition at line 435 of file JobReport.cc.

                         :
      impl_(new JobReportImpl(0)) {
    }
JobReport::JobReport ( std::ostream *  outputStream)

Definition at line 439 of file JobReport.cc.

References impl_.

                                             : impl_(new JobReportImpl(iOstream)) {
      if(impl_->ost_) {
        *(impl_->ost_) << "<FrameworkJobReport>\n";
      }
    }
JobReport::~JobReport ( )

Definition at line 427 of file JobReport.cc.

References impl_.

                        {
    impl_->writeGeneratorInfo();
    impl_->flushFiles();
    if(impl_->ost_) {
      *(impl_->ost_) << "</FrameworkJobReport>\n" << std::flush;
    }
  }

Member Function Documentation

void JobReport::childAfterFork ( std::string const &  jobReportFile,
unsigned int  childIndex,
unsigned int  numberOfChildren 
)

New output file for child.

Definition at line 492 of file JobReport.cc.

References impl_, and AlCaHLTBitMon_ParallelJobs::p.

                                                                                                                    {
      std::ofstream* p = dynamic_cast<std::ofstream*>(impl_->ost_);
      if(!p) return;
      std::ostringstream ofilename;
      toFileName(jobReportFile, childIndex, numberOfChildren, ofilename);
      p->open(ofilename.str().c_str());
      *p << "<FrameworkJobReport>\n";
    }
std::string JobReport::dumpFiles ( void  )

debug/test util

Definition at line 888 of file JobReport.cc.

References f, edm::findOrDefault(), impl_, edm::JobReport::InputFile::logicalFileName, lumiQueryAPI::msg, and edm::JobReport::InputFile::physicalFileName.

                           {
    std::ostringstream msg;

    typedef std::vector<JobReport::OutputFile>::iterator iterator;

    for(iterator f = impl_->outputFiles_.begin(), fEnd = impl_->outputFiles_.end(); f != fEnd; ++f) {

      msg << "\n<File>";
      msg << *f;

      msg << "\n<LumiSections>";
      //typedef std::vector<JobReport::LumiSectionReport>::iterator Iter;
      //for(Iter iLumi = f->lumiSections.begin(),
      //     iLumiEnd = f->lumiSections.end();
      //     iLumi != iLumiEnd;  ++iLumi) {
      //  msg << *iLumi;
      //}
      //msg << "\n</LumiSections>\n";
      msg << "\n<Inputs>";
      typedef std::vector<JobReport::Token>::iterator iterator;
      for(iterator iInput = f->contributingInputs.begin(),
          iInputEnd = f->contributingInputs.end();
          iInput != iInputEnd; ++iInput) {
        JobReport::InputFile inpFile = impl_->inputFiles_[*iInput];
        msg << "\n<Input>";
        msg << "\n  <LFN>" << TiXmlText(inpFile.logicalFileName) << "</LFN>";
        msg << "\n  <PFN>" << TiXmlText(inpFile.physicalFileName) << "</PFN>";
        msg << "\n  <FastCopying>" << findOrDefault(f->fastCopyingInputs, inpFile.physicalFileName) << "</FastCopying>";
        msg << "\n</Input>";
      }
      msg << "\n</Inputs>";
      msg << "\n</File>";

    }
    return msg.str();
  }
void JobReport::eventReadFromFile ( JobReport::Token  fileToken,
unsigned int  run,
unsigned int  event 
)

Report that the event with the given id has been read from the file identified by the given Token.

Definition at line 537 of file JobReport.cc.

References f, impl_, and edm::JobReport::InputFile::numEventsRead.

                                                                                       {
      JobReport::InputFile& f = impl_->getInputFileForToken(fileToken);
      ++f.numEventsRead;
      //f.runsSeen.insert(run);
    }
void JobReport::eventWrittenToFile ( JobReport::Token  fileToken,
unsigned int  run,
unsigned int  event 
)

Report that the event with the given id has been written to the file identified by the given Token.

Definition at line 593 of file JobReport.cc.

References f, impl_, and edm::JobReport::OutputFile::numEventsWritten.

                                                                                        {
      JobReport::OutputFile& f = impl_->getOutputFileForToken(fileToken);
      ++f.numEventsWritten;
      //f.runsSeen.insert(run);
    }
boost::scoped_ptr<JobReportImpl>& edm::JobReport::impl ( ) [inline, protected]
void JobReport::inputFileClosed ( JobReport::Token  fileToken)

Report that the input file identified by the given Token has been closed. An exception will be thrown if the given Token was not obtained from inputFileOpened.

Definition at line 550 of file JobReport.cc.

References f, edm::JobReport::InputFile::fileHasBeenClosed, and impl_.

                                                       {
      JobReport::InputFile& f = impl_->getInputFileForToken(fileToken);
      // Dump information to the MessageLogger's JobSummary
      // about this file.
      // After setting the file to 'closed', we will no longer be able
      // to reference it by ID.
      f.fileHasBeenClosed = true;
      impl_->writeInputFile(f);
    }
JobReport::Token JobReport::inputFileOpened ( std::string const &  physicalFileName,
std::string const &  logicalFileName,
std::string const &  catalog,
std::string const &  inputType,
std::string const &  inputSourceClassName,
std::string const &  moduleLabel,
std::string const &  guid,
std::vector< std::string > const &  branchNames 
)

Report that an input file has been opened. The returned Token should be used for later identification of this file.

Definition at line 502 of file JobReport.cc.

References edm::JobReport::InputFile::branchNames, edm::JobReport::InputFile::catalog, validate_alignment_devdb10_cfg::catalog, edm::JobReport::InputFile::fastClonedBranches, edm::JobReport::InputFile::fileHasBeenClosed, edm::JobReport::InputFile::guid, impl_, edm::JobReport::InputFile::inputSourceClassName, edm::JobReport::InputFile::inputType, edm::JobReport::InputFile::logicalFileName, edm::JobReport::InputFile::moduleLabel, edm::JobReport::InputFile::numEventsRead, edm::JobReport::InputFile::physicalFileName, and alignCSCRings::r.

                                                                        {
      // Do we have to worry about thread safety here? Or is this
      // service used in a way to make this safe?
      impl_->inputFiles_.push_back(JobReport::InputFile());
      JobReport::InputFile& r = impl_->inputFiles_.back();
      impl_->fastClonedBranches_ = &r.fastClonedBranches;

      r.logicalFileName      = logicalFileName;
      r.physicalFileName     = physicalFileName;
      r.catalog              = catalog;
      r.inputType            = inputType;
      r.inputSourceClassName = inputSourceClassName;
      r.moduleLabel          = moduleLabel;
      r.guid                 = guid;
      // r.runsSeen is not modified
      r.numEventsRead        = 0;
      r.branchNames          = branchNames;
      r.fileHasBeenClosed    = false;

      JobReport::Token newToken = impl_->inputFiles_.size()-1;
        //
       // Add the new input file token to all output files
      //  currently open.
      impl_->insertInputForOutputs(newToken);
      return newToken;
    }
void JobReport::outputFileClosed ( JobReport::Token  fileToken)

Report that the output file identified by the given Token has been closed. An exception will be thrown if the given Token was not obtained from outputFileOpened.

Definition at line 600 of file JobReport.cc.

References f, edm::JobReport::OutputFile::fileHasBeenClosed, and impl_.

                                                        {
      JobReport::OutputFile& f = impl_->getOutputFileForToken(fileToken);
      // Dump information to the MessageLogger's JobSummary
      // about this file.
      // After setting the file to 'closed', we will no longer be able
      // to reference it by ID.
      f.fileHasBeenClosed = true;
      impl_->writeOutputFile(f);
    }
JobReport::Token JobReport::outputFileOpened ( std::string const &  physicalFileName,
std::string const &  logicalFileName,
std::string const &  catalog,
std::string const &  outputModuleClassName,
std::string const &  moduleLabel,
std::string const &  guid,
std::string const &  dataType,
std::string const &  branchHash,
std::vector< std::string > const &  branchNames 
)

Report that an output file has been opened. The returned Token should be used for later identification of this file.

Definition at line 561 of file JobReport.cc.

References edm::JobReport::OutputFile::branchHash, edm::JobReport::OutputFile::branchNames, edm::JobReport::OutputFile::catalog, validate_alignment_devdb10_cfg::catalog, edm::JobReport::OutputFile::contributingInputs, dtTPAnalyzer_cfg::dataType, edm::JobReport::OutputFile::dataType, edm::JobReport::OutputFile::fileHasBeenClosed, edm::JobReport::OutputFile::guid, impl_, edm::JobReport::OutputFile::logicalFileName, edm::JobReport::OutputFile::moduleLabel, edm::JobReport::OutputFile::numEventsWritten, edm::JobReport::OutputFile::outputModuleClassName, edm::JobReport::OutputFile::physicalFileName, and alignCSCRings::r.

                                                                         {
      impl_->outputFiles_.push_back(JobReport::OutputFile());
      JobReport::OutputFile& r = impl_->outputFiles_.back();

      r.logicalFileName       = logicalFileName;
      r.physicalFileName      = physicalFileName;
      r.catalog               = catalog;
      r.outputModuleClassName = outputModuleClassName;
      r.moduleLabel           = moduleLabel;
      r.guid           = guid;
      r.dataType = dataType;
      r.branchHash = branchHash;
      // r.runsSeen is not modified
      r.numEventsWritten      = 0;
      r.branchNames           = branchNames;
      r.fileHasBeenClosed     = false;
        //
       // Init list of contributors to list of open input file Tokens
      //
      impl_->openInputFiles(r.contributingInputs);
      return impl_->outputFiles_.size()-1;
    }
void JobReport::overrideContributingInputs ( Token  outputToken,
std::vector< Token > const &  inputTokens 
)

Override the list of input files seen by an output file for use with EdmFastMerge

Definition at line 633 of file JobReport.cc.

References edm::JobReport::OutputFile::contributingInputs, f, and impl_.

                                                                               {
       // Get the required output file instance using the token
      JobReport::OutputFile& f = impl_->getOutputFileForToken(outputToken);
      // override its contributing inputs data
      f.contributingInputs = inputTokens;
    }
void JobReport::overrideEventsRead ( Token  fileToken,
int const  eventsRead 
)

For use by fast merge: Since the event by event counter cant be used for fast merges, use this method to forcibly set the events read count for an input file before reporting it closed

Definition at line 625 of file JobReport.cc.

References f, impl_, and edm::JobReport::InputFile::numEventsRead.

                                                                       {
      // Get the required input file instance using the token
      JobReport::InputFile& f = impl_->getInputFileForToken(fileToken);
      // set the events read parameter to the provided value
      f.numEventsRead = eventsRead;
    }
void JobReport::overrideEventsWritten ( Token  fileToken,
int const  eventsWritten 
)

For use by fast merge: Since the event by event counter cant be used for fast merges, use this method to forcibly set the events written count for an output file before reporting it closed

Definition at line 617 of file JobReport.cc.

References f, impl_, and edm::JobReport::OutputFile::numEventsWritten.

                                                                             {
      // Get the required output file instance using the token
      JobReport::OutputFile& f = impl_->getOutputFileForToken(fileToken);
      // set the eventsWritten parameter to the provided value
      f.numEventsWritten = eventsWritten;
    }
void JobReport::parentAfterFork ( std::string const &  jobReportFile)

Definition at line 488 of file JobReport.cc.

                                                 {
    }
void JobReport::parentBeforeFork ( std::string const &  jobReportFile,
unsigned int  numberOfChildren 
)

Definition at line 470 of file JobReport.cc.

References i, impl_, and AlCaHLTBitMon_ParallelJobs::p.

                                                                                             {
      if(impl_->ost_) {
        *(impl_->ost_) << "<ChildProcessFiles>\n";
        for(unsigned int i = 0; i < numberOfChildren; ++i) {
          std::ostringstream ofilename;
          toFileName(jobReportFile, i, numberOfChildren, ofilename);
          *(impl_->ost_) << "  <ChildProcessFile>" << ofilename.str() << "</ChildProcessFile>\n";
        }
        *(impl_->ost_) << "</ChildProcessFiles>\n";
        *(impl_->ost_) << "</FrameworkJobReport>\n";
        std::ofstream* p = dynamic_cast<std::ofstream *>(impl_->ost_);
        if(p) {
          p->close();
        }
      }
    }
void JobReport::reportAnalysisFile ( std::string const &  fileName,
std::map< std::string, std::string > const &  fileData 
)

Definition at line 685 of file JobReport.cc.

References impl_, lumiQueryAPI::msg, and pos.

                                                                                                       {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      //std::ostringstream msg;
      msg << "<AnalysisFile>\n"
          << "  <FileName>" << TiXmlText(fileName) << "</FileName>\n";

      typedef std::map<std::string, std::string>::const_iterator const_iterator;
      for(const_iterator pos = fileData.begin(), posEnd = fileData.end(); pos != posEnd; ++pos) {
        msg <<  "  <" << pos->first
            <<  "  Value=\"" << pos->second  << "\" />"
            <<  "\n";
      }
      msg << "</AnalysisFile>\n";
      //LogError("FwkJob") << msg.str();
      msg << std::flush;
    }
  }
void JobReport::reportDataType ( Token  fileToken,
std::string const &  dataType 
)

Report the data type of a file after it has been opened Needed since the data type isn't known until an event has been read

Definition at line 544 of file JobReport.cc.

References dtTPAnalyzer_cfg::dataType, edm::JobReport::OutputFile::dataType, f, and impl_.

                                                                        {
      JobReport::OutputFile& f = impl_->getOutputFileForToken(fileToken);
      f.dataType = dataType;
    }
void JobReport::reportError ( std::string const &  shortDesc,
std::string const &  longDesc 
)

Report an exception, providing details of the problem as a short description (Eg "XXXError") and a long description (Eg "XXX crashed because...") Also overload this method to accept an optional standard exit code

Definition at line 672 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

Referenced by edm::printCmsException(), and edm::printCmsExceptionWarning().

                                                      {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<FrameworkError ExitStatus=\"1\" Type=\"" << shortDesc << "\" >\n";
      msg << "<![CDATA[\n" << longDesc << "\n]]>\n";
      msg << "</FrameworkError>\n";
   //LogError("FwkJob") << msg.str();
      msg << std::flush;
    }
  }
void JobReport::reportError ( std::string const &  shortDesc,
std::string const &  longDesc,
int const &  exitCode 
)

Definition at line 705 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                              {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      //std::ostringstream msg;
      msg << "<FrameworkError ExitStatus=\""<< exitCode
            << "\" Type=\"" << shortDesc << "\" >\n";
      msg << "<![CDATA[\n" << longDesc << "\n]]>\n";
      msg << "</FrameworkError>\n";
      //LogError("FwkJob") << msg.str();
      msg << std::flush;
    }
  }
void JobReport::reportFallbackAttempt ( std::string const &  pfn,
std::string const &  lfn,
std::string const &  err 
)

Definition at line 735 of file JobReport.cc.

References impl_, lumiQueryAPI::msg, and TiXmlElement::SetAttribute().

                                                                                                   {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      TiXmlElement fallback("FallbackAttempt");
      fallback.SetAttribute("Pfn", pfn);
      fallback.SetAttribute("Lfn", lfn);
      msg << fallback << "\n";
      msg << "<![CDATA[\n" << err << "\n]]>\n";
      msg << std::flush;
      //LogInfo("FwkJob") << msg.str();
    }
  }
void JobReport::reportFastClonedBranches ( std::set< std::string > const &  fastClonedBranches,
long long  nEvents 
)

Inform the job report that branches have been fast Cloned.

Definition at line 806 of file JobReport.cc.

References impl_, and nEvents.

                                                                                                    {
    for(std::set<std::string>::const_iterator it = fastClonedBranches.begin(), itEnd = fastClonedBranches.end();
        it != itEnd; ++it) {
      if(impl_->fastClonedBranches_->insert(*it).second) {
        impl_->readBranches_[*it] += nEvents;
      }
    }
  }
void JobReport::reportFastCopyingStatus ( JobReport::Token  fileToken,
std::string const &  inputFileName,
bool  fastCopying 
)

Definition at line 611 of file JobReport.cc.

References f, edm::JobReport::OutputFile::fastCopyingInputs, and impl_.

                                                                                                                  {
      JobReport::OutputFile& f = impl_->getOutputFileForToken(fileToken);
      f.fastCopyingInputs.insert(std::make_pair(inputFileName, fastCopying));
    }
void JobReport::reportGeneratorInfo ( std::string const &  name,
std::string const &  value 
)

Report key/value style generator/lumi information Eg: reportGeneratorInfo("CrossSection" , "ValueHere") No special chars in the value string.

Definition at line 816 of file JobReport.cc.

References impl_.

                                                                              {
    impl_->addGeneratorInfo(name, value);
  }
void JobReport::reportInputLumiSection ( unsigned int  run,
unsigned int  lumiSectId 
)

API for reporting a Lumi Section to the job report. for input files, call only if lumi section is physically read from the input file

Definition at line 658 of file JobReport.cc.

References impl_.

                                                                             {
    impl_->associateInputLumiSection(run, lumiSectId);
  }
void JobReport::reportInputRunNumber ( unsigned int  run)

API to report a run read from input

Definition at line 667 of file JobReport.cc.

References impl_.

                                                  {
    impl_->associateInputRun(run);
  }
void JobReport::reportLumiSection ( unsigned int  run,
unsigned int  lumiSectId 
)

API for reporting a Lumi Section to the job report. for output files, call only if lumi section is written to the output file

Definition at line 653 of file JobReport.cc.

References impl_.

                                                                        {
    impl_->associateLumiSection(run, lumiSectId);
  }
void JobReport::reportMemoryInfo ( std::vector< std::string > const &  memoryData)

Report Memory statistics ALTERNATE FORM - USING THIS MAY NECESSITATE CHANGES IN PARSING XML! Invoked by the Memory service to send an end of job summary about memory usage for inclusion in the job report

Definition at line 749 of file JobReport.cc.

References impl_, lumiQueryAPI::msg, and pos.

                                                                    {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<MemoryService>\n";

      typedef std::vector<std::string>::const_iterator const_iterator;
      for(const_iterator pos = memoryData.begin(), posEnd = memoryData.end(); pos != posEnd; ++pos) {
        msg << *pos << "\n";
      }
      msg << "</MemoryService>\n";
      msg << std::flush;
    }
  }
void JobReport::reportMessageInfo ( std::map< std::string, double > const &  messageData)

Report Message statistics Invoked by the MessageLogger service to send an end of job summary about numbers of various categories messages issued for inclusion in the job report

Definition at line 764 of file JobReport.cc.

References impl_, lumiQueryAPI::msg, and pos.

                                                                           {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<MessageSummary>\n";
      typedef std::map<std::string, double>::const_iterator const_iterator;
      for(const_iterator pos = messageData.begin(), posEnd = messageData.end(); pos != posEnd; ++pos) {
        msg <<  "  <" << pos->first
        <<  "  Value=\"" << pos->second  << "\" />"
        <<  "\n";
      }
      msg << "</MessageSummary>\n";
      msg << std::flush;
    }
  }
void JobReport::reportPerformanceForModule ( std::string const &  metricClass,
std::string const &  moduleName,
std::map< std::string, std::string > const &  metrics 
)

Definition at line 865 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                                                                     {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<PerformanceReport>\n"
        << "  <PerformanceModule Metric=\"" << metricClass << "\" "
        << " Module=\"" << moduleName << "\" >\n";

      typedef std::map<std::string, std::string>::const_iterator const_iterator;
      for(const_iterator iter = metrics.begin(), iterEnd = metrics.end(); iter != iterEnd; ++iter) {
        msg << "    <Metric Name=\"" << iter->first << "\" "
        << "Value=\"" << iter->second << "\"/>\n";
      }

      msg << "  </PerformanceModule>\n"
        << "</PerformanceReport>\n";
      msg << std::flush;
      //LogInfo("FwkJob") << msg.str();
    }
  }
void JobReport::reportPerformanceSummary ( std::string const &  metricClass,
std::map< std::string, std::string > const &  metrics 
)

Performance Reports

Two categories: Summary for entire job and module for a specific module Each one requires a performance metric class such as Timing, Memory, CPU, Trigger etc.

Definition at line 844 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                                                                   {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<PerformanceReport>\n"
        << "  <PerformanceSummary Metric=\"" << metricClass << "\">\n";

      typedef std::map<std::string, std::string>::const_iterator const_iterator;
      for(const_iterator iter = metrics.begin(), iterEnd = metrics.end(); iter != iterEnd; ++iter) {
        msg << "    <Metric Name=\"" << iter->first << "\" "
        << "Value=\"" << iter->second << "\"/>\n";
      }

      msg << "  </PerformanceSummary>\n"
        << "</PerformanceReport>\n";
      msg << std::flush;
      //LogInfo("FwkJob") << msg.str();
    }
  }
void JobReport::reportPSetHash ( std::string const &  hashValue)

Report PSetHash

Definition at line 832 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                                      {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<PSetHash>"
        <<  hashValue
        <<  "</PSetHash>\n";
      //LogInfo("FwkJob") << msg.str();
      msg << std::flush;
    }
  }
void JobReport::reportRandomStateFile ( std::string const &  name)

Report the name of the random engine persistency file

Definition at line 820 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                                             {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      msg << "<RandomServiceStateFile>\n"
        << TiXmlText(name) << "\n"
        <<  "</RandomServiceStateFile>\n";
      //LogInfo("FwkJob") << msg.str();
      msg << std::flush;
    }
  }
void JobReport::reportReadBranch ( std::string const &  branchName)

Inform the job report that a branch has been read.

Definition at line 798 of file JobReport.cc.

References impl_.

                                                         {
    // Fast cloned branches have already been reported.
    if(impl_->fastClonedBranches_->find(branchName) == impl_->fastClonedBranches_->end()) {
      ++impl_->readBranches_[branchName];
    }
  }
void JobReport::reportReadBranches ( )

Report read branches Invoked by the source that reads ROOT/EDM files at the end of a job to report which product branches in the Events tree have been read, with a count of the number of events for which the branch was read.

Definition at line 780 of file JobReport.cc.

References impl_, and TiXmlElement::SetAttribute().

                                {
    if(impl_->ost_) {
      std::ostream& ost = *(impl_->ost_);
      ost << "<ReadBranches>\n";
      typedef std::map<std::string, long long>::const_iterator const_iterator;
      for(const_iterator it = impl_->readBranches_.begin(), itEnd = impl_->readBranches_.end(); it != itEnd; ++it) {
        TiXmlElement branch("Branch");
        branch.SetAttribute("Name", it->first);
        branch.SetAttribute("ReadCount", it->second);
        ost << branch << "\n";
        // ost << "  <Branch Name=" << '"' << it->first << '"'<<  " ReadCount=" << it->second << ">\n";
      }
      ost << "</ReadBranches>\n";
      ost << std::flush;
    }
  }
void JobReport::reportRunNumber ( unsigned int  run)

API to report the a run written to output

Definition at line 663 of file JobReport.cc.

References impl_.

                                             {
    impl_->associateRun(run);
  }
void JobReport::reportSkippedEvent ( unsigned int  run,
unsigned int  event 
)

Definition at line 642 of file JobReport.cc.

References impl_, and lumiQueryAPI::msg.

                                                                      {
      if(impl_->ost_) {
        std::ostream& msg = *(impl_->ost_);
        msg << "<SkippedEvent Run=\"" << run << "\"";
        msg << " Event=\"" << event << "\" />\n";
        msg << std::flush;
        //LogInfo("FwkJob") << msg.str();
      }
    }
void JobReport::reportSkippedFile ( std::string const &  pfn,
std::string const &  lfn 
)

Report Skipped File

Report that a file has been skipped due to it not being found.

Definition at line 721 of file JobReport.cc.

References impl_, lumiQueryAPI::msg, and TiXmlElement::SetAttribute().

                                                     {
    if(impl_->ost_) {
      std::ostream& msg = *(impl_->ost_);
      TiXmlElement skipped("SkippedFile");
      skipped.SetAttribute("Pfn", pfn);
      skipped.SetAttribute("Lfn", lfn);
      msg << skipped << "\n";
      msg << std::flush;
      //LogInfo("FwkJob") << msg.str();
    }
  }

Member Data Documentation

boost::scoped_ptr<JobReportImpl> edm::JobReport::impl_ [private]