Logo ROOT  
Reference Guide
TEveManager.h
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TEveManager
13 #define ROOT_TEveManager
14 
15 #include "TEveElement.h"
16 
17 #include "TSysEvtHandler.h"
18 #include "TTimer.h"
19 #include "TVirtualPad.h"
20 
21 class TMap;
22 class TExMap;
23 class TMacro;
24 class TFolder;
25 class TCanvas;
26 class TGeoManager;
27 
28 class TGTab;
29 class TGStatusBar;
30 class TGListTree;
31 class TGListTreeItem;
32 class TGStatusBar;
33 class TGWindow;
34 
35 class TGLViewer;
36 
37 class TEveSelection;
39 class TEveBrowser;
40 class TEveGedEditor;
41 
42 class TEveViewer; class TEveViewerList;
43 class TEveScene; class TEveSceneList;
44 
45 class TEveEventManager;
46 class TEveWindowManager;
47 
48 
50 {
51  TEveManager(const TEveManager&); // Not implemented
52  TEveManager& operator=(const TEveManager&); // Not implemented
53 
54 public:
56  {
57  private:
58  TRedrawDisabler(const TRedrawDisabler&); // Not implemented
59  TRedrawDisabler& operator=(const TRedrawDisabler&); // Not implemented
60 
62  public:
64  { if (fMgr) fMgr->DisableRedraw(); }
65  virtual ~TRedrawDisabler()
66  { if (fMgr) fMgr->EnableRedraw(); }
67 
68  ClassDef(TRedrawDisabler, 0); // Exception-safe EVE redraw-disabler.
69  };
70 
72  {
73  public:
75  virtual ~TExceptionHandler() { Remove(); }
76 
77  virtual EStatus Handle(std::exception& exc);
78 
79  ClassDef(TExceptionHandler, 0); // Exception handler for Eve exceptions.
80  };
81 
82 protected:
84 
88 
91 
94 
96 
100 
104 
112 
113  // Fine grained scene updates.
115 
116  // Selection / hihglight elements
119 
122 
123 public:
124  TEveManager(UInt_t w, UInt_t h, Bool_t map_window=kTRUE, Option_t* opt="FI");
125  virtual ~TEveManager();
126 
128 
129  TEveSelection* GetSelection() const { return fSelection; }
130  TEveSelection* GetHighlight() const { return fHighlight; }
131 
135  void ClearOrphanage();
136 
137  TEveBrowser* GetBrowser() const { return fBrowser; }
139  TEveGedEditor* GetEditor() const;
140  TGStatusBar* GetStatusBar() const;
141 
143 
144  TEveSceneList* GetScenes() const { return fScenes; }
145  TEveViewerList* GetViewers() const { return fViewers; }
146 
147  TEveScene* GetGlobalScene() const { return fGlobalScene; }
148  TEveScene* GetEventScene() const { return fEventScene; }
150 
152 
153  TCanvas* AddCanvasTab(const char* name);
154  TGWindow* GetMainWindow() const;
155  TEveViewer* GetDefaultViewer() const;
156  TGLViewer* GetDefaultGLViewer() const;
157  TEveViewer* SpawnNewViewer(const char* name, const char* title="", Bool_t embed=kTRUE);
158  TEveScene* SpawnNewScene(const char* name, const char* title="");
159 
160  TFolder* GetMacroFolder() const { return fMacroFolder; }
161  TMacro* GetMacro(const char* name) const;
162 
163  void EditElement(TEveElement* element);
164 
167 
168  void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
169  {
171  if (resetCameras) fResetCameras = kTRUE;
172  if (dropLogicals) fDropLogicals = kTRUE;
173  }
174  void RegisterRedraw3D();
175  void DoRedraw3D();
176  void FullRedraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE);
177 
180 
181  void ElementChanged(TEveElement* element, Bool_t update_scenes=kTRUE, Bool_t redraw=kFALSE);
182  void ScenesChanged(TEveElement::List_t& scenes);
183 
184  // Fine grained updates via stamping.
185  void ElementStamped(TEveElement* element);
186 
187  // These are more like TEveManager stuff.
188  TGListTree* GetListTree() const;
190  void RemoveFromListTree(TEveElement* element, TGListTree* lt, TGListTreeItem* lti);
191 
193 
194  void AddElement(TEveElement* element, TEveElement* parent=0);
195  void AddGlobalElement(TEveElement* element, TEveElement* parent=0);
196 
197  void RemoveElement(TEveElement* element, TEveElement* parent);
198  void PreDeleteElement(TEveElement* element);
199 
200  void ElementSelect(TEveElement* element);
201  Bool_t ElementPaste(TEveElement* element);
202 
203  // VizDB - Visualization-parameter data-base.
204  Bool_t InsertVizDBEntry(const TString& tag, TEveElement* model,
205  Bool_t replace, Bool_t update);
206  Bool_t InsertVizDBEntry(const TString& tag, TEveElement* model);
207  TEveElement* FindVizDBEntry (const TString& tag);
208 
209  void LoadVizDB(const TString& filename, Bool_t replace, Bool_t update);
210  void LoadVizDB(const TString& filename);
211  void SaveVizDB(const TString& filename);
212 
214  Bool_t GetVizDBUpdate () const { return fVizDBUpdate; }
217 
218 
219  // Geometry management.
220  TGeoManager* GetGeometry(const TString& filename);
221  TGeoManager* GetGeometryByAlias(const TString& alias);
223  void RegisterGeometryAlias(const TString& alias, const TString& filename);
224 
225  void SetStatusLine(const char* text);
226  void ClearROOTClassSaved();
227 
228  void CloseEveWindow();
229 
230  static TEveManager* Create(Bool_t map_window=kTRUE, Option_t* opt="FIV");
231  static void Terminate();
232 
233  // Access to internals, needed for low-level control in advanced
234  // applications.
235 
237 
239 
240  ClassDef(TEveManager, 0); // Eve application manager.
241 };
242 
244 
245 #endif
TEveManager::fRedrawDisabled
Int_t fRedrawDisabled
Definition: TEveManager.h:105
m
auto * m
Definition: textangle.C:8
TEveManager::GetUseOrphanage
Bool_t GetUseOrphanage() const
Definition: TEveManager.h:133
TEveManager::TExceptionHandler
Exception handler for Eve exceptions.
Definition: TEveManager.h:72
TEveManager::fCurrentEvent
TEveEventManager * fCurrentEvent
Definition: TEveManager.h:103
TEveManager::fRedrawTimer
TTimer fRedrawTimer
Definition: TEveManager.h:111
TEveManager::fMacroFolder
TFolder * fMacroFolder
Definition: TEveManager.h:95
TGWindow
ROOT GUI Window base class.
Definition: TGWindow.h:23
TEveManager::GetWindowManager
TEveWindowManager * GetWindowManager() const
Definition: TEveManager.h:142
TEveManager::GetMacroFolder
TFolder * GetMacroFolder() const
Definition: TEveManager.h:160
TEveElement
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:36
kTRUE
const Bool_t kTRUE
Definition: RtypesCore.h:100
TEveManager::GetListTree
TGListTree * GetListTree() const
Get default list-tree widget.
Definition: TEveManager.cxx:479
TEveManager::SetUseOrphanage
void SetUseOrphanage(Bool_t o)
Definition: TEveManager.h:134
TEveManager::EnforceTimerActive
void EnforceTimerActive(Bool_t ta)
Definition: TEveManager.h:236
Option_t
const char Option_t
Definition: RtypesCore.h:66
TEveManager::GetHighlight
TEveSelection * GetHighlight() const
Definition: TEveManager.h:130
TEveWindowManager
Manager for EVE windows.
Definition: TEveWindowManager.h:23
TEveManager::fDropLogicals
Bool_t fDropLogicals
Definition: TEveManager.h:108
TEveManager::TRedrawDisabler::TRedrawDisabler
TRedrawDisabler(TEveManager *m)
Definition: TEveManager.h:63
TEveManager::fOrphanage
TEveElementList * fOrphanage
Definition: TEveManager.h:120
TEveScene
Eve representation of TGLScene.
Definition: TEveScene.h:27
TEveManager::fVizDB
TMap * fVizDB
Definition: TEveManager.h:85
TEveManager::GetDefaultGeometry
TGeoManager * GetDefaultGeometry()
Get the default geometry.
Definition: TEveManager.cxx:835
TFolder
A TFolder object is a collection of objects and folders.
Definition: TFolder.h:30
TEveManager::GetViewers
TEveViewerList * GetViewers() const
Definition: TEveManager.h:145
TEveManager::GetGlobalScene
TEveScene * GetGlobalScene() const
Definition: TEveManager.h:147
TEveManager::GetOrphanage
TEveElementList * GetOrphanage() const
Definition: TEveManager.h:132
r
ROOT::R::TRInterface & r
Definition: Object.C:4
TEveManager::TRedrawDisabler::operator=
TRedrawDisabler & operator=(const TRedrawDisabler &)
TEveManager::SetStatusLine
void SetStatusLine(const char *text)
Set the text in the right side of browser's status bar.
Definition: TEveManager.cxx:854
TEveManager::Terminate
static void Terminate()
Properly terminate global TEveManager.
Definition: TEveManager.cxx:923
TEveManager::GetVizDBUpdate
Bool_t GetVizDBUpdate() const
Definition: TEveManager.h:214
TEveManager::GetExcHandler
TExceptionHandler * GetExcHandler() const
Definition: TEveManager.h:127
TEveManager::ElementSelect
void ElementSelect(TEveElement *element)
Select an element.
Definition: TEveManager.cxx:586
TEveGedEditor
Specialization of TGedEditor for proper update propagation to TEveManager.
Definition: TEveGedEditor.h:27
TEveManager::DoRedraw3D
void DoRedraw3D()
Perform 3D redraw of scenes and viewers whose contents has changed.
Definition: TEveManager.cxx:374
TEveManager::SpawnNewViewer
TEveViewer * SpawnNewViewer(const char *name, const char *title="", Bool_t embed=kTRUE)
Create a new GL viewer.
Definition: TEveManager.cxx:302
TEveManager::GetEditor
TEveGedEditor * GetEditor() const
Returns main object editor.
Definition: TEveManager.cxx:274
TGListTree
A list tree is a widget that can contain a number of items arranged in a tree structure.
Definition: TGListTree.h:195
event
Definition: triangle.c:553
TEveManager::GetVizDBReplace
Bool_t GetVizDBReplace() const
Definition: TEveManager.h:213
TStdExceptionHandler::Remove
virtual void Remove()
Remove std::exception handler from system handler list.
Definition: TSysEvtHandler.cxx:220
TEveElement.h
TEveManager::GetDefaultGLViewer
TGLViewer * GetDefaultGLViewer() const
Get TGLViewer of the default TEveViewer.
Definition: TEveManager.cxx:265
TEveManager::SpawnNewScene
TEveScene * SpawnNewScene(const char *name, const char *title="")
Create a new scene.
Definition: TEveManager.cxx:336
TTimer.h
TEveManager::GetSelection
TEveSelection * GetSelection() const
Definition: TEveManager.h:129
TStdExceptionHandler::Add
virtual void Add()
Add std::exception handler to system handler list.
Definition: TSysEvtHandler.cxx:209
TString
Basic string class.
Definition: TString.h:136
ROOT::Math::detail::open
@ open
Definition: GenVectorIO.h:35
TEveManager::ScenesChanged
void ScenesChanged(TEveElement::List_t &scenes)
Mark all scenes from the given list as changed.
Definition: TEveManager.cxx:458
TEveSceneList
List of Scenes providing common operations on TEveScene collections.
Definition: TEveScene.h:80
Bool_t
bool Bool_t
Definition: RtypesCore.h:63
text
TText * text
Definition: entrylist_figure1.C:10
TEveElementList
A list of TEveElements.
Definition: TEveElement.h:433
gEve
R__EXTERN TEveManager * gEve
Definition: TEveManager.h:243
TEveManager::EnableRedraw
void EnableRedraw()
Definition: TEveManager.h:166
bool
TEveManager::GetMacro
TMacro * GetMacro(const char *name) const
Find macro in fMacroFolder by name.
Definition: TEveManager.cxx:346
TEveManager::GetStatusBar
TGStatusBar * GetStatusBar() const
Returns main window status bar.
Definition: TEveManager.cxx:282
TGStatusBar
Provides a StatusBar widget.
Definition: TGStatusBar.h:21
TEveManager::fResetCameras
Bool_t fResetCameras
Definition: TEveManager.h:107
TEveManager::CloseEveWindow
void CloseEveWindow()
Close button has been clicked on EVE main window (browser).
Definition: TEveManager.cxx:876
TEveManager::fSelection
TEveSelection * fSelection
Definition: TEveManager.h:117
TEveManager::fUseOrphanage
Bool_t fUseOrphanage
Definition: TEveManager.h:121
update
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
Definition: RooAdaptiveGaussKronrodIntegrator1D.cxx:652
TEveManager::SetVizDBUpdate
void SetVizDBUpdate(Bool_t u)
Definition: TEveManager.h:216
TEveManager::GetDefaultViewer
TEveViewer * GetDefaultViewer() const
Returns the default viewer - the first one in the fViewers list.
Definition: TEveManager.cxx:257
TEveManager::InsertVizDBEntry
Bool_t InsertVizDBEntry(const TString &tag, TEveElement *model, Bool_t replace, Bool_t update)
Insert a new visualization-parameter database entry.
Definition: TEveManager.cxx:620
TEveViewer
Eve representation of TGLViewer.
Definition: TEveViewer.h:31
TEveManager::fStampedElements
TExMap * fStampedElements
Definition: TEveManager.h:114
TTimer
Handles synchronous and a-synchronous timer events.
Definition: TTimer.h:51
TEveManager::GetEventScene
TEveScene * GetEventScene() const
Definition: TEveManager.h:148
TEveManager::TEveManager
TEveManager(const TEveManager &)
TEveManager::~TEveManager
virtual ~TEveManager()
Destructor.
Definition: TEveManager.cxx:190
TEveManager::fBrowser
TEveBrowser * fBrowser
Definition: TEveManager.h:92
TGLViewer
Base GL viewer object - used by both standalone and embedded (in pad) GL.
Definition: TGLViewer.h:55
TEveManager::AddToListTree
TGListTreeItem * AddToListTree(TEveElement *re, Bool_t open, TGListTree *lt=0)
Definition: TEveManager.cxx:485
TEveManager::TRedrawDisabler::fMgr
TEveManager * fMgr
Definition: TEveManager.h:61
TEveManager::AddGlobalElement
void AddGlobalElement(TEveElement *element, TEveElement *parent=0)
Add a global element, i.e.
Definition: TEveManager.cxx:543
h
#define h(i)
Definition: RSha256.hxx:106
TEveEventManager
Base class for event management and navigation.
Definition: TEveEventManager.h:20
TEveManager::EditElement
void EditElement(TEveElement *element)
Show element in default editor.
Definition: TEveManager.cxx:354
TEveManager::TRedrawDisabler
Definition: TEveManager.h:56
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:101
TEveManager::FullRedraw3D
void FullRedraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
Perform 3D redraw of all scenes and viewers.
Definition: TEveManager.cxx:427
TEveManager::ElementStamped
void ElementStamped(TEveElement *element)
Mark element as changed – it will be processed on next redraw.
Definition: TEveManager.cxx:467
TEveManager::RemoveElement
void RemoveElement(TEveElement *element, TEveElement *parent)
Remove element from parent.
Definition: TEveManager.cxx:554
TEveManager::fViewers
TEveViewerList * fViewers
Definition: TEveManager.h:98
TEveManager::SaveVizDB
void SaveVizDB(const TString &filename)
Save visualization-parameter database to file filename.
Definition: TEveManager.cxx:716
TGTab
A tab widget contains a set of composite frames each with a little tab with a name (like a set of fol...
Definition: TGTab.h:46
TEveManager::TRedrawDisabler::~TRedrawDisabler
virtual ~TRedrawDisabler()
Definition: TEveManager.h:65
TVirtualPad.h
TEveManager
Central application manager for Eve.
Definition: TEveManager.h:50
TEveManager::fVizDBUpdate
Bool_t fVizDBUpdate
Definition: TEveManager.h:87
TStdExceptionHandler::EStatus
EStatus
Definition: TSysEvtHandler.h:175
TEveManager::TRedrawDisabler::TRedrawDisabler
TRedrawDisabler(const TRedrawDisabler &)
TEveViewerList
List of Viewers providing common operations on TEveViewer collections.
Definition: TEveViewer.h:80
TEveManager::fLTEFrame
TEveGListTreeEditorFrame * fLTEFrame
Definition: TEveManager.h:93
TEveManager::AddEvent
TGListTreeItem * AddEvent(TEveEventManager *event)
Add a new event and make it the current event.
Definition: TEveManager.cxx:515
TEveManager::PreDeleteElement
void PreDeleteElement(TEveElement *element)
Called from TEveElement prior to its destruction so the framework components (like object editor) can...
Definition: TEveManager.cxx:564
TEveManager::GetGeometryByAlias
TGeoManager * GetGeometryByAlias(const TString &alias)
Get geometry with given alias.
Definition: TEveManager.cxx:821
TEveManager::fHighlight
TEveSelection * fHighlight
Definition: TEveManager.h:118
TMacro
Class supporting a collection of lines with C++ code.
Definition: TMacro.h:31
unsigned int
TEveManager::fWindowManager
TEveWindowManager * fWindowManager
Definition: TEveManager.h:97
TEveBrowser
Specialization of TRootBrowser for Eve.
Definition: TEveBrowser.h:130
TEveManager::GetLTEFrame
TEveGListTreeEditorFrame * GetLTEFrame() const
Definition: TEveManager.h:138
TEveManager::ClearROOTClassSaved
void ClearROOTClassSaved()
Work-around uber ugly hack used in SavePrimitive and co.
Definition: TEveManager.cxx:862
TEveManager::AddElement
void AddElement(TEveElement *element, TEveElement *parent=0)
Add an element.
Definition: TEveManager.cxx:527
TEveManager::fGlobalScene
TEveScene * fGlobalScene
Definition: TEveManager.h:101
TCanvas
The Canvas class.
Definition: TCanvas.h:23
TEveManager::RegisterGeometryAlias
void RegisterGeometryAlias(const TString &alias, const TString &filename)
Register 'name' as an alias for geometry file 'filename'.
Definition: TEveManager.cxx:846
TEveManager::SetKeepEmptyCont
void SetKeepEmptyCont(Bool_t k)
Definition: TEveManager.h:179
TEveManager::FindVizDBEntry
TEveElement * FindVizDBEntry(const TString &tag)
Find a visualization-parameter database entry corresponding to tag.
Definition: TEveManager.cxx:678
TEveManager::fEventScene
TEveScene * fEventScene
Definition: TEveManager.h:102
TEveManager::GetMainWindow
TGWindow * GetMainWindow() const
Get the main window, i.e. EVE-browser.
Definition: TEveManager.cxx:249
TEveManager::fVizDBReplace
Bool_t fVizDBReplace
Definition: TEveManager.h:86
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
TEveManager::Redraw3D
void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
Definition: TEveManager.h:168
TEveManager::AddCanvasTab
TCanvas * AddCanvasTab(const char *name)
Add a new canvas tab.
Definition: TEveManager.cxx:290
TEveManager::SetCurrentEvent
void SetCurrentEvent(TEveEventManager *mgr)
Definition: TEveManager.h:151
TEveManager::fKeepEmptyCont
Bool_t fKeepEmptyCont
Definition: TEveManager.h:109
name
char name[80]
Definition: TGX11.cxx:110
TEveManager::fGeometryAliases
TMap * fGeometryAliases
Definition: TEveManager.h:90
TEveManager::GetGeometry
TGeoManager * GetGeometry(const TString &filename)
Get geometry with given filename.
Definition: TEveManager.cxx:762
TEveManager::GetScenes
TEveSceneList * GetScenes() const
Definition: TEveManager.h:144
TEveManager::RemoveFromListTree
void RemoveFromListTree(TEveElement *element, TGListTree *lt, TGListTreeItem *lti)
Remove top-level element from list-tree with specified tree-item.
Definition: TEveManager.cxx:499
TEveManager::fScenes
TEveSceneList * fScenes
Definition: TEveManager.h:99
TEveManager::fExcHandler
TExceptionHandler * fExcHandler
Definition: TEveManager.h:83
TEveManager::ClearOrphanage
void ClearOrphanage()
Clear the orphanage.
Definition: TEveManager.cxx:238
TEveManager::fTimerActive
Bool_t fTimerActive
Definition: TEveManager.h:110
TExMap
This class stores a (key,value) pair using an external hash.
Definition: TExMap.h:33
TEveElement::List_t
std::list< TEveElement * > List_t
Definition: TEveElement.h:71
R__EXTERN
#define R__EXTERN
Definition: DllImport.h:27
TEveGListTreeEditorFrame
Composite GUI frame for parallel display of a TGListTree and TEveGedEditor.
Definition: TEveBrowser.h:83
TEveManager::GetBrowser
TEveBrowser * GetBrowser() const
Definition: TEveManager.h:137
TEveManager::LoadVizDB
void LoadVizDB(const TString &filename, Bool_t replace, Bool_t update)
Load visualization-parameter database from file filename.
Definition: TEveManager.cxx:689
TEveManager::ElementPaste
Bool_t ElementPaste(TEveElement *element)
Paste has been called.
Definition: TEveManager.cxx:595
TEveManager::GetKeepEmptyCont
Bool_t GetKeepEmptyCont() const
Definition: TEveManager.h:178
TEveManager::fFullRedraw
Bool_t fFullRedraw
Definition: TEveManager.h:106
TEveManager::fGeometries
TMap * fGeometries
Definition: TEveManager.h:89
TEveManager::RegisterRedraw3D
void RegisterRedraw3D()
Register a request for 3D redraw.
Definition: TEveManager.cxx:364
TGListTreeItem
Definition: TGListTree.h:27
TGeoManager
The manager class for any TGeo geometry.
Definition: TGeoManager.h:45
TEveManager::TExceptionHandler::~TExceptionHandler
virtual ~TExceptionHandler()
Definition: TEveManager.h:75
TEveManager::DisableRedraw
void DisableRedraw()
Definition: TEveManager.h:165
TEveManager::ElementChanged
void ElementChanged(TEveElement *element, Bool_t update_scenes=kTRUE, Bool_t redraw=kFALSE)
Element was changed, perform framework side action.
Definition: TEveManager.cxx:437
TEveManager::SetVizDBReplace
void SetVizDBReplace(Bool_t r)
Definition: TEveManager.h:215
TEveSelection
Make sure there is a SINGLE running TEveSelection for each selection type (select/highlight).
Definition: TEveSelection.h:23
TEveManager::TExceptionHandler::TExceptionHandler
TExceptionHandler()
Definition: TEveManager.h:74
TStdExceptionHandler
Definition: TSysEvtHandler.h:172
TEveManager::TExceptionHandler::Handle
virtual EStatus Handle(std::exception &exc)
Handle exceptions deriving from TEveException.
Definition: TEveManager.cxx:944
TEveManager::operator=
TEveManager & operator=(const TEveManager &)
TEveManager::PtrToStampedElements
TExMap * PtrToStampedElements()
Definition: TEveManager.h:238
int
TEveManager::Create
static TEveManager * Create(Bool_t map_window=kTRUE, Option_t *opt="FIV")
If global TEveManager* gEve is not set initialize it.
Definition: TEveManager.cxx:892
TMap
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
TSysEvtHandler.h
TEveManager::GetCurrentEvent
TEveEventManager * GetCurrentEvent() const
Definition: TEveManager.h:149