CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes
edm::JobReport::JobReportImpl Struct Reference

#include <JobReport.h>

Public Member Functions

void associateInputLumiSection (unsigned int runNumber, unsigned int lumiSection)
 
void associateInputRun (unsigned int runNumber)
 
void associateLumiSection (JobReport::Token token, unsigned int runNumber, unsigned int lumiSection, unsigned long nEvents)
 
void associateRun (JobReport::Token token, unsigned int runNumber)
 
void flushFiles (void)
 
InputFilegetInputFileForToken (InputType inputType, Token t)
 
OutputFilegetOutputFileForToken (Token t)
 
void insertInputForOutputs (InputType inputType, Token t)
 
 JobReportImpl (JobReportImpl const &)=delete
 
 JobReportImpl (std::ostream *iOst)
 
JobReportImploperator= (JobReportImpl const &)=delete
 
std::ostream const * ost () const
 
std::ostream *& ost ()
 
void writeInputFile (InputFile const &f)
 
void writeOutputFile (OutputFile const &f)
 

Public Attributes

std::vector< InputFileinputFiles_
 
tbb::concurrent_vector< InputFileinputFilesSecSource_
 
std::vector< InputFile >::size_type lastOpenedPrimaryInputFile_
 
edm::propagate_const< std::ostream * > ost_
 
tbb::concurrent_vector< OutputFileoutputFiles_
 
bool printedReadBranches_
 
std::map< std::string, long long > readBranches_
 
std::map< std::string, long long > readBranchesSecFile_
 
tbb::concurrent_unordered_map< std::string, AtomicLongLongreadBranchesSecSource_
 

Detailed Description

Definition at line 179 of file JobReport.h.

Constructor & Destructor Documentation

edm::JobReport::JobReportImpl::JobReportImpl ( JobReportImpl const &  )
delete
edm::JobReport::JobReportImpl::JobReportImpl ( std::ostream *  iOst)
inline

Definition at line 247 of file JobReport.h.

247 : printedReadBranches_(false), ost_(iOst) {}
edm::propagate_const< std::ostream * > ost_
Definition: JobReport.h:260

Member Function Documentation

void edm::JobReport::JobReportImpl::associateInputLumiSection ( unsigned int  runNumber,
unsigned int  lumiSection 
)

Definition at line 288 of file JobReport.cc.

References analyzePatCleaning_cfg::inputFile, inputFiles_, SiStripPI::max, and convertSQLiteXML::runNumber.

288  {
289  for (auto& inputFile : inputFiles_) {
290  if (!inputFile.fileHasBeenClosed) {
291  std::map<RunNumber, RunReport>& theMap = inputFile.runReports;
292  std::map<RunNumber, RunReport>::iterator iter(theMap.lower_bound(runNumber));
293  if (iter == theMap.end() || runNumber < iter->first) { // not found
294  theMap.emplace_hint(
295  iter,
296  runNumber,
297  JobReport::RunReport{runNumber, {{lumiSect, std::numeric_limits<unsigned long>::max()}}}); // insert it
298  } else {
299  iter->second.lumiSectionsToNEvents[lumiSect] = std::numeric_limits<unsigned long>::max();
300  }
301  }
302  }
303  }
std::vector< InputFile > inputFiles_
Definition: JobReport.h:252
void edm::JobReport::JobReportImpl::associateInputRun ( unsigned int  runNumber)

Definition at line 263 of file JobReport.cc.

References analyzePatCleaning_cfg::inputFile, inputFiles_, and convertSQLiteXML::runNumber.

263  {
264  for (auto& inputFile : inputFiles_) {
265  if (!inputFile.fileHasBeenClosed) {
266  std::map<RunNumber, RunReport>& theMap = inputFile.runReports;
267  std::map<RunNumber, RunReport>::iterator iter(theMap.lower_bound(runNumber));
268  if (iter == theMap.end() || runNumber < iter->first) { // not found
269  theMap.emplace_hint(iter, runNumber, JobReport::RunReport{runNumber, {}}); // insert it
270  }
271  }
272  }
273  }
std::vector< InputFile > inputFiles_
Definition: JobReport.h:252
void edm::JobReport::JobReportImpl::associateLumiSection ( JobReport::Token  token,
unsigned int  runNumber,
unsigned int  lumiSection,
unsigned long  nEvents 
)

Definition at line 275 of file JobReport.cc.

References nEvents, outputFiles_, and convertSQLiteXML::runNumber.

278  {
279  auto& theMap = outputFiles_.at(token).runReports;
280  std::map<RunNumber, RunReport>::iterator iter(theMap.lower_bound(runNumber));
281  if (iter == theMap.end() || runNumber < iter->first) { // not found
282  theMap.emplace_hint(iter, runNumber, JobReport::RunReport{runNumber, {{{lumiSect, nEvents}}}}); // insert it
283  } else {
284  iter->second.lumiSectionsToNEvents[lumiSect] += nEvents;
285  }
286  }
tbb::concurrent_vector< OutputFile > outputFiles_
Definition: JobReport.h:254
UInt_t nEvents
Definition: hcalCalib.cc:41
void edm::JobReport::JobReportImpl::associateRun ( JobReport::Token  token,
unsigned int  runNumber 
)

