Analysis  version 7.0 - august 2014
GEVPage.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GEVPage.hh
3  *
4  * Déclaration des méthodes de la classe GEVPage, qui définit
5  * une page de spectres pour l'analyse.
6  */
7 //======================================================================
8 
9 
10 #ifndef GEV_PAGE_HH
11 #define GEV_PAGE_HH
12 
13 #define GEV_PAGE_DEFAULT_WIDTH 800 ///< Largeur par défaut des pages de spectres
14 #define GEV_PAGE_DEFAULT_HEIGHT 600 ///< Hauteur par défaut des pages de spectres
15 
16 // includes Event
17 #include "GEVPageProperties.hh"
18 #include "SpectrumList.hh"
19 #include "GEVPad.hh"
20 #include "GEVPreferences.hh"
21 #include "GEVPadContour.hh"
22 
23 // includes ROOT
24 #include <TGFrame.h>
25 #include <TRootEmbeddedCanvas.h>
26 #include <TCanvas.h>
27 #include <TGMenu.h>
28 
29 //======================================================================
30 /*! \class GEVPage
31  *
32  * Page de spectres pour l'interface graphique. La page n'est pas
33  * "propriétaire" des spectres, et ne les détruit pas lorsqu'elle
34  * est détruite.
35  *
36  * Les pages disposent de leur propre barre de menus, ainsi que d'un
37  * menu contextuel qui correspond aux pads, et les menus conxtuels
38  * des objets Root sont bloqués, ce qui permet de limiter les actions
39  * utilisateur dans les pages.
40  */
41 
42 class GEVPage : public GNamed, public GEVPageProperties, public GListT<GEVPad>, public TGMainFrame
43 {
44  friend class GEVPageManager;
45 
46 //----------------------------------------------------------------------
47  /*! \object_doc */
49 //----------------------------------------------------------------------
50 
51  /// Itérateur des pads de la collection (liste)
52  typedef GListIterT<GEVPad> iterator;
53 
54 
55  /// Identification des menus
56  enum PageMenus
57  {
58  // menu page
59  menuPageSave = 0x00000001,
60  menuPageExport = 0x00000002,
61  menuPageExportPs = 0x00000100,
62  menuPageExportEps = 0x00000101,
63  menuPageExportGif = 0x00000102,
64  menuPageExportCpp = 0x00000103,
65  menuPageExportRoot = 0x00000104,
66  menuPagePrint = 0x00000003,
67  menuPageNewPad = 0x00000004,
68  menuPageDivide = 0x00000005,
69 
70  // menu display
71  menuPageRefresh = 0x00001000,
72  menuPageSetStat = 0x00001001,
73  menuPageNoStat = 0x00001002,
74 
75  menuPagePlotsRange = 0x00001003,
76  menuPagePlotsOpts = 0x00001004,
77  menuPagePlotsSelect = 0x00001005,
78 
79  menuPageProperties = 0x00001006,
80  menuPageHide = 0x00001007,
81 
82  // menu contextuel page
83  menuContextPageNewPad = 0x01000000,
84 
85  // menu contextuel pad
86  menuContextPadUnzoom = 0x02000000,
87  menuContextPadXLog = 0x02000001,
88  menuContextPadYLog = 0x02000002,
89  menuContextPadZLog = 0x02000003,
90  menuContextPadAutoX = 0x02000004,
91  menuContextPadAutoY = 0x02000005,
92  menuContextPadAutoZ = 0x02000006,
93  menuContextPadAxis = 0x02000007,
94  // sous-menu statistiques
95  menuContextPadStatShow = 0x02100000,
96  menuContextPadStatAll = 0x02100001,
97  menuContextPadStatNone = 0x02100002,
98  menuContextPadStatEntries = 0x02100003,
99  menuContextPadStatMean = 0x02100004,
100  menuContextPadStatRMS = 0x02100005,
101  menuContextPadStatCont = 0x02100006,
102  // sous-menu spectres
103  menuContextPadSpecProp = 0x02200000,
104  menuContextPadSpecSelect = 0x02200001,
105  // sous-menu contours
106  menuContextPadContDisplay = 0x02300000,
107  menuContextPadContReset = 0x02300001,
108  // sous-menu outils
109  menuContextPadFitError = 0x02400000,
110  menuContextPadFitPeak = 0x02400001,
111  menuContextPadFitDecay = 0x02400002,
112 
113  // pad
114  menuContextPadExportAs = 0x02000010,
115  menuContextPadProperties = 0x02000020,
116  menuContextPadDivide = 0x02000030,
117  menuContextPadDelete = 0x02000040
118  };
119 
120  /// Identification du contexte des événements dans la page
122  {
123  contextDefault = 0,
124  contextNewPad = 1
125  };
126 
127  protected:
128  GEVPageManager * parent; ///< Pointeur sur la liste de pages associéeb8a@
129 
130  UInt_t init_x; ///< Position X de la page à sa création
131  UInt_t init_y; ///< Position Y de la page à sa création
132  UInt_t width_diff; ///< Différence de taille entre le canevas et la fenêtre
133  UInt_t height_diff; ///< Différence de taille entre le canevas et la fenêtre
134 
135  TRootEmbeddedCanvas * canvas; ///< Pointeur sur le canevas ROOT associé9f465b@
136 
137  static UInt_t page_pos_x; ///< Position en x de la dernière page créée
138  static UInt_t page_pos_y; ///< Position en y de la dernière page créée
139 
140  static bool fit_error; ///< Teste le menu de fit avec histogramme d'erreur
141 
142  bool constructed; ///< Teste si la page est déjà construite
143 
144  // widgets des pages
145  TGMenuBar * w_page_menu_bar; ///< Barre de menu des pages
146  TGPopupMenu * w_page_menu_page; ///< Menu des actions sur la page
147  TGPopupMenu * w_page_menu_display; ///< Menu des réglages et options d'affichage
148 
149  TGPopupMenu * w_page_export_menu; ///< Menu d'exportation des pages
150 
151  UInt_t w_context_mode; ///< Contexte des actions dans la page
152  GEVPad * w_context_pad; ///< Pointeur sur la zone concernée par les actions
153 
154  TGPopupMenu * w_page_context_menu; ///< Menu contextuel de fond de page
155 
156  TGPopupMenu * w_pad_context_menu; ///< Menu contextuel (pour les Pads)
157  TGPopupMenu * w_pad_context_menu_stat; ///< Sous-menu contextuel: statistiques
158  TGPopupMenu * w_pad_context_menu_spec; ///< Sous-menu contextuel: spectres
159  TGPopupMenu * w_pad_context_menu_cont; ///< Sous-menu contextuel: contours
160  TGPopupMenu * w_pad_context_menu_tools; ///< Sous-menu contextuel: outils
161 
162  static string file_name; ///< nom de fichier de page
163  static string export_name; ///< nom de fichier exportéans la page
164 
165  public:
166 
167 //----------------------------------------------------------------------
168 // CONSTRUCTEUR / AFFECTATION / DESTRUCTEUR
169 
170  // Constructeurs
172  const string & title,
173  const UInt_t nx,
174  const UInt_t ny,
175  const Int_t w = GEVPreferences::page_width,
176  const Int_t h = GEVPreferences::page_height );
177 
178  // Constructeur de recopie
179  GEVPage ( const GEVPage & original );
180 
181  // Destructeur
182  virtual ~GEVPage ( );
183 
184  protected:
185 
186  virtual void ResetExportMenu ();
187 
188  // Création des pads par défaut
189  virtual void SetDefaultPads ( const UInt_t nx, const UInt_t ny, const UInt_t n );
190 
191  virtual void DeleteSpectrumPad ( );
192  virtual void UpdatePadNames ( );
193 
194  public:
195  // Construction effective de la page
196  virtual void Construct ();
197 
198  /*! Redéfinition de la fonction pour GNamedListT (pour liste pouvant être triée).
199  * C'est le résultat de GNamed::Compare.
200  * \param obj page à comparer
201  */
202  inline virtual int Compare ( const GEVPage &obj ) const
203  { return (GNamed::Compare(obj)); }
204 
205 
206  virtual GEVPad * AddPad ( const Double_t x0 = 0.,
207  const Double_t x1 = 1.,
208  const Double_t y0 = 0.,
209  const Double_t y1 = 1.,
210  const GEVPad *after = NULL );
211 
212  virtual GEVPad * AddPad ( GEVPad * new_pad,
213  const GEVPad * after = NULL );
214 
215  virtual void DividePage ( const UInt_t nx, const UInt_t ny );
216 
217  virtual void DividePad ( const UInt_t pad_num, const UInt_t nx, const UInt_t ny );
218  virtual void DividePad ( GEVPad * pad, const UInt_t nx, const UInt_t ny );
219 
220 //----------------------------------------------------------------------
221 // METHODES DE BASE
222 
223  GEVPageManager * GetPageManager ( ) const;
224  GEVPad * GetPadPtr ( const UInt_t num );
225  UInt_t GetPadNumber ( ) const;
226  TCanvas * GetCanvas ( ) const;
227  string GetPageName ( ) const;
228 
229 //----------------------------------------------------------------------
230 // AFFICHAGE DES PAGES
231 
232  virtual void SetPadGeometry ( const UInt_t pad, const Double_t x0, const Double_t x1, const Double_t y0, const Double_t y1 );
233  virtual void SetPadMargins ( const UInt_t pad, const Double_t xmgl, const Double_t xmgr, const Double_t ymgu, const Double_t ymgd );
234 
235 
236  // mise à jour de la page
237  virtual void Update ( ) const;
238 
239  // afficher/ferme une page (sans la détruire)
240  virtual void Show ( );
241  virtual void Hide ( );
242  virtual void ResizePage ( const UInt_t w, const UInt_t h);
243 
244  virtual bool CheckName ( const string &page_name );
245  virtual bool Rename ( const string &page_name );
246  virtual string GetExportName ( );
247 
248  // fermeture définitive (destruction de la page)
249  virtual void ClosePage ( );
250 
251  virtual GEVPlot * AddSpectrum ( const UInt_t pad, const string &spec_name );
252  virtual void RemoveSpectrum ( const Spectrum *sp );
253  virtual bool UsesSpectrum ( const Spectrum *sp ) const;
254 
255  virtual GEVPadContour * AddContour ( const UInt_t pad, const string &ct_name, const Int_t mode = GEVPadContour::ctDrawNormal );
256  virtual void RemoveContour ( const RContour *ct );
257  virtual bool UsesContour ( const RContour *ct ) const;
258  virtual void ResetContourCounts ( ) const;
259  virtual void IncrementContourCounts ( ) const;
260 
261 //----------------------------------------------------------------------
262 // SLOTS ET FONCTIONS DES MENUS
263 
264  // traitement des événements: menus
265  virtual void ProcessedEvent ( Int_t event, Int_t x, Int_t y, TObject * selected );
266  virtual void SetContextEventPad ( Int_t x, Int_t y );
267  virtual void ProcessDefaultEvent ( Int_t event, Int_t x, Int_t y, TObject * selected );
268  virtual void ProcessPosition ( Int_t event, Int_t x, Int_t y, TObject * selected, TH1 * hi_ptr );
269  virtual void ProcessNewPadEvent ( Int_t event, Int_t x, Int_t y, TObject * selected );
270 
271  virtual void MenuActivated ( Int_t menu );
272 
273  virtual void PadMenuFitPeak ( );
274  virtual void PadMenuFitDecay ( );
275  virtual void PadMenuFitSelectSpec1D ( Spectrum *& sp_fit, Spectrum *& sp_err );
276 
277  virtual void SavePage ( );
278  virtual void ExportPage ( );
279  virtual void PrintPage ( );
280  virtual void DoPageRefresh ( );
281  virtual void PageSetStat ( );
282  virtual void PageSetNoStat ( );
283 
284  virtual void PageSetPlotsRange ( );
285  virtual void PageSetPlotsOpts ( );
286  virtual void PageSetPlotsSelect ( );
287 
288 //----------------------------------------------------------------------
289 // ENTREES/SORTIE DES PAGES
290 
291  virtual bool Write ( FILE * fptr ) const;
292  virtual bool WriteProperties ( FILE * fptr ) const;
293 
294  static GEVPage * Read ( FILE * fptr, GEVPageManager *pg_mgr );
295  virtual bool ReadProperties ( FILE * fptr );
296 
297  virtual bool Save ( const string & f_name ) const;
298 
299 //----------------------------------------------------------------------
300 // pour ROOT...
301  public:
302  /*! Définition à usage de ROOT... */
303  ClassDef(GEVPage,0);
304 } ;
305 
306 
307 //----------------------------------------------------------------------
308 // METHODES INLINE
309 
310 /*! Retourne le pointeur sur le gestionnaire de pages.
311  */
313  { return ( parent ); }
314 
315 /*! Retourne le nombre de zones graphiques de la page.
316  */
317 inline UInt_t GEVPage::GetPadNumber ( ) const
318  { return (GListT<GEVPad>::GetSize()); }
319 
320 /*! Retourne un pointeur sur un des pads de la page.
321  * \param num numéro du pad
322  */
323 inline GEVPad * GEVPage::GetPadPtr ( const UInt_t num )
324  { return ( Goto(num) ); }
325 // { return ( (num < GListT<GEVPad>::GetSize()) ? Goto(num) : NULL ); }
326 
327 
328 /*! Retourne le TCanvas associé à la page.
329  */
330 inline TCanvas * GEVPage::GetCanvas ( ) const
331  { return (canvas->GetCanvas()); }
332 
333 /*! Retourne le nom de la page.*/
334 inline string GEVPage::GetPageName ( ) const
335  { return (GNamed::GetName()); }
336 
337 //======================================================================
338 #endif
virtual void IncrementContourCounts() const
Definition: GEVPage.cpp:1029
virtual void ProcessedEvent(Int_t event, Int_t x, Int_t y, TObject *selected)
Definition: GEVPage.cpp:1446
virtual bool CheckName(const string &page_name)
Definition: GEVPage.cpp:852
GEVPage(GEVPageManager *parent, const string &title, const UInt_t nx, const UInt_t ny, const Int_t w=GEVPreferences::page_width, const Int_t h=GEVPreferences::page_height)
Definition: GEVPage.cpp:59
PageMenus
Identification des menus.
Definition: GEVPage.hh:56
virtual bool Save(const string &f_name) const
Definition: GEVPage.cpp:2786
Definition: GEVPage.hh:42
static UInt_t page_height
Hauteur des pages.
Definition: GEVPreferences.hh:124
static UInt_t page_width
Largeur des pages.
Definition: GEVPreferences.hh:123
virtual void SetDefaultPads(const UInt_t nx, const UInt_t ny, const UInt_t n)
Definition: GEVPage.cpp:394
virtual int Compare(const GEVPage &obj) const
Definition: GEVPage.hh:202
virtual void PadMenuFitPeak()
Definition: GEVPage.cpp:2033
virtual void DoPageRefresh()
Definition: GEVPage.cpp:2331
UInt_t w_context_mode
Contexte des actions dans la page.
Definition: GEVPage.hh:151
TGPopupMenu * w_pad_context_menu
Menu contextuel (pour les Pads)
Definition: GEVPage.hh:156
virtual void DeleteSpectrumPad()
Definition: GEVPage.cpp:437
TGPopupMenu * w_page_menu_page
Menu des actions sur la page.
Definition: GEVPage.hh:146
virtual GEVPlot * AddSpectrum(const UInt_t pad, const string &spec_name)
Definition: GEVPage.cpp:917
virtual void ResetContourCounts() const
Definition: GEVPage.cpp:1018
virtual void ProcessNewPadEvent(Int_t event, Int_t x, Int_t y, TObject *selected)
Definition: GEVPage.cpp:1927
GEVPageManager * parent
Pointeur sur la liste de pages associée
Definition: GEVPage.hh:128
TGPopupMenu * w_page_export_menu
Menu d&#39;exportation des pages.
Definition: GEVPage.hh:149
virtual void Show()
Definition: GEVPage.cpp:806
Definition: GEVPadContour.hh:49
virtual void Hide()
Definition: GEVPage.cpp:819
TRootEmbeddedCanvas * canvas
Pointeur sur le canevas ROOT associé
Definition: GEVPage.hh:135
virtual ~GEVPage()
Definition: GEVPage.cpp:104
virtual bool Write(FILE *fptr) const
Definition: GEVPage.cpp:2485
static UInt_t page_pos_x
Position en x de la dernière page créée
Definition: GEVPage.hh:137
Definition: Spectrum.hh:222
virtual void PageSetNoStat()
Definition: GEVPage.cpp:2355
virtual GEVPadContour * AddContour(const UInt_t pad, const string &ct_name, const Int_t mode=GEVPadContour::ctDrawNormal)
Definition: GEVPage.cpp:969
GEVPad * w_context_pad
Pointeur sur la zone concernée par les actions.
Definition: GEVPage.hh:152
virtual void PageSetPlotsOpts()
Definition: GEVPage.cpp:2377
TGPopupMenu * w_page_menu_display
Menu des réglages et options d&#39;affichage.
Definition: GEVPage.hh:147
virtual void DividePage(const UInt_t nx, const UInt_t ny)
Definition: GEVPage.cpp:542
Definition: GEVPageManager.hh:96
virtual void MenuActivated(Int_t menu)
Definition: GEVPage.cpp:1045
UInt_t init_x
Position X de la page à sa création.
Definition: GEVPage.hh:130
virtual string GetExportName()
Definition: GEVPage.cpp:905
virtual void SetContextEventPad(Int_t x, Int_t y)
Definition: GEVPage.cpp:1473
virtual void Construct()
Definition: GEVPage.cpp:114
virtual void ResizePage(const UInt_t w, const UInt_t h)
Definition: GEVPage.cpp:834
virtual void RemoveContour(const RContour *ct)
Definition: GEVPage.cpp:984
virtual void RemoveSpectrum(const Spectrum *sp)
Definition: GEVPage.cpp:932
virtual void PadMenuFitSelectSpec1D(Spectrum *&sp_fit, Spectrum *&sp_err)
Definition: GEVPage.cpp:2149
virtual void ClosePage()
Definition: GEVPage.cpp:781
GEVPad * GetPadPtr(const UInt_t num)
Definition: GEVPage.hh:323
Definition: GEVPad.hh:62
virtual void PrintPage()
Definition: GEVPage.cpp:2275
virtual void PageSetPlotsRange()
Definition: GEVPage.cpp:2368
virtual bool WriteProperties(FILE *fptr) const
Definition: GEVPage.cpp:2516
UInt_t height_diff
Différence de taille entre le canevas et la fenêtre.
Definition: GEVPage.hh:133
UInt_t init_y
Position Y de la page à sa création.
Definition: GEVPage.hh:131
static string export_name
nom de fichier exporté
Definition: GEVPage.hh:163
Definition: GEVPageProperties.hh:28
static bool fit_error
Teste le menu de fit avec histogramme d&#39;erreur.
Definition: GEVPage.hh:140
GObject(GEVPage)
virtual void ProcessPosition(Int_t event, Int_t x, Int_t y, TObject *selected, TH1 *hi_ptr)
Definition: GEVPage.cpp:1827
virtual void PadMenuFitDecay()
Definition: GEVPage.cpp:2101
virtual void ResetExportMenu()
Definition: GEVPage.cpp:369
virtual bool UsesSpectrum(const Spectrum *sp) const
Definition: GEVPage.cpp:945
virtual void ProcessDefaultEvent(Int_t event, Int_t x, Int_t y, TObject *selected)
Definition: GEVPage.cpp:1530
static UInt_t page_pos_y
Position en y de la dernière page créée
Definition: GEVPage.hh:138
virtual void Update() const
Definition: GEVPage.cpp:747
TGPopupMenu * w_page_context_menu
Menu contextuel de fond de page.
Definition: GEVPage.hh:154
virtual bool Rename(const string &page_name)
Definition: GEVPage.cpp:875
virtual void PageSetPlotsSelect()
Definition: GEVPage.cpp:2387
GListIterT< GEVPad > iterator
Itérateur des pads de la collection (liste)
Definition: GEVPage.hh:52
virtual void SetPadGeometry(const UInt_t pad, const Double_t x0, const Double_t x1, const Double_t y0, const Double_t y1)
Definition: GEVPage.cpp:715
virtual void PageSetStat()
Definition: GEVPage.cpp:2343
UInt_t GetPadNumber() const
Definition: GEVPage.hh:317
static GEVPage * Read(FILE *fptr, GEVPageManager *pg_mgr)
Definition: GEVPage.cpp:2543
TGMenuBar * w_page_menu_bar
Barre de menu des pages.
Definition: GEVPage.hh:145
virtual void ExportPage()
Definition: GEVPage.cpp:2238
string GetPageName() const
Definition: GEVPage.hh:334
virtual void DividePad(const UInt_t pad_num, const UInt_t nx, const UInt_t ny)
Definition: GEVPage.cpp:622
TGPopupMenu * w_pad_context_menu_cont
Sous-menu contextuel: contours.
Definition: GEVPage.hh:159
virtual bool UsesContour(const RContour *ct) const
Definition: GEVPage.cpp:997
PageContext
Identification du contexte des événements dans la page.
Definition: GEVPage.hh:121
Definition: GEVPlot.hh:40
TCanvas * GetCanvas() const
Definition: GEVPage.hh:330
UInt_t width_diff
Différence de taille entre le canevas et la fenêtre.
Definition: GEVPage.hh:132
GEVPageManager * GetPageManager() const
Definition: GEVPage.hh:312
ClassDef(GEVPage, 0)
bool constructed
Teste si la page est déjà construite.
Definition: GEVPage.hh:142
virtual void UpdatePadNames()
Definition: GEVPage.cpp:517
static string file_name
nom de fichier de page
Definition: GEVPage.hh:162
virtual void SavePage()
Definition: GEVPage.cpp:2187
virtual GEVPad * AddPad(const Double_t x0=0., const Double_t x1=1., const Double_t y0=0., const Double_t y1=1., const GEVPad *after=NULL)
Definition: GEVPage.cpp:467
TGPopupMenu * w_pad_context_menu_spec
Sous-menu contextuel: spectres.
Definition: GEVPage.hh:158
TGPopupMenu * w_pad_context_menu_tools
Sous-menu contextuel: outils.
Definition: GEVPage.hh:160
virtual bool ReadProperties(FILE *fptr)
Definition: GEVPage.cpp:2668
TGPopupMenu * w_pad_context_menu_stat
Sous-menu contextuel: statistiques.
Definition: GEVPage.hh:157
virtual void SetPadMargins(const UInt_t pad, const Double_t xmgl, const Double_t xmgr, const Double_t ymgu, const Double_t ymgd)
Definition: GEVPage.cpp:732