63 void set(boost::shared_ptr<ProductRegistry const> iReg) { reg_ = iReg;}
67 return std::auto_ptr<EventEntryDescription>();
73 boost::shared_ptr<ProductRegistry const>(reg_);
78 ProductRegistry::ProductList::const_iterator itFind= reg_->productList().find(k);
79 if(itFind == reg_->productList().end()) {
87 <<
"could not find branch named '" << bDesc.
branchName() <<
"'"
88 <<
"\n Perhaps the data being requested was not saved in this file?";
93 if(!
bool(classType)) {
95 <<
"could not find dictionary for type '" << fullName <<
"'"
96 <<
"\n Please make sure all the necessary libraries are available.";
100 void const*
address = classType.construct().address();
102 throw cms::Exception(
"FailedToCreate") <<
"could not create an instance of '" << fullName <<
"'";
104 branch->SetAddress(&address);
127 boost::shared_ptr<ProductRegistry>
reg_;
130 boost::shared_ptr<FWLiteDelayedReader>
reader_;
131 std::vector<EventEntryDescription>
prov_;
137 boost::shared_ptr<edm::EventPrincipal>
ep_;
156 everythingOK_(
false) {
196 if(iTree == 0)
return;
210 TFile*
file =
m_->tree_->GetCurrentFile();
213 TChain* chain =
dynamic_cast<TChain*
>(
m_->tree_);
218 file = chain->GetFile();
248 branch->SetAddress(&pAux);
249 branch->GetEntry(iEntry);
264 if(!eventSelectionsBranch) {
266 <<
"Failed to find event Selections branch in event tree";
268 eventSelectionsBranch->SetAddress(&pEventSelectionIDVector);
269 eventSelectionsBranch->GetEntry(iEntry);
274 if(!branchListIndexBranch) {
276 <<
"Failed to find branch list index branch in event tree";
278 branchListIndexBranch->SetAddress(&pBranchListIndexes);
279 branchListIndexBranch->GetEntry(iEntry);
280 m_->branchIDListHelper_->fixBranchListIndexes(*branchListIndexes_);
283 m_->reader_->setEntry(iEntry);
286 boost::shared_ptr<edm::LuminosityBlockAuxiliary> lumiAux(
288 boost::shared_ptr<edm::LuminosityBlockPrincipal>lbp(
290 m_->ep_->fillEventPrincipal(*eaux, eventSelectionIDs_, branchListIndexes_,
m_->mapper_,
m_->reader_.get());
291 lbp->setRunPrincipal(rp);
292 m_->ep_->setLuminosityBlockPrincipal(lbp);
293 m_->processNames_ =
m_->ep_->processHistory();
298 Operate sentry(
m_->ep_->prodGetter());
301 std::cout <<
"While processing entry " << iEntry <<
" the following exception was caught \n"
302 << iEx.what() << std::endl;
304 std::cout <<
"While processing entry " << iEntry <<
" an unknown exception was caught" << std::endl;
341 m_->reg_->setFrozen();
343 typedef std::map<edm::ParameterSetID, edm::ParameterSetBlob> PsetMap;
345 PsetMap *psetMapPtr = &psetMap;
352 <<
" in the input file.\n";
354 typedef std::pair<edm::ParameterSetID, edm::ParameterSetBlob> IdToBlobs;
356 IdToBlobs* pIdToBlob = &idToBlob;
358 for(
long long i = 0;
i != psetTree->GetEntries(); ++
i) {
359 psetTree->GetEntry(
i);
360 psetMap.insert(idToBlob);
383 metaDataTree->GetEntry(0);
387 for(PsetMap::const_iterator
i = psetMap.begin(), iEnd = psetMap.end();
397 m_->pointerToBranchBuffer_.erase(
m_->pointerToBranchBuffer_.begin(),
398 m_->pointerToBranchBuffer_.end());
405 for(edm::ProductRegistry::ProductList::const_iterator it = prodList.begin(), itEnd = prodList.end();
411 newReg->copyProduct(prod);
413 if(
m_->fileFormatVersion_.splitProductIDs()) {
415 <<
"Cannot change friendly class name algorithm without more development work\n"
416 <<
"to update BranchIDLists. Contact the framework group.\n";
420 newReg->copyProduct(newBD);
427 m_->reg_.reset(newReg.release());
433 std::vector<edm::EventEntryDescription>::iterator itB =
m_->prov_.begin();
434 m_->pointerToBranchBuffer_.reserve(prodList2.size());
436 for(edm::ProductRegistry::ProductList::const_iterator it = prodList2.begin(), itEnd = prodList2.end();
437 it != itEnd; ++it, ++itB) {
442 if(
m_->tree_->GetBranch(prod.
branchName().c_str()) == 0) {
454 m_->branchIDListHelper_->updateFromInput(*branchIDListsPtr);
std::string const & idToParameterSetBlobsBranchName()
virtual void terminate(TList &out)=0
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
BranchType const & branchType() const
virtual ~TFWLiteSelectorBasic()
static TypeWithDict byName(std::string const &className)
std::vector< BranchIDList > BranchIDLists
boost::shared_ptr< BranchIDListHelper > branchIDListHelper_
std::vector< EventEntryDescription * > pointerToBranchBuffer_
void setTree(TTree *iTree)
virtual void preProcessing(const TList *in, TList &out)=0
std::string & branchName() const
std::vector< EventEntryDescription > prov_
static ThreadSafeRegistry * instance()
std::map< BranchKey, BranchDescription > ProductList
virtual void SlaveTerminate()
virtual std::auto_ptr< EventEntryDescription > getProvenance_(BranchKey const &) const
virtual Bool_t Process(Long64_t)
boost::shared_ptr< ProductRegistry > reg_
Timestamp const & time() const
void setRefCoreStreamer(bool resetAll=false)
virtual void SlaveBegin(TTree *)
std::string const & fileFormatVersionBranchName()
virtual void postProcessing(TList &out)=0
std::string const & eventSelectionsBranchName()
edm::ModuleDescription md_
bool insertMapped(value_type const &v)
boost::shared_ptr< edm::EventPrincipal > ep_
virtual void process(const edm::Event &event)=0
void fillProductRegistryTransients(std::vector< ProcessConfiguration > const &pcVec, ProductRegistry const &preg, bool okToRegister=false)
std::vector< EventSelectionID > EventSelectionIDVector
std::string const & parameterSetsTreeName()
void setID(ParameterSetID const &id) const
ProcessConfigurationRegistry::vector_type ProcessConfigurationVector
FileFormatVersion fileFormatVersion_
std::vector< BranchListIndex > BranchListIndexes
std::string const & className() const
std::string friendlyName(std::string const &iFullName)
virtual void mergeReaders_(DelayedReader *)
std::string const & friendlyClassName() const
WrapperInterfaceBase const * getInterface() const
void updateFriendlyClassName()
std::string const & metaDataTreeName()
edm::ProcessConfiguration pc_
void insertCollection(collection_type const &c)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
std::string const & parameterSetMapBranchName()
std::string const & processHistoryBranchName()
boost::shared_ptr< edm::root::TFWLiteSelectorMembers > m_
ProcessHistory processNames_
void setupNewFile(TFile &)
void setTree(TTree *iTree)
void set(boost::shared_ptr< ProductRegistry const > iReg)
std::string wrappedClassName(std::string const &iFullName)
virtual void Init(TTree *)
std::string const & productDescriptionBranchName()
std::string const & processConfigurationBranchName()
boost::shared_ptr< FWLiteDelayedReader > reader_
std::vector< value_type > vector_type
std::string const & branchIDListBranchName()
std::string const & branchListIndexesBranchName()
virtual void Begin(TTree *)
virtual WrapperOwningHolder getProduct_(BranchKey const &k, WrapperInterfaceBase const *interface, EDProductGetter const *ep) const
void setEntry(Long64_t iEntry)
virtual void begin(TList *&in)=0
string root
initialization
boost::shared_ptr< edm::BranchMapper > mapper_