CMS 3D CMS Logo

edm::DuplicateChecker Class Reference

#include <IOPool/Input/src/DuplicateChecker.h>

List of all members.

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< EventIDeventIDs_
bool itIsKnownTheFileHasNoDuplicates_


Detailed Description

Definition at line 28 of file DuplicateChecker.h.


Member Enumeration Documentation

enum edm::DuplicateChecker::DataType [private]

Enumerator:
isRealData 
isSimulation 
unknown 

Definition at line 50 of file DuplicateChecker.h.

enum edm::DuplicateChecker::DuplicateCheckMode [private]

Enumerator:
noDuplicateCheck 
checkEachFile 
checkEachRealDataFile 
checkAllFilesOpened 

Definition at line 46 of file DuplicateChecker.h.


Constructor & Destructor Documentation

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   }


Member Function Documentation

void edm::DuplicateChecker::init ( bool  realData,
FileIndex const &  fileIndex 
)

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   }

void edm::DuplicateChecker::rewind ( void   ) 

Definition at line 59 of file DuplicateChecker.cc.

References eventIDs_.

00060   {
00061     eventIDs_.clear();
00062   }


Member Data Documentation

DataType edm::DuplicateChecker::dataType_ [private]

Definition at line 52 of file DuplicateChecker.h.

Referenced by init(), inputFileClosed(), and isDuplicateAndCheckActive().

DuplicateCheckMode edm::DuplicateChecker::duplicateCheckMode_ [private]

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().

bool edm::DuplicateChecker::itIsKnownTheFileHasNoDuplicates_ [private]

Definition at line 56 of file DuplicateChecker.h.

Referenced by init(), inputFileClosed(), and isDuplicateAndCheckActive().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:40:33 2009 for CMSSW by  doxygen 1.5.4