#include <IOPool/Input/src/DuplicateChecker.h>
Public Member Functions | |
DuplicateChecker (ParameterSet const &pset) | |
void | init (bool realData, FileIndex const &fileIndex) |
void | inputFileClosed () |
bool | isDuplicateAndCheckActive (EventID const &eventID, LuminosityBlockNumber_t const &lumi, std::string const &fileName) |
void | rewind () |
Private Types | |
enum | DataType { isRealData, isSimulation, unknown } |
enum | DuplicateCheckMode { noDuplicateCheck, checkEachFile, checkEachRealDataFile, checkAllFilesOpened } |
Private Attributes | |
DataType | dataType_ |
DuplicateCheckMode | duplicateCheckMode_ |
std::set< EventID > | eventIDs_ |
bool | itIsKnownTheFileHasNoDuplicates_ |
Definition at line 28 of file DuplicateChecker.h.
enum edm::DuplicateChecker::DataType [private] |
enum edm::DuplicateChecker::DuplicateCheckMode [private] |
edm::DuplicateChecker::DuplicateChecker | ( | ParameterSet const & | pset | ) |
Definition at line 12 of file DuplicateChecker.cc.
References checkAllFilesOpened, checkEachFile, checkEachRealDataFile, duplicateCheckMode_, Exception, edm::ParameterSet::getUntrackedParameter(), and noDuplicateCheck.
00012 : 00013 00014 duplicateCheckMode_(checkEachRealDataFile), 00015 dataType_(unknown), 00016 eventIDs_(), 00017 itIsKnownTheFileHasNoDuplicates_(false) 00018 { 00019 std::string duplicateCheckMode = 00020 pset.getUntrackedParameter<std::string>("duplicateCheckMode", std::string("checkEachRealDataFile")); 00021 00022 if (duplicateCheckMode == std::string("noDuplicateCheck")) duplicateCheckMode_ = noDuplicateCheck; 00023 else if (duplicateCheckMode == std::string("checkEachFile")) duplicateCheckMode_ = checkEachFile; 00024 else if (duplicateCheckMode == std::string("checkEachRealDataFile")) duplicateCheckMode_ = checkEachRealDataFile; 00025 else if (duplicateCheckMode == std::string("checkAllFilesOpened")) duplicateCheckMode_ = checkAllFilesOpened; 00026 else { 00027 throw cms::Exception("Configuration") 00028 << "Illegal configuration parameter value passed to PoolSource for\n" 00029 << "the \"duplicateCheckMode\" parameter, legal values are:\n" 00030 << "\"noDuplicateCheck\", \"checkEachFile\", \"checkEachRealDataFile\", \"checkAllFilesOpened\"\n"; 00031 } 00032 }
Definition at line 34 of file DuplicateChecker.cc.
References checkAllFilesOpened, checkEachFile, checkEachRealDataFile, dataType_, duplicateCheckMode_, edm::FileIndex::eventsUniqueAndOrdered(), isRealData, isSimulation, itIsKnownTheFileHasNoDuplicates_, noDuplicateCheck, and unknown.
00036 { 00037 if (duplicateCheckMode_ == noDuplicateCheck) return; 00038 if (duplicateCheckMode_ == checkAllFilesOpened) return; 00039 00040 assert(dataType_ == unknown); 00041 dataType_ = realData ? isRealData : isSimulation; 00042 00043 if (duplicateCheckMode_ == checkEachFile || 00044 (duplicateCheckMode_ == checkEachRealDataFile && dataType_ == isRealData)) { 00045 itIsKnownTheFileHasNoDuplicates_ = fileIndex.eventsUniqueAndOrdered(); 00046 } 00047 }
void edm::DuplicateChecker::inputFileClosed | ( | ) |
Definition at line 49 of file DuplicateChecker.cc.
References checkAllFilesOpened, dataType_, duplicateCheckMode_, eventIDs_, itIsKnownTheFileHasNoDuplicates_, noDuplicateCheck, and unknown.
00050 { 00051 if (duplicateCheckMode_ == noDuplicateCheck) return; 00052 if (duplicateCheckMode_ == checkAllFilesOpened) return; 00053 00054 dataType_ = unknown; 00055 eventIDs_.clear(); 00056 itIsKnownTheFileHasNoDuplicates_ = false; 00057 }
bool edm::DuplicateChecker::isDuplicateAndCheckActive | ( | EventID const & | eventID, | |
LuminosityBlockNumber_t const & | lumi, | |||
std::string const & | fileName | |||
) |
Definition at line 64 of file DuplicateChecker.cc.
References checkAllFilesOpened, checkEachFile, checkEachRealDataFile, dataType_, duplicateCheckMode_, edm::EventID::event(), eventIDs_, isSimulation, itIsKnownTheFileHasNoDuplicates_, noDuplicateCheck, edm::EventID::run(), and unknown.
00067 { 00068 if (duplicateCheckMode_ == noDuplicateCheck) return false; 00069 if (duplicateCheckMode_ == checkEachRealDataFile && dataType_ == isSimulation) return false; 00070 00071 if (duplicateCheckMode_ == checkEachFile || 00072 duplicateCheckMode_ == checkEachRealDataFile) { 00073 assert(dataType_ != unknown); 00074 if (itIsKnownTheFileHasNoDuplicates_) return false; 00075 } 00076 00077 bool duplicate = !eventIDs_.insert(eventID).second; 00078 00079 if (duplicate) { 00080 if (duplicateCheckMode_ == checkAllFilesOpened) { 00081 LogWarning("DuplicateEvent") 00082 << "Duplicate Events found in entire set of input files.\n" 00083 << "Both events were from run " << eventID.run() 00084 << " with event number " << eventID.event() << ".\n" 00085 << "The duplicate had luminosity block number " << lumi 00086 << " and was from file " << fileName << ".\n" 00087 << "The duplicate will be skipped.\n"; 00088 } 00089 else { 00090 LogWarning("DuplicateEvent") 00091 << "Duplicate Events found in file " << fileName << ".\n" 00092 << "Both events were from run " << eventID.run() 00093 << " with event number " << eventID.event() << ".\n" 00094 << "The duplicate had luminosity block number " << lumi << ".\n" 00095 << "The duplicate will be skipped.\n"; 00096 } 00097 return true; 00098 } 00099 return false; 00100 }
Definition at line 59 of file DuplicateChecker.cc.
References eventIDs_.
00060 { 00061 eventIDs_.clear(); 00062 }
DataType edm::DuplicateChecker::dataType_ [private] |
Definition at line 52 of file DuplicateChecker.h.
Referenced by init(), inputFileClosed(), and isDuplicateAndCheckActive().
Definition at line 48 of file DuplicateChecker.h.
Referenced by DuplicateChecker(), init(), inputFileClosed(), and isDuplicateAndCheckActive().
std::set<EventID> edm::DuplicateChecker::eventIDs_ [private] |
Definition at line 54 of file DuplicateChecker.h.
Referenced by inputFileClosed(), isDuplicateAndCheckActive(), and rewind().
Definition at line 56 of file DuplicateChecker.h.
Referenced by init(), inputFileClosed(), and isDuplicateAndCheckActive().