File indexing completed on 2024-04-06 12:11:31
0001
0002 #ifndef Fireworks_Core_FWFileEntry_h
0003 #define Fireworks_Core_FWFileEntry_h
0004
0005
0006
0007
0008
0009
0010 #include <string>
0011 #include <sigc++/sigc++.h>
0012
0013 #include "TTree.h"
0014
0015
0016
0017 #include "DataFormats/FWLite/interface/Event.h"
0018 #include "Fireworks/Core/interface/FWEventSelector.h"
0019 #include "Fireworks/Core/interface/FWTEventList.h"
0020 #include "Fireworks/Core/interface/FWConfigurable.h"
0021
0022
0023 class FWEventItem;
0024 class FWTEventList;
0025 class FWTTreeCache;
0026 class CSGAction;
0027 class CmsShowMain;
0028 class TFile;
0029 class TGWindow;
0030 class FWEventItemsManager;
0031
0032 namespace edm {
0033 class EventID;
0034 }
0035
0036 class FWFileEntry {
0037 public:
0038 struct Filter {
0039 FWTEventList* m_eventList;
0040 FWEventSelector* m_selector;
0041 bool m_needsUpdate;
0042
0043 Filter(FWEventSelector* s) : m_eventList(nullptr), m_selector(s), m_needsUpdate(true) {}
0044 ~Filter() { delete m_eventList; }
0045
0046 bool hasSelectedEvents() { return m_eventList && m_eventList->GetN(); }
0047 };
0048
0049 FWFileEntry(const std::string& name, bool checkVersion, bool checkGlobalTag);
0050 virtual ~FWFileEntry();
0051
0052 TFile* file() { return m_file; }
0053 fwlite::Event* event() { return m_event; }
0054 TTree* tree() { return m_eventTree; }
0055 FWTEventList* globalSelection() { return m_globalEventList; }
0056 FWTTreeCache* fwTreeCache();
0057
0058 std::list<Filter*>& filters() { return m_filterEntries; }
0059
0060 const std::string& getGlobalTag() const { return m_globalTag; }
0061
0062 void openFile(bool, bool);
0063 void closeFile();
0064
0065 bool isEventSelected(int event);
0066
0067 bool hasSelectedEvents();
0068
0069 bool hasActiveFilters();
0070
0071 int firstSelectedEvent();
0072 int lastSelectedEvent();
0073
0074 int lastEvent() { return m_eventTree->GetEntries() - 1; }
0075
0076 int nextSelectedEvent(int event);
0077 int previousSelectedEvent(int event);
0078
0079 void needUpdate() { m_needUpdate = true; }
0080 void updateFilters(const FWEventItemsManager* eiMng, bool isOR);
0081
0082
0083 void NewEventItemCallIn(const FWEventItem* it);
0084 void RemovingEventItemCallIn(const FWEventItem* it);
0085
0086 FWFileEntry(const FWFileEntry&) = delete;
0087 const FWFileEntry& operator=(const FWFileEntry&) = delete;
0088
0089 private:
0090 void runFilter(Filter* fe, const FWEventItemsManager* eiMng);
0091 bool filterEventsWithCustomParser(Filter* filter);
0092
0093 std::string getBranchName(const FWEventItem* it) const;
0094
0095 std::string m_name;
0096 TFile* m_file;
0097 TTree* m_eventTree;
0098 fwlite::Event* m_event;
0099
0100 bool m_needUpdate;
0101 std::string m_globalTag;
0102
0103 std::list<Filter*> m_filterEntries;
0104 FWTEventList* m_globalEventList;
0105 };
0106 #endif