Definition at line 255 of file JobReport.cc.

References outputFiles_, and convertSQLiteXML::runNumber.

255  {
256  auto& theMap = outputFiles_.at(token).runReports;
257  std::map<RunNumber, RunReport>::iterator iter(theMap.lower_bound(runNumber));
258  if (iter == theMap.end() || runNumber < iter->first) { // not found
259  theMap.emplace_hint(iter, runNumber, JobReport::RunReport{runNumber, {}}); // insert it
260  }
261  }
tbb::concurrent_vector< OutputFile > outputFiles_
Definition: JobReport.h:254
void edm::JobReport::JobReportImpl::flushFiles ( void  )

Definition at line 237 of file JobReport.cc.

References analyzePatCleaning_cfg::inputFile, inputFiles_, inputFilesSecSource_, download_sqlite_cfg::outputFile, outputFiles_, writeInputFile(), and writeOutputFile().

237  {
238  for (auto const& inputFile : inputFiles_) {
239  if (!(inputFile.fileHasBeenClosed)) {
241  }
242  }
243  for (auto const& inputFile : inputFilesSecSource_) {
244  if (!(inputFile.fileHasBeenClosed)) {
246  }
247  }
248  for (auto const& outputFile : outputFiles_) {
249  if (!(outputFile.fileHasBeenClosed)) {
251  }
252  }
253  }
std::vector< InputFile > inputFiles_
Definition: JobReport.h:252
void writeInputFile(InputFile const &f)
Definition: JobReport.cc:168
tbb::concurrent_vector< InputFile > inputFilesSecSource_
Definition: JobReport.h:253
void writeOutputFile(OutputFile const &f)
Definition: JobReport.cc:195
tbb::concurrent_vector< OutputFile > outputFiles_
Definition: JobReport.h:254
JobReport::InputFile & edm::JobReport::JobReportImpl::getInputFileForToken ( InputType  inputType,
JobReport::Token  t 
)

Definition at line 107 of file JobReport.cc.

References Exception, edm::JobReport::InputFile::fileHasBeenClosed, analyzePatCleaning_cfg::inputFile, inputFiles_, inputFilesSecSource_, edm::errors::LogicError, edm::SecondarySource, and protons_cff::t.

107  {
108  InputFile* inputFile = nullptr;
109  if (inputType == InputType::SecondarySource) {
110  if (t >= inputFilesSecSource_.size()) {
111  throw edm::Exception(edm::errors::LogicError) << "Access reported for secondary source input file with token "
112  << t << " but no matching input file is found\n";
113  }
114  inputFile = &inputFilesSecSource_[t];
115  } else {
116  if (t >= inputFiles_.size()) {
118  << "Access reported for input file with token " << t << " but no matching input file is found\n";
119  }
120  inputFile = &inputFiles_[t];
121  }
122  if (inputFile->fileHasBeenClosed) {
124  << "Access reported for input file with token " << t << " after this file has been closed.\n"
125  << "File record follows:\n"
126  << *inputFile << '\n';
127  }
128  return *inputFile;
129  }
std::vector< InputFile > inputFiles_
Definition: JobReport.h:252
tbb::concurrent_vector< InputFile > inputFilesSecSource_
Definition: JobReport.h:253
JobReport::OutputFile & edm::JobReport::JobReportImpl::getOutputFileForToken ( JobReport::Token  t)

Definition at line 131 of file JobReport.cc.

References Exception, edm::errors::LogicError, outputFiles_, and protons_cff::t.

131  {
132  if (t >= outputFiles_.size()) {
134  << "Access reported for output file with token " << t << " but no matching output file is found\n";
135  }
136  if (outputFiles_[t].fileHasBeenClosed) {
138  << "Access reported for output file with token " << t << " after this file has been closed.\n"
139  << "File record follows:\n"
140  << outputFiles_[t] << '\n';
141  }
142  return outputFiles_[t];
143  }
tbb::concurrent_vector< OutputFile > outputFiles_
Definition: JobReport.h:254
void edm::JobReport::JobReportImpl::insertInputForOutputs ( InputType  inputType,
JobReport::Token  t 
)

Definition at line 151 of file JobReport.cc.

References download_sqlite_cfg::outputFile, outputFiles_, and edm::SecondarySource.

151  {
152  for (auto& outputFile : outputFiles_) {
153  if (!outputFile.fileHasBeenClosed) {
154  if (inputType == InputType::SecondarySource) {
155  outputFile.contributingInputsSecSource.push_back(t);
156  } else {
157  outputFile.contributingInputs.push_back(t);
158  }
159  }
160  }
161  }
tbb::concurrent_vector< OutputFile > outputFiles_
Definition: JobReport.h:254
JobReportImpl& edm::JobReport::JobReportImpl::operator= ( JobReportImpl const &  )
delete
std::ostream const* edm::JobReport::JobReportImpl::ost ( ) const
inline

Definition at line 249 of file JobReport.h.

References edm::get_underlying_safe().

249 { return get_underlying_safe(ost_); }
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::ostream * > ost_
Definition: JobReport.h:260
std::ostream*& edm::JobReport::JobReportImpl::ost ( )
inline

Definition at line 250 of file JobReport.h.

References edm::get_underlying_safe().

250 { return get_underlying_safe(ost_); }
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
edm::propagate_const< std::ostream * > ost_
Definition: JobReport.h:260
void edm::JobReport::JobReportImpl::writeInputFile ( JobReport::InputFile const &  f)

Definition at line 168 of file JobReport.cc.

References f, and ost_.

Referenced by flushFiles().

168  {
169  if (ost_) {
170  *ost_ << f;
171  *ost_ << "\n<Runs>";
172  for (auto const& runReport : f.runReports) {
173  *ost_ << runReport.second;
174  }
175  *ost_ << "\n</Runs>\n";
176  *ost_ << "</InputFile>\n";
177  *ost_ << std::flush;
178  }
179  }
double f[11][100]
edm::propagate_const< std::ostream * > ost_
Definition: JobReport.h:260
void edm::JobReport::JobReportImpl::writeOutputFile ( JobReport::OutputFile const &  f)

Definition at line 195 of file JobReport.cc.

References boostedTaus_cff::doc, f, edm::findOrDefault(), inputFiles_, inputFilesSecSource_, edm::JobReport::InputFile::logicalFileName, ost_, and edm::JobReport::InputFile::physicalFileName.

Referenced by flushFiles().

195  {
196  tinyxml2::XMLDocument doc;
197  if (ost_) {
198  *ost_ << "\n<File>";
199  *ost_ << f;
200 
201  *ost_ << "\n<Runs>";
202  for (auto const& runReport : f.runReports) {
203  *ost_ << runReport.second;
204  }
205  *ost_ << "\n</Runs>\n";
206 
207  *ost_ << "\n<Inputs>";
208  for (auto token : f.contributingInputs) {
209  JobReport::InputFile inpFile = inputFiles_.at(token);
210  *ost_ << "\n<Input>";
211  *ost_ << "\n <LFN>" << doc.NewText(inpFile.logicalFileName.c_str())->Value() << "</LFN>";
212  *ost_ << "\n <PFN>" << doc.NewText(inpFile.physicalFileName.c_str())->Value() << "</PFN>";
213  *ost_ << "\n <FastCopying>" << findOrDefault(f.fastCopyingInputs, inpFile.physicalFileName)
214  << "</FastCopying>";
215  *ost_ << "\n</Input>";
216  doc.DeleteChildren();
217  }
218  for (auto token : f.contributingInputsSecSource) {
219  JobReport::InputFile inpFile = inputFilesSecSource_.at(token);
220  *ost_ << "\n<Input>";
221  *ost_ << "\n <LFN>" << doc.NewText(inpFile.logicalFileName.c_str())->Value() << "</LFN>";
222  *ost_ << "\n <PFN>" << doc.NewText(inpFile.physicalFileName.c_str())->Value() << "</PFN>";
223  *ost_ << "\n <FastCopying>" << findOrDefault(f.fastCopyingInputs, inpFile.physicalFileName)
224  << "</FastCopying>";
225  *ost_ << "\n</Input>";
226  doc.DeleteChildren();
227  }
228  *ost_ << "\n</Inputs>";
229  *ost_ << "\n</File>\n";
230  }
231  }
std::vector< InputFile > inputFiles_
Definition: JobReport.h:252
reco::JetExtendedAssociation::JetExtendedData Value
double f[11][100]
edm::propagate_const< std::ostream * > ost_
Definition: JobReport.h:260
Value const & findOrDefault(std::map< Key, Value > const &m, Key const &k, Value const &defaultValue)
Definition: Map.h:24
tbb::concurrent_vector< InputFile > inputFilesSecSource_
Definition: JobReport.h:253

Member Data Documentation

std::vector<InputFile> edm::JobReport::JobReportImpl::inputFiles_
tbb::concurrent_vector<InputFile> edm::JobReport::JobReportImpl::inputFilesSecSource_

Definition at line 253 of file JobReport.h.

Referenced by flushFiles(), getInputFileForToken(), and writeOutputFile().

std::vector<InputFile>::size_type edm::JobReport::JobReportImpl::lastOpenedPrimaryInputFile_

Definition at line 259 of file JobReport.h.

edm::propagate_const<std::ostream*> edm::JobReport::JobReportImpl::ost_

Definition at line 260 of file JobReport.h.

Referenced by writeInputFile(), and writeOutputFile().

tbb::concurrent_vector<OutputFile> edm::JobReport::JobReportImpl::outputFiles_
bool edm::JobReport::JobReportImpl::printedReadBranches_

Definition at line 258 of file JobReport.h.

std::map<std::string, long long> edm::JobReport::JobReportImpl::readBranches_

Definition at line 255 of file JobReport.h.

std::map<std::string, long long> edm::JobReport::JobReportImpl::readBranchesSecFile_

Definition at line 256 of file JobReport.h.

tbb::concurrent_unordered_map<std::string, AtomicLongLong> edm::JobReport::JobReportImpl::readBranchesSecSource_

Definition at line 257 of file JobReport.h.