CMS 3D CMS Logo

CmsShowNavigator.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 #ifndef Fireworks_Core_CmsShowNavigator_h
3 #define Fireworks_Core_CmsShowNavigator_h
4 //
5 // Package: newVersion
6 // Class : CmsShowNavigator
7 //
8 
9 // system include files
10 #include <string>
11 #include <sigc++/sigc++.h>
12 
13 // user include files
18 
20 
21 #include "TEventList.h"
22 
23 // forward declarations
24 class TEventList;
25 class CSGAction;
26 class CmsShowMain;
27 class TFile;
28 class TGWindow;
29 class FWGUIEventFilter;
30 
31 namespace edm {
32  class EventBase;
33  class EventID;
34 } // namespace edm
35 
37 public:
38  enum EFilterState { kOff, kOn, kWithdrawn };
39  enum EFilterMode { kOr = 1, kAnd = 2 };
40 
41 private:
42  typedef std::list<FWFileEntry*> FQBase_t;
43  typedef FQBase_t::iterator FQBase_i;
44 
45  struct FileQueue_t : public FQBase_t {
46  struct iterator : public FQBase_i {
47  private:
48  bool m_isSet;
49 
50  public:
51  iterator() : m_isSet(false) {}
52  iterator(FQBase_i i) : FQBase_i(i), m_isSet(true) {}
53 
54  bool isSet() const { return m_isSet; }
55 
57  // Go back one element, set to end() when falling off the end.
58  if (*this == cont.begin())
59  *this = cont.end();
60  else
61  FQBase_i::operator--();
62  return *this;
63  }
64  };
65 
66  FileQueue_t() : FQBase_t() {}
67 
70  };
71 
73 
74 public:
76  ~CmsShowNavigator() override;
77 
78  //configuration management interface
79  void addTo(FWConfiguration&) const override;
80  void setFrom(const FWConfiguration&) override;
81 
82  Int_t realEntry(Int_t rawEntry);
83  bool openFile(const std::string& fileName);
84  bool appendFile(const std::string& fileName, bool checkFileQueueSize, bool live);
85 
86  void nextEvent() override;
87  void previousEvent() override;
88  bool nextSelectedEvent() override;
89  bool previousSelectedEvent() override;
90  void firstEvent() override;
91  void lastEvent() override;
93  void goTo(FileQueue_i fi, int event);
94 
95  void eventFilterEnableCallback(Bool_t);
96  void filterEvents();
97  void filterEventsAndReset();
98 
99  void setMaxNumberOfFilesToChain(unsigned int i) { m_maxNumberOfFilesToChain = i; }
100 
101  bool isLastEvent() override;
102  bool isFirstEvent() override;
103 
104  void showEventFilterGUI(const TGWindow* p);
105  void applyFiltersFromGUI();
106  void toggleFilterEnable();
107  void withdrawFilter();
108  void resumeFilter();
109 
110  const edm::EventBase* getCurrentEvent() const override;
111 
112  const char* frameTitle();
113  const char* filterStatusMessage();
114  std::string getCurrentGlobalTag();
115 
116  int getNSelectedEvents() override;
117  int getNTotalEvents() override;
118  bool canEditFiltersExternally();
119  bool filesNeedUpdate() const { return m_filesNeedUpdate; }
120  int getFilterState() { return m_filterState; }
121 
122  void editFiltersExternally();
123 
124  void activateNewFileOnNextEvent() { m_newFileOnNextEvent = true; }
125  void resetNewFileOnNextEvent() { m_newFileOnNextEvent = false; }
126 
127  std::vector<std::string>& getProcessList() const;
128 
129  sigc::signal<void, const TFile*> fileChanged_;
130  sigc::signal<void> preFiltering_;
131  sigc::signal<void, bool> postFiltering_;
132  sigc::signal<void, bool> editFiltersExternally_;
133  sigc::signal<void, int> filterStateChanged_;
134 
135 private:
136  CmsShowNavigator(const CmsShowNavigator&); // stop default
137  const CmsShowNavigator& operator=(const CmsShowNavigator&); // stop default
138 
139  void setCurrentFile(FileQueue_i);
140  void updateFileFilters();
141  void updateSelectorsInfo();
142 
143  void removeFilter(std::list<FWEventSelector*>::iterator);
144  void addFilter(FWEventSelector*);
145  void changeFilter(FWEventSelector*, bool filterNeedUpdate);
146 
147  void newFile(FileQueue_i);
148 
149  // ---------- member data --------------------------------
150 
151  std::list<FWEventSelector*> m_selectors;
153  FileQueue_i m_currentFile;
155 
160 
162  // entry is an event index nubmer which runs from 0 to
163  // #events or #selected_events depending on if we filter
164  // events or not
167 };
168 
169 #endif
EFilterState m_filterState
const CmsShowMain & m_main
sigc::signal< void, bool > editFiltersExternally_
unsigned int m_maxNumberOfFilesToChain
bool filesNeedUpdate() const
unsigned long long EventNumber_t
void resetNewFileOnNextEvent()
FileQueue_t::iterator FileQueue_i
unsigned int LuminosityBlockNumber_t
std::list< FWFileEntry * > FQBase_t
sigc::signal< void > preFiltering_
FWGUIEventFilter * m_guiFilter
void activateNewFileOnNextEvent()
FileQueue_i m_currentFile
sigc::signal< void, bool > postFiltering_
#define end
Definition: vmac.h:39
sigc::signal< void, const TFile * > fileChanged_
#define begin
Definition: vmac.h:32
HLT enums.
FQBase_t::iterator FQBase_i
void setMaxNumberOfFilesToChain(unsigned int i)
unsigned int RunNumber_t
std::list< FWEventSelector * > m_selectors
sigc::signal< void, int > filterStateChanged_
iterator & previous(FileQueue_t &cont)
cont
load Luminosity info ##
Definition: generateEDF.py:629
Definition: event.py:1