Analysis  version 7.0 - august 2014
GEVPad.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GEVPad.hh
3  *
4  * Déclaration des méthodes de la classe GEVPad, qui gère les
5  * spectres associés à une zone graphique (Pad).
6  *
7  * mise à jour: 14 septembre 2009
8  * - nouveau modes de tracé (Root2.9 : classe RGHistoPlotModeSelect)
9  * - prise en compte des spectres 3D
10  */
11 //======================================================================
12 
13 #ifndef GEV_PAD_HH
14 #define GEV_PAD_HH
15 
16 // includes de la bibliothèque Event
17 #include "EventManager.hh"
18 #include "GEVPlot.hh"
19 #include "GEVPadProperties.hh"
20 #include "GEVPadAxisProperties.hh"
21 
22 #include "GEVPadContourList.hh"
23 
24 // includes templates
25 #include "GListT.hh"
26 
27 // includes ROOT
28 #include <TCanvas.h>
29 #include <TPad.h>
30 #include <TPaveText.h>
31 
32 
33 class GEVPage;
34 class GEVPageManager;
35 
36 //======================================================================
37 /*! \class GEVPad
38  *
39  * Classe qui gère un ensemble de spectres à afficher dans une zone
40  * graphique (Pad).
41  * Les instances de cette classe ne devraient être générées que par
42  * la classe GEVPage.
43  *
44  * Des informations graphiques sont associées à chaque objet
45  * GEVPad:
46  * - position dans le canevas de la page (valeurs comprises entre 0 et 1
47  * en X et en Y; verticalement, 0 correspond au haut de page et 1 au
48  * bas de page, ce qui est inversé par rapport au canevas Root).
49  * - marges pour le tracé de la zone spectre
50  * - décalage des titres X et Y par rapport à la zone de tracé (ils sont
51  * associés au pad, plutôt qu'à l'histogramme comme c'est le cas dans
52  * ROOT).
53  *
54  * Chaque pad définit une liste des contours qui y sont tracés.
55  * Les éléments de la liste représente un pointeur sur un contour
56  * et ses attributs de tracé dans le pad.
57  * Ils ne gèrent pas les contours, et se contentent d'y faire référence:
58  * les contours sont gérés de façon centralisée par le gestionnaire
59  * d'événements.
60  */
61 
62 class GEVPad : public GListT<GEVPlot>,
63  public GEVPadProperties,
65 {
66  friend class GEVPage;
67 
68  /// Itérateur des tracés de la collection (liste)
69  typedef GListIterT<GEVPlot> iterator;
70 
71 //----------------------------------------------------------------------
72  /*! \object_doc */
73  GObject(GEVPad);
74 //----------------------------------------------------------------------
75 
76  protected:
77  EventManager * event_mgr; ///< Pointeur sur le gestionnaire d'événement
78  GEVPage * page_ptr; ///< Pointeur sur la page contenant le pad
79 
80  TPad * pad_ptr; ///< Pointeur sur le pad ROOT associéaf9f21a7c8@
81 
82  GEVPadContourList ctr_list; ///< Liste des contours dans le pad
83 
84  // options d'affichage
85  Bool_t stat; ///< Affichage des statistiques
86  Bool_t stat_entries; ///< Nombre d'entrées dans les statistiques
87  Bool_t stat_mean; ///< Valeur moyenne dans les statistiques
88  Bool_t stat_rms; ///< Ecart-type dans les statistiques
89  Bool_t stat_cont; ///< Statistiques des contours
90 
91  Float_t stat_size; ///< Taille du texte statistique
92  Int_t stat_prec; ///< Précision des statistiques
93  TPaveText stat_pave; ///< Zone des statistiques
94 
95  public:
96 
97 //----------------------------------------------------------------------
98 // CONSTRUCTEUR / AFFECTATION / DESTRUCTEUR
99 
100  // Constructeur
101  GEVPad ( const Double_t x0,
102  const Double_t x1,
103  const Double_t y0,
104  const Double_t y1 );
105 
106  // Constructeur de recopie
107  GEVPad ( const GEVPad & original );
108 
109  // Destructeur
110  virtual ~GEVPad ( );
111 
112  // Opérateur d'affectation
113  GEVPad & operator = ( const GEVPad & original );
114 
115 //----------------------------------------------------------------------
116 
117  protected:
118 
119  // Mise en place
120  virtual void SetPage ( GEVPage *page );
121  virtual void Setup ( const string &name, TCanvas * c );
122 
123  public:
124  // Informations associées au PAD
125  virtual GEVPage * GetPagePtr ( ) const;
126  virtual GEVPageManager * GetPageManagerPtr ( ) const;
127  virtual EventManager * GetEventManagerPtr ( ) const;
128 
129  virtual const Param * GetXParamPtr ( ) const;
130  virtual const Param * GetYParamPtr ( ) const;
131  virtual const Param * GetZParamPtr ( ) const;
132  virtual Int_t GetParamNumber ( ) const;
133 
134  // Options et info diverses
135  virtual string GetPlotOptionString ( const GEVPlot *hplot ) const;
136  virtual UInt_t GetPlotOptions ( const GEVPlot *hplot ) const;
137 
138  virtual Int_t Get1DplotNumber ( ) const;
139  virtual Int_t Get2DplotNumber ( ) const;
140  virtual Int_t Get3DplotNumber ( ) const;
141 
142  // options pour le pad
143  virtual void SetLogX ( const bool b = true );
144  virtual void SetLogY ( const bool b = true );
145  virtual void SetLogZ ( const bool b = true );
146  virtual void SetStat ( const bool b = true );
147  virtual void SetStatEntries ( const bool b = true );
148  virtual void SetStatMean ( const bool b = true );
149  virtual void SetStatRMS ( const bool b = true );
150  virtual void SetStatCont ( const bool b = true );
151 
152  // teste si modes log posibles
153  virtual bool CheckLogX ( );
154  virtual bool CheckLogY ( );
155  virtual bool CheckLogZ ( );
156  virtual void Unzoom ( );
157 
158  // Mise à jour (graphique), remise à valeur de la géométrie
159  virtual void ResetOptions ( );
160  virtual void ResetGeometry ( );
161  virtual void Update ( );
162 
163  virtual void ExportPad ( );
164 
165  //------------------------------------------------------------------
166  // Gestion des spectres du pad
167  virtual GEVPlot * AddSpectrum ( const string &spec_name );
168  virtual GEVPlot * AddSpectrumPlot ( GEVPlot * plot );
169 
170  virtual bool UsesSpectrum ( const Spectrum * sp ) const;
171  virtual void RemoveSpectrum ( const Spectrum * sp );
172 
173  virtual GEVPlot * GetPlotPtr ( const Spectrum * spec_ptr ) const;
174  virtual GEVPlot * GetPlotPtr ( const string & spec_name ) const;
175  virtual GEVPlot * GetPlotPtr ( const u_int spec_num ) const;
176 
177  virtual TH1 * GetFirstHistoPtr ( ) const;
178  virtual TPad * GetTPadPtr ( ) const;
179 
180  // sélection d'un spectre tracé dans le pad
181  virtual Spectrum * SelectSpectrum ( const UInt_t opt = 0 ) const;
182 
183  //------------------------------------------------------------------
184  // tracé de contours dans le pad
185  virtual GEVPadContour * AddContour ( RContour * ct, const Int_t m = GEVPadContour::ctDrawNormal );
186  virtual GEVPadContour * AddContour ( const string & ct_name, const Int_t m = GEVPadContour::ctDrawNormal );
187  virtual GEVPadContour * AddContourPlot ( GEVPadContour & ct_plot );
188 
189  virtual bool UsesContour ( const RContour * ct ) const;
190  virtual bool RemoveContour ( const RContour * ct );
191  virtual bool RemoveContour ( const string & ct_name );
192 
193  virtual void ResetContourCounts ( ) const;
194  virtual void IncrementContourCounts ( ) const;
195  virtual void AdaptContourList ( );
196  virtual void DrawContourList ( );
197  virtual void DrawStatPave ( );
198 
199  virtual GEVPadContourList * GetContourListPtr ( );
200 
201  // écriture de la définition d'un pad dans un fichier
202  virtual bool Write ( FILE * fptr ) const;
203  virtual bool WriteProperties ( FILE * fptr ) const;
204  virtual bool WriteContours ( FILE * fptr ) const;
205 
206  static GEVPad * Read ( FILE * fptr, GEVPage *pg );
207  virtual bool ReadProperties ( FILE * fptr );
208  virtual bool ReadContours ( FILE * fptr );
209 
210 //----------------------------------------------------------------------
211  // valeurs actuelles de la position dans le pad
212  void GetCurrentGeometry ( Double_t &x0, Double_t &x1,
213  Double_t &y0, Double_t &y1) const;
214 
215 //----------------------------------------------------------------------
216 // SLOTS
217  virtual void RangeAxisChanged ( );
218 
219 //----------------------------------------------------------------------
220 // pour ROOT...
221  public:
222  /*! Définition à usage de ROOT... */
223  ClassDef(GEVPad,0);
224 } ;
225 
226 
227 //----------------------------------------------------------------------
228 // METHODES INLINE
229 //----------------------------------------------------------------------
230 
231 /*! Retourne le pointeur sur la page qui contient le pad.*/
232 inline GEVPage * GEVPad::GetPagePtr ( ) const
233  { return (page_ptr); }
234 
235 /*! Retourne le pointeur sur le gestionnaire d'événements.*/
237  { return (event_mgr); }
238 
239 /*! Retourne le pointeur sur le pad ROOT du canevas.*/
240 inline TPad * GEVPad::GetTPadPtr ( ) const
241  { return (pad_ptr); }
242 
243 /*! Retourne le pointeur sur la liste de contours à tracer.*/
245  { return (&ctr_list); }
246 
247 /*! Remise à zéro des statistiques des contours tracés dans la zone.*/
248 inline void GEVPad::ResetContourCounts ( ) const
249  { ctr_list.ResetCounts(); }
250 
251 //----------------------------------------------------------------------
252 
253 /*! Retourne la géométrie actuelle (telle qu'affichée) du pad.
254  * \param x0 valeur inférieur de X en retour
255  * \param x1 valeur supérieur de X en retour
256  * \param y0 valeur inférieur de Y en retour
257  * \param y1 valeur supérieur de Y en retour
258  */
259 inline void GEVPad::GetCurrentGeometry ( Double_t &x0, Double_t &x1, Double_t &y0, Double_t &y1) const
260  { pad_ptr->GetPadPar ( x0, y1, x1, y0); y0 = 1. - y0; y1 = 1. - y1; }
261 
262 
263 //----------------------------------------------------------------------
264 
265 /*! Valide l'affichage des statistiques.
266  * \param b affichage des statistiques
267  */
268 inline void GEVPad::SetStat ( const bool b )
269  { stat = b; }
270 
271 /*! Valide l'affichage des statistiques.
272  * \param b affichage des statistiques
273  */
274 inline void GEVPad::SetStatEntries ( const bool b )
275  { stat_entries = b; }
276 
277 /*! Valide l'affichage des statistiques.
278  * \param b affichage des statistiques
279  */
280 inline void GEVPad::SetStatMean ( const bool b )
281  { stat_mean = b; }
282 
283 /*! Valide l'affichage des statistiques.
284  * \param b affichage des statistiques
285  */
286 inline void GEVPad::SetStatRMS ( const bool b )
287  { stat_rms = b; }
288 
289 /*! Valide l'affichage des statistiques.
290  * \param b affichage des statistiques
291  */
292 inline void GEVPad::SetStatCont ( const bool b )
293  { stat_cont = b; }
294 
295 //======================================================================
296 #endif
virtual Spectrum * SelectSpectrum(const UInt_t opt=0) const
Definition: GEVPad.cpp:1206
virtual void SetStatCont(const bool b=true)
Definition: GEVPad.hh:292
virtual bool WriteContours(FILE *fptr) const
Definition: GEVPad.cpp:2070
Definition: GEVPadAxisProperties.hh:24
virtual void Update()
Definition: GEVPad.cpp:560
Definition: GEVPage.hh:42
virtual Int_t GetParamNumber() const
Definition: GEVPad.cpp:202
virtual bool ReadContours(FILE *fptr)
Definition: GEVPad.cpp:2392
virtual void AdaptContourList()
Definition: GEVPad.cpp:1617
virtual const Param * GetYParamPtr() const
Definition: GEVPad.cpp:244
virtual GEVPadContour * AddContourPlot(GEVPadContour &ct_plot)
Definition: GEVPad.cpp:1330
Definition: GEVPadProperties.hh:29
virtual bool UsesContour(const RContour *ct) const
Definition: GEVPad.cpp:1402
virtual const Param * GetXParamPtr() const
Definition: GEVPad.cpp:223
virtual bool RemoveContour(const RContour *ct)
Definition: GEVPad.cpp:1424
virtual Int_t Get3DplotNumber() const
Definition: GEVPad.cpp:355
virtual bool CheckLogY()
Definition: GEVPad.cpp:393
Float_t stat_size
Taille du texte statistique.
Definition: GEVPad.hh:91
virtual GEVPlot * AddSpectrumPlot(GEVPlot *plot)
Definition: GEVPad.cpp:1052
virtual bool UsesSpectrum(const Spectrum *sp) const
Definition: GEVPad.cpp:1089
Definition: GEVPadContour.hh:49
virtual void SetLogX(const bool b=true)
Definition: GEVPad.cpp:438
virtual GEVPadContourList * GetContourListPtr()
Definition: GEVPad.hh:244
virtual void Unzoom()
Definition: GEVPad.cpp:478
Bool_t stat_mean
Valeur moyenne dans les statistiques.
Definition: GEVPad.hh:87
ClassDef(GEVPad, 0)
Definition: Spectrum.hh:222
Bool_t stat_entries
Nombre d&#39;entrées dans les statistiques.
Definition: GEVPad.hh:86
virtual void ResetCounts() const
Definition: GEVPadContourList.cpp:106
virtual EventManager * GetEventManagerPtr() const
Definition: GEVPad.hh:236
Definition: GEVPageManager.hh:96
GEVPad(const Double_t x0, const Double_t x1, const Double_t y0, const Double_t y1)
Definition: GEVPad.cpp:37
GObject(GEVPad)
virtual GEVPadContour * AddContour(RContour *ct, const Int_t m=GEVPadContour::ctDrawNormal)
Definition: GEVPad.cpp:1291
virtual void SetLogY(const bool b=true)
Definition: GEVPad.cpp:446
virtual GEVPlot * AddSpectrum(const string &spec_name)
Definition: GEVPad.cpp:1023
virtual GEVPage * GetPagePtr() const
Definition: GEVPad.hh:232
GEVPadContourList ctr_list
Liste des contours dans le pad.
Definition: GEVPad.hh:82
virtual void Setup(const string &name, TCanvas *c)
Definition: GEVPad.cpp:158
Definition: GEVPad.hh:62
virtual GEVPlot * GetPlotPtr(const Spectrum *spec_ptr) const
Definition: GEVPad.cpp:1145
Bool_t stat_rms
Ecart-type dans les statistiques.
Definition: GEVPad.hh:88
Definition: Param.hh:83
void GetCurrentGeometry(Double_t &x0, Double_t &x1, Double_t &y0, Double_t &y1) const
Definition: GEVPad.hh:259
GEVPage * page_ptr
Pointeur sur la page contenant le pad.
Definition: GEVPad.hh:78
virtual void DrawStatPave()
Definition: GEVPad.cpp:1669
virtual void ExportPad()
Definition: GEVPad.cpp:977
virtual ~GEVPad()
Definition: GEVPad.cpp:86
virtual Int_t Get2DplotNumber() const
Definition: GEVPad.cpp:339
virtual UInt_t GetPlotOptions(const GEVPlot *hplot) const
Definition: GEVPad.cpp:313
virtual GEVPageManager * GetPageManagerPtr() const
Definition: GEVPad.cpp:131
virtual bool Write(FILE *fptr) const
Definition: GEVPad.cpp:1989
virtual void RangeAxisChanged()
Definition: GEVPad.cpp:2454
virtual void ResetGeometry()
Definition: GEVPad.cpp:541
virtual bool CheckLogX()
Definition: GEVPad.cpp:374
virtual Int_t Get1DplotNumber() const
Definition: GEVPad.cpp:323
virtual void SetStat(const bool b=true)
Definition: GEVPad.hh:268
virtual void IncrementContourCounts() const
Definition: GEVPad.cpp:1510
virtual bool WriteProperties(FILE *fptr) const
Definition: GEVPad.cpp:2019
virtual const Param * GetZParamPtr() const
Definition: GEVPad.cpp:265
virtual void SetStatMean(const bool b=true)
Definition: GEVPad.hh:280
virtual void ResetOptions()
Definition: GEVPad.cpp:525
GListIterT< GEVPlot > iterator
Itérateur des tracés de la collection (liste)
Definition: GEVPad.hh:69
virtual void ResetContourCounts() const
Definition: GEVPad.hh:248
Definition: GEVPadContourList.hh:20
virtual bool CheckLogZ()
Definition: GEVPad.cpp:411
TPad * pad_ptr
Pointeur sur le pad ROOT associé
Definition: GEVPad.hh:80
virtual void SetPage(GEVPage *page)
Definition: GEVPad.cpp:145
EventManager * event_mgr
Pointeur sur le gestionnaire d&#39;événement.
Definition: GEVPad.hh:77
Bool_t stat
Affichage des statistiques.
Definition: GEVPad.hh:85
virtual void SetStatEntries(const bool b=true)
Definition: GEVPad.hh:274
Int_t stat_prec
Précision des statistiques.
Definition: GEVPad.hh:92
Definition: GEVPlot.hh:40
virtual TPad * GetTPadPtr() const
Definition: GEVPad.hh:240
virtual bool ReadProperties(FILE *fptr)
Definition: GEVPad.cpp:2235
virtual void SetStatRMS(const bool b=true)
Definition: GEVPad.hh:286
GEVPad & operator=(const GEVPad &original)
Definition: GEVPad.cpp:99
virtual string GetPlotOptionString(const GEVPlot *hplot) const
Definition: GEVPad.cpp:293
virtual TH1 * GetFirstHistoPtr() const
Definition: GEVPad.cpp:1129
Definition: EventManager.hh:59
static GEVPad * Read(FILE *fptr, GEVPage *pg)
Definition: GEVPad.cpp:2100
virtual void RemoveSpectrum(const Spectrum *sp)
Definition: GEVPad.cpp:1110
virtual void DrawContourList()
Definition: GEVPad.cpp:1462
TPaveText stat_pave
Zone des statistiques.
Definition: GEVPad.hh:93
virtual void SetLogZ(const bool b=true)
Definition: GEVPad.cpp:461
Bool_t stat_cont
Statistiques des contours.
Definition: GEVPad.hh:89