CMS 3D CMS Logo

FWGUIEventDataAdder.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FWGUIEventDataAdder
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Chris Jones
10 // Created: Fri Jun 13 09:58:53 EDT 2008
11 //
12 
13 // system include files
14 #include <iostream>
15 #include <sigc++/signal.h>
16 #include <boost/bind.hpp>
17 #include <algorithm>
18 #include <cctype>
19 #include <string>
20 
21 #include "TGFrame.h"
22 #include "TGTextEntry.h"
23 #include "TGButton.h"
24 #include "TGMsgBox.h"
25 #include "TClass.h"
26 #include "TFile.h"
27 #include "TTree.h"
28 #include "TBranch.h"
29 
30 // user include files
42 //
43 // constants, enums and typedefs
44 //
45 static const std::string &dataForColumn(const FWJobMetadataManager::Data &iData, int iCol) {
46  switch (iCol) {
47  case 0:
48  return iData.purpose_;
49  break;
50  case 4:
51  return iData.type_;
52  break;
53  case 1:
54  return iData.moduleLabel_;
55  break;
56  case 2:
57  return iData.productInstanceLabel_;
58  break;
59  case 3:
60  return iData.processName_;
61  break;
62  default:
63  break;
64  }
65  static const std::string s_blank;
66  return s_blank;
67 }
68 
69 static const unsigned int kNColumns = 5;
71 public:
73 
74  int numberOfRows() const override { return m_row_to_index.size(); }
75  int numberOfColumns() const override { return kNColumns; }
76 
81  virtual void sortWithFilter(const char *filter) {
82  m_filter = filter;
83  sort(-1, sortOrder());
84  dataChanged();
85  }
86 
87  int unsortedRowNumber(int iSortedRowNumber) const override { return m_row_to_index[iSortedRowNumber]; }
88 
89  void implSort(int col, bool sortOrder) override;
90  std::vector<std::string> getTitles() const override {
91  std::vector<std::string> returnValue;
92  returnValue.reserve(kNColumns);
93  returnValue.push_back("Purpose");
94  returnValue.push_back("Module Label");
95  returnValue.push_back("Product Instance Label");
96  returnValue.push_back("Process Name");
97  returnValue.push_back("C++ Class");
98  return returnValue;
99  }
100 
101  FWTableCellRendererBase *cellRenderer(int iSortedRowNumber, int iCol) const override {
102  if (static_cast<int>(m_row_to_index.size()) > iSortedRowNumber) {
103  int unsortedRow = m_row_to_index[iSortedRowNumber];
104  const FWJobMetadataManager::Data &data = (m_manager->usableData())[unsortedRow];
105 
106  m_renderer.setData(dataForColumn(data, iCol), m_selectedRow == unsortedRow);
107  } else {
108  m_renderer.setData(std::string(), false);
109  }
110  return &m_renderer;
111  }
112 
113  void setSelection(int row, int mask) {
114  if (mask == 4) {
115  if (row == m_selectedRow) {
116  row = -1;
117  }
118  }
119  changeSelection(row);
120  }
121 
122  virtual const std::string title() const { return "Viewable Collections"; }
123 
124  int selectedRow() const { return m_selectedRow; }
125  //virtual void sort (int col, bool reset = false);
126  virtual bool rowIsSelected(int row) const { return m_selectedRow == row; }
127 
128  void reset() {
129  changeSelection(-1);
130  m_row_to_index.clear();
131  m_row_to_index.reserve(m_manager->usableData().size());
132  for (unsigned int i = 0; i < m_manager->usableData().size(); ++i) {
133  m_row_to_index.push_back(i);
134  }
135  dataChanged();
136  }
137  sigc::signal<void, int> indexSelected_;
138 
139 private:
140  void changeSelection(int iRow) {
141  if (iRow != m_selectedRow) {
142  m_selectedRow = iRow;
143  if (-1 == iRow) {
144  indexSelected_(-1);
145  } else {
146  indexSelected_(iRow);
147  }
149  }
150  }
152  std::vector<int> m_row_to_index;
156 };
157 
158 namespace {
159  void strip(std::string &source, const char *str) {
161  while (true) {
162  size_t found = source.find(remove);
163  if (found == std::string::npos)
164  break;
165  source.erase(found, remove.size());
166  }
167  }
168 
186  class SortAndFilter {
187  public:
188  SortAndFilter(const char *filter, int column, bool order, const std::vector<FWJobMetadataManager::Data> &data)
189  : m_filter(filter), m_column(column), m_order(order), m_data(data) {
190  simplify(m_filter);
191  m_weights.resize(data.size());
192 
193  // Calculate whether or not all the entries match the given filter.
194  // This is done only once, since it's invariant under permutations
195  // of the data.
196  for (size_t i = 0, e = m_weights.size(); i != e; ++i)
197  m_weights[i] = matchesFilter(m_data[i]);
198  }
199 
203  static void simplify(std::string &str) {
204  std::transform(str.begin(), str.end(), str.begin(), tolower);
205  strip(str, "std::");
206  strip(str, "edm::");
207  strip(str, "vector<");
208  strip(str, "clonepolicy");
209  strip(str, "ownvector");
210  strip(str, "rangemap<");
211  strip(str, "strictweakordering<");
212  strip(str, "sortedcollection<");
213  strip(str, "reco::");
214  strip(str, "edmnew::");
215  }
216 
217  unsigned int matches(const std::string &str) const {
218  std::string up(str);
219  simplify(up);
220  const char *begin = up.c_str();
221 
222  // If the filter is empty, we consider anything as matching
223  // (i.e. it will not loop).
224  // If the filter is not empty but the string to be matched is, we
225  // consider it as if it was not matching.
226  if ((!m_filter.empty()) && str.empty())
227  return 0;
228 
229  // There are two level of matching. "Full string" and
230  // "All characters". "Full string" matches return an higher weight
231  // and therefore should appear on top.
232  if (strstr(begin, m_filter.c_str()))
233  return 2;
234 
235  return 0;
236  }
237 
243  unsigned int matchesFilter(const FWJobMetadataManager::Data &data) const {
244  std::vector<unsigned int> scores;
245  scores.reserve(10);
246  scores.push_back(matches(data.purpose_));
247  scores.push_back(matches(data.type_));
248  scores.push_back(matches(data.moduleLabel_));
249  scores.push_back(matches(data.productInstanceLabel_));
250  scores.push_back(matches(data.processName_));
251  std::sort(scores.begin(), scores.end());
252  return scores.back();
253  }
254 
258  bool operator()(const int &aIndex, const int &bIndex) {
259  // In case no column is selected, we sort by relevance of the
260  // filter.
261  if (m_column == -1)
262  return m_weights[aIndex] >= m_weights[bIndex];
263 
264  const FWJobMetadataManager::Data &a = m_data[aIndex];
265  const FWJobMetadataManager::Data &b = m_data[bIndex];
266 
267  if (m_order)
268  return dataForColumn(a, m_column) < dataForColumn(b, m_column);
269  else
270  return dataForColumn(a, m_column) > dataForColumn(b, m_column);
271  }
272 
273  private:
274  std::string m_filter;
275  int m_column;
276  bool m_order;
277 
278  const std::vector<FWJobMetadataManager::Data> &m_data;
279  std::vector<unsigned int> m_weights;
280  };
281 
282  void doSort(int column,
283  const char *filter,
284  bool descentSort,
285  const std::vector<FWJobMetadataManager::Data> &iData,
286  std::vector<int> &oRowToIndex) {
287  std::vector<int> ordered;
288  ordered.reserve(iData.size());
289 
290  for (size_t i = 0, e = iData.size(); i != e; ++i)
291  ordered.push_back(i);
292 
293  SortAndFilter sorter(filter, column, descentSort, iData);
294  // GE: Using std::sort does not work for some reason... Bah...
295  std::stable_sort(ordered.begin(), ordered.end(), sorter);
296 
297  oRowToIndex.clear();
298  oRowToIndex.reserve(ordered.size());
299  // Only keep track of the rows that match.
300  for (size_t i = 0, e = ordered.size(); i != e; ++i)
301  if (sorter.matchesFilter(iData[ordered[i]]) != 0)
302  oRowToIndex.push_back(ordered[i]);
303  }
304 } // namespace
305 
306 void DataAdderTableManager::implSort(int column, bool sortOrder) {
307  doSort(column, m_filter.c_str(), sortOrder, m_manager->usableData(), m_row_to_index);
308 }
309 
310 //
311 // static data member definitions
312 //
313 
314 //
315 // constructors and destructor
316 //
317 
319  UInt_t iHeight,
320  FWEventItemsManager *iManager,
321  TGFrame *iParent,
322  FWJobMetadataManager *iMetadataManager)
323  : m_manager(iManager), m_metadataManager(iMetadataManager), m_parentFrame(iParent) {
325  createWindow();
326 }
327 
328 // FWGUIEventDataAdder::FWGUIEventDataAdder(const FWGUIEventDataAdder& rhs)
329 // {
330 // // do actual copying here;
331 // }
332 
334  /*
335  // m_frame->Cleanup();
336  // delete m_frame;
337  m_frame=0;
338  // delete m_tableWidget;
339  m_tableWidget=0;
340  delete m_tableManager;
341  m_tableManager=0;
342  */
343 }
344 
345 //
346 // assignment operators
347 //
348 // const FWGUIEventDataAdder& FWGUIEventDataAdder::operator=(const FWGUIEventDataAdder& rhs)
349 // {
350 // //An exception safe implementation is
351 // FWGUIEventDataAdder temp(rhs);
352 // swap(rhs);
353 //
354 // return *this;
355 // }
356 
357 //
358 // member functions
359 //
361  TClass *theClass = TClass::GetClass(m_type.c_str());
362  if (nullptr == theClass) {
363  return;
364  }
366  if (moduleLabel.empty()) {
367  return;
368  }
369 
370  const std::string name = m_name->GetText();
371  if (name.empty()) {
372  return;
373  }
374 
375  if (m_manager->find(name)) {
376  TString msg("Event item '");
377  msg += name;
378  msg += "' is already registered. Please use another name.";
379  fwLog(fwlog::kWarning) << msg.Data() << std::endl;
380  new TGMsgBox(gClient->GetDefaultRoot(), m_frame, "Error - Name conflict", msg, kMBIconExclamation, kMBOk);
381  return;
382  }
383 
384  int largest = -1;
385  if (m_manager->begin() != m_manager->end()) {
386  if (*(m_manager->begin()))
387  largest = (*(m_manager->begin()))->layer();
388  }
389  for (FWEventItemsManager::const_iterator it = m_manager->begin(), itEnd = m_manager->end(); it != itEnd; ++it) {
390  if ((*it) && largest < (*it)->layer()) {
391  largest = (*it)->layer();
392  }
393  }
394  ++largest;
396  if (m_doNotUseProcessName->IsOn() && m_doNotUseProcessName->IsEnabled()) {
397  processName = "";
398  }
400  theClass,
401  m_purpose,
403  moduleLabel,
405  processName,
406  "",
407  largest);
408  m_manager->add(desc);
409 }
410 
412  addNewItem();
413  windowIsClosing();
414 }
415 
417  // Map main frame
418  if (nullptr == m_frame) {
419  createWindow();
420  }
421  m_frame->MapWindow();
422 }
423 
425  m_name->SetText("");
426  m_search->SetText("");
427  m_purpose.clear();
428  m_type.clear();
429  m_moduleLabel.clear();
430  m_processName.clear();
431  m_productInstanceLabel.clear();
432  m_apply->SetEnabled(false);
433  m_applyAndClose->SetEnabled(false);
434 
435  m_frame->UnmapWindow();
436  m_frame->DontCallClose();
437 }
438 
442 }
443 
446  m_tableManager->indexSelected_.connect(boost::bind(&FWGUIEventDataAdder::newIndexSelected, this, _1));
447 
448  m_frame = new TGTransientFrame(gClient->GetDefaultRoot(), m_parentFrame, 600, 400);
449  m_frame->Connect("CloseWindow()", "FWGUIEventDataAdder", this, "windowIsClosing()");
450 
451  FWDialogBuilder builder(m_frame);
452  TGTextButton *cancelButton, *resetButton;
453 
454  builder.indent(10)
455  .spaceDown(15)
456  .addLabel("Search:", 0)
457  .expand(false)
458  .spaceUp(4)
459  .floatLeft(4)
460  .addTextEntry("", &m_search)
461  .spaceUp(0)
462  .frameSpaceDown(10)
463  .addLabel("Viewable Collections", 8)
464  .frameSpaceDown(5)
466  .expand(true, true)
467  .addLabel("Name:", 0)
468  .expand(false)
469  .spaceUp(4)
470  .floatLeft(4)
471  .addTextEntry("", &m_name)
472  .spaceUp(0)
473  .floatLeft(4)
474  .addTextButton(" Reset ", &resetButton)
475  .expand(false, false)
476  .frameSpaceUpDown(5)
477  .addCheckbox(
478  "Do not use Process Name and "
479  "instead only get this data "
480  "from the most recent Process",
482  .frameSpaceDown(15)
483  .hSpacer()
484  .floatLeft(0)
485  .addTextButton(" Close ", &cancelButton)
486  .expand(false)
487  .floatLeft(4)
488  .addTextButton(" Add Data ", &m_apply)
489  .expand(false)
490  .floatLeft(4)
491  .addTextButton(" Add Data && Close ", &m_applyAndClose)
492  .expand(false)
493  .spaceRight(25)
494  .spaceDown(15);
495 
496  m_search->Connect("TextChanged(const char *)", "FWGUIEventDataAdder", this, "updateFilterString(const char *)");
497  m_search->SetEnabled(true);
501  m_tableWidget->Connect("rowClicked(Int_t,Int_t,Int_t,Int_t,Int_t)",
502  "FWGUIEventDataAdder",
503  this,
504  "rowClicked(Int_t,Int_t,Int_t,Int_t,Int_t)");
505 
507  m_name->SetState(true);
508  resetButton->SetEnabled(true);
509  resetButton->Connect("Clicked()", "FWGUIEventDataAdder", this, "resetNameEntry()");
510  m_doNotUseProcessName->SetState(kButtonDown);
511  cancelButton->Connect("Clicked()", "FWGUIEventDataAdder", this, "windowIsClosing()");
512  cancelButton->SetEnabled(true);
513  m_apply->Connect("Clicked()", "FWGUIEventDataAdder", this, "addNewItem()");
514  m_applyAndClose->Connect("Clicked()", "FWGUIEventDataAdder", this, "addNewItemAndClose()");
515 
516  m_frame->SetWindowName("Add Collection");
517  m_frame->MapSubwindows();
518  m_frame->Layout();
519 }
520 
527  m_tableManager->sort(0, true);
528 }
529 
531  m_name->SetText(m_apply->IsEnabled() ? m_moduleLabel.c_str() : "", kFALSE);
532 }
533 
534 void FWGUIEventDataAdder::newIndexSelected(int iSelectedIndex) {
535  if (-1 != iSelectedIndex) {
536  std::vector<FWJobMetadataManager::Data> &metadata = m_metadataManager->usableData();
537  m_purpose = metadata[iSelectedIndex].purpose_;
538  m_type = metadata[iSelectedIndex].type_;
539  std::string oldModuleLabel = m_moduleLabel;
540  m_moduleLabel = metadata[iSelectedIndex].moduleLabel_;
541  m_productInstanceLabel = metadata[iSelectedIndex].productInstanceLabel_;
542  m_processName = metadata[iSelectedIndex].processName_;
543 
544  if (strlen(m_name->GetText()) == 0 || oldModuleLabel == m_name->GetText()) {
545  m_name->SetText(m_moduleLabel.c_str());
546  }
547  m_apply->SetEnabled(true);
548  m_applyAndClose->SetEnabled(true);
549 
550  //Check to see if this is the last process, if it is then we can let the user decide
551  // to not use the process name when doing the lookup. This makes a saved configuration
552  // more robust. However, if they choose a collection not from the last process then we need the
553  // process name in order to correctly get the data they want
554  bool isMostRecentProcess = true;
555  int index = 0;
556  for (std::vector<FWJobMetadataManager::Data>::iterator it = metadata.begin(), itEnd = metadata.end();
557  it != itEnd && isMostRecentProcess;
558  ++it, ++index) {
559  if (index == iSelectedIndex) {
560  continue;
561  }
562  if (it->moduleLabel_ == m_moduleLabel && it->purpose_ == m_purpose && it->type_ == m_type &&
563  it->productInstanceLabel_ == m_productInstanceLabel) {
564  //see if this process is newer than the data requested
565 
566  for (size_t pni = 0, pne = m_metadataManager->processNamesInJob().size(); pni != pne; ++pni) {
568  if (m_processName == processName)
569  break;
570 
571  if (it->processName_ == processName) {
572  isMostRecentProcess = false;
573  break;
574  }
575  }
576  }
577  }
578  if (isMostRecentProcess) {
579  if (!m_doNotUseProcessName->IsEnabled()) {
580  m_doNotUseProcessName->SetEnabled(true);
581  }
582  } else {
583  //NOTE: must remember state before we get here because 'enable' and 'on' are mutually
584  // exlcusive :(
585  m_doNotUseProcessName->SetEnabled(false);
586  }
587  }
588 }
589 
590 void FWGUIEventDataAdder::rowClicked(Int_t iRow, Int_t iButton, Int_t iKeyMod, Int_t, Int_t) {
591  if (iButton == kButton1) {
592  m_tableManager->setSelection(iRow, iKeyMod);
593  }
594 }
595 
596 //
597 // const member functions
598 //
599 
600 //
601 // static member functions
602 //
FWGUIEventDataAdder::resetNameEntry
void resetNameEntry()
Definition: FWGUIEventDataAdder.cc:530
FWTableWidget::SetBackgroundColor
void SetBackgroundColor(Pixel_t) override
Definition: FWTableWidget.cc:173
FWJobMetadataManager::processNamesInJob
std::vector< std::string > & processNamesInJob()
Definition: FWJobMetadataManager.h:32
fwLog
#define fwLog(_level_)
Definition: fwLog.h:45
FWTableManagerBase::sort
void sort(int iCol, bool iSortOrder)
Call to have table sorted on values in column iCol with the sort order being descending if iSortOrder...
Definition: FWTableManagerBase.cc:54
mps_fire.i
i
Definition: mps_fire.py:355
FWGUIEventDataAdder::~FWGUIEventDataAdder
virtual ~FWGUIEventDataAdder()
Definition: FWGUIEventDataAdder.cc:333
FWGUIEventDataAdder.h
DataAdderTableManager::title
virtual const std::string title() const
Definition: FWGUIEventDataAdder.cc:122
FWEventItemsManager::add
FWEventItem * add(const FWPhysicsObjectDesc &iItem, const FWConfiguration *pbConf=nullptr, bool doSetEvent=true)
Definition: FWEventItemsManager.cc:77
FWGUIEventDataAdder::m_metadataManager
FWJobMetadataManager * m_metadataManager
Definition: FWGUIEventDataAdder.h:74
FWTextTableCellRenderer.h
FWGUIEventDataAdder::m_productInstanceLabel
std::string m_productInstanceLabel
Definition: FWGUIEventDataAdder.h:88
DataAdderTableManager::numberOfColumns
int numberOfColumns() const override
Number of columns in the table.
Definition: FWGUIEventDataAdder.cc:75
DataAdderTableManager::sortWithFilter
virtual void sortWithFilter(const char *filter)
Definition: FWGUIEventDataAdder.cc:81
FWGUIEventDataAdder::m_name
TGTextEntry * m_name
Definition: FWGUIEventDataAdder.h:78
FWGUIEventDataAdder::m_purpose
std::string m_purpose
Definition: FWGUIEventDataAdder.h:84
digitizers_cfi.strip
strip
Definition: digitizers_cfi.py:19
FWGUIEventDataAdder::windowIsClosing
void windowIsClosing()
Definition: FWGUIEventDataAdder.cc:424
FWEventItemsManager
Definition: FWEventItemsManager.h:44
cuy.col
col
Definition: cuy.py:1010
DataAdderTableManager::m_selectedRow
int m_selectedRow
Definition: FWGUIEventDataAdder.cc:153
FWGUIEventDataAdder::m_search
TGTextEntry * m_search
Definition: FWGUIEventDataAdder.h:82
DataAdderTableManager::selectedRow
int selectedRow() const
Definition: FWGUIEventDataAdder.cc:124
FWDialogBuilder::indent
FWDialogBuilder & indent(int left=2, int right=-1)
Definition: FWDialogBuilder.cc:202
FWGUIEventDataAdder::addNewItem
void addNewItem()
Definition: FWGUIEventDataAdder.cc:360
mps_check.msg
tuple msg
Definition: mps_check.py:285
FWItemAccessorFactory.h
FWDialogBuilder::floatLeft
FWDialogBuilder & floatLeft(size_t spacing=3)
Definition: FWDialogBuilder.cc:408
FWTextTableCellRenderer
Definition: FWTextTableCellRenderer.h:32
DataAdderTableManager::m_renderer
FWTextTableCellRenderer m_renderer
Definition: FWGUIEventDataAdder.cc:155
FWGUIEventDataAdder::m_doNotUseProcessName
TGCheckButton * m_doNotUseProcessName
Definition: FWGUIEventDataAdder.h:79
DataAdderTableManager::cellRenderer
FWTableCellRendererBase * cellRenderer(int iSortedRowNumber, int iCol) const override
Definition: FWGUIEventDataAdder.cc:101
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
FWDialogBuilder::addTextButton
FWDialogBuilder & addTextButton(const char *text, TGTextButton **out=nullptr)
Definition: FWDialogBuilder.cc:285
FWTableManagerBase::visualPropertiesChanged
void visualPropertiesChanged()
Classes which inherit from FWTableManagerBase must call this when how the data is shown (e....
Definition: FWTableManagerBase.cc:70
FWGUIEventDataAdder::FWGUIEventDataAdder
FWGUIEventDataAdder(UInt_t w, UInt_t, FWEventItemsManager *, TGFrame *, FWJobMetadataManager *)
Definition: FWGUIEventDataAdder.cc:318
DataAdderTableManager::m_filter
std::string m_filter
Definition: FWGUIEventDataAdder.cc:154
FWJobMetadataManager.h
FWTableWidget::disableGrowInWidth
void disableGrowInWidth()
Definition: FWTableWidget.cc:498
FWGUIEventDataAdder::m_applyAndClose
TGTextButton * m_applyAndClose
Definition: FWGUIEventDataAdder.h:81
FWDialogBuilder
Definition: FWDialogBuilder.h:93
DataAdderTableManager::DataAdderTableManager
DataAdderTableManager(FWJobMetadataManager *manager)
Definition: FWGUIEventDataAdder.cc:72
FWJobMetadataManager
Definition: FWJobMetadataManager.h:18
FWTableWidget.h
FWDialogBuilder::spaceDown
FWDialogBuilder & spaceDown(size_t spacing=3)
Definition: FWDialogBuilder.cc:418
DataAdderTableManager::reset
void reset()
Definition: FWGUIEventDataAdder.cc:128
source
static const std::string source
Definition: EdmProvDump.cc:47
str
#define str(s)
Definition: TestProcessor.cc:48
FWGUIEventDataAdder::newIndexSelected
void newIndexSelected(int)
Definition: FWGUIEventDataAdder.cc:534
DataAdderTableManager::getTitles
std::vector< std::string > getTitles() const override
returns the title names for each column
Definition: FWGUIEventDataAdder.cc:90
HcalDetIdTransform::transform
unsigned transform(const HcalDetId &id, unsigned transformCode)
Definition: HcalDetIdTransform.cc:7
DataAdderTableManager::numberOfRows
int numberOfRows() const override
Number of rows in the table.
Definition: FWGUIEventDataAdder.cc:74
FWDialogBuilder.h
b
double b
Definition: hdecay.h:118
ALCARECOTkAlBeamHalo_cff.filter
filter
Definition: ALCARECOTkAlBeamHalo_cff.py:27
TrackingMonitor_cfi.metadata
metadata
Definition: TrackingMonitor_cfi.py:71
DataAdderTableManager
Definition: FWGUIEventDataAdder.cc:70
FWDialogBuilder::expand
FWDialogBuilder & expand(size_t expandX=true, size_t expandY=false)
Definition: FWDialogBuilder.cc:479
FWGUIEventDataAdder::m_moduleLabel
std::string m_moduleLabel
Definition: FWGUIEventDataAdder.h:87
FWGUIEventDataAdder::addNewItemAndClose
void addNewItemAndClose()
Definition: FWGUIEventDataAdder.cc:411
FWTableManagerBase
Definition: FWTableManagerBase.h:44
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FWGUIEventDataAdder::metadataUpdatedSlot
void metadataUpdatedSlot(void)
Definition: FWGUIEventDataAdder.cc:525
FWJobMetadataManager::Data::moduleLabel_
std::string moduleLabel_
Definition: FWJobMetadataManager.h:23
FWGUIEventDataAdder::m_type
std::string m_type
Definition: FWGUIEventDataAdder.h:86
FWTableManagerBase::dataChanged
void dataChanged()
Classes which inherit from FWTableManagerBase must call this when their underlying data changes.
Definition: FWTableManagerBase.cc:63
FWJobMetadataManager::metadataChanged_
sigc::signal< void > metadataChanged_
Definition: FWJobMetadataManager.h:54
FWGUIEventDataAdder::m_tableManager
DataAdderTableManager * m_tableManager
Definition: FWGUIEventDataAdder.h:93
a
double a
Definition: hdecay.h:119
FWGUIEventDataAdder::rowClicked
void rowClicked(Int_t iRow, Int_t iButton, Int_t iKeyMod, Int_t, Int_t)
Definition: FWGUIEventDataAdder.cc:590
sorter
Definition: SETFilter.cc:31
FWPhysicsObjectDesc
Definition: FWPhysicsObjectDesc.h:30
FWEventItemsManager::end
const_iterator end() const
Definition: FWEventItemsManager.cc:300
FWDisplayProperties::defaultProperties
static const FWDisplayProperties defaultProperties
Definition: FWDisplayProperties.h:30
eventshapeDQM_cfi.order
order
Definition: eventshapeDQM_cfi.py:8
FWEventItemsManager::find
const FWEventItem * find(const std::string &iName) const
Definition: FWEventItemsManager.cc:304
FWTableCellRendererBase
Definition: FWTableCellRendererBase.h:44
FWEventItemsManager::const_iterator
std::vector< FWEventItem * >::const_iterator const_iterator
Definition: FWEventItemsManager.h:50
fwlog::kWarning
Definition: fwLog.h:35
fwLog.h
FWPhysicsObjectDesc.h
FWDialogBuilder::spaceUp
FWDialogBuilder & spaceUp(size_t spacing=3)
Definition: FWDialogBuilder.cc:413
FWEventItem.h
FWGUIEventDataAdder::m_frame
TGTransientFrame * m_frame
Definition: FWGUIEventDataAdder.h:77
FWGUIEventDataAdder::m_apply
TGTextButton * m_apply
Definition: FWGUIEventDataAdder.h:80
FWTableManagerBase::sortOrder
bool sortOrder(void)
The current sort order for the table.
Definition: FWTableManagerBase.h:102
DataAdderTableManager::implSort
void implSort(int col, bool sortOrder) override
Called by 'sort' method to actually handle the sorting of the rows. Arguments are the same as 'sort'.
Definition: FWGUIEventDataAdder.cc:306
FWJobMetadataManager::Data::processName_
std::string processName_
Definition: FWJobMetadataManager.h:25
FWTextTableCellRenderer::setData
void setData(const std::string &, bool isSelected)
Definition: FWTextTableCellRenderer.cc:98
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
DataAdderTableManager::setSelection
void setSelection(int row, int mask)
Definition: FWGUIEventDataAdder.cc:113
MCScenario_CRAFT1_22X.sorter
def sorter(a, b)
Definition: MCScenario_CRAFT1_22X.py:97
DataAdderTableManager::unsortedRowNumber
int unsortedRowNumber(int iSortedRowNumber) const override
when passed the index to the sorted order of the rows it returns the original row number from the und...
Definition: FWGUIEventDataAdder.cc:87
FWDialogBuilder::spaceRight
FWDialogBuilder & spaceRight(size_t spacing=3)
Definition: FWDialogBuilder.cc:434
FWEventItemsManager::begin
const_iterator begin() const
NOTE: iterator is allowed to return a null object for items that have been removed.
Definition: FWEventItemsManager.cc:299
FWTableWidget::SetLineSeparatorColor
void SetLineSeparatorColor(Pixel_t)
Definition: FWTableWidget.cc:209
FWDialogBuilder::hSpacer
FWDialogBuilder & hSpacer(size_t size=0)
Definition: FWDialogBuilder.cc:500
FWGUIEventDataAdder::m_tableWidget
FWTableWidget * m_tableWidget
Definition: FWGUIEventDataAdder.h:94
FWDialogBuilder::frameSpaceUpDown
FWDialogBuilder & frameSpaceUpDown(size_t spacing=3)
Definition: FWDialogBuilder.cc:457
FWGUIEventDataAdder::updateFilterString
void updateFilterString(const char *str)
Definition: FWGUIEventDataAdder.cc:439
FWJobMetadataManager::Data
Definition: FWJobMetadataManager.h:20
MatrixUtil.remove
def remove(d, key, TELL=False)
Definition: MatrixUtil.py:212
kNColumns
static const unsigned int kNColumns
Definition: FWGUIEventDataAdder.cc:69
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
FWGUIEventDataAdder::m_manager
FWEventItemsManager * m_manager
Definition: FWGUIEventDataAdder.h:73
DataAdderTableManager::m_manager
FWJobMetadataManager * m_manager
Definition: FWGUIEventDataAdder.cc:151
FWJobMetadataManager::Data::purpose_
std::string purpose_
Definition: FWJobMetadataManager.h:21
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
patCandidatesForDimuonsSequences_cff.matches
matches
Definition: patCandidatesForDimuonsSequences_cff.py:131
FWTableWidget::SetHeaderBackgroundColor
void SetHeaderBackgroundColor(Pixel_t)
Definition: FWTableWidget.cc:188
FWJobMetadataManager::usableData
std::vector< Data > & usableData()
Definition: FWJobMetadataManager.h:31
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
FWDialogBuilder::addTable
FWDialogBuilder & addTable(FWTableManagerBase *manager, FWTableWidget **out=nullptr)
Definition: FWDialogBuilder.cc:336
FWEventItemsManager.h
FWDialogBuilder::frameSpaceDown
FWDialogBuilder & frameSpaceDown(size_t spacing=3)
Definition: FWDialogBuilder.cc:452
DataAdderTableManager::indexSelected_
sigc::signal< void, int > indexSelected_
Definition: FWGUIEventDataAdder.cc:137
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
FWJobMetadataManager::Data::type_
std::string type_
Definition: FWJobMetadataManager.h:22
DataAdderTableManager::m_row_to_index
std::vector< int > m_row_to_index
Definition: FWGUIEventDataAdder.cc:152
dataForColumn
static const std::string & dataForColumn(const FWJobMetadataManager::Data &iData, int iCol)
Definition: FWGUIEventDataAdder.cc:45
FWJobMetadataManager::Data::productInstanceLabel_
std::string productInstanceLabel_
Definition: FWJobMetadataManager.h:24
FWGUIEventDataAdder::m_processName
std::string m_processName
Definition: FWGUIEventDataAdder.h:89
begin
#define begin
Definition: vmac.h:32
DataAdderTableManager::changeSelection
void changeSelection(int iRow)
Definition: FWGUIEventDataAdder.cc:140
up
Definition: BitonicSort.h:7
DataAdderTableManager::rowIsSelected
virtual bool rowIsSelected(int row) const
Definition: FWGUIEventDataAdder.cc:126
FWGUIEventDataAdder::show
void show()
Definition: FWGUIEventDataAdder.cc:416
FWDialogBuilder::addTextEntry
FWDialogBuilder & addTextEntry(const char *defaultText, TGTextEntry **out)
Definition: FWDialogBuilder.cc:301
FWGUIEventDataAdder::createWindow
void createWindow()
Definition: FWGUIEventDataAdder.cc:444
FWGUIEventDataAdder::m_parentFrame
TGFrame * m_parentFrame
Definition: FWGUIEventDataAdder.h:76
FWDialogBuilder::addLabel
FWDialogBuilder & addLabel(const char *text, size_t fontSize=12, size_t weight=0, TGLabel **out=nullptr)
Definition: FWDialogBuilder.cc:212
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
FWTableManagerBase.h
FWDialogBuilder::addCheckbox
FWDialogBuilder & addCheckbox(const char *text, TGCheckButton **out=nullptr)
Definition: FWDialogBuilder.cc:327