JG ROOT Tools libraries  version 5.0 - august 2014
RAnimSequence3D.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file RAnimSequence3D.hh
3  *
4  * Include file for class RAnimSequence3D.
5  */
6 //======================================================================
7 
8 #ifndef R_ANIM_SEQUENCE_3D_HH
9 #define R_ANIM_SEQUENCE_3D_HH
10 
11 #include "GGlobal.hh"
12 #include "Rtypes.h"
13 #include "ROptionString.hh"
14 
15 #include <TH1.h>
16 #include <TPad.h>
17 #include <TList.h>
18 
19 ///! Animation types for display characteristics
21 {
22  rAnimLin = 0, // linear evolution
23  rAnimSin = 1 // sine evolution
24 };
25 
26 
27 ///! Animation options
29 {
30  rAnimCopyHisto = 0x00000001, // work with a copy of the histogram
31  rAnimCenterStep = 0x00000002 // values computed at step centr and not at step beginning
32 };
33 
34 //======================================================================
35 /*! \class RAnimSequence3D
36  *
37  * Classe qui permet de créer une séquence d'images pour des tracés * d'histogrammes 2D/3D, afin de créer des animations. * * A partir d'un nombre défini de plans, on peut faire évoluer les * paramètres d'affichage: * - Phi (angle de rotation) et Theta (inclinaison) * - les bornes de tracé X, Y et Z * * Pour chaque paramètre, on définit une valeur de départ et d'arrivée. * L'interpolation peut se faire selon une évolution linéaire ou * sinusoïdale. * * Les options de tracé d'histogramme sont définies avec la fonction * SetPlotOptions(). * Pour les histogrammes 2D, une option de plus est reconnue: "SURFCOL" * qui superpose un tracé "SURF2" (3D en couleur) et "SURF" (3D avec * maillage simple). */ class RAnimSequence3D { //------------------------------------------------------------ /*! \object_doc{RAnimSequence3D} */ GObject(RAnimSequence3D); //------------------------------------------------------------ protected: UInt_t options; ///< Options de l'animation TH1 * histo_ptr; ///< Pointeur sur l'histogramme bool histo_copy; ///< Indique si l'histogramme a été copié RString plot_options; ///< Options de tracé Int_t seq_number; ///< Nombre de séquences Int_t first_seq; ///< Numéro de la première séquence TList obj_list; ///< Liste d'objets à tracer RString out_file; ///< Fichier de sortie // bornes de tracé Double_t x_min_i; ///< Borne de tracé initiale (début de séquence) Double_t x_max_i; ///< Borne de tracé initiale (début de séquence) Double_t x_min_f; ///< Borne de tracé finale (fin de séquence) Double_t x_max_f; ///< Borne de tracé finale (fin de séquence) Double_t y_min_i; ///< Borne de tracé initiale (début de séquence) Double_t y_max_i; ///< Borne de tracé initiale (début de séquence) Double_t y_min_f; ///< Borne de tracé finale (fin de séquence) Double_t y_max_f; ///< Borne de tracé finale (fin de séquence) Double_t z_min_i; ///< Borne de tracé initiale (début de séquence) Double_t z_max_i; ///< Borne de tracé initiale (début de séquence) Double_t z_min_f; ///< Borne de tracé finale (fin de séquence) Double_t z_max_f; ///< Borne de tracé finale (fin de séquence) bool log_x; ///< Option de tracé log bool log_y; ///< Option de tracé log bool log_z; ///< Option de tracé log Double_t phi_i; ///< Angle initial (début de séquence) Double_t phi_f; ///< Angle final (fin de séquence) Double_t theta_i; ///< Angle initial (début de séquence) Double_t theta_f; ///< Angle final (fin de séquence) Int_t evol_x; ///< Forme de l'évolution des bornes de tracé Int_t evol_y; ///< Forme de l'évolution des bornes de tracé Int_t evol_z; ///< Forme de l'évolution des bornes de tracé Int_t evol_phi; ///< Forme de l'évolution de l'angle Int_t evol_theta; ///< Forme de l'évolution de l'angle //------------------------------------------------------------ // Constructors / affectation / destructor public: // Constructeurs RAnimSequence3D ( TH1 *hptr = NULL, UInt_t opts = 0 ); RAnimSequence3D ( const RAnimSequence3D &original ); // Destructeur virtual ~RAnimSequence3D ( ); // Affectation RAnimSequence3D & operator = ( const RAnimSequence3D &original ); //------------------------------------------------------------ virtual void SetHisto ( TH1 * hptr ); virtual void SetSeqNumber ( const Int_t n ); virtual void SetFirstSeq ( const Int_t n0 ); virtual void SetPlotOptions ( const string &opts ); virtual void SetFileName ( const string &file_name ); virtual void AddObject ( const TObject * obj, const char *opts = "" ); virtual void DrawObjects ( ); //------------------------------------------------------------ virtual void CopyRanges ( const RAnimSequence3D &original ); virtual void SetRangeX ( const Double_t x1i, const Double_t x1f, const Double_t x2i, const Double_t x2f, const Int_t mode = rAnimLin ); virtual void SetRangeY ( const Double_t y1i, const Double_t y1f, const Double_t y2i, const Double_t y2f, const Int_t mode = rAnimLin ); virtual void SetRangeZ ( const Double_t z1i, const Double_t z1f, const Double_t z2i, const Double_t z2f, const Int_t mode = rAnimLin ); virtual void SetRangePhi ( const Double_t pi, const Double_t pf, const Int_t mode = rAnimLin ); virtual void SetRangeTheta ( const Double_t ti, const Double_t tf, const Int_t mode = rAnimLin ); virtual void SetLogX ( const bool l = true ); virtual void SetLogY ( const bool l = true ); virtual void SetLogZ ( const bool l = true ); //------------------------------------------------------------ virtual Int_t CreateSequences ( ); virtual Int_t CreateSequences ( const Int_t n ); virtual Int_t CreateSequences ( const string &file_name ); virtual Int_t CreateSequences ( const Int_t n, const string &file_name ); //------------------------------------------------------------ /*! For ROOT dictionary.*/ ClassDef(RAnimSequence3D,0); }; //---------------------------------------------------------------------- // Inline functions #include "icc/RAnimSequence3D.icc" //====================================================================== #endif
38  * d'histogrammes 2D/3D, afin de créer des animations.
39  *
40  * A partir d'un nombre défini de plans, on peut faire évoluer les
41  * paramètres d'affichage:
42  * - Phi (angle de rotation) et Theta (inclinaison)
43  * - les bornes de tracé X, Y et Z
44  *
45  * Pour chaque paramètre, on définit une valeur de départ et d'arrivée.
46  * L'interpolation peut se faire selon une évolution linéaire ou
47  * sinusoïdale.
48  *
49  * Les options de tracé d'histogramme sont définies avec la fonction
50  * SetPlotOptions().
51  * Pour les histogrammes 2D, une option de plus est reconnue: "SURFCOL"
52  * qui superpose un tracé "SURF2" (3D en couleur) et "SURF" (3D avec
53  * maillage simple).
54  */
56 {
57  //------------------------------------------------------------
58  /*! \object_doc{RAnimSequence3D} */
60  //------------------------------------------------------------
61 
62  protected:
63  UInt_t options; ///< Options de l'animation
64 
65  TH1 * histo_ptr; ///< Pointeur sur l'histogramme
66  bool histo_copy; ///< Indique si l'histogramme a été copiénce3D
67 
68  RString plot_options; ///< Options de tracé
69  Int_t seq_number; ///< Nombre de séquences
70  Int_t first_seq; ///< Numéro de la première séquence
71 
72  TList obj_list; ///< Liste d'objets à tracer
73 
74  RString out_file; ///< Fichier de sortie
75 
76  // bornes de tracé Double_t x_min_i; ///< Borne de tracé initiale (début de séquence) Double_t x_max_i; ///< Borne de tracé initiale (début de séquence) Double_t x_min_f; ///< Borne de tracé finale (fin de séquence) Double_t x_max_f; ///< Borne de tracé finale (fin de séquence) Double_t y_min_i; ///< Borne de tracé initiale (début de séquence) Double_t y_max_i; ///< Borne de tracé initiale (début de séquence) Double_t y_min_f; ///< Borne de tracé finale (fin de séquence) Double_t y_max_f; ///< Borne de tracé finale (fin de séquence) Double_t z_min_i; ///< Borne de tracé initiale (début de séquence) Double_t z_max_i; ///< Borne de tracé initiale (début de séquence) Double_t z_min_f; ///< Borne de tracé finale (fin de séquence) Double_t z_max_f; ///< Borne de tracé finale (fin de séquence) bool log_x; ///< Option de tracé log bool log_y; ///< Option de tracé log bool log_z; ///< Option de tracé log Double_t phi_i; ///< Angle initial (début de séquence) Double_t phi_f; ///< Angle final (fin de séquence) Double_t theta_i; ///< Angle initial (début de séquence) Double_t theta_f; ///< Angle final (fin de séquence) Int_t evol_x; ///< Forme de l'évolution des bornes de tracé Int_t evol_y; ///< Forme de l'évolution des bornes de tracé Int_t evol_z; ///< Forme de l'évolution des bornes de tracé Int_t evol_phi; ///< Forme de l'évolution de l'angle Int_t evol_theta; ///< Forme de l'évolution de l'angle //------------------------------------------------------------ // Constructors / affectation / destructor public: // Constructeurs RAnimSequence3D ( TH1 *hptr = NULL, UInt_t opts = 0 ); RAnimSequence3D ( const RAnimSequence3D &original ); // Destructeur virtual ~RAnimSequence3D ( ); // Affectation RAnimSequence3D & operator = ( const RAnimSequence3D &original ); //------------------------------------------------------------ virtual void SetHisto ( TH1 * hptr ); virtual void SetSeqNumber ( const Int_t n ); virtual void SetFirstSeq ( const Int_t n0 ); virtual void SetPlotOptions ( const string &opts ); virtual void SetFileName ( const string &file_name ); virtual void AddObject ( const TObject * obj, const char *opts = "" ); virtual void DrawObjects ( ); //------------------------------------------------------------ virtual void CopyRanges ( const RAnimSequence3D &original ); virtual void SetRangeX ( const Double_t x1i, const Double_t x1f, const Double_t x2i, const Double_t x2f, const Int_t mode = rAnimLin ); virtual void SetRangeY ( const Double_t y1i, const Double_t y1f, const Double_t y2i, const Double_t y2f, const Int_t mode = rAnimLin ); virtual void SetRangeZ ( const Double_t z1i, const Double_t z1f, const Double_t z2i, const Double_t z2f, const Int_t mode = rAnimLin ); virtual void SetRangePhi ( const Double_t pi, const Double_t pf, const Int_t mode = rAnimLin ); virtual void SetRangeTheta ( const Double_t ti, const Double_t tf, const Int_t mode = rAnimLin ); virtual void SetLogX ( const bool l = true ); virtual void SetLogY ( const bool l = true ); virtual void SetLogZ ( const bool l = true ); //------------------------------------------------------------ virtual Int_t CreateSequences ( ); virtual Int_t CreateSequences ( const Int_t n ); virtual Int_t CreateSequences ( const string &file_name ); virtual Int_t CreateSequences ( const Int_t n, const string &file_name ); //------------------------------------------------------------ /*! For ROOT dictionary.*/ ClassDef(RAnimSequence3D,0); }; //---------------------------------------------------------------------- // Inline functions #include "icc/RAnimSequence3D.icc" //====================================================================== #endif
77  Double_t x_min_i; ///< Borne de tracé initiale (début de séquence)
78  Double_t x_max_i; ///< Borne de tracé initiale (début de séquence)
79  Double_t x_min_f; ///< Borne de tracé finale (fin de séquence)
80  Double_t x_max_f; ///< Borne de tracé finale (fin de séquence)
81 
82  Double_t y_min_i; ///< Borne de tracé initiale (début de séquence)
83  Double_t y_max_i; ///< Borne de tracé initiale (début de séquence)
84  Double_t y_min_f; ///< Borne de tracé finale (fin de séquence)
85  Double_t y_max_f; ///< Borne de tracé finale (fin de séquence)
86 
87  Double_t z_min_i; ///< Borne de tracé initiale (début de séquence)
88  Double_t z_max_i; ///< Borne de tracé initiale (début de séquence)
89  Double_t z_min_f; ///< Borne de tracé finale (fin de séquence)
90  Double_t z_max_f; ///< Borne de tracé finale (fin de séquence)
91 
92  bool log_x; ///< Option de tracé log
93  bool log_y; ///< Option de tracé log
94  bool log_z; ///< Option de tracé log
95 
96  Double_t phi_i; ///< Angle initial (début de séquence)
97  Double_t phi_f; ///< Angle final (fin de séquence)
98  Double_t theta_i; ///< Angle initial (début de séquence)
99  Double_t theta_f; ///< Angle final (fin de séquence)
100 
101  Int_t evol_x; ///< Forme de l'évolution des bornes de tracée)@
102  Int_t evol_y; ///< Forme de l'évolution des bornes de tracée)@
103  Int_t evol_z; ///< Forme de l'évolution des bornes de tracée)@
104  Int_t evol_phi; ///< Forme de l'évolution de l'angle
105  Int_t evol_theta; ///< Forme de l'évolution de l'angle
106 
107  //------------------------------------------------------------
108  // Constructors / affectation / destructor
109  public:
110 
111  // Constructeurs
112  RAnimSequence3D ( TH1 *hptr = NULL, UInt_t opts = 0 );
113  RAnimSequence3D ( const RAnimSequence3D &original );
114 
115  // Destructeur
116  virtual ~RAnimSequence3D ( );
117 
118  // Affectation
119  RAnimSequence3D & operator = ( const RAnimSequence3D &original );
120 
121  //------------------------------------------------------------
122 
123  virtual void SetHisto ( TH1 * hptr );
124 
125  virtual void SetSeqNumber ( const Int_t n );
126  virtual void SetFirstSeq ( const Int_t n0 );
127  virtual void SetPlotOptions ( const string &opts );
128  virtual void SetFileName ( const string &file_name );
129 
130  virtual void AddObject ( const TObject * obj, const char *opts = "" );
131  virtual void DrawObjects ( );
132 
133  //------------------------------------------------------------
134 
135  virtual void CopyRanges ( const RAnimSequence3D &original );
136  virtual void SetRangeX ( const Double_t x1i, const Double_t x1f,
137  const Double_t x2i, const Double_t x2f,
138  const Int_t mode = rAnimLin );
139  virtual void SetRangeY ( const Double_t y1i, const Double_t y1f,
140  const Double_t y2i, const Double_t y2f,
141  const Int_t mode = rAnimLin );
142  virtual void SetRangeZ ( const Double_t z1i, const Double_t z1f,
143  const Double_t z2i, const Double_t z2f,
144  const Int_t mode = rAnimLin );
145 
146  virtual void SetRangePhi ( const Double_t pi, const Double_t pf,
147  const Int_t mode = rAnimLin );
148  virtual void SetRangeTheta ( const Double_t ti, const Double_t tf,
149  const Int_t mode = rAnimLin );
150 
151 
152  virtual void SetLogX ( const bool l = true );
153  virtual void SetLogY ( const bool l = true );
154  virtual void SetLogZ ( const bool l = true );
155 
156  //------------------------------------------------------------
157  virtual Int_t CreateSequences ( );
158  virtual Int_t CreateSequences ( const Int_t n );
159  virtual Int_t CreateSequences ( const string &file_name );
160  virtual Int_t CreateSequences ( const Int_t n, const string &file_name );
161 
162  //------------------------------------------------------------
163  /*! For ROOT dictionary.*/
165 };
166 
167 //----------------------------------------------------------------------
168 // Inline functions
169 #include "icc/RAnimSequence3D.icc"
170 
171 //======================================================================
172 #endif
Double_t y_min_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:84
Definition: RString.hh:29
virtual void SetRangeTheta(const Double_t ti, const Double_t tf, const Int_t mode=rAnimLin)
Definition: RAnimSequence3D.cpp:421
virtual Int_t CreateSequences()
Definition: RAnimSequence3D.cpp:499
bool log_x
Option de tracé log.
Definition: RAnimSequence3D.hh:92
Double_t z_min_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:89
virtual void SetSeqNumber(const Int_t n)
Definition: RAnimSequence3D.icc:12
RString out_file
Fichier de sortie.
Definition: RAnimSequence3D.hh:74
Int_t seq_number
Nombre de séquences.
Definition: RAnimSequence3D.hh:69
virtual void SetRangeZ(const Double_t z1i, const Double_t z1f, const Double_t z2i, const Double_t z2f, const Int_t mode=rAnimLin)
Definition: RAnimSequence3D.cpp:303
Double_t theta_i
Angle initial (début de séquence)
Definition: RAnimSequence3D.hh:98
RAnimSequence3D & operator=(const RAnimSequence3D &original)
Definition: RAnimSequence3D.cpp:63
RAnim3DOptions
! Animation options
Definition: RAnimSequence3D.hh:28
Double_t y_min_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:82
virtual void DrawObjects()
Definition: RAnimSequence3D.cpp:136
Int_t evol_theta
Forme de l&#39;évolution de l&#39;angle.
Definition: RAnimSequence3D.hh:105
Double_t x_min_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:79
RAnimSequence3D(TH1 *hptr=NULL, UInt_t opts=0)
Definition: RAnimSequence3D.cpp:21
bool log_y
Option de tracé log.
Definition: RAnimSequence3D.hh:93
virtual void SetHisto(TH1 *hptr)
Definition: RAnimSequence3D.cpp:100
virtual ~RAnimSequence3D()
Definition: RAnimSequence3D.cpp:82
RAnim3DTypes
! Animation types for display characteristics
Definition: RAnimSequence3D.hh:20
virtual void SetLogX(const bool l=true)
Definition: RAnimSequence3D.cpp:435
virtual void SetFirstSeq(const Int_t n0)
Definition: RAnimSequence3D.icc:18
UInt_t options
Options de l&#39;animation.
Definition: RAnimSequence3D.hh:63
Definition: RAnimSequence3D.hh:55
Double_t x_max_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:78
virtual void SetRangeY(const Double_t y1i, const Double_t y1f, const Double_t y2i, const Double_t y2f, const Int_t mode=rAnimLin)
Definition: RAnimSequence3D.cpp:248
virtual void CopyRanges(const RAnimSequence3D &original)
Definition: RAnimSequence3D.cpp:164
TH1 * histo_ptr
Pointeur sur l&#39;histogramme.
Definition: RAnimSequence3D.hh:65
virtual void SetRangeX(const Double_t x1i, const Double_t x1f, const Double_t x2i, const Double_t x2f, const Int_t mode=rAnimLin)
Definition: RAnimSequence3D.cpp:193
Double_t phi_i
Angle initial (début de séquence)
Definition: RAnimSequence3D.hh:96
Double_t x_min_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:77
virtual void SetRangePhi(const Double_t pi, const Double_t pf, const Int_t mode=rAnimLin)
Definition: RAnimSequence3D.cpp:407
Double_t z_min_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:87
RString plot_options
Options de tracé
Definition: RAnimSequence3D.hh:68
Int_t evol_y
Forme de l&#39;évolution des bornes de tracé
Definition: RAnimSequence3D.hh:102
ClassDef(RAnimSequence3D, 0)
Int_t evol_x
Forme de l&#39;évolution des bornes de tracé
Definition: RAnimSequence3D.hh:101
Int_t evol_phi
Forme de l&#39;évolution de l&#39;angle.
Definition: RAnimSequence3D.hh:104
Double_t y_max_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:83
virtual void SetPlotOptions(const string &opts)
Definition: RAnimSequence3D.icc:24
virtual void SetLogZ(const bool l=true)
Definition: RAnimSequence3D.cpp:467
Int_t first_seq
Numéro de la première séquence.
Definition: RAnimSequence3D.hh:70
virtual void AddObject(const TObject *obj, const char *opts="")
Definition: RAnimSequence3D.cpp:127
Double_t phi_f
Angle final (fin de séquence)
Definition: RAnimSequence3D.hh:97
Double_t x_max_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:80
TList obj_list
Liste d&#39;objets à tracer.
Definition: RAnimSequence3D.hh:72
Int_t evol_z
Forme de l&#39;évolution des bornes de tracé
Definition: RAnimSequence3D.hh:103
Double_t y_max_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:85
virtual void SetFileName(const string &file_name)
Definition: RAnimSequence3D.icc:30
virtual void SetLogY(const bool l=true)
Definition: RAnimSequence3D.cpp:451
bool log_z
Option de tracé log.
Definition: RAnimSequence3D.hh:94
Double_t theta_f
Angle final (fin de séquence)
Definition: RAnimSequence3D.hh:99
bool histo_copy
Indique si l&#39;histogramme a été copié
Definition: RAnimSequence3D.hh:66
Double_t z_max_f
Borne de tracé finale (fin de séquence)
Definition: RAnimSequence3D.hh:90
GObject(RAnimSequence3D)
Double_t z_max_i
Borne de tracé initiale (début de séquence)
Definition: RAnimSequence3D.hh:88