CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
DQMTTreeIO::TreeObjectReader< T > Class Template Reference
Inheritance diagram for DQMTTreeIO::TreeObjectReader< T >:
DQMTTreeIO::TreeReaderBase

Public Member Functions

void read (ULong64_t iIndex, DQMStore *dqmstore, int run, int lumi) override
 
void setTree (TTree *iTree) override
 
 TreeObjectReader (MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
 
- Public Member Functions inherited from DQMTTreeIO::TreeReaderBase
MonitorElementData::Key makeKey (std::string const &fullname, int run, int lumi)
 
 TreeReaderBase (MonitorElementData::Kind kind, MonitorElementData::Scope rescope)
 
virtual ~TreeReaderBase ()
 

Private Attributes

Tm_buffer = nullptr
 
std::string * m_fullName = nullptr
 
uint32_t m_tag = 0
 
TTree * m_tree = nullptr
 

Additional Inherited Members

- Protected Attributes inherited from DQMTTreeIO::TreeReaderBase
MonitorElementData::Kind m_kind
 
MonitorElementData::Scope m_rescope
 

Detailed Description

template<class T>
class DQMTTreeIO::TreeObjectReader< T >

Definition at line 187 of file DQMRootSource.cc.

Constructor & Destructor Documentation

◆ TreeObjectReader()

Member Function Documentation

◆ read()

template<class T >
void DQMTTreeIO::TreeObjectReader< T >::read ( ULong64_t  iIndex,
DQMStore dqmstore,
int  run,
int  lumi 
)
inlineoverridevirtual

Implements DQMTTreeIO::TreeReaderBase.

Definition at line 195 of file DQMRootSource.cc.

References cms::Exception::addContext(), dqmPostProcessing_online::existing, dqm::implementation::DQMStore::findOrRecycle(), submitPVResolutionJobs::key, MonitorElementData::key_, DQMTTreeIO::TreeObjectReader< T >::m_buffer, DQMTTreeIO::TreeObjectReader< T >::m_fullName, DQMTTreeIO::TreeObjectReader< T >::m_tree, DQMTTreeIO::TreeReaderBase::makeKey(), hlt_dqm_clientPB-live_cfg::me, DQMTTreeIO::DQMMergeHelper::mergeTogether(), eostools::move(), MonitorElementData::Value::object_, dqm::implementation::DQMStore::putME(), writedatasetfile::run, alignCSCRings::s, and MonitorElementData::value_.

Referenced by edmIntegrityCheck.PublishToFileSystem::get().

195  {
196  // This will populate the fields as defined in setTree method
197  try {
198  m_tree->GetEntry(iIndex);
199 
200  auto key = makeKey(*m_fullName, run, lumi);
201  auto existing = dqmstore->findOrRecycle(key);
202  if (existing) {
203  // TODO: make sure there is sufficient locking here.
205  } else {
206  // We make our own MEs here, to avoid a round-trip through the booking API.
207  MonitorElementData meData;
208  meData.key_ = key;
209  meData.value_.object_ = std::unique_ptr<T>((T*)(m_buffer->Clone()));
210  auto me = new MonitorElement(std::move(meData));
211  dqmstore->putME(me);
212  }
213  } catch (cms::Exception& iExcept) {
214  using namespace std::string_literals;
215  iExcept.addContext("failed while reading "s + *m_fullName);
216  throw;
217  }
218  }
static void mergeTogether(TH1 *original, TH1 *toAdd)
edm::propagate_const< std::unique_ptr< TH1 > > object_
MonitorElementData::Key makeKey(std::string const &fullname, int run, int lumi)
MonitorElement * findOrRecycle(MonitorElementData::Key const &)
Definition: DQMStore.cc:349
key
prepare the HTCondor submission files and eventually submit them
dqm::harvesting::MonitorElement MonitorElement
void addContext(std::string const &context)
Definition: Exception.cc:169
MonitorElement * putME(MonitorElement *me)
Definition: DQMStore.cc:180
long double T
def move(src, dest)
Definition: eostools.py:511

◆ setTree()

template<class T >
void DQMTTreeIO::TreeObjectReader< T >::setTree ( TTree *  iTree)
inlineoverridevirtual

Implements DQMTTreeIO::TreeReaderBase.

Definition at line 220 of file DQMRootSource.cc.

References kFlagBranch, kFullNameBranch, kValueBranch, DQMTTreeIO::TreeObjectReader< T >::m_buffer, DQMTTreeIO::TreeObjectReader< T >::m_fullName, DQMTTreeIO::TreeObjectReader< T >::m_tag, and DQMTTreeIO::TreeObjectReader< T >::m_tree.

220  {
221  m_tree = iTree;
222  m_tree->SetBranchAddress(kFullNameBranch, &m_fullName);
223  m_tree->SetBranchAddress(kFlagBranch, &m_tag);
224  m_tree->SetBranchAddress(kValueBranch, &m_buffer);
225  }
static const char *const kFullNameBranch
Definition: format.h:57
static const char *const kFlagBranch
Definition: format.h:58
static const char *const kValueBranch
Definition: format.h:59

Member Data Documentation

◆ m_buffer

template<class T >
T* DQMTTreeIO::TreeObjectReader< T >::m_buffer = nullptr
private

◆ m_fullName

template<class T >
std::string* DQMTTreeIO::TreeObjectReader< T >::m_fullName = nullptr
private

◆ m_tag

template<class T >
uint32_t DQMTTreeIO::TreeObjectReader< T >::m_tag = 0
private

◆ m_tree

template<class T >
TTree* DQMTTreeIO::TreeObjectReader< T >::m_tree = nullptr
private