[2632] | 1 | \documentclass[twoside,11pt,A4]{article}
|
---|
| 2 | \usepackage[french]{babel}
|
---|
| 3 |
|
---|
| 4 | % \usepackage[T1]{fontenc}
|
---|
| 5 | \usepackage[applemac]{inputenc}
|
---|
| 6 | \usepackage{palatino}
|
---|
| 7 | % \usepackage{times}
|
---|
| 8 | % package pour ecrire DRAFT en fond de page
|
---|
| 9 | \usepackage[light,all,draft]{draftcopy}
|
---|
| 10 |
|
---|
| 11 | % \usepackage{epsfig}
|
---|
| 12 | \usepackage{graphicx}
|
---|
| 13 | \usepackage{amsmath}
|
---|
| 14 | \usepackage{amssymb}
|
---|
| 15 |
|
---|
| 16 | \setlength{\textwidth}{16cm}
|
---|
| 17 | \setlength{\textheight}{23 cm}
|
---|
| 18 | \setlength{\topmargin}{0.5cm}
|
---|
| 19 | \setlength{\oddsidemargin}{0.cm}
|
---|
| 20 | \setlength{\evensidemargin}{0.cm}
|
---|
| 21 | \setlength{\unitlength}{1mm}
|
---|
| 22 |
|
---|
| 23 | \newcommand{\rond}{$\bullet \ $}
|
---|
| 24 | \newcommand{\etoile}{$\star \ $}
|
---|
| 25 | \newcommand{\cercle}{$\circ \ $}
|
---|
| 26 | \newcommand{\carre}{$\Box \ $}
|
---|
| 27 |
|
---|
| 28 | \begin{document}
|
---|
| 29 | \begin{titlepage}
|
---|
| 30 | \begin{center}
|
---|
| 31 | {\Large \bf Liste de modifications de SOPHYA } \\[5mm]
|
---|
| 32 | { \large (fait ou faire ) } \\
|
---|
| 33 | {\large Janvier 2003 - Dcembre 2004 } \\[25mm]
|
---|
| 34 | Liste des tags et dates : \\[5mm]
|
---|
| 35 | {\large
|
---|
| 36 | \begin{tabular}{lcl}
|
---|
| 37 | V = 0.727 & \hspace{10mm} & Octobre 1999 \\
|
---|
| 38 | V = 0.8 & \hspace{10mm} & Fvrier 2000 \\
|
---|
| 39 | V = 1.1 & \hspace{10mm} & Fvrier 2001 \\
|
---|
| 40 | V = 1.2 & \hspace{10mm} & Juillet 2001 \\
|
---|
| 41 | V = 1.3 & \hspace{10mm} & Novembre 2001 \\
|
---|
| 42 | V = 1.5 & \hspace{10mm} & Dcembre 2002 \\
|
---|
| 43 | V = 1.7 & \hspace{10mm} & Septembre 2003 \\
|
---|
| 44 | \end{tabular}
|
---|
| 45 | }
|
---|
| 46 | \end{center}
|
---|
| 47 | \end{titlepage}
|
---|
| 48 |
|
---|
| 49 | \newpage
|
---|
| 50 | \tableofcontents
|
---|
| 51 | \newpage
|
---|
| 52 |
|
---|
| 53 | \section{Mgr}
|
---|
| 54 | \subsection{Variables d'environnement SOPHYAxxx (17/9/2003) }
|
---|
| 55 | Septembre 2003 (17/9/2003) : Changement DPCDEVREP, DPCBASEREP
|
---|
| 56 | en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX
|
---|
| 57 |
|
---|
| 58 | \subsection{Modifs Makefile - Message du 3 Mars 2004 }
|
---|
| 59 | \begin{verbatim}
|
---|
| 60 | Pour Les makefiles SOPHYA, je n'ai pas encore regarde ton makefile.h
|
---|
| 61 | modifie.
|
---|
| 62 | Voila qques propositions :
|
---|
| 63 | il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
|
---|
| 64 | SOPHYARACINE) par exemple
|
---|
| 65 | $SOPHYAROOT/Include
|
---|
| 66 | /Include/FitsIO/ FFTW/ (etc...) pour les .h extlibs
|
---|
| 67 | /Libs
|
---|
| 68 | /ShLibs
|
---|
| 69 | /Exec
|
---|
| 70 | /Objs
|
---|
| 71 | Un fichier Makefile.h ds $SOPHYAROOT/Include
|
---|
| 72 | contiendra
|
---|
| 73 | # Section generale
|
---|
| 74 | SOPHYAROOT =
|
---|
| 75 | SOPHYACXX=
|
---|
| 76 | ...
|
---|
| 77 | # Section compilation
|
---|
| 78 | CC_COMPILER (nom du compilo cc)
|
---|
| 79 | CXX_COMPILER ( c++)
|
---|
| 80 | CPPFLAGS , (flag du preprocesseur), en particulier
|
---|
| 81 | les -Iincludepath (chemin pour les includes SOPHYA
|
---|
| 82 | CFLAGS flag de compilation c
|
---|
| 83 | CXXFLAGS flags de compilation c++
|
---|
| 84 | # Section Link
|
---|
| 85 | LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
|
---|
| 86 | LIBLIST -lm -lcfitsio ... (les librairies)
|
---|
| 87 |
|
---|
| 88 | Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
|
---|
| 89 | Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
|
---|
| 90 | du meme genre) avec la syntaxe C/C++ de chaines de caracteres
|
---|
| 91 | pouvant etre include (par #include) ds cxxcmplnk.cc
|
---|
| 92 |
|
---|
| 93 | le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
|
---|
| 94 | machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
|
---|
| 95 | plusieurs morceaux si necessaire) et contiendra en entete les flags
|
---|
| 96 | qui modifie la generation du code
|
---|
| 97 |
|
---|
| 98 | exemple
|
---|
| 99 | #define Linux
|
---|
| 100 | #define SOPHYA_DEBUG
|
---|
| 101 | ....
|
---|
| 102 |
|
---|
| 103 | Dans les fichier Makefile pour chaque module, on abandonnera
|
---|
| 104 | les regles (et repertoire) de compilation par defaut et on aura
|
---|
| 105 | donc:
|
---|
| 106 | INC= $SOPHYAROOT/Include
|
---|
| 107 | OBJ = $SOPHYAROOT/Objs
|
---|
| 108 | LIB=...
|
---|
| 109 | $(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
|
---|
| 110 | $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
|
---|
| 111 | ....
|
---|
| 112 |
|
---|
| 113 | Il faudra voir ensuite pour le makefile de fabrication des shared-libs
|
---|
| 114 | \end{verbatim}
|
---|
| 115 |
|
---|
| 116 | \subsection{ Modifs Makefile - Message du 8 Juillet 2004 }
|
---|
| 117 | \begin{verbatim}
|
---|
| 118 | A/ Makefile(s) (voir aussi mon message du 3 mars 2004)
|
---|
| 119 | A-1/ Structures des repertoires
|
---|
| 120 | >> On garde la structuration avec
|
---|
| 121 | + un Makefile par module 'librairie'
|
---|
| 122 | + un ensemble de modules librairies sans lib externe -> libsophya.slb
|
---|
| 123 | + un ensemble de modules librairies avec lib externe -> libextsophya.slb
|
---|
| 124 | + Des modules programmes (PrgUtil/ PrgMap/ ) avec un makefile par module programme
|
---|
| 125 | + un Makefile de haut niveau (actuellement ds Mgr/Makefile
|
---|
| 126 | Ce Makefile de haut niveau sera aussi simplifi - en particulier la partie
|
---|
| 127 | concernant la fabrication des shared-libs (.slb) et Makefile.slb
|
---|
| 128 | + On garde aussi la convention de generation automatique des GNUmakefile, qui sont
|
---|
| 129 | ensuite renommes eventuellement en Makefile, conserves ds la base
|
---|
| 130 | - Plus d'inclusion automatique du nom du system-compilo (Linux-g++ OSF1-cxx ...)
|
---|
| 131 | dans les noms de repertoires
|
---|
| 132 | - Plus de structure ExtLibDir obligatoire (remplace par des -Ipath -Lpath pour les
|
---|
| 133 | compils/links
|
---|
| 134 | - Si besoin, on fait subir le meme sort que Makefile.h a Makefile.slb
|
---|
| 135 |
|
---|
| 136 | On aura donc : (message du 3 mars 2004)
|
---|
| 137 | il y aura qu'une seule variable d'environnement : (SOPHYAROOT ou
|
---|
| 138 | SOPHYARACINE) par exemple
|
---|
| 139 | $SOPHYAROOT/Include
|
---|
| 140 | Attention le repertoire Include/ NE sera donc PLUS commun pour plusieurs
|
---|
| 141 | systemes-compilo.
|
---|
| 142 | /Libs
|
---|
| 143 | /ShLibs
|
---|
| 144 | /Exec
|
---|
| 145 | /Objs
|
---|
| 146 | Un fichier Makefile.h ds $SOPHYAROOT/Include
|
---|
| 147 | contiendra les flags de compilation dfinis pour un systme/compilo.
|
---|
| 148 | A la base, on aura ds Mgr/ un fichier Makefile.h pour chaque combinaison
|
---|
| 149 | compilo-compilo;
|
---|
| 150 | Mgr/makef_osf1_cxx.h
|
---|
| 151 | Mgr/makef_linux_g++.h
|
---|
| 152 | Mgr/makef_linux_KCC.h
|
---|
| 153 | Mgr/makef_darwin_g++.h (Mac)
|
---|
| 154 | Mgr/makef_sgi_CC.h
|
---|
| 155 | etc ...
|
---|
| 156 | C'est ce fichier qui est copi en Include/Makefile.h, ventuellement
|
---|
| 157 | complete/modifie
|
---|
| 158 |
|
---|
| 159 | ----- Fichier Makefile.h
|
---|
| 160 | # Section generale
|
---|
| 161 | SOPHYAROOT =
|
---|
| 162 | SOPHYACXX=
|
---|
| 163 | ...
|
---|
| 164 | # Section compilation
|
---|
| 165 | CC_COMPILER (nom du compilo cc)
|
---|
| 166 | CXX_COMPILER ( c++)
|
---|
| 167 | CPPFLAGS , (flag du preprocesseur), en particulier
|
---|
| 168 | les -Iincludepath (chemin pour les includes SOPHYA
|
---|
| 169 | CFLAGS flag de compilation c
|
---|
| 170 | CXXFLAGS flags de compilation c++
|
---|
| 171 | # Section Link
|
---|
| 172 | LIBPATH -L... -L... (chemin pour les librairies et les lib externes (cfitsio, ...)
|
---|
| 173 | LIBLIST -lm -lcfitsio ... (les librairies)
|
---|
| 174 |
|
---|
| 175 | Ces variables doivent pouvoir etre utilise par la classe CxxCompilerLinker.
|
---|
| 176 | Il faut donc prevoir peut-etre un autre fichier cccpp_flags.h (ou qque chose
|
---|
| 177 | du meme genre) avec la syntaxe C/C++ de chaines de caracteres
|
---|
| 178 | pouvant etre include (par #include) ds cxxcmplnk.cc
|
---|
| 179 |
|
---|
| 180 | le fichier machdefs.h ds $SOPHYAROOT/Include est genere a partir du fichier
|
---|
| 181 | machdefs_mkmf.h actuel (on pourra songer ulterieurement a le casser en
|
---|
| 182 | plusieurs morceaux si necessaire) et contiendra en entete les flags
|
---|
| 183 | qui modifie la generation du code
|
---|
| 184 |
|
---|
| 185 | exemple
|
---|
| 186 | #define Linux
|
---|
| 187 | #define SOPHYA_DEBUG
|
---|
| 188 | ....
|
---|
| 189 |
|
---|
| 190 | Dans les fichier Makefile pour chaque module, on abandonnera
|
---|
| 191 | les regles (et repertoire) de compilation par defaut et on aura
|
---|
| 192 | donc:
|
---|
| 193 | INC= $SOPHYAROOT/Include
|
---|
| 194 | OBJ = $SOPHYAROOT/Objs
|
---|
| 195 | LIB=...
|
---|
| 196 | $(OBJ)toto.o : toto.cc $(INC)toto.h $(INC)titi.h ...
|
---|
| 197 | $CXX $CXXFLAGS -c -o $(OBJ)toto.o toto.cc
|
---|
| 198 | ....
|
---|
| 199 |
|
---|
| 200 | \end{verbatim}
|
---|
| 201 |
|
---|
| 202 | \section{BaseTools}
|
---|
| 203 | \subsection{Namespace SOPHYA }
|
---|
| 204 | Septembre 2004 :
|
---|
| 205 | Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h -
|
---|
| 206 | Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
|
---|
| 207 | ainsi que lors de la gnration automatique du code (runxx, c++exec)
|
---|
| 208 |
|
---|
| 209 | \subsection{PPF}
|
---|
| 210 | \begin{itemize}
|
---|
| 211 | \item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
|
---|
| 212 | Classes RawInOutStream , RawInFileStream , RawOutFileStream
|
---|
| 213 | \item[\rond] Dcembre 2003 - Ajout ppfbinstream.h .cc \\
|
---|
| 214 | Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
|
---|
| 215 | \item[\rond] Dcembre 2004 (9/12/2004) Fin de l'ensemble des modifs pour les
|
---|
| 216 | PPF V3 \\
|
---|
| 217 | - Ecriture nombre complexes r4, r8 avec tag spcifique. \\
|
---|
| 218 | Tag de positionnement sous forme de \\
|
---|
| 219 | \centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
|
---|
| 220 | - Ecriture PosTagTable \\
|
---|
| 221 | - Ecriture Statistiques en fin de fichier \\
|
---|
| 222 | - Voir BaseTools/ppfbinstream.h: \\
|
---|
| 223 | \centerline{\tt GotoPositionTag(int\_8 pos) , }
|
---|
| 224 | \centerline{\tt GetPosTagTable(...) }
|
---|
| 225 | \centerline{\tt int\_8 WritePositionTag() PutPosTagTable(...) }
|
---|
| 226 | - Ajout programme de test Tests/ppftswap.cc
|
---|
| 227 | \end{itemize}
|
---|
| 228 |
|
---|
| 229 | \section{TArray}
|
---|
| 230 | \begin{itemize}
|
---|
| 231 | \item Optimisation de la multiplication matricielle (CMV) - Extrait du
|
---|
| 232 | message (from CMV) du 30 Juillet 2004:
|
---|
| 233 | \begin{verbatim}
|
---|
| 234 | - on definit un flag d'optimisation
|
---|
| 235 | Contrairement a ce qu'on avait dit, je n'ai pas ajoute
|
---|
| 236 | un argument a Multiply car on ne peut pas jouer
|
---|
| 237 | avec qiand on utilise l'operateur * surcharge.
|
---|
| 238 | Or au vu des performance il'ma parut interessant que l'utilisateur
|
---|
| 239 | meme lambda puisse choisir le niveau d'optimisation
|
---|
| 240 | --> donc j'ai ajoute une methode statis dans BaseArray::
|
---|
| 241 | void BaseArray::SetMatProdOpt(uint_2);
|
---|
| 242 | uint_2 BaseArray::GetMatProdOpt();
|
---|
| 243 |
|
---|
| 244 | - Je n'ai refait les test de rapidite que sur OSF:
|
---|
| 245 |
|
---|
| 246 | 1./ pour les matrices 1000x1000 (grosses)
|
---|
| 247 | on arrive effectivement au meme temps pour les 4 cas
|
---|
| 248 | si on copie dans le cas lent (FxC)
|
---|
| 249 | ---EndMultiply FxC CPUTime: Total= 93.1296 (Partial= 69.3806) Sec.
|
---|
| 250 | devient
|
---|
| 251 | ---EndMultiply FxC CPUTime: Total= 34.9653 (Partial= 11.1829) Sec.
|
---|
| 252 | exactement comme les copains:
|
---|
| 253 | La copie prend de la place mais ne prend absolument
|
---|
| 254 | pas de temps pour les grosses matrices
|
---|
| 255 |
|
---|
| 256 | 2./ pour les matrices 10x10 (1000000 multiplications par cas)
|
---|
| 257 | on a bien ce que l'on attend a savoir que
|
---|
| 258 | la copie faites 100000 fois finie par nous faire perdre du temps
|
---|
| 259 | ---EndMultiply FxC CPUTime: Total= 37.4152 (Partial= 12.4662) Sec.
|
---|
| 260 | devient
|
---|
| 261 | ---EndMultiply FxC CPUTime: Total= 53.9978 (Partial= 28.8322) Sec.
|
---|
| 262 | dans ce cas on perd un gros facteur 2 a cause de la copie
|
---|
| 263 | mais rien de surprenant la dedans.
|
---|
| 264 |
|
---|
| 265 | -----------------------------------------------------------------------
|
---|
| 266 | - ensuite j'ai implemente une prise de decision au niveau de
|
---|
| 267 | l'optimisation pour les petites matrices:
|
---|
| 268 | le test est simple mais me semble OK:
|
---|
| 269 | je calcule sza taille du NDataBlock de A
|
---|
| 270 | szb B
|
---|
| 271 | si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
|
---|
| 272 | IDEE: on pifometre que raisonnablement il y a 100 koctets
|
---|
| 273 | de disponible pour les matrices A et B dans le cache processeur
|
---|
| 274 | et que dans ce cas elles sont copiees toutes les 2 dans le cache
|
---|
| 275 | par l'optimiseur du compilo qui est tres malin et surtout qui
|
---|
| 276 | veux absolument nous faire plaisir......
|
---|
| 277 |
|
---|
| 278 | -----------------------------------------------------------------
|
---|
| 279 | ===> Les resultats sont dans le fichier toto.calc en attached
|
---|
| 280 | .. En tete tu as l'explication des flags d'optimisation
|
---|
| 281 | ...Avec les 2 sections:
|
---|
| 282 | GROSSE MATRICE
|
---|
| 283 | et
|
---|
| 284 | PETITE MATRICE
|
---|
| 285 | \end{verbatim}
|
---|
| 286 |
|
---|
| 287 | \item Optimisation operations diverses, en particulier \\
|
---|
| 288 | 1) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
|
---|
| 289 | Add/Sub/Mul/DivElt(TArray a, TArray res) \\
|
---|
| 290 | 2) Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
|
---|
| 291 | \item Extrait de {\tt cvs log tarray.cc }
|
---|
| 292 | {\small \begin{verbatim}
|
---|
| 293 | ----------------------------
|
---|
| 294 | revision 1.38
|
---|
| 295 | date: 2004/07/30 13:31:39; author: ansari; state: Exp; lines: +28 -24
|
---|
| 296 | Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
|
---|
| 297 | ----------------------------
|
---|
| 298 | ----------------------------
|
---|
| 299 | revision 1.36
|
---|
| 300 | date: 2004/07/27 11:44:23; author: ansari; state: Exp; lines: +4 -1
|
---|
| 301 | Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
|
---|
| 302 | ----------------------------
|
---|
| 303 | revision 1.35
|
---|
| 304 | date: 2004/07/26 17:30:40; author: ansari; state: Exp; lines: +187 -108
|
---|
| 305 | Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
|
---|
| 306 | ----------------------------
|
---|
| 307 | \end{verbatim} }
|
---|
| 308 |
|
---|
| 309 | \item Extrait de {\tt cvs log tarray.cc }
|
---|
| 310 | {\small \begin{verbatim}
|
---|
| 311 | ----------------------------
|
---|
| 312 | revision 1.27
|
---|
| 313 | date: 2004/07/30 10:24:12; author: cmv; state: Exp; lines: +97 -32
|
---|
| 314 | - Intro decision auto d'optimisation produit de matrices
|
---|
| 315 | - Possibilite a l'utilisateur pour choisir l'optimisation
|
---|
| 316 | - cas FxC optimise par copie
|
---|
| 317 | cmv 30/07/04
|
---|
| 318 | ----------------------------
|
---|
| 319 | revision 1.26
|
---|
| 320 | date: 2004/07/29 12:31:16; author: ansari; state: Exp; lines: +7 -5
|
---|
| 321 | 1/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
|
---|
| 322 | Add/Sub/Mul/DivElt(TArray a, TArray res)
|
---|
| 323 | 2/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
|
---|
| 324 | 3/ Ajout methode TArray::ScalarProduct()
|
---|
| 325 | 4/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
|
---|
| 326 | 5/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
|
---|
| 327 | ReSize() de TMatrix et TVecteur.
|
---|
| 328 | Reza 29/07/2004
|
---|
| 329 | ----------------------------
|
---|
| 330 | revision 1.25
|
---|
| 331 | date: 2004/07/29 08:40:49; author: cmv; state: Exp; lines: +148 -1
|
---|
| 332 | Optimisation produit de matrice a la sauce cmv 29/07/04
|
---|
| 333 | ----------------------------
|
---|
| 334 | \end{verbatim} }
|
---|
| 335 |
|
---|
| 336 | \end{itemize}
|
---|
| 337 |
|
---|
| 338 | \section{HiStats}
|
---|
| 339 | \subsection{Classe HistoErr }
|
---|
| 340 | Ajout classe HistoErr (Septembre-Octobre 2004)
|
---|
| 341 |
|
---|
| 342 | \subsection{ SuperNTuple (Message du 8 Juillet 2004) }
|
---|
| 343 | \begin{verbatim}
|
---|
| 344 | Classe Record ou DynamicStruct
|
---|
| 345 | Record = Une ligne de ntuple - Un ensemble de noms de variables et de type
|
---|
| 346 | (integer, float, double, ...)
|
---|
| 347 |
|
---|
| 348 | class Record {
|
---|
| 349 | AddField(string fieldname, fieldtype, defval);
|
---|
| 350 | ....
|
---|
| 351 | }
|
---|
| 352 |
|
---|
| 353 | Le superntuple (classe DataTable ?) est cree avec un objet record configure.
|
---|
| 354 |
|
---|
| 355 | class DataTable {
|
---|
| 356 | DataTable(Record & rec);
|
---|
| 357 | Record GetRecord(); // On pourra l'utiliser pour remplir le NTuple
|
---|
| 358 | void Fill(Record& rec);
|
---|
| 359 | Record GetLine(int numline);
|
---|
| 360 | Vector GetColumn(string colname);
|
---|
| 361 | ....
|
---|
| 362 | }
|
---|
| 363 |
|
---|
| 364 | Pour implementer la classe DataTable, je pense qu'il faut utiliser une
|
---|
| 365 | classe intermediaire SwapDataBlock<T> et un DataSwapper
|
---|
| 366 |
|
---|
| 367 | Classe SwapDataBlock<T> ressemble au NDataBlock - sans les operations
|
---|
| 368 | arithmetiques - par contre, il gere plusieurs block de donnees - on peut donc l'etendre.
|
---|
| 369 | Dedans, au lieu d'avoir T * data, il a
|
---|
| 370 | quelque chose du style vector<T *> * data_pointer_list;
|
---|
| 371 | Un SwapDataBlock<T> qui n'a pas de DataSwapper associ, garde tous
|
---|
| 372 | ses block de donnes en memoire.
|
---|
| 373 | S'il y a un DataSwapper associe, il demande au data-swapper de 'sauver'
|
---|
| 374 | (swaper) un bloc de donnees, avant de le reutiliser pour de nouvelles donnees,
|
---|
| 375 | au dela d'un nombre maximum de blocs.
|
---|
| 376 |
|
---|
| 377 | La classe DataTable utilise alors un SwapDataBlock<T> pour chaque
|
---|
| 378 | colonne de donnees.
|
---|
| 379 |
|
---|
| 380 | Le DataSwapper de base est une classe virtuelle.
|
---|
| 381 | On pourra alors l'implementer en PPFDataSwapper et
|
---|
| 382 | puis FITSDataSwapper ...
|
---|
| 383 | \end{verbatim}
|
---|
| 384 |
|
---|
| 385 | \section{SkyMap , Samba }
|
---|
| 386 | \subsection{Tests et vrifications des polynomes de Legendre}
|
---|
| 387 | --> CMV
|
---|
| 388 |
|
---|
| 389 | \subsection{SphereECP}
|
---|
| 390 | Extrait du message du 7 Septembre 2004
|
---|
| 391 | \begin{verbatim}
|
---|
| 392 | J'ai mis dans la base (module SkyMap) le code de la classe
|
---|
| 393 | SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
|
---|
| 394 | + gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
|
---|
| 395 |
|
---|
| 396 | Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
|
---|
| 397 | Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
|
---|
| 398 | le Resize de la sphereECP
|
---|
| 399 | ylmserver.GenerateFromCl(map, -1, clin, 0.);
|
---|
| 400 |
|
---|
| 401 | Dans piapp, c'est visualise par defaut en projection Molleweide
|
---|
| 402 | On peut ajouter dans les options d'affichage :
|
---|
| 403 | ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
|
---|
| 404 | Si option ecparray, on peut preciser en plus
|
---|
| 405 | - ecpscaledeg: echelle des axes en degres au lieu de pixels
|
---|
| 406 | - ecpscalerad: echelle des axes en radians au lieu de pixels
|
---|
| 407 | Exemple:
|
---|
| 408 | Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
|
---|
| 409 | \end{verbatim}
|
---|
| 410 |
|
---|
| 411 | \subsection{Bug non corrig ds classe Circle}
|
---|
| 412 | \begin{verbatim}
|
---|
| 413 | From: Laurence Perotto <perotto@cdf.in2p3.fr>
|
---|
| 414 | Date: Mon Jan 5, 2004 4:59:12 PM Europe/Paris
|
---|
| 415 | To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
|
---|
| 416 | Subject: un bug dans sophya...
|
---|
| 417 |
|
---|
| 418 | Bonjour et bonne annee a tous les deux...
|
---|
| 419 |
|
---|
| 420 | Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
|
---|
| 421 | s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
|
---|
| 422 | utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
|
---|
| 423 | oubliee...
|
---|
| 424 | Voila...
|
---|
| 425 | Bonne journee.
|
---|
| 426 |
|
---|
| 427 | Laurence.
|
---|
| 428 | \end{verbatim}
|
---|
| 429 |
|
---|
| 430 | \section{SysTools}
|
---|
| 431 | \subsection{Classe SOPHYA::Commander (module SysTools) }
|
---|
| 432 |
|
---|
| 433 | Classe d'interprteur de ligne de commande inspire de C-Shell,
|
---|
| 434 | destine a etre incluee dans des applications C/C++. \\
|
---|
| 435 | ( Programme test Test/tcmd.cc )
|
---|
| 436 |
|
---|
| 437 | {\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 } \
|
---|
| 438 |
|
---|
| 439 | \begin{itemize}
|
---|
| 440 |
|
---|
| 441 | \item[\rond] {\bf Gestion des variables } \\
|
---|
| 442 | - Les variables sont non typees toutes traitees comme des chaines
|
---|
| 443 | de caracteres.
|
---|
| 444 | - Acces aux variables d'environnement -
|
---|
| 445 | - Un niveau variable d'environnement application est aussi prevu
|
---|
| 446 | - Toutes les variables de l'interpreteur sont traitees comme des vecteurs.
|
---|
| 447 | extensibles automatiquement (difference avec le C-Shell)
|
---|
| 448 |
|
---|
| 449 | \item[\rond] {\bf Creation / initialisation de variables } \\
|
---|
| 450 | \begin{verbatim}
|
---|
| 451 | Cmd> set sv StringValue
|
---|
| 452 | # Suppression d'une variable : unset ou clearvar
|
---|
| 453 | Cmd> unset sv
|
---|
| 454 |
|
---|
| 455 | # Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
|
---|
| 456 | Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
|
---|
| 457 | #Calcul numerique : expression de type C - Espace avant/apres '=' obligatoire
|
---|
| 458 | Cmd> a = 2+3*sqrt(4)
|
---|
| 459 | # Le signe egal peut etre utilise pour attribuer une chaine de caracteres
|
---|
| 460 | Cmd> a = 'Bonjour Madame'
|
---|
| 461 | # Un element de tableau peut etre specifie avant le signe egal
|
---|
| 462 | Cmd> vecv[2] = 'coucou'
|
---|
| 463 | # Ou bien
|
---|
| 464 | Cmd> i = 3
|
---|
| 465 | Cmd> vecv[i] = 'Ooohhh'
|
---|
| 466 | \end{verbatim}
|
---|
| 467 |
|
---|
| 468 | A droite du signe egal (membre de droite), les variables doivent etre
|
---|
| 469 | adressees a l'aide du signe \$.
|
---|
| 470 |
|
---|
| 471 | Une chaine peut etre cassee en mots a l'aide de la commande var2words
|
---|
| 472 | \begin{verbatim}
|
---|
| 473 | Cmd> var2words varname wordvarname [separateur]
|
---|
| 474 | \end{verbatim}
|
---|
| 475 |
|
---|
| 476 | \item[\rond] {\bf Acces aux variables } \\
|
---|
| 477 | L'acces aux variables s'effectue par le signe \$ {\tt \$varname} .
|
---|
| 478 | Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx.
|
---|
| 479 | Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
|
---|
| 480 | mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
|
---|
| 481 | {\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
|
---|
| 482 |
|
---|
| 483 | \begin{verbatim}
|
---|
| 484 | Cmd> x = 'Hello'
|
---|
| 485 | Cmd> echo $x
|
---|
| 486 | # Taille d'une variable de type vecteur $#vname
|
---|
| 487 | Cmd> set vx ( 111 2222 3333 444444 )
|
---|
| 488 | Cmd> echo $#vx
|
---|
| 489 | # Acces aux elements de tableau
|
---|
| 490 | Cmd> echo $vx[0] $vx[1]
|
---|
| 491 | # ou bien indexe par une variable
|
---|
| 492 | Cmd> i = 2
|
---|
| 493 | Cmd> echo $vx[i]
|
---|
| 494 | # Une syntaxe particuliere: $[vname] retourne le contenu de
|
---|
| 495 | # la variable dont le nom est ds vname
|
---|
| 496 | Cmd> zzz = 'Commander'
|
---|
| 497 | Cmd> xxx = 'zzz'
|
---|
| 498 | Cmd> echo '$[xxx]= ' $[xxx]
|
---|
| 499 | $[xxx]= Commander
|
---|
| 500 | \end{verbatim}
|
---|
| 501 |
|
---|
| 502 | Variables d'environnement: L'acces aux variables d'environnement
|
---|
| 503 | se fait simplement par{\tt \$varenvname}. Attention, les variables locales
|
---|
| 504 | de l'interpreteur sont prioritaires.
|
---|
| 505 |
|
---|
| 506 | \item[\rond] {\bf Variables particulieres: } \\
|
---|
| 507 | {\tt \$retval} ou {\tt \$retstr} : chaine specifee sur la derniere commande return
|
---|
| 508 | {\tt \$status} : code de retour de la derniere commande executee.
|
---|
| 509 | (variable existe et est rempli - mais il faudra se donner une regle
|
---|
| 510 | plus claire ...)
|
---|
| 511 | Arguments des fichiers .pic appeles par la commande exec
|
---|
| 512 | {\tt \$\# } : nombre d'arguments, a part \$0
|
---|
| 513 | {\tt \$0} nom du fichier ou du script
|
---|
| 514 | {\tt \$1 \$2 \$3} .... les arguments (pour les scripts et les .pic (exec))
|
---|
| 515 |
|
---|
| 516 |
|
---|
| 517 | \item[\rond] {\bf Structures de controle } \\
|
---|
| 518 | \begin{verbatim}
|
---|
| 519 | foreach f ( w1 w2 w3 ... )
|
---|
| 520 | ...
|
---|
| 521 | echo $f
|
---|
| 522 | end
|
---|
| 523 | \end{verbatim}
|
---|
| 524 |
|
---|
| 525 | Espace avant/apres '(' et avant ')' obligatoire.
|
---|
| 526 |
|
---|
| 527 | \begin{verbatim}
|
---|
| 528 | foreach v vecname
|
---|
| 529 | ...
|
---|
| 530 | echo $v
|
---|
| 531 | end
|
---|
| 532 | \end{verbatim}
|
---|
| 533 |
|
---|
| 534 | Boucle de type integer:
|
---|
| 535 | \begin{verbatim}
|
---|
| 536 | for i startInt:endInt[:stepInt]
|
---|
| 537 | ....
|
---|
| 538 | echo $i
|
---|
| 539 | end
|
---|
| 540 | \end{verbatim}
|
---|
| 541 |
|
---|
| 542 | Boucle de type float
|
---|
| 543 | \begin{verbatim}
|
---|
| 544 | for f startFloat:endFloat[:stepFloat]
|
---|
| 545 | ....
|
---|
| 546 | echo $f
|
---|
| 547 | end
|
---|
| 548 | \end{verbatim}
|
---|
| 549 |
|
---|
| 550 | Boucle sur les lignes d'un fichier:
|
---|
| 551 | \begin{verbatim}
|
---|
| 552 | forinfile line FileName
|
---|
| 553 | ...
|
---|
| 554 | echo $line
|
---|
| 555 | end
|
---|
| 556 | \end{verbatim}
|
---|
| 557 |
|
---|
| 558 | Instruction {\tt break} pour casser une boucle
|
---|
| 559 |
|
---|
| 560 | \item[\rond] {\bf Les tests }
|
---|
| 561 | \begin{verbatim}
|
---|
| 562 | if ( test ) then
|
---|
| 563 | endif
|
---|
| 564 |
|
---|
| 565 | if ( test ) then
|
---|
| 566 | ....
|
---|
| 567 | else
|
---|
| 568 | ....
|
---|
| 569 | endif
|
---|
| 570 | \end{verbatim}
|
---|
| 571 |
|
---|
| 572 | Espace avant/apres '(' et avant ')' obligatoire.
|
---|
| 573 |
|
---|
| 574 | test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b} OU {\tt a > b}
|
---|
| 575 | OU {\tt a <= b} OU {\tt a >= b}
|
---|
| 576 | les espaces avant l'operateur de comparaison sont obligatoires.
|
---|
| 577 | {\tt ==} et {\tt !=} effectue une comparaison de chaines de caracteres.
|
---|
| 578 | {\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
|
---|
| 579 |
|
---|
| 580 | \item[\rond] {\bf Definition de script } \\
|
---|
| 581 | \begin{verbatim}
|
---|
| 582 | defscript scriptname [description ]
|
---|
| 583 | ....
|
---|
| 584 | endscript
|
---|
| 585 | \end{verbatim}
|
---|
| 586 |
|
---|
| 587 | L'appel a un script se fait simplement a l'aide
|
---|
| 588 | du nom de script (contrairement aux fichiers
|
---|
| 589 | de commande qui sont executes a l'aide de la
|
---|
| 590 | commande {\tt exec} )
|
---|
| 591 | \begin{verbatim}
|
---|
| 592 | Cmd> scriptname arg1 arg2 arg3 ....
|
---|
| 593 | \end{verbatim}
|
---|
| 594 |
|
---|
| 595 | L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
|
---|
| 596 | script ou d'un fichier de commandes.
|
---|
| 597 | Commandes {\bf listscript }et {\bf clearscript scriptname}
|
---|
| 598 | permettet d'avoir la liste des scripts
|
---|
| 599 | definis / supprimer la definition d'un script
|
---|
| 600 |
|
---|
| 601 | \item[\rond] {\bf Autres commandes}
|
---|
| 602 | \begin{itemize}
|
---|
| 603 | \item Instruction {\bf echo } pour ecrire sur cout/stdout
|
---|
| 604 | \item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
|
---|
| 605 | \item Instruction {\bf sleep nsec} (attente de nsec seconds )
|
---|
| 606 | \item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
|
---|
| 607 | %
|
---|
| 608 | \item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
|
---|
| 609 | \item Commandes {\bf help et help keyword/commandname }
|
---|
| 610 | \item Commandes {\bf listvars , listcommands }
|
---|
| 611 | \item Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf listalias}
|
---|
| 612 | \end{itemize}
|
---|
| 613 | \end{itemize}
|
---|
| 614 |
|
---|
| 615 | \subsection{Classes CExpressionEvaluator et RPNExpressionEvaluator }
|
---|
| 616 | \begin{itemize}
|
---|
| 617 | \item[\rond] Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator
|
---|
| 618 | d'valuation d'expressions numriques en notation polonaise inverse
|
---|
| 619 | et avec la syntaxe C . Utilise dans la classe Commander.
|
---|
| 620 | \item[\rond] Programme test Test/tcmd.cc
|
---|
| 621 | \item[\rond] extrait de {\tt cvs log cexpre.cc }
|
---|
| 622 | {\small \begin{verbatim}
|
---|
| 623 | ----------------------------
|
---|
| 624 | revision 1.3
|
---|
| 625 | date: 2004/03/18 18:15:19; author: ansari; state: Exp; lines: +10 -6
|
---|
| 626 | Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
|
---|
| 627 | ----------------------------
|
---|
| 628 | revision 1.2
|
---|
| 629 | date: 2004/03/16 08:47:48; author: ansari; state: Exp; lines: +5 -6
|
---|
| 630 | suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
|
---|
| 631 | ----------------------------
|
---|
| 632 | revision 1.1
|
---|
| 633 | date: 2004/03/15 22:19:43; author: ansari; state: Exp;
|
---|
| 634 | Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
|
---|
| 635 | \end{verbatim} }
|
---|
| 636 |
|
---|
| 637 | \item[\rond] Extrait du message du 3 Mars 2004
|
---|
| 638 | \begin{verbatim}
|
---|
| 639 | Le code est base sur une hierarchie de classe d'expression :
|
---|
| 640 | Expr -------- NumberExp
|
---|
| 641 | --------- BinExp ------ AddExp
|
---|
| 642 | ------ MulExp
|
---|
| 643 | ------ SubExp
|
---|
| 644 | ------ DivExp
|
---|
| 645 | --------- FuncExp
|
---|
| 646 | --------- CExpressionEvaluator
|
---|
| 647 |
|
---|
| 648 | NumberExp : expression elementaire de nombre, sait actuellement traduire Pi et E
|
---|
| 649 | tres facile d'ajouter d'autres constantes
|
---|
| 650 | BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
|
---|
| 651 | avec gestion de niveau de priorite des operateurs
|
---|
| 652 | On peut facilement ajouter d'autres operateurs binaires (par exemple
|
---|
| 653 | puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
|
---|
| 654 | FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
|
---|
| 655 | actuellemenent, n=0 a n=3 arguments et quelques fonctions
|
---|
| 656 | usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
|
---|
| 657 | atan2, pow ) - voir ds le code
|
---|
| 658 |
|
---|
| 659 | CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
|
---|
| 660 | la fonction de decodage de la chaine ASCII (qui utilise
|
---|
| 661 | les fonctionalites des differentes classes est la dedans
|
---|
| 662 | et ce n'est pas tres long.
|
---|
| 663 | (+ une classe d'exception specifique).
|
---|
| 664 | \end{verbatim}
|
---|
| 665 |
|
---|
| 666 | \end{itemize}
|
---|
| 667 |
|
---|
| 668 | \section{PI,PIext,piapp}
|
---|
| 669 | \subsection{ Codage texte des options graphiques (11 Mars 2004)}
|
---|
| 670 | \begin{verbatim}
|
---|
| 671 | // Methode retournant un vecteur de string a partir des options
|
---|
| 672 | virtual int PIDrawer::OptionToString(vector<string> & opt) const
|
---|
| 673 | qui vient completer les deux methodes
|
---|
| 674 | virtual int PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
|
---|
| 675 | virtual void PIDrawer:: GetOptionsHelpInfo(string& info);
|
---|
| 676 | Ces methodes s'occupent de decoder les options graphiques (et l'aide
|
---|
| 677 | associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
|
---|
| 678 | une serie de chaine de caracteres a partir des options graphiques.
|
---|
| 679 | Il y a aussi la methode
|
---|
| 680 | virtual int PIWdgGen::OptionToString(vector<string> & opt) const
|
---|
| 681 | que j'ai ajoute (rien a faire pour le moment) - ainsi que
|
---|
| 682 | int PIGraphicAtt::AttToStrings(vector<string> & att) const.
|
---|
| 683 |
|
---|
| 684 | Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
|
---|
| 685 | L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
|
---|
| 686 | appelle PIGraphicAtt::AttToStrings() - a laisser donc tel quel.
|
---|
| 687 |
|
---|
| 688 | par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
|
---|
| 689 | PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
|
---|
| 690 | DecodeOptionString(vector<string> & opt, bool ...) est modifie,
|
---|
| 691 | rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
|
---|
| 692 | Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
|
---|
| 693 | derriere (push_back()) afin de pouvoir cumuler les options de base + options
|
---|
| 694 | specifiques.
|
---|
| 695 |
|
---|
| 696 | Comment tester ?
|
---|
| 697 | Pour tester, tu peux utiliser la fenetre des options texte ou j'ai ajoute le bouton
|
---|
| 698 | [GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
|
---|
| 699 | graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
|
---|
| 700 | <Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
|
---|
| 701 | \end{verbatim}
|
---|
| 702 |
|
---|
| 703 | \subsection{ Trace des axes (11 Mars 2004)}
|
---|
| 704 | Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
|
---|
| 705 | lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer.
|
---|
| 706 |
|
---|
| 707 | \subsection{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
|
---|
| 708 | \begin{verbatim}
|
---|
| 709 | J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
|
---|
| 710 | // Renvoie une distance au point x,y
|
---|
| 711 | // 0: au(x) point(s) le(s) plus proche(s) ... 1 au bord xmin/xmax , ymin/ymax
|
---|
| 712 | // La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
|
---|
| 713 | (ymin+ymax)/2)
|
---|
| 714 | virtual double PIDrawer::GetDistanceToPoint(double x, double y);
|
---|
| 715 |
|
---|
| 716 | ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
|
---|
| 717 | methode + code permettant le test ds PIScDrawWdg.
|
---|
| 718 | (virtual void PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
|
---|
| 719 | virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
|
---|
| 720 | Tu as a t'aoccuper de la methode PIDrawer::GetDistanceToPoint(double x, double y)
|
---|
| 721 | qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
|
---|
| 722 | distance raisonnable au point (x,y) en argument.
|
---|
| 723 | J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
|
---|
| 724 | partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
|
---|
| 725 | completer.
|
---|
| 726 |
|
---|
| 727 | Comment tester ?
|
---|
| 728 | J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
|
---|
| 729 | <Shift>Button-1 choisit le drawer le plus proche (base sur la
|
---|
| 730 | valeur de retour de PIDrawer::GetDistanceToPoint(double x, double y)
|
---|
| 731 | comme drawer actif. Ce drawer est passe en 'highlight' pendant que
|
---|
| 732 | le bouton est appuye.
|
---|
| 733 | \end{verbatim}
|
---|
| 734 |
|
---|
| 735 | \subsection{ Manipulation interactive des drawers (3 Juin 2004) }
|
---|
| 736 | La manipulation interactive des drawers ( l'aide d'un menu) a
|
---|
| 737 | t finalise pour les PIImage PIScDrawWdg PI3DWdg .
|
---|
| 738 |
|
---|
| 739 | \begin{verbatim}
|
---|
| 740 | o <Alt>D affiche le menu avec les differentes option
|
---|
| 741 | o Move/Resize: Affichage du rectangle + rectangle milieu
|
---|
| 742 | (deplacement) + coin bas-droite (deplacement) -
|
---|
| 743 | clicker ailleurs pour finir
|
---|
| 744 | o Mouse Select : Le mouse select des drawers est gere
|
---|
| 745 | maintenant par un PIEventHandler (comme pour Move/ReSize)
|
---|
| 746 | Drawer actif affiche par le rectangle muni d'un petit coin
|
---|
| 747 | (petit carre + rond dedans, en bas a droite).
|
---|
| 748 | Click souris change eventuellement le drawer actif.
|
---|
| 749 | On termine en clickant ds le petit [carre+rond]
|
---|
| 750 | \end{verbatim}
|
---|
| 751 |
|
---|
| 752 | \subsection{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) }
|
---|
| 753 | Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
|
---|
| 754 | et commande {\tt bargraph} ds PIext/basexecut.cc .
|
---|
| 755 | La commande bargraph ne gere pas encore toutes les possibilites
|
---|
| 756 | de la classe PIBarGraph. \\
|
---|
| 757 | Exemple d'utilisation:
|
---|
| 758 | \begin{verbatim}
|
---|
| 759 | Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4.
|
---|
| 760 | Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4.
|
---|
| 761 | Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4.
|
---|
| 762 | Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
|
---|
| 763 | Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4.
|
---|
| 764 | Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
|
---|
| 765 | -10. 15. 2 2. 8. 33. 7 -4.
|
---|
| 766 | Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
|
---|
| 767 | -10. 15. 22. 8. 33. 7 -4.
|
---|
| 768 | \end{verbatim}
|
---|
| 769 |
|
---|
| 770 | \subsection{ Traceur de lignes de texte (classe PITextDrawer) (3 Juin 2004) }
|
---|
| 771 |
|
---|
| 772 | Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande
|
---|
| 773 | {\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande)
|
---|
| 774 | doivent etre completes. \\
|
---|
| 775 | Exemple d'utilisation:
|
---|
| 776 | \begin{verbatim}
|
---|
| 777 | # On affiche qque chose
|
---|
| 778 | Cmd> openppf demo.ppf
|
---|
| 779 | Cmd> disp h1d
|
---|
| 780 | Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset' \
|
---|
| 781 | ' Christophe ' ' Reza Ansari' ' SOPHYA '
|
---|
| 782 | \end{verbatim}
|
---|
| 783 |
|
---|
| 784 | \subsection{ Gestion de re-scale-ing des axes en 3D (3 Juin 2004) }
|
---|
| 785 |
|
---|
| 786 | Mise en place complete (?) de la gestion de re-scale-ing des axes en 3D
|
---|
| 787 | avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
|
---|
| 788 | les limites de la boites 3D.
|
---|
| 789 | cela a ete une grosse prise de tete de tout un apres-midi.
|
---|
| 790 | J'ai eu ensuite mal a la tete une partie de la soiree ! \\
|
---|
| 791 | Exemple d'utilisation:
|
---|
| 792 |
|
---|
| 793 | \begin{verbatim}
|
---|
| 794 |
|
---|
| 795 | # On ouvre le fichier demo.ppf
|
---|
| 796 | Cmd> openppf demo.ppf
|
---|
| 797 | Cmd> surf mtx1 'colbr32'
|
---|
| 798 | Cmd> surf mtx1 'colbr32 noautoscale'
|
---|
| 799 | Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
|
---|
| 800 | # Affichage avec superposition
|
---|
| 801 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
|
---|
| 802 | Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
|
---|
| 803 | # Ou bien :
|
---|
| 804 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
|
---|
| 805 | Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
|
---|
| 806 |
|
---|
| 807 | \end{verbatim}
|
---|
| 808 | \subsection{piapp}
|
---|
| 809 | \begin{itemize}
|
---|
| 810 | \item Le multithreading a t mis en oeuvre dans piapp (janvier 2004).
|
---|
| 811 | \item Il faut par contre ajouter des possibilits de controle du thread
|
---|
| 812 | d'execution des commandes.
|
---|
| 813 | \item Extrait de {\tt cvs log pistdimgapp.cc } :
|
---|
| 814 | \begin{verbatim}
|
---|
| 815 | revision 1.71
|
---|
| 816 | date: 2004/09/07 07:10:18; author: ansari; state: Exp; lines: +35 -0
|
---|
| 817 | Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
|
---|
| 818 | methode process, thread boucle d'evts) - Reza 07/09/2004
|
---|
| 819 | ----------------------------
|
---|
| 820 | revision 1.70
|
---|
| 821 | date: 2004/01/06 18:44:56; author: ansari; state: Exp; lines: +11 -1
|
---|
| 822 | Suite debugging gestion lock entre threads ds piapp - A l'air de
|
---|
| 823 | marcher sur OSF1 et Linux ... Reza 06/01/2004
|
---|
| 824 | ----------------------------
|
---|
| 825 | revision 1.69
|
---|
| 826 | date: 2004/01/06 17:05:25; author: ansari; state: Exp; lines: +33 -7
|
---|
| 827 | Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
|
---|
| 828 | appele de suite) - Reza 06/01/2004
|
---|
| 829 | ----------------------------
|
---|
| 830 | revision 1.68
|
---|
| 831 | date: 2004/01/04 19:02:43; author: ansari; state: Exp; lines: +43 -13
|
---|
| 832 | Suite des modifs pour piapp multi-threads
|
---|
| 833 | 1) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
|
---|
| 834 | 2) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
|
---|
| 835 | la classe elle-meme, a travers le NamedObjMgr
|
---|
| 836 | 3) Modification de la boucle d'evenements, avec un thread de reveil
|
---|
| 837 | periodique
|
---|
| 838 | Reza, 4 Janvier 2004
|
---|
| 839 | \end{verbatim}
|
---|
| 840 | \item Extrait de {\tt cvs log pistdimgapp.cc } :
|
---|
| 841 | \begin{verbatim}
|
---|
| 842 | ----------------------------
|
---|
| 843 | revision 1.62
|
---|
| 844 | date: 2003/11/27 10:51:58; author: ansari; state: Exp; lines: +45 -20
|
---|
| 845 | Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
|
---|
| 846 | mmander - Reza 27/11/2003
|
---|
| 847 | ----------------------------
|
---|
| 848 | revision 1.61
|
---|
| 849 | date: 2003/11/26 23:01:55; author: ansari; state: Exp; lines: +20 -1755
|
---|
| 850 | Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
|
---|
| 851 | ander (de SysTools) - Reza 26/11/2003
|
---|
| 852 | ----------------------------
|
---|
| 853 | revision 1.60
|
---|
| 854 | date: 2003/07/21 21:13:10; author: cmv; state: Exp; lines: +3 -3
|
---|
| 855 | - introduction notion de numero de ligne dans expression ntuple
|
---|
| 856 | modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
|
---|
| 857 | modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
|
---|
| 858 | PrepareNTExpressionCFile, LinkExprFunc,...)
|
---|
| 859 | - doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
|
---|
| 860 | (rz + cmv 21/7/2003)
|
---|
| 861 | ----------------------------
|
---|
| 862 | \end{verbatim}
|
---|
| 863 | \end{itemize}
|
---|
| 864 |
|
---|
| 865 | \section{Documentation (Manual/) }
|
---|
| 866 | Documentation des classes de SysTools. \\
|
---|
| 867 | Extrait message du 12 Aout 2004 : \\
|
---|
| 868 | \begin{verbatim}
|
---|
| 869 | ---> Au sujet de la doc (Manual/)
|
---|
| 870 | J'ai installe doxygen sur le Mac, version 1.3.8 -
|
---|
| 871 | Il faut updater le fichier de config de depart (dox_sophya.conf)
|
---|
| 872 | Pour ma part, j'ai du modifier mkmf (en version privee) -
|
---|
| 873 | En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
|
---|
| 874 | ou specifique Mac.
|
---|
| 875 |
|
---|
| 876 | J'ai aussi modifie certaines options de doxygen (en version privee)
|
---|
| 877 | EXTRACT_LOCAL_CLASSES --> NO (au lieu de YES)
|
---|
| 878 | DETAILS_AT_TOP ---> YES (au lieu de No)
|
---|
| 879 | SORT_MEMBER_DOCS ---> NO (au lieu de YES)
|
---|
| 880 |
|
---|
| 881 | Si on es d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
|
---|
| 882 | utiliser la fonction update de doxygen (doxygen -u)
|
---|
| 883 | \end{verbatim}
|
---|
| 884 |
|
---|
| 885 | \section{Plan de modifs pour SOPHYA V 2.0 PI/piapp V 4.0 (Septembre 2003) }
|
---|
| 886 | \subsection{Gestion du code (Mgr/ ) }
|
---|
| 887 | \begin{verbatim}
|
---|
| 888 |
|
---|
| 889 | o Chemins/variables d'environnement
|
---|
| 890 | - Remplacer DPCDEVREP DPCBASEREP par SOPHYADEVREP et SOPHYABASEREP
|
---|
| 891 | - Remplacer EROSCXX par SOPHYACXX (?)
|
---|
| 892 | o Simplifier/rationaliser les makefiles
|
---|
| 893 | - Mettre les flags de compils pour chaque compilo-systeme dans un fichier au lieu
|
---|
| 894 | d'avoir tout Makefile.h
|
---|
| 895 | Exemple fichier Mgr/linux_g++.flags
|
---|
| 896 | CPPFLAGS = ...
|
---|
| 897 | CXXFLAGS = ...
|
---|
| 898 | LIBS = ...
|
---|
| 899 |
|
---|
| 900 | o Mettre un script pour chercher les lib externes (c-fitsio, FFTW, ...) et creer
|
---|
| 901 | eventuellement l'arborescence ExtLibs
|
---|
| 902 |
|
---|
| 903 | o Inclure la definition des flags influant sur le code (comme
|
---|
| 904 | -DOSF1/Linux/Darwin/IRIX64
|
---|
| 905 | SO_BOUNDCHECKING a la fin du fichier machdefs.h que l'on fabriquera a
|
---|
| 906 | partir de du machdef_mkmf.h )
|
---|
| 907 | PB-> ce fichier deviendra alors dependant du systeme et de l'installation !
|
---|
| 908 | Faut-il deplacer alors Include/ sous uname-$EROSCXX (Linux-g++)
|
---|
| 909 | ou carrement considerer que la separation pour differents systemes doit se faire au
|
---|
| 910 | niveau de SOPHYADEV/BASE/REP ?
|
---|
| 911 |
|
---|
| 912 | o Abandonner (?) les regles de compilation par defaut
|
---|
| 913 | Inclure dans les Makefile la ligne de commande :
|
---|
| 914 | $(OBJ)toto.o : toto.cc toto.h titi.h ...
|
---|
| 915 | $(COMPILECXX) -$(CPPFLAGS) $(CXXFLAGS) -c -o $(OBJ)toto.o toto.cc
|
---|
| 916 |
|
---|
| 917 | o Garder les Makefile simple (eviter trop de tests et syntaxe complique)
|
---|
| 918 |
|
---|
| 919 | \end{verbatim}
|
---|
| 920 |
|
---|
| 921 | \subsection{Code/Librairie SOPHYA $\rightarrow$ V 2.0)}
|
---|
| 922 | \begin{verbatim}
|
---|
| 923 |
|
---|
| 924 | o Fichiers PPersist (BaseTools) :
|
---|
| 925 | - Ajouter la possibilite d'ecrire des complex(r_4> complex<r_8>
|
---|
| 926 | (actuellement c'est ecrit sous forme de 2*r_4 ou 2*r_8)
|
---|
| 927 | - Ajouter des tag de positionnement qui pourrait servir au cas
|
---|
| 928 | ou on utiliserait le fichier PPF comme fichier de swap
|
---|
| 929 | Ces tags ne peuvent pas etre les memes que les name-tag
|
---|
| 930 | existant actuellement.
|
---|
| 931 | Une utilisation annexe de ces tags peut etre alors un moyen
|
---|
| 932 | de verifier que le fichier n'est pas corrompu
|
---|
| 933 | Ce tag se presente alors sous forme de
|
---|
| 934 | <tag (1 byte)><FilePosition (8 byte, long int)>
|
---|
| 935 | On peut alors parcourir le fichier et verifier la coherence de
|
---|
| 936 | ces tags.
|
---|
| 937 | - Il faut aussi ajouter au niveau de POutPersist et PInPersist
|
---|
| 938 | les services pour ecrire et lire une collection de tag de
|
---|
| 939 | positionnement, afin qu'un objet puisse utiliser une liste de
|
---|
| 940 | tag pour se positionner
|
---|
| 941 |
|
---|
| 942 | o BaseTools/ Voir autres remarques ds fichier Manual/sophya_afaire.txt
|
---|
| 943 | concernant en particulier les NDataBlock<T> DataBlock<T> ...
|
---|
| 944 |
|
---|
| 945 | o Les tableaux : TArray/
|
---|
| 946 | - Ajouter une classe de base abstraite GenericMatrix<T>
|
---|
| 947 | avec methode d'acces aux elements, nb de lignes, nb de colonnes,
|
---|
| 948 | ...
|
---|
| 949 | - Introduire les TinyMatrix (TinyMatrix<T, int L, int C>)
|
---|
| 950 | avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
|
---|
| 951 |
|
---|
| 952 | - Introduire des matrices creuses simples SpareMatrix<T>
|
---|
| 953 |
|
---|
| 954 | - Introduire les DiagonalMatrix<T>
|
---|
| 955 |
|
---|
| 956 | Remarque: Les TMatrix TinyMatrix et SparseMatrix heritent de GenericMatrix
|
---|
| 957 |
|
---|
| 958 | o HiStats
|
---|
| 959 | - Faire une classe SuperNTuple (!), facile a utiliser, sachant swaper sur les
|
---|
| 960 | PPF, avec des champs de differents type
|
---|
| 961 |
|
---|
| 962 | o IFFTW/
|
---|
| 963 | - Passage a FFTW 3.x ?
|
---|
| 964 |
|
---|
| 965 | o Voir autres remarques pour l'ensemble des modules ds Manual/sophya_afaire.txt
|
---|
| 966 | \end{verbatim}
|
---|
| 967 |
|
---|
| 968 | \subsection{Code/Librairie PI ($\rightarrow$ V 4.0)}
|
---|
| 969 | \begin{verbatim}
|
---|
| 970 |
|
---|
| 971 | o Menu contextuel pour les Drawers
|
---|
| 972 | - Ajouter a PIImage, PIScrDrawWdg(2D), PIDraw3DWdg(3D) un menu obtenu
|
---|
| 973 | sur <Shift><Bouton-1> par exemple, avec la liste de tous les Drawers
|
---|
| 974 | permettant d'afficher la fenetre des options graphiques, ou le fenetre
|
---|
| 975 | des options ou la fenetre des options texte, activer deplacement/resize
|
---|
| 976 | des drawers, suppression (delete) ou detach des drawers, et en fonction
|
---|
| 977 | du widgets, la fenetre des axes ou de controle d'image
|
---|
| 978 |
|
---|
| 979 | o Mettre l'option auto-scale (rapport entre axes X,Y,Z) pour les Drawers3D
|
---|
| 980 | verifer/debugger la definition de la boite 3D au niveau des Drawers3D
|
---|
| 981 |
|
---|
| 982 | o Traceur d'histos, NTuples, ...
|
---|
| 983 | Remplacer le trace des lignes par morceau fait par appel multiples
|
---|
| 984 | a DrawLine a un seul appel a DrawPolygon (si les lignes sont connectes
|
---|
| 985 | bien sur) --> Ca ameliore sensiblement l'aspect pour le trace en pointille
|
---|
| 986 |
|
---|
| 987 | o Ajouter un traceur de Bar-chart 2D OU ApplePie (facile !)
|
---|
| 988 | On donne une serie de nombres, serie de couleur, + serie de strings
|
---|
| 989 | et on trace alors une sorte d'histo, avec des barres (rectangles) espaces
|
---|
| 990 | Ou bien on trace un cercle divise en zones
|
---|
| 991 |
|
---|
| 992 | o Ajouter un traceur de Lego-Plot
|
---|
| 993 |
|
---|
| 994 | o PIImageWindow (Une fenetre avec une PIImage, un Zoom et une vue globale)
|
---|
| 995 | Assemblage
|
---|
| 996 |
|
---|
| 997 | o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
|
---|
| 998 |
|
---|
| 999 | \end{verbatim}
|
---|
| 1000 |
|
---|
| 1001 | \subsection{(s)piapp ($\rightarrow$ V 4.0)}
|
---|
| 1002 | \begin{verbatim}
|
---|
| 1003 |
|
---|
| 1004 | o Verifier l'interpreteur et introduire le type de variable vecteur
|
---|
| 1005 | qui peut etre detecte par exemple lors de l'initialisation par set
|
---|
| 1006 | set a 'Bonjour CMV' # -> variable scalaire
|
---|
| 1007 | set va [ 12 14 hello ... ] # variable de type vecteur $va[]
|
---|
| 1008 |
|
---|
| 1009 | o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
|
---|
| 1010 | pour pouvoir plotter des objets, l'un vs l'autre
|
---|
| 1011 |
|
---|
| 1012 | o Separer la classe PIACmd en une classe de base (CShellLikeInterpreter)
|
---|
| 1013 | (a mettre ds SysTools) et la classe PIACmd a laisser ds PIext
|
---|
| 1014 |
|
---|
| 1015 | o (???) Introduire quelque chose du style
|
---|
| 1016 | AddDialogue("Cmd", "dialogue-description)
|
---|
| 1017 | qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
|
---|
| 1018 | pour les commandes usuelles (???)
|
---|
| 1019 |
|
---|
| 1020 | o Voir les autres commentaires ds Manual/spiapp_afaire.txt
|
---|
| 1021 |
|
---|
| 1022 | \end{verbatim}
|
---|
| 1023 |
|
---|
| 1024 |
|
---|
| 1025 | \end{document}
|
---|