| 1 | \documentclass[twoside,11pt,A4]{article}
 | 
|---|
| 2 | % \documentclass[twoside,11pt,A4]{report}
 | 
|---|
| 3 | \usepackage[french]{babel}
 | 
|---|
| 4 | 
 | 
|---|
| 5 | % \usepackage[T1]{fontenc}
 | 
|---|
| 6 | \usepackage[applemac]{inputenc}
 | 
|---|
| 7 | \usepackage{palatino}
 | 
|---|
| 8 | % \usepackage{times}
 | 
|---|
| 9 | % package pour ecrire DRAFT en fond de page 
 | 
|---|
| 10 | % \usepackage[light,all,draft]{draftcopy}
 | 
|---|
| 11 | 
 | 
|---|
| 12 | % \usepackage{epsfig}
 | 
|---|
| 13 | \usepackage{graphicx}
 | 
|---|
| 14 | \usepackage{amsmath}
 | 
|---|
| 15 | \usepackage{amssymb}
 | 
|---|
| 16 | 
 | 
|---|
| 17 | \setlength{\textwidth}{16cm}
 | 
|---|
| 18 | \setlength{\textheight}{23 cm}
 | 
|---|
| 19 | \setlength{\topmargin}{0.5cm}
 | 
|---|
| 20 | \setlength{\oddsidemargin}{0.cm}
 | 
|---|
| 21 | \setlength{\evensidemargin}{0.cm}
 | 
|---|
| 22 | \setlength{\unitlength}{1mm}
 | 
|---|
| 23 | 
 | 
|---|
| 24 | \newcommand{\rond}{$\bullet \ $}
 | 
|---|
| 25 | \newcommand{\etoile}{$\star \ $}
 | 
|---|
| 26 | \newcommand{\cercle}{$\circ \ $}
 | 
|---|
| 27 | \newcommand{\carre}{$\Box \ $}
 | 
|---|
| 28 | 
 | 
|---|
| 29 | %%%% Pour le decoupage en sections
 | 
|---|
| 30 | % \newcommand{\groupe}[1]{\chapter{#1}}
 | 
|---|
| 31 | % \newcommand{\titre}[1]{\section{#1}}
 | 
|---|
| 32 | % \newcommand{\soustitre}[1]{\subsection{#1}}
 | 
|---|
| 33 | %%%
 | 
|---|
| 34 | \newcommand{\groupe}[1]{\section{#1}}
 | 
|---|
| 35 | \newcommand{\titre}[1]{\subsection{#1}}
 | 
|---|
| 36 | \newcommand{\soustitre}[1]{\subsubsection{#1}}
 | 
|---|
| 37 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 38 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 39 | \begin{document}
 | 
|---|
| 40 | \begin{titlepage}
 | 
|---|
| 41 | \begin{center}
 | 
|---|
| 42 | {\Large \bf Liste de modifications de SOPHYA } \\[5mm] 
 | 
|---|
| 43 | {\large Septembre 2003 - Novembre  2007 } \\[25mm]
 | 
|---|
| 44 | Liste des tags et dates : \\[5mm]
 | 
|---|
| 45 | {\large 
 | 
|---|
| 46 | \begin{tabular}{lcl}
 | 
|---|
| 47 | V = 0.727 &   \hspace{10mm}  & Octobre 1999 \\
 | 
|---|
| 48 | V = 0.8  &   \hspace{10mm}  &  F\'evrier 2000 \\
 | 
|---|
| 49 | V = 1.1  &   \hspace{10mm}  &  F\'evrier 2001 \\
 | 
|---|
| 50 | V = 1.2  &   \hspace{10mm}  &  Juillet 2001 \\
 | 
|---|
| 51 | V = 1.3  &   \hspace{10mm}  &  Novembre  2001 \\
 | 
|---|
| 52 | V = 1.5  &   \hspace{10mm}  &   D\'ecembre  2002 \\
 | 
|---|
| 53 | V = 1.7  &   \hspace{10mm}  &   Septembre 2003 \\
 | 
|---|
| 54 | V = 1.9  &   \hspace{10mm}  &   Juin 2005 - SANS tag CVS \\
 | 
|---|
| 55 | V = 1.9xx  &   \hspace{10mm}  & 09/2005 ... 09/2006  \\
 | 
|---|
| 56 | V = 2.0  &   \hspace{10mm}  &  Septembre 2006 - tag CVS \\
 | 
|---|
| 57 | V = 2.046  &   \hspace{10mm}  &  Ao\^{u}t 2007 - NO tag  \\
 | 
|---|
| 58 | V = 2.1  &   \hspace{10mm}  &  Novemvre 2007 - tag CVS \\
 | 
|---|
| 59 | 
 | 
|---|
| 60 | \end{tabular}
 | 
|---|
| 61 | } \\[8mm]
 | 
|---|
| 62 | %%%%%%
 | 
|---|
| 63 | \begin{tabular}{ll}
 | 
|---|
| 64 | R. Ansari            &  ansari@lal.in2p3.fr       \\
 | 
|---|
| 65 | C. Magneville        &  cmv@hep.saclay.cea.fr     
 | 
|---|
| 66 | \end{tabular}
 | 
|---|
| 67 | 
 | 
|---|
| 68 | \end{center}
 | 
|---|
| 69 | \end{titlepage}
 | 
|---|
| 70 | 
 | 
|---|
| 71 | \newpage
 | 
|---|
| 72 | \tableofcontents
 | 
|---|
| 73 | \newpage
 | 
|---|
| 74 | 
 | 
|---|
| 75 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 76 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 77 | 
 | 
|---|
| 78 | \groupe{De V2.0 (Sep2006)  V2.1 (Nov2007) }
 | 
|---|
| 79 | \titre{BuildMgr} 
 | 
|---|
| 80 | \begin{itemize}
 | 
|---|
| 81 | \item[\rond] Nov 2007 : configure detecte Linux 64 bits {(\tt -> /usr/X11R6/lib64)}
 | 
|---|
| 82 | et correction bug lors de l'execution de sed pour la creation de sophyamake.inc 
 | 
|---|
| 83 | {\tt AIX, -X 64 }.
 | 
|---|
| 84 | \item[\rond] Oct 2007 : Ajout flag {\tt -alsofftwfloat} au script pour compilation/link
 | 
|---|
| 85 | methodes float (r\_4) de FFTWServer.
 | 
|---|
| 86 | \item[\rond] Avril 2007 :  Amlioration du script configure, qui prend en charge 
 | 
|---|
| 87 | la gestion des diffrents flags de compilation (mis dans fichier machdefs.h gnr
 | 
|---|
| 88 | ou dans sophyamake.inc (pour les flags du compilateur) - Nettoyage du fichier 
 | 
|---|
| 89 | BaseTools/machdefs\_mkmf.h et des fichiers osname\_compilo.inc
 | 
|---|
| 90 | \begin{verbatim}
 | 
|---|
| 91 | csh> cd BuildMgr/
 | 
|---|
| 92 | csh> ./configure -h
 | 
|---|
| 93 | configure [-sbase SOPHYABASE] [-scxx SOPHYACXX] [-incln] 
 | 
|---|
| 94 |   [-minc mymake.inc]  [-compopt 'cc/cxxOptions'] 
 | 
|---|
| 95 |   [-arch64] [-sasz64] [-nofpic] [-nothsafe] [-boundcheck] [-sodebug]
 | 
|---|
| 96 |   [-extp dir1 -extp dir2 ...] [-extip dir1 -extip dir2 ... ] 
 | 
|---|
| 97 |                    [-extlp dir1 -extlp dir2 ... ]
 | 
|---|
| 98 |   [-noextlib] [-noext fits] [-noext fftw] 
 | 
|---|
| 99 |                      [-noext lapack] [-noext astro]
 | 
|---|
| 100 |   [-noPI] [-slballinone]
 | 
|---|
| 101 |   [-usefftw2 -uselapack2] 
 | 
|---|
| 102 |   (See SOPHYA manual/web pages for a detailed description 
 | 
|---|
| 103 |    of configure options)
 | 
|---|
| 104 | \end{verbatim}
 | 
|---|
| 105 | \end{itemize}
 | 
|---|
| 106 | 
 | 
|---|
| 107 | %%%%%%
 | 
|---|
| 108 | \titre{BaseTools} 
 | 
|---|
| 109 | \begin{itemize}
 | 
|---|
| 110 | \item[\rond] Novembre 2007 : Ajout de la classe de gnrateur alatoire
 | 
|---|
| 111 | thread-safe {\bf RandomGenerator } - fichiers {\tt stsrand.h .cc} - 
 | 
|---|
| 112 | Ajout du programme {\tt Tests/tmtrnd,3.cc }.\\
 | 
|---|
| 113 | Correction , protection I/O PPF pour NDataBlock de taille nulle.
 | 
|---|
| 114 | \item[\rond] Aout 2007 : Passage numro de version SOPHYA V=2.135 
 | 
|---|
| 115 |  V=2.046 - Les numros V=A.B sont dsormais rservs aux versions 
 | 
|---|
| 116 | avec un tag cvs.
 | 
|---|
| 117 | \item[\rond] Avril 2007 : {\bf ThreadSafe } \hspace{5mm}
 | 
|---|
| 118 | Les oprations de partage de rfrence rendues thread-safe pour les classes 
 | 
|---|
| 119 | {\bf NDataBlock$<$T$>$ , SegDataBlock$<$T$>$, SwSegDataBlock$<$T$>$} 
 | 
|---|
| 120 | \begin{itemize}
 | 
|---|
| 121 | \item Ajout de la classe {\bf ThSafeOp} avec les mthodes {\tt lock() , unlock() } utilisant 
 | 
|---|
| 122 | un mutex. 
 | 
|---|
| 123 | \item Ces mthodes peuvent tre rendues transparentes (sans effet) en activant le flag \\
 | 
|---|
| 124 | {\tt SO\_NOTHSAFE} (option -nothsafe de configure) 
 | 
|---|
| 125 | \item Cette protection / synchronisation semble tre efficace en ce qui concerne les 
 | 
|---|
| 126 | constructeurs de copie et l'extraction de sous-tableaux pour TArray, TMatrix,TVector.
 | 
|---|
| 127 | (programme de vrification Tests/zthr.cc - option sync ).  
 | 
|---|
| 128 | \item En ce qui concerne les classes SegDataBlock , SwSegDataBlock, l'efficacit 
 | 
|---|
| 129 | de la protection n'a pas t teste. Les oprations d'criture sur les DataTable 
 | 
|---|
| 130 | devront aussi  tre protges pour l'utilisation multi-thread.
 | 
|---|
| 131 | \end{itemize}
 | 
|---|
| 132 | \item[\rond] Avril 2007 :  Nettoyage du fichier machdefs\_mkmf.h, suppression des flags 
 | 
|---|
| 133 | de compilation optionnelle MacOS 8.x  9.x / compilo CodeWarrior
 | 
|---|
| 134 | \item[\rond]  Fev 2007 :  Ajout methode NDataBlock::RenewObjId() , et Dealloc() (alias de Delete())
 | 
|---|
| 135 | et correction bug ds SwSegDataBlock::GetCstSegment() 
 | 
|---|
| 136 | \end{itemize}
 | 
|---|
| 137 | 
 | 
|---|
| 138 | %%%%%%
 | 
|---|
| 139 | \titre{TArray} 
 | 
|---|
| 140 | \begin{itemize}
 | 
|---|
| 141 | \item[\rond] Oct 07 : Mthode TArray::SumX2() renomme en SumSq(), Norm2() appelle SumSq() sauf pour les tableaux complexes, o on calcule une norme relle positive (Sum[el x conj(el)).
 | 
|---|
| 142 | \item[\rond] Avr 07 : Constructeur de copie et extraction de sous-tableaux rendus thread-safe 
 | 
|---|
| 143 | (voir ci-dessus)
 | 
|---|
| 144 | \item[\rond]  Jan 07 : Ajout classes/methodes de cast de contenu - sans conversion (fichier arrctcast.h)
 | 
|---|
| 145 | \item[\rond]  Fev 07 :  Ajout methode TArray::RenewObjId() (reecriture PPF), et ZeroSize()
 | 
|---|
| 146 | (deallocation tableau / le rendre vierge=sans taille)
 | 
|---|
| 147 | \end{itemize}
 | 
|---|
| 148 | 
 | 
|---|
| 149 | %%%%%%
 | 
|---|
| 150 | \titre{HiStats} 
 | 
|---|
| 151 | 
 | 
|---|
| 152 | \begin{itemize}
 | 
|---|
| 153 | \item[\rond] Novembre 2007 : Les methodes de remplissage de NTuple {\tt Fill() }
 | 
|---|
| 154 | et de DataTable, SwPPFDataTable {\tt AddRow() }, ainsi que 
 | 
|---|
| 155 | {\tt BaseDataTable::GetRow() } rendues thread-safe. \\
 | 
|---|
| 156 | Activation avec la methode {\tt SetThreadSafe(bool fg=true)  }
 | 
|---|
| 157 | pour chaque NTuple ou DataTable / SwPPFDataTable. Ajout du programme Tests/tmtdt.cc.
 | 
|---|
| 158 | \item[\rond]  Janvier 2007 : Remaniement de la classe HistoErr: elle n'h\'erite plus
 | 
|---|
| 159 | de Histo et devient stand-alone avec des TVector comme support des donne\'ees. \\
 | 
|---|
| 160 | Introduction de la classe Histo2DErr qui fait la meme chose que HistoErr
 | 
|---|
| 161 | mais \`a $2$ dimensions. \\
 | 
|---|
| 162 | Modifs des adaptateurs: NOMAdapter\_Histo ne contient plus HistoErr,
 | 
|---|
| 163 | et NOMAdapter\_HistoErr, NOMAdapter\_Histo2DErr sont cr\'ees dans PIext.
 | 
|---|
| 164 | 
 | 
|---|
| 165 | \end{itemize}
 | 
|---|
| 166 | 
 | 
|---|
| 167 | %%%%%%
 | 
|---|
| 168 | \titre{SkyMap} 
 | 
|---|
| 169 | 
 | 
|---|
| 170 | \begin{itemize}
 | 
|---|
| 171 | \item[\rond]  Aou 2007 :  Correction de signe dans {\tt LocalMap::PixToSphereC()} suite message de
 | 
|---|
| 172 | S. Plaszczynski du 12/07/07
 | 
|---|
| 173 | \item[\rond]  Fev 2007 :  Ajout methode RenewObjId() (reecriture PPF) pour les cartes spheriques 
 | 
|---|
| 174 | et localmap
 | 
|---|
| 175 | \end{itemize}
 | 
|---|
| 176 | 
 | 
|---|
| 177 | %%%%%%
 | 
|---|
| 178 | \titre{SysTools} 
 | 
|---|
| 179 | 
 | 
|---|
| 180 | \begin{itemize}
 | 
|---|
| 181 | \item[\rond]  Jul 2007 :  Ajout d'acces au temps CPU et elapsed ds la classe Timer - et 
 | 
|---|
| 182 | ajout test specifique dans Tests/tcmd.cc {\tt (tcmd timer)}. \\
 | 
|---|
| 183 | {\tt Timer::TotalElapsedTime() , PartialElapsedTime() , TotalCPUTime() , PartialCPUTime() }
 | 
|---|
| 184 | \end{itemize}
 | 
|---|
| 185 | 
 | 
|---|
| 186 | %%%%%%
 | 
|---|
| 187 | \titre{FitsIOServer}
 | 
|---|
| 188 | 
 | 
|---|
| 189 | \begin{itemize}
 | 
|---|
| 190 | \item[\rond] Nov 2007 : propagation des modifs BaseDataTable-Thread-safe dans 
 | 
|---|
| 191 | SwFitsDataTable. Mais les SwFitsDataTable NE sont toujours pas thread-safe.
 | 
|---|
| 192 | \item[\rond]  Jan/Fev 2007 :  Passage a la version LONGLONG  ( fits\_xxxll ) permettant 
 | 
|---|
| 193 | la gestion de tailles $ > 2^{32} $
 | 
|---|
| 194 | \end{itemize}
 | 
|---|
| 195 | 
 | 
|---|
| 196 | \titre{IFFTW}
 | 
|---|
| 197 | 
 | 
|---|
| 198 | \begin{itemize}
 | 
|---|
| 199 | \item[\rond] Nov 2007 : Correction resize tableau de sortie {\tt FFT(complexe -> reel)} multi-dim.
 | 
|---|
| 200 | \item[\rond]  Oct 2007 :  Ajout version float (r\_4) des methodes {\tt FFTForward} et {\tt FFTBackward}
 | 
|---|
| 201 | a la classe FFTWServer. (compilation sous condition et flag -alsofftwfloat du script configure)
 | 
|---|
| 202 | \end{itemize}
 | 
|---|
| 203 | 
 | 
|---|
| 204 | %%%%%%
 | 
|---|
| 205 | \titre{PI/piapp}
 | 
|---|
| 206 | \begin{itemize}
 | 
|---|
| 207 | \item[\rond] Octobre 2007 {\bf (PI/PIext)}: Ajout methodes de redirection stdout/stderr vers un objet PIConsole, 
 | 
|---|
| 208 | a travers un fichier disque (fichiers PI/piapplx.h .cc) avec possibilite de recopie sur stdout/stderr 
 | 
|---|
| 209 | original (terminal) - en plus d'affichage sur PIConsole. \\
 | 
|---|
| 210 | + Adaptation au niveau de PIext/pistdimgapp.h .cc et ProgPI/piapp.cc \\
 | 
|---|
| 211 | + la redirection passe par les fichiers PIATmp\_xxx/sout.log /serr.log \\
 | 
|---|
| 212 | + le flag (s)piapp -doublered permet la redirection avec recopie sur terminal
 | 
|---|
| 213 | %%%
 | 
|---|
| 214 | \item[\rond] Octobre 2007 {\bf (PIext)}: Correction/protection au niveau de gestion des locks de mutex 
 | 
|---|
| 215 | (classes NamedObjMgr , PIStdImgApp) pour eviter les blocages de l'application sous certaines 
 | 
|---|
| 216 | conditions ( lors de l'affichage de la fenetre de gestion d'objets  et lecture PPF). \\
 | 
|---|
| 217 | Modification des classes NamedObjMgr . ObjMgrWind, la methode 
 | 
|---|
| 218 | { \tt UpdateObjMgrWindow() } de NamedObjMgr en particulier. \\
 | 
|---|
| 219 | Ajout de la classe {\bf SOpExObj} (ds piacmd.h piacmd.cc) pour executer 
 | 
|---|
| 220 | - de maniere asynchrone - 
 | 
|---|
| 221 | les commandes display,print \ldots  sur les objets, initiees au niveau 
 | 
|---|
| 222 | de la boucle d'evenements (fenetre ObjMgrWind).
 | 
|---|
| 223 | \item[\rond] Octobre 2007 {\bf (PIext)}: Ajout attributs graphiques \\
 | 
|---|
| 224 | {\tt samew=WdgName } specification de widget cible pour trace en superposition \\
 | 
|---|
| 225 | {\tt wname=Nom } Pour specifier un nom de widget (= nom d'objet par defaut) \\
 | 
|---|
| 226 | {\tt inset=fx1,fx2,fy1,fy2 } pour specifier la position du drawer en inset (medaillon)
 | 
|---|
| 227 | \item[\rond] Octobre 2007 {\bf (PIGcont/PIext)}: Codage mthode PIContourDrawer::GetOptionsHelpInfo() pour le traceur de contour. \\
 | 
|---|
| 228 | Ajout accs aux attributs {\tt min max minmax sumsq norm2 } aux niveau des adaptateurs 
 | 
|---|
| 229 | des objets de type TArray, TMatrix, TVector ({\tt \$\{arrName.sumsq\} \$\{arrName.min\} } \ldots).
 | 
|---|
| 230 | \item[\rond]  Aout 2007 {\bf (PI)}: Nouvelles mthodes de calcul de limite de LUT
 | 
|---|
| 231 | dans PIImage (AutoLut) et ajout du dcodage de l'option {\tt autolut=alt[,ns[,minp,maxp]]}.
 | 
|---|
| 232 | Si {\tt minp,maxp} spcifis, seuls les pixels entre {\tt minp <= pixval <= maxp} 
 | 
|---|
| 233 | sont utiliss pour le calcul des limites.
 | 
|---|
| 234 | \begin{verbatim}
 | 
|---|
| 235 |   autolut=minmax,frac   Fraction de la dynamique totale
 | 
|---|
| 236 |   autolut=meansig,ns   min=mean-ns*sigma , max=mean+ns*sigma
 | 
|---|
| 237 |   autolut=histail,ns   Queue de l'histo des pixels 
 | 
|---|
| 238 |   autolut=hispeak,ns  Pic de l'histo des pixels
 | 
|---|
| 239 | \end{verbatim}
 | 
|---|
| 240 | %
 | 
|---|
| 241 | \item[\rond]  Aout 2007 {\bf (PI)}:  Contournement d'un problme d'venements X expose 
 | 
|---|
| 242 | perdu - apparu avec des versions rcentes du serveur XFree ou le serveur X sur Linux
 | 
|---|
| 243 | ou une combinaison des deux. Rsultat, contenu non affich lors d'une cration de fentre
 | 
|---|
| 244 | suivi d'un ajout de PIBaseWidget (sauf PIImage) et plantage lors du click dans la fentre.
 | 
|---|
| 245 | Correction: Ajout de {\tt XFlush() + usleep(5000)} (5 $\mu$s). 
 | 
|---|
| 246 | \item[\rond]  Juin 2007 {\bf (PI/PIext)}:  Ajout des mthodes 
 | 
|---|
| 247 | {\tt PIGraphicAtt::ColNameToColor() , ColIndexToColor()} et possibilit d'utiliser le contenu
 | 
|---|
| 248 | d'une colonne d'une table comme nom de couleur ou numro de couleur pour le trac
 | 
|---|
| 249 | des markers par PINTuple {\tt PINTuple::SelectColorByName() , SelectColorByIndex()}.
 | 
|---|
| 250 | Ajout des commandes {\bf nt2dcn} et {\bf nt2dci}  et {\bf plot2dc}  ds piapp. 
 | 
|---|
| 251 | \item[\rond]  Avril 2007 {\bf (PI)}:  La source des problmes sur MacOS/PowerPC (G4/G5)
 | 
|---|
| 252 | et AIX (architecture Power) a finalement t identifi et corrig/
 | 
|---|
| 253 | Parmi ces problmes:  des pull-down menus mal placs (MenuBar), ou encore des 
 | 
|---|
| 254 | dysfonctionnement de boutons dans les fentres de dialogues. \\
 | 
|---|
| 255 | Source et correction: \hspace{5mm} {\tt XtMoveWidget / XtResizeWidget} remplac par \\
 | 
|---|
| 256 | \hspace*{10mm} {\tt XtMakeGeometryRequest}   
 | 
|---|
| 257 | \item[\rond]  Avril 2007 {\bf (PIext/piapp)}: 
 | 
|---|
| 258 | \begin{itemize}
 | 
|---|
| 259 | \item Ajout de la classe {\bf NOMAdapter\_DVList}
 | 
|---|
| 260 | pour la prise en charge des objets DVList. 
 | 
|---|
| 261 | Accs aux variables par {\tt \$\{dvlName.varName\} } 
 | 
|---|
| 262 | \item Accs  l'objet DVList attach aux TArray, TMatrix, DataTable par \\
 | 
|---|
| 263 | \hspace*{5mm}  {\tt \$\{objName.info.varName\} }
 | 
|---|
| 264 | \item L'adaptateur de DataTable permet aussi d'accder aux lignes de la table par \\
 | 
|---|
| 265 | \hspace*{5mm} {\tt \$\{tableName.row.num\} }
 | 
|---|
| 266 | \item Prise en charge de la classe {\tt Image<T>} par l'adaptateur des matrices 
 | 
|---|
| 267 | {\tt NOMAdapter\_TMatrix<T> } au lieu de l'adaptateur spcifique 
 | 
|---|
| 268 | {\tt NOMAdapter\_Image<T>  }
 | 
|---|
| 269 | \end{itemize}
 | 
|---|
| 270 | \item[ \rond] Janvier 2007  {\bf (PIext)}:  modification des trac\'es des histogrammes PIHisto.
 | 
|---|
| 271 | La classe PIHisto prend en entr\'ee un wrapper P1DHistoWrapper.
 | 
|---|
| 272 | Les wrappers HistoWrapper et HistoErrWrapper sont cr\'ees.
 | 
|---|
| 273 | Ainsi les HistoErr peuvent \^etre dessin\'es sous forme d'histogrammes.
 | 
|---|
| 274 | Mise en place des options graphiques permettant de dessiner les
 | 
|---|
| 275 | valeurs (``val''), erreurs (``err'') et le nombre d'entr\'ees par bin (``nb'')
 | 
|---|
| 276 | pour les HistoErr. Idem pour les versions $2$ dimensions.
 | 
|---|
| 277 | \end{itemize}
 | 
|---|
| 278 | 
 | 
|---|
| 279 | %%%%%%%%
 | 
|---|
| 280 | \titre{Documentation (Manual/) } 
 | 
|---|
| 281 | \begin{itemize}
 | 
|---|
| 282 | \item[\rond]  Jan 2007 :  Ajout fichier de mesure de performances comparees entre 
 | 
|---|
| 283 | differentes processeur / OS / compilateur {\tt perfmachine.txt }
 | 
|---|
| 284 | \end{itemize}
 | 
|---|
| 285 | 
 | 
|---|
| 286 | 
 | 
|---|
| 287 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 288 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 | 
|---|
| 289 | \groupe{De V1.7 (Sep2003)  V2.0 (Sep2006) }
 | 
|---|
| 290 | \titre{BuildMgr} 
 | 
|---|
| 291 | \begin{itemize}
 | 
|---|
| 292 | \item[\rond] Juin 2006 :  Ajout targets cleanobj prgall tests prgutil
 | 
|---|
| 293 | \item[\rond] Avril 2006 :  suppression de libextsophya.so pour fabriquer libPI.so 
 | 
|---|
| 294 | (PIext rendu independant de FitsIOServer) 
 | 
|---|
| 295 | \item[\rond] Dec 2005/Jan 2006 :  Portage sur AIX - xlC 
 | 
|---|
| 296 | \item[\rond] Dec 2005 : check Compil avec icc , compil avec gcc-4
 | 
|---|
| 297 | \item[\rond] Avril-Mai 2005 : Introduction de la nouvelle version de
 | 
|---|
| 298 | scripts de gestion du code - avec un script principal configure. \\
 | 
|---|
| 299 | Variable d'environnement {\bf SOPHYABASE } - \\
 | 
|---|
| 300 | Pour les makefiles, l'ensemble des dfinitions se trouve dans : \\
 | 
|---|
| 301 | SOPHYABASE/include/sophyamake.ic \\
 | 
|---|
| 302 | \end{itemize}
 | 
|---|
| 303 | 
 | 
|---|
| 304 | %%%%%%
 | 
|---|
| 305 | \titre{BaseTools} 
 | 
|---|
| 306 | 
 | 
|---|
| 307 | \soustitre{Modifs} 
 | 
|---|
| 308 | 
 | 
|---|
| 309 | \begin{itemize}
 | 
|---|
| 310 | \item[\rond] Jun/Jul 2006 : Amelioration gestion initialiseur modules \\
 | 
|---|
| 311 | - Ajout methodes statique  {\tt RegisterModule(const char* name, double version)
 | 
|---|
| 312 | ListModules(ostream\& os) } a la classe de base SophyaInitiator. \\
 | 
|---|
| 313 | - Enregistrement des modules avec leur nom et un numero de version par module,
 | 
|---|
| 314 | independante du numero de version SOPHYA \\
 | 
|---|
| 315 | - le programme scanppf peut donner la liste des modules enregistrees et leur numero 
 | 
|---|
| 316 | de version. 
 | 
|---|
| 317 | \item[\rond] Octobre-Novembre 2005 :  \\
 | 
|---|
| 318 | 1/ Correction bug TimeStamp::ToDays() + petites amelioration \\
 | 
|---|
| 319 | 2/ Prise en compte du type TimeStamp dans MuTyV (sous forme de double en interne) \\
 | 
|---|
| 320 | 3/ Adaptation DVList a modifs MuTyV (typ TimeStamp) et R/W PPersist \\
 | 
|---|
| 321 | 4/ Gestion format YYYY-MM-DDThh:mm:ss par TimeStamp \\
 | 
|---|
| 322 | 5/ Gestionnaire PPersist pour TimeStamp
 | 
|---|
| 323 | %
 | 
|---|
| 324 | \item[\rond] Septembre 2004 - {\bf Namespace SOPHYA } \\
 | 
|---|
| 325 | Suppression de {\tt using namespace SOPHYA ; } ds machdefs.h - 
 | 
|---|
| 326 | Ajout fichier {\tt \#include "sopnamsp.h"} dans les .cc de SOPHYA,
 | 
|---|
| 327 | ainsi que lors de la gnration automatique du code (runxx, c++exec) 
 | 
|---|
| 328 | \end{itemize}
 | 
|---|
| 329 |  
 | 
|---|
| 330 | \soustitre{PPF}
 | 
|---|
| 331 | \begin{itemize}
 | 
|---|
| 332 | \item[\rond] Avril 2005 - Ajout de wrapper de lecture/ecriture PPF pour les vecteurs de
 | 
|---|
| 333 | la librairie standard (classe PPFWrapperSTLVector$<$T$>$ ) fichier ppfwrapstlv.h
 | 
|---|
| 334 | \item[\rond] Ajout de la classes utilitaire PPF\_TPointer\_IO$<$T$>$ 
 | 
|---|
| 335 | (fichiers ppftpointer.h .cc)
 | 
|---|
| 336 | \item[\rond] Amelioration de l'impression ds AnalyseTags (ppfbinstream.cc)
 | 
|---|
| 337 | \item[\rond] scanppf.cc revision 1.8 (2005/04/05)
 | 
|---|
| 338 | modification programme scanppf: ajout option -lh -lho pour lister les classes PP
 | 
|---|
| 339 | ersist handler
 | 
|---|
| 340 | \item[\rond] Dcembre 2003 (9/12/2003) Fin de l'ensemble des modifs pour les
 | 
|---|
| 341 | PPF V3 \\
 | 
|---|
| 342 | - Ecriture nombre complexes r4, r8 avec tag spcifique. \\
 | 
|---|
| 343 | Tag de positionnement sous forme de \\
 | 
|---|
| 344 | \centerline{\tt <tag (1 byte)><FilePosition (8 byte, long int)> } \\
 | 
|---|
| 345 | - Ecriture PosTagTable \\
 | 
|---|
| 346 | - Ecriture Statistiques en fin de fichier \\
 | 
|---|
| 347 | - Voir BaseTools/ppfbinstream.h: \\
 | 
|---|
| 348 | \centerline{\tt  GotoPositionTag(int\_8 pos) , } 
 | 
|---|
| 349 | \centerline{\tt  GetPosTagTable(...) } 
 | 
|---|
| 350 | \centerline{\tt  int\_8 WritePositionTag() PutPosTagTable(...) } 
 | 
|---|
| 351 | - Ajout programme de test Tests/ppftswap.cc
 | 
|---|
| 352 | \item[\rond] Dcembre 2003 - Ajout ppfbinstream.h .cc \\
 | 
|---|
| 353 | Classes PPFBinaryIOStream , PPFBinaryInputStream , PPFBinaryOutputStream
 | 
|---|
| 354 | \item[\rond] Novembre 2003 (21/11/2003) - Ajout rawstream.h .cc \\
 | 
|---|
| 355 | Classes RawInOutStream  ,  RawInFileStream , RawOutFileStream
 | 
|---|
| 356 | 
 | 
|---|
| 357 | \end{itemize}
 | 
|---|
| 358 | 
 | 
|---|
| 359 | 
 | 
|---|
| 360 | \soustitre{Nouvelles classes}
 | 
|---|
| 361 | \begin{itemize}
 | 
|---|
| 362 | \item[\rond] Ajout de la classe {\bf TimeStamp} pour la manipulation de date et heure - 
 | 
|---|
| 363 | calcul de duree. - Ajout du prog. test Tests/ttimestamp.cc (Mars 2005) 
 | 
|---|
| 364 | \item[\rond] { \bf Segmented Data Block :}  \\
 | 
|---|
| 365 | Mars-Avril 2005: Introduction des classes similaires aux NDataBlock, mais permettant 
 | 
|---|
| 366 | de gerer des blocs de donnees segementes, pour tout type de donnees, de structures
 | 
|---|
| 367 | et de classes (template pour tout type T). 
 | 
|---|
| 368 | \begin{enumerate}
 | 
|---|
| 369 | \item  Ajout de la classe {\tt SegDataBlock<T>} (et l'interface { \tt SegDBInterface<T>} )
 | 
|---|
| 370 | pour la gestion de blocs de donnees segmentes (segdatablock.h) et son
 | 
|---|
| 371 | gestionnaire PPF {\tt FIO\_SegDataBlock<T>}  (fichier fiosegdb.h )
 | 
|---|
| 372 | \item Ajout de la classe {\tt SwSegDataBlock<T>} (Data bloc segmente avec gestion
 | 
|---|
| 373 | de swap) et la classe swapper PPF {\tt PPFDataSwapper<T>} (fichiers
 | 
|---|
| 374 | ppfswapper.h et swsegdb.h)
 | 
|---|
| 375 | \item Ajout programme de test Tests/tstsegdb.cc 
 | 
|---|
| 376 | \end{enumerate}
 | 
|---|
| 377 | \end{itemize}
 | 
|---|
| 378 | 
 | 
|---|
| 379 | %%%%%
 | 
|---|
| 380 | \titre{TArray}
 | 
|---|
| 381 | %%
 | 
|---|
| 382 | Il s'agit essentiellement des ameliorations en terme de performances et 
 | 
|---|
| 383 | de correction d'erreur. 
 | 
|---|
| 384 | 
 | 
|---|
| 385 | \begin{itemize}
 | 
|---|
| 386 | \item[\rond] Avril 2006  \\
 | 
|---|
| 387 | - Instanciation explicite des tableaux , matrices et vecteurs en types \\
 | 
|---|
| 388 | {\tt int\_2 uint\_2 uint\_4 uint\_8 } \\
 | 
|---|
| 389 | - Optimisation du code (ds tarray.cc) des operations sur tableaux  \\
 | 
|---|
| 390 | {\tt (TArray::Add/Mul/Sub/DivCst  TArray::Add/Mul/Sub/DivElt ) } \\ 
 | 
|---|
| 391 | a travers le  choix entre Share() ou Allocation si le tableau resultat est non alloue. 
 | 
|---|
| 392 | D'apres les tests de performances (TCPU), {\bf (tjet , spar)}, il ne semble pas y 
 | 
|---|
| 393 | avoir de cas de pertes, et on a en general des gains de l'ordre de 20\% dans la plupart 
 | 
|---|
| 394 | des cas de tests,  et un ou deux cas avec des gains de 50-80\%. \\
 | 
|---|
| 395 | - Declaration de l'operateur / entre tableaux (DivElt) et l'operateur \& \& pour la 
 | 
|---|
| 396 | multiplication element par element (MulElt)   
 | 
|---|
| 397 | \item[\rond] Janvier, Fvrier 2006  \\
 | 
|---|
| 398 | - Amlioration des fonctionalits de la classe {\bf Range} et  des mthodes d'extraction
 | 
|---|
| 399 | de sous-tableaux (+ correction bugs et amlioration documentation) \\ 
 | 
|---|
| 400 | - Ajout de la methode BaseArray::ValueAtPositionDB() pour corriger un gros bug au 
 | 
|---|
| 401 | niveau de la conversion de type (r\_4 r\_8 ...) des tableaux \\
 | 
|---|
| 402 | - Compil avec g++ 4 : ajouts fichiers declarations privees tmatrix\_tsnl.h tvector\_tsnl.h 
 | 
|---|
| 403 | 
 | 
|---|
| 404 | \item[\rond] Juillet 2004 \\
 | 
|---|
| 405 | - Optimisation de la multiplication matricielle (CMV) - Extrait du 
 | 
|---|
| 406 | message (from CMV) du 30 Juillet 2004: \\
 | 
|---|
| 407 | \begin{verbatim}
 | 
|---|
| 408 | - on definit un flag d'optimisation
 | 
|---|
| 409 |   Contrairement a ce qu'on avait dit, je n'ai pas ajoute
 | 
|---|
| 410 |   un argument a Multiply car on ne peut pas jouer
 | 
|---|
| 411 |   avec qiand on utilise l'operateur * surcharge.
 | 
|---|
| 412 |   Or au vu des performance il'ma parut interessant que l'utilisateur
 | 
|---|
| 413 |   meme lambda puisse choisir le niveau d'optimisation
 | 
|---|
| 414 |   --> donc j'ai ajoute une methode statis dans BaseArray::
 | 
|---|
| 415 |     void BaseArray::SetMatProdOpt(uint_2);
 | 
|---|
| 416 |     uint_2 BaseArray::GetMatProdOpt();
 | 
|---|
| 417 | 
 | 
|---|
| 418 | - Je n'ai refait les test de rapidite que sur OSF:
 | 
|---|
| 419 | 
 | 
|---|
| 420 | 1./  pour les matrices 1000x1000 (grosses)
 | 
|---|
| 421 |   on arrive effectivement au meme temps pour les 4 cas
 | 
|---|
| 422 |   si on copie dans le cas lent (FxC)
 | 
|---|
| 423 |   ---EndMultiply FxC  CPUTime: Total= 93.1296  (Partial= 69.3806) Sec.
 | 
|---|
| 424 |   devient
 | 
|---|
| 425 |   ---EndMultiply FxC  CPUTime: Total= 34.9653  (Partial= 11.1829) Sec.
 | 
|---|
| 426 |   exactement comme les copains:
 | 
|---|
| 427 |   La copie prend de la place mais ne prend absolument
 | 
|---|
| 428 |   pas de temps pour les grosses matrices
 | 
|---|
| 429 | 
 | 
|---|
| 430 | 2./ pour les matrices 10x10 (1000000 multiplications par cas)
 | 
|---|
| 431 |   on a bien ce que l'on attend a savoir que
 | 
|---|
| 432 |   la copie faites 100000 fois finie par nous faire perdre du temps
 | 
|---|
| 433 |   ---EndMultiply FxC  CPUTime: Total= 37.4152  (Partial= 12.4662) Sec.
 | 
|---|
| 434 |   devient
 | 
|---|
| 435 |   ---EndMultiply FxC  CPUTime: Total= 53.9978  (Partial= 28.8322) Sec.
 | 
|---|
| 436 |   dans ce cas on perd un gros facteur 2 a cause de la copie
 | 
|---|
| 437 |   mais rien de surprenant la dedans.
 | 
|---|
| 438 | 
 | 
|---|
| 439 | -----------------------------------------------------------------------
 | 
|---|
| 440 | - ensuite j'ai implemente une prise de decision au niveau de
 | 
|---|
| 441 | l'optimisation pour les petites matrices:
 | 
|---|
| 442 | le test est simple mais me semble OK:
 | 
|---|
| 443 | je calcule sza taille du NDataBlock de A
 | 
|---|
| 444 |            szb                         B
 | 
|---|
| 445 | si ((sza+szb)*sizeof(T) < 100000 ) pas d'optimisation
 | 
|---|
| 446 | IDEE: on pifometre que raisonnablement il y a 100 koctets
 | 
|---|
| 447 |    de disponible pour les matrices A et B dans le cache processeur
 | 
|---|
| 448 |    et que dans ce cas elles sont copiees toutes les 2 dans le cache
 | 
|---|
| 449 |    par l'optimiseur du compilo qui est tres malin et surtout qui
 | 
|---|
| 450 |    veux absolument nous faire plaisir......
 | 
|---|
| 451 | 
 | 
|---|
| 452 | -----------------------------------------------------------------
 | 
|---|
| 453 | ===> Les resultats sont dans le fichier toto.calc en attached
 | 
|---|
| 454 | .. En tete tu as l'explication des flags d'optimisation
 | 
|---|
| 455 | ...Avec les 2 sections:
 | 
|---|
| 456 |     GROSSE MATRICE
 | 
|---|
| 457 |        et
 | 
|---|
| 458 |     PETITE MATRICE
 | 
|---|
| 459 | \end{verbatim}
 | 
|---|
| 460 | 
 | 
|---|
| 461 | \item[\rond] Juillet 2004 : Optimisation operations diverses, en particulier \\
 | 
|---|
| 462 | 1) Remplacement des methodes Add/Sub/Mul/DivElt(a) par
 | 
|---|
| 463 |    Add/Sub/Mul/DivElt(TArray a, TArray res) \\
 | 
|---|
| 464 | 2)  Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
 | 
|---|
| 465 | \item[\rond] Extrait de {\tt cvs log tarray.cc } 
 | 
|---|
| 466 | {\small \begin{verbatim}
 | 
|---|
| 467 | ----------------------------
 | 
|---|
| 468 | revision 1.38
 | 
|---|
| 469 | date: 2004/07/30 13:31:39;  author: ansari;  state: Exp;  lines: +28 -24
 | 
|---|
| 470 | Diverses petites optimisations ds les methodes operations/affectations de TArray - Reza 30 Juillet 2004
 | 
|---|
| 471 | ----------------------------
 | 
|---|
| 472 | ----------------------------
 | 
|---|
| 473 | revision 1.36
 | 
|---|
| 474 | date: 2004/07/27 11:44:23;  author: ansari;  state: Exp;  lines: +4 -1
 | 
|---|
| 475 | Corrections bug apres modifs methods Add/Sub/Mul/DivCst(x,res) - Reza 27 Juillet 2004
 | 
|---|
| 476 | ----------------------------
 | 
|---|
| 477 | revision 1.35
 | 
|---|
| 478 | date: 2004/07/26 17:30:40;  author: ansari;  state: Exp;  lines: +187 -108
 | 
|---|
| 479 | Remplacement methodes Add/Mul/Sub/Div(T x) par AddCst/MulCst/SubCst/DivCst(T x, TArray<T> res) ds TArray - Reza 26 Juillet 2004
 | 
|---|
| 480 | ----------------------------
 | 
|---|
| 481 | \end{verbatim} }
 | 
|---|
| 482 | 
 | 
|---|
| 483 | \item[\rond] Extrait de {\tt cvs log tarray.cc } 
 | 
|---|
| 484 | {\small \begin{verbatim}
 | 
|---|
| 485 | ----------------------------
 | 
|---|
| 486 | revision 1.27
 | 
|---|
| 487 | date: 2004/07/30 10:24:12;  author: cmv;  state: Exp;  lines: +97 -32
 | 
|---|
| 488 | - Intro decision auto d'optimisation produit de matrices
 | 
|---|
| 489 | - Possibilite a l'utilisateur pour choisir l'optimisation
 | 
|---|
| 490 | - cas FxC optimise par copie
 | 
|---|
| 491 |                 cmv 30/07/04
 | 
|---|
| 492 | ----------------------------
 | 
|---|
| 493 | revision 1.26
 | 
|---|
| 494 | date: 2004/07/29 12:31:16;  author: ansari;  state: Exp;  lines: +7 -5
 | 
|---|
| 495 | 1/ Remplacement des methodes Add/Sub/Mul/DivElt(a) par
 | 
|---|
| 496 |    Add/Sub/Mul/DivElt(TArray a, TArray res)
 | 
|---|
| 497 | 2/ Operateurs += -= A+B A-B TArray et TMatrix/TVecteur modifies en consequence
 | 
|---|
| 498 | 3/ Ajout methode TArray::ScalarProduct()
 | 
|---|
| 499 | 4/ Methode TArray::SetT renomme en SetCst() SetT garde en alias
 | 
|---|
| 500 | 5/ Ajout parametre bool fzero (mise a zero) ajoute ds constructeur et
 | 
|---|
| 501 |    ReSize() de TMatrix et TVecteur.
 | 
|---|
| 502 |                                           Reza 29/07/2004
 | 
|---|
| 503 | ----------------------------
 | 
|---|
| 504 | revision 1.25
 | 
|---|
| 505 | date: 2004/07/29 08:40:49;  author: cmv;  state: Exp;  lines: +148 -1
 | 
|---|
| 506 | Optimisation produit de matrice a la sauce cmv 29/07/04
 | 
|---|
| 507 | ----------------------------
 | 
|---|
| 508 | \end{verbatim}  }
 | 
|---|
| 509 | 
 | 
|---|
| 510 | \end{itemize}
 | 
|---|
| 511 | 
 | 
|---|
| 512 | 
 | 
|---|
| 513 | %%%%%%%%
 | 
|---|
| 514 | \titre{HiStats} 
 | 
|---|
| 515 | %%%%%
 | 
|---|
| 516 | \soustitre{Classe Histo,HProf,HistoErr,Histo2D } 
 | 
|---|
| 517 | \noindent
 | 
|---|
| 518 | - Aout 2006 : refonte profonde des allocations memoire et delete de
 | 
|---|
| 519 |  Histo,HProf,HistoErr,Histo2D pour faciliter la gestion des IO FITS. \\
 | 
|---|
| 520 | - Sept 2004 : Ajout classe HistoErr. 
 | 
|---|
| 521 | C'est un Histo qui garde le nombre d'entr\'ees dans chaque bin) \\
 | 
|---|
| 522 | \soustitre{NTuple}
 | 
|---|
| 523 | la classe NTuple peut maintenant avoir des colonnes float ou double.
 | 
|---|
| 524 | Il y a maintenant deux methodes Fill(r\_4 *) et Fill(r\_8 *)
 | 
|---|
| 525 | Les noms ne sont plus limites a 8 caracteres.
 | 
|---|
| 526 | 
 | 
|---|
| 527 | 
 | 
|---|
| 528 | \soustitre{ Les DataTable (SuperNTuple) }
 | 
|---|
| 529 | 
 | 
|---|
| 530 | {\bf Octobre-Novembre 2005 } \\
 | 
|---|
| 531 | \begin{itemize}
 | 
|---|
| 532 | \item[\rond] Ajout classe {\bf DataTableRow} pour manipulation d'une ligne de la table.
 | 
|---|
| 533 | Ajout/maj methode BaseDataTable::EmptyRow() AddRow() GetRow() 
 | 
|---|
| 534 | \item[\rond] Gestion des types {\tt complex<r\_4>  ,   complex<r\_8>  , TimeStamp } par 
 | 
|---|
| 535 | BaseDataTable, DataTable et SwPPFDataTable
 | 
|---|
| 536 | \item[\rond] Codage methode Print() (Dump ascii) et NTFrAscii (decodage fichier 
 | 
|---|
| 537 | text) dans BaseDataTable. 
 | 
|---|
| 538 | \item[\rond] Codage mthode BaseDataTable::GetColumnD() pour recuperer
 | 
|---|
| 539 | une colonne de la table en {\tt TVector<r\_8>} - NON TESTE 
 | 
|---|
| 540 | \end{itemize}
 | 
|---|
| 541 | 
 | 
|---|
| 542 | \begin{verbatim}
 | 
|---|
| 543 | BaseDataTable                                    
 | 
|---|
| 544 |               --------  DataTable
 | 
|---|
| 545 |               --------  SwPPFDataTable
 | 
|---|
| 546 | \end{verbatim}
 | 
|---|
| 547 | 
 | 
|---|
| 548 | \noindent {\bf BaseDataTable} : Classe de base, avec qques methodes virtuelles
 | 
|---|
| 549 | pures, implementent la presque totalite des fonctionalites, en particulier
 | 
|---|
| 550 | celles de l'interface NTupleInterface.
 | 
|---|
| 551 | 
 | 
|---|
| 552 | \noindent {\bf DataTable} : Implementation concrete de BaseDataTable avec donnees en 
 | 
|---|
| 553 | memoire \\ 
 | 
|---|
| 554 | (utilise SegDataBlock$<$T$>$ pour stocker les colonnes)
 | 
|---|
| 555 | 
 | 
|---|
| 556 | \noindent {\bf SwPPFDataTable} : Implementation concrete de BaseDataTable avec donnees 
 | 
|---|
| 557 | en swap sur stream PPF (POutPersist)- \\ 
 | 
|---|
| 558 | Utilise  (SwSegDataBlock$<$T$>$ avec 
 | 
|---|
| 559 | un data-swapper PPF (classe PPFDataSwapper$<$T$>$ ) 
 | 
|---|
| 560 | 
 | 
|---|
| 561 | DataTable et SwPPFDataTable respecte +/- les conventions SOPHYA , 
 | 
|---|
| 562 | constructeur de copie avec partage ou copie de donnees, operateur = 
 | 
|---|
| 563 | Datatable : partage et copie , = : fait une copie
 | 
|---|
| 564 | SwPPFDataTable : C'est toujours partage (presque par definition)
 | 
|---|
| 565 | Autre point, compte tenu de la structure des streams PPF , 
 | 
|---|
| 566 | les SwPPFDataTable fonctionne en ecriture OU en lecture, mais
 | 
|---|
| 567 | pas les deux a la fois. 
 | 
|---|
| 568 | 
 | 
|---|
| 569 | Classe de gestion de persistence commune : \\
 | 
|---|
| 570 | {\bf ObjFileIO$<$BaseDataTable$>$ }
 | 
|---|
| 571 | 
 | 
|---|
| 572 | Lit et ecrit les DataTable et SwPPFDataTable
 | 
|---|
| 573 | Actuellement, on ne peut les relires que dans le meme type,
 | 
|---|
| 574 | cad on ne peut relire avec un SwPPFDataTable un objet 
 | 
|---|
| 575 | ecrit comme DataTable - mais cette possibilite pourra 
 | 
|---|
| 576 | peut-etre codee ulterieurement (d'ou l'interet en particulier 
 | 
|---|
| 577 | d'un gestionnaire commun ObjFileIO$<$BaseDataTable$>$
 | 
|---|
| 578 | 
 | 
|---|
| 579 | (les operateurs habituel $<<$ et $>>$ sur PIn/OutPersist sont definies)
 | 
|---|
| 580 | 
 | 
|---|
| 581 | 
 | 
|---|
| 582 | Les merges et copie sont prevues, 
 | 
|---|
| 583 | on doit en principe pouvoir ecrire par exemple:
 | 
|---|
| 584 | \begin{verbatim}
 | 
|---|
| 585 | SwPPFDataTable swdt;
 | 
|---|
| 586 | PInPersist pis("swdt.ppf");
 | 
|---|
| 587 | pis >> swdt;
 | 
|---|
| 588 | DataTable dt;
 | 
|---|
| 589 | dt = swdt;  // Pour tout charger en memoire 
 | 
|---|
| 590 | \end{verbatim}
 | 
|---|
| 591 | 
 | 
|---|
| 592 | {\it On pourra aussi ajouter des methodes d'acces aux variables 
 | 
|---|
| 593 | membres pour enrichier l'interface. }
 | 
|---|
| 594 | 
 | 
|---|
| 595 | 
 | 
|---|
| 596 | {\bf DataTable cote PIAPP :} \\ 
 | 
|---|
| 597 | Cote piapp, les DataTable et SwPPFDataTable  sont pris en charge par 
 | 
|---|
| 598 | {\tt NOMAdapter\_DataTable} (qui prend en charge tous les 'BaseDataTable' )
 | 
|---|
| 599 | Il faudrait peut-etre rajouter deux commandes : \\
 | 
|---|
| 600 | newdt ou newdatatable 
 | 
|---|
| 601 | newdt ncol col1 [col2 .... ]  \\
 | 
|---|
| 602 | avec possibilite de specifier coli sous fome de X:colname ou X = D,F,S,I,L ...
 | 
|---|
| 603 | et puis dtfromascii  ...
 | 
|---|
| 604 | 
 | 
|---|
| 605 | Voir Tests/tnt.cc pour exemple d'utilisation :
 | 
|---|
| 606 | \begin{verbatim}
 | 
|---|
| 607 | DataTable dt(64);
 | 
|---|
| 608 | dt.AddIntegerColumn("line");
 | 
|---|
| 609 | dt.AddDoubleColumn("x");
 | 
|---|
| 610 | dt.AddFloatColumn("f_sin");
 | 
|---|
| 611 | MuTyV rec[10];
 | 
|---|
| 612 | for(int k = 0; k<1000; k++) {
 | 
|---|
| 613 |   rec[0] = k;
 | 
|---|
| 614 |   double x = M_PI*k/100.;
 | 
|---|
| 615 |   double fx = sin(x)*cos(x);
 | 
|---|
| 616 |   rec[1] = x;
 | 
|---|
| 617 |   rec[2] = sin(x);
 | 
|---|
| 618 | }
 | 
|---|
| 619 |  POutPersist po("dtable.ppf");
 | 
|---|
| 620 |  po << dt;
 | 
|---|
| 621 | \end{verbatim}
 | 
|---|
| 622 | 
 | 
|---|
| 623 | Pour SwPPFDataTable, il faut juste creer un stream PPF avant, qui doit rester
 | 
|---|
| 624 | ouvert tant que le SwPPFDataTable est actif: \\
 | 
|---|
| 625 | \begin{verbatim}
 | 
|---|
| 626 |  POutPersist po("swdtable.ppf");
 | 
|---|
| 627 |  SwPPFDataTable dt(po, 64);
 | 
|---|
| 628 | \end{verbatim}
 | 
|---|
| 629 | 
 | 
|---|
| 630 | 
 | 
|---|
| 631 | 
 | 
|---|
| 632 | \titre{SkyMap} 
 | 
|---|
| 633 | %%%
 | 
|---|
| 634 | \begin{itemize}
 | 
|---|
| 635 | \item[\rond] Juin 2006: Prise en charge du rangement mmoire {\bf NESTED} dans 
 | 
|---|
| 636 | les SphereHEALPix , + I/O PPF et FITS
 | 
|---|
| 637 | \item[\rond] Juin 2006:  Nettoyage et amliorations diverses dans les classes 
 | 
|---|
| 638 | Vector3d, UnitVector, LongLat \ldots et les cartes sphriques, en particulier : 
 | 
|---|
| 639 | \begin{enumerate}
 | 
|---|
| 640 | \item Nettoyage/uniformation mthodes  {\tt Print()}  des cartes, et 
 | 
|---|
| 641 |  ajout de la mthode {\tt Show()} dans PixelMap 
 | 
|---|
| 642 |  \item Ajout mthodes {\tt HasSymThetaSlice() , GetSymThetaSliceIndex() }
 | 
|---|
| 643 |  dans les cartes sphriques (SphericalMap) 
 | 
|---|
| 644 |  \item Ajout methode {\tt ResolToSizeIndex() SizeIndexToResol() } 
 | 
|---|
| 645 |  ds SphereThetaPhi , SphereHEALPix et SphereECP
 | 
|---|
| 646 |  \item Petites optimisations dans {\tt GetThetaSlice()} + methode {\tt GetThetaSliceDataPtr() }
 | 
|---|
| 647 |  \end{enumerate}
 | 
|---|
| 648 | \item[\rond] Juin 2006: Introduction de la classe {\bf Angle}  - pour conversion d'angle. 
 | 
|---|
| 649 | \begin{verbatim}
 | 
|---|
| 650 |    // Example to convert 0.035 radians to arcsec
 | 
|---|
| 651 |    double vr = 0.035;
 | 
|---|
| 652 |    cout << "Angle rad= " << vr << " ->arcsec= " << Angle(vr).ToArcSec() << endl;
 | 
|---|
| 653 |    // Example to convert 2.3 arcmin to radian - we use the conversion operator
 | 
|---|
| 654 |    double vam = 2.3;
 | 
|---|
| 655 |    cout << "Angle arcmin= " << vam << " ->rad= " 
 | 
|---|
| 656 |         << (double)Angle(vam, Angle::ArcMin) << endl;
 | 
|---|
| 657 | \end{verbatim} 
 | 
|---|
| 658 | %
 | 
|---|
| 659 | 
 | 
|---|
| 660 | 
 | 
|---|
| 661 | \item[\rond]  {\bf SphereECP} - Septembre 2004 \\
 | 
|---|
| 662 | Extrait du message du 7 Septembre 2004 
 | 
|---|
| 663 | \begin{verbatim}
 | 
|---|
| 664 |  J'ai mis dans la base (module SkyMap) le code de la classe
 | 
|---|
| 665 | SphereECP<T> (pixelisation avec projection cylindrique) - carte partielle et complete,
 | 
|---|
| 666 | + gestionnaire PPersist + modifs adaptateur NomSkyMapAdaptor (PIext/ spiapp)
 | 
|---|
| 667 | 
 | 
|---|
| 668 | Programme test (avec appel a transforme en Alm) ds Test/tsphereecp.cc
 | 
|---|
| 669 | Attention, mettre le parametere de pixelisation a -1 lors de l'appel a Generate pour eviter
 | 
|---|
| 670 | le Resize de la sphereECP
 | 
|---|
| 671 | ylmserver.GenerateFromCl(map, -1,  clin, 0.);
 | 
|---|
| 672 | 
 | 
|---|
| 673 | Dans piapp, c'est visualise par defaut en projection Molleweide
 | 
|---|
| 674 | On peut ajouter dans les options d'affichage :
 | 
|---|
| 675 | ecparray : affichage direct du tableau TArray des pixels (X:Phi, Y:Theta)
 | 
|---|
| 676 | Si option ecparray, on peut preciser en plus
 | 
|---|
| 677 |      - ecpscaledeg: echelle des axes en degres au lieu de pixels
 | 
|---|
| 678 |      - ecpscalerad: echelle des axes en radians au lieu de pixels
 | 
|---|
| 679 | Exemple:
 | 
|---|
| 680 | Cmd> disp mapecp 'ecparray ecpscaledeg zoomx2 stdaxes'
 | 
|---|
| 681 | \end{verbatim} 
 | 
|---|
| 682 | 
 | 
|---|
| 683 | \item[\rond]  Bug non corrig ds classe Circle 
 | 
|---|
| 684 | \begin{verbatim}
 | 
|---|
| 685 | From: Laurence Perotto <perotto@cdf.in2p3.fr>
 | 
|---|
| 686 | Date: Mon Jan 5, 2004  4:59:12 PM Europe/Paris
 | 
|---|
| 687 | To: Reza Ansari <ansari@lal.in2p3.fr>, Christophe Magneville <cmv@hep.saclay.cea.fr>
 | 
|---|
| 688 | Subject: un bug dans sophya...
 | 
|---|
| 689 | 
 | 
|---|
| 690 |     Bonjour et bonne annee a tous les deux...
 | 
|---|
| 691 | 
 | 
|---|
| 692 |     Je viens de trouver un ptit bug dans la fonction TanOnCircle de la classe Circle: Il
 | 
|---|
| 693 | s'agit d'un melange entre les coordonnees (beta, lambda) de Benoit et les (theta, phi)
 | 
|---|
| 694 | utilises dans Sophya. Lors du passage de l'un a l'autre, une transfo sin->cos a ete
 | 
|---|
| 695 | oubliee...
 | 
|---|
| 696 |     Voila...
 | 
|---|
| 697 |     Bonne journee.
 | 
|---|
| 698 | 
 | 
|---|
| 699 |     Laurence.
 | 
|---|
| 700 | \end{verbatim} 
 | 
|---|
| 701 | \end{itemize}
 | 
|---|
| 702 | 
 | 
|---|
| 703 | \titre{Samba }
 | 
|---|
| 704 | 
 | 
|---|
| 705 | \begin{itemize}
 | 
|---|
| 706 | \item[\rond] {\bf Juin 2006:} correction bug de calcul $a_{lm} \rightarrow$ SphereHEALPix 
 | 
|---|
| 707 | (zones polar cap): le problme venant du choix de taille lors du calcul de la transform
 | 
|---|
| 708 | de Fourier complex $\rightarrow$ rel (n/2 - 1 ou n/2 -2) .
 | 
|---|
| 709 | Correction dans {\tt RfourierSynthesisFromB } et utilisation de cette mthode
 | 
|---|
| 710 | pour tout type de carte.
 | 
|---|
| 711 | On gagne un peu encore en temps de calcul - sur asc (OSF1-cxx) , avec 
 | 
|---|
| 712 | SphereThetaPhi(m=400), $l_{max} = 511$ \\[2mm]
 | 
|---|
| 713 | \begin{tabular}{|l|c|c|}
 | 
|---|
| 714 | \hline
 | 
|---|
| 715 | Opration & TCPU Avant & TCPU Aprs OPT \\
 | 
|---|
| 716 | \hline
 | 
|---|
| 717 | map $\rightarrow a_{lm}$ & 10 s & 3.6 s. \\
 | 
|---|
| 718 | $a_{lm} \rightarrow$ map & 26 & 10.5 s. \\
 | 
|---|
| 719 | \hline
 | 
|---|
| 720 | \end{tabular}  \\[1mm]
 | 
|---|
| 721 | %
 | 
|---|
| 722 | \item[\rond] {\bf Mai 2006:}  Optimisation calcul transform en harmoniques sphriques 
 | 
|---|
| 723 | {\bf SphericalTransformServer}. \\
 | 
|---|
| 724 | Au lieu de calculer un tableau de $\lambda_{lm}$ dans LambdaLMBuilder 
 | 
|---|
| 725 | et utiliser ensuite ce tableau, on calcule les sommes ncessaires au vol,
 | 
|---|
| 726 | dans des mthodes spcifiques de la classe LambdaLMBuilder qui 
 | 
|---|
| 727 | sont utilises dans SphericalTransformServer (pour les transforms
 | 
|---|
| 728 | scalaire/temprature) - PAS fait pour la polarisation pour le moment.
 | 
|---|
| 729 | On peut encore gagner un facteur 2 en utilisant la symtrie 
 | 
|---|
| 730 | en $\theta <> \pi-\theta$. \\ 
 | 
|---|
| 731 | Extrait de cvs log :
 | 
|---|
| 732 | \begin{verbatim}
 | 
|---|
| 733 | revision 1.8
 | 
|---|
| 734 | date: 2006/06/01 11:34:50;  author: ansari;  state: Exp;  lines: +147 -12
 | 
|---|
| 735 | 1/ passage en sa_size_t (au lieu de int) dans Alm<T> et Bm<T>
 | 
|---|
| 736 | 2/ Ajout des methodes optimisees (statiques) pour calcul transforme Ylm
 | 
|---|
| 737 | ds LambdaLMBuilder et utilisation ds SphericalTransformServer
 | 
|---|
| 738 |                              Reza , 1/06/2006
 | 
|---|
| 739 | \end{verbatim}
 | 
|---|
| 740 | 
 | 
|---|
| 741 | \item[\rond] {\bf Fin 2004} : Tests et vrifications des polynomes de Legendre.
 | 
|---|
| 742 | La classe LambdaLMBuilder donne les bons r\'esultats mais calcule les Plm
 | 
|---|
| 743 | pour tous les $l,m$.
 | 
|---|
| 744 | Introduction d'une routine (C-like) ``HarmSph\_array\_teta'' qui calcule
 | 
|---|
| 745 | les Plm pour $m$ fix\'e et $l\in [0,l_{max}]$ comme ce qui est fait
 | 
|---|
| 746 | dans la GSL... (la routine GSL ne marche pas corectement).
 | 
|---|
| 747 | \end{itemize}
 | 
|---|
| 748 | 
 | 
|---|
| 749 | %%%%%%%%%%%
 | 
|---|
| 750 | \titre{SysTools} 
 | 
|---|
| 751 | {\bf Mai-Juin 2006 } classe ZThread - petites modifs/amliorations lies
 | 
|---|
| 752 |  la gestion des signaux et mthodes kill 
 | 
|---|
| 753 | 
 | 
|---|
| 754 | \soustitre{Classe SOPHYA::Commander (module SysTools) }
 | 
|---|
| 755 | Mai-Juin 2006:
 | 
|---|
| 756 | Debug (?) de gestion/controle des threads dans la classe Commander - 
 | 
|---|
| 757 | Extrait de cvs log : 
 | 
|---|
| 758 | \begin{verbatim}
 | 
|---|
| 759 | date: 2006/05/29 17:27:35;  author: ansari;  state: Exp;  lines: +62 -11
 | 
|---|
| 760 | Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
 | 
|---|
| 761 | s (killthr) dans Commander - Reza 29 mai 2006
 | 
|---|
| 762 | ----------------------------
 | 
|---|
| 763 | revision 1.7
 | 
|---|
| 764 | date: 2006/04/26 15:22:09;  author: ansari;  state: Exp;  lines: +13 -0
 | 
|---|
| 765 | ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
 | 
|---|
| 766 | ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
 | 
|---|
| 767 | ----------------------------
 | 
|---|
| 768 | revision 1.22
 | 
|---|
| 769 | date: 2006/05/31 12:30:13;  author: ansari;  state: Exp;  lines: +20 -11
 | 
|---|
| 770 | correction gestion & pour ThrExec ds Commander - Reza 31/05/2006
 | 
|---|
| 771 | ----------------------------
 | 
|---|
| 772 | revision 1.21
 | 
|---|
| 773 | date: 2006/05/29 17:27:35;  author: ansari;  state: Exp;  lines: +37 -16
 | 
|---|
| 774 | Ajout gestionnaire signal ds ZThread et correction/adaptation gestion des thread
 | 
|---|
| 775 | s (killthr) dans Commander - Reza 29 mai 2006
 | 
|---|
| 776 | ----------------------------
 | 
|---|
| 777 | revision 1.20
 | 
|---|
| 778 | date: 2006/04/26 15:22:08;  author: ansari;  state: Exp;  lines: +55 -15
 | 
|---|
| 779 | ajout methode ZThread::kill() pour envoi de signal a un thread + remplacement Ca
 | 
|---|
| 780 | ncelThread par StopThread (par kill/SIGUSR1) dans Commander (commander.cc) + ame
 | 
|---|
| 781 | lioration documentation , Reza 26/4/2006
 | 
|---|
| 782 | 
 | 
|---|
| 783 | \end{verbatim}
 | 
|---|
| 784 | 
 | 
|---|
| 785 | Mars-Avril 2004 : 
 | 
|---|
| 786 | Classe d'interprteur de ligne de commande inspire de C-Shell,
 | 
|---|
| 787 | destine a etre incluee dans des applications C/C++. \\
 | 
|---|
| 788 | ( Programme test Test/tcmd.cc )  \\
 | 
|---|
| 789 | Avril 2005 : Introduction de la possibilite d'execution de commandes
 | 
|---|
| 790 | en multithreads \\
 | 
|---|
| 791 | Avril 2005 : Controle strict sur les noms de variables, limites
 | 
|---|
| 792 | aux caracteres alphanumeriques + underscore - Adaptation
 | 
|---|
| 793 | de l'algorithme de substitution en consequence.
 | 
|---|
| 794 | 
 | 
|---|
| 795 | {\bf Mini guide de l'interpreteur - Message du 19 Mars 2004 }   \
 | 
|---|
| 796 | 
 | 
|---|
| 797 | \begin{itemize}
 | 
|---|
| 798 | 
 | 
|---|
| 799 | \item[\rond] {\bf Gestion des variables } \\
 | 
|---|
| 800 |  - Les variables sont non typees toutes traitees comme des chaines 
 | 
|---|
| 801 | de caracteres. 
 | 
|---|
| 802 |  - Acces aux variables d'environnement - 
 | 
|---|
| 803 |  - Un niveau variable d'environnement application est aussi prevu
 | 
|---|
| 804 |  - Toutes les variables de l'interpreteur  sont traitees comme des vecteurs.
 | 
|---|
| 805 | extensibles automatiquement (difference avec le C-Shell) 
 | 
|---|
| 806 | 
 | 
|---|
| 807 | \item[\rond] {\bf Creation / initialisation de variables }  \\
 | 
|---|
| 808 | \begin{verbatim}
 | 
|---|
| 809 | Cmd> set sv StringValue
 | 
|---|
| 810 | # Suppression d'une variable : unset ou clearvar 
 | 
|---|
| 811 | Cmd> unset sv 
 | 
|---|
| 812 | 
 | 
|---|
| 813 | # Initialisation de type vecteur - Espace avant/apres ')' et avant ')' obligatoire
 | 
|---|
| 814 | Cmd> set vecv ( mot1 mot2 mot3 mot4 mot5 )
 | 
|---|
| 815 | #Calcul numerique : expression de type C  - Espace avant/apres '=' obligatoire
 | 
|---|
| 816 | Cmd> a = 2+3*sqrt(4)
 | 
|---|
| 817 | # Le signe egal peut etre utilise pour attribuer une chaine de caracteres
 | 
|---|
| 818 | Cmd> a = 'Bonjour Madame'
 | 
|---|
| 819 | # Un element de tableau peut etre specifie avant le signe egal 
 | 
|---|
| 820 | Cmd> vecv[2] = 'coucou'
 | 
|---|
| 821 | # Ou bien 
 | 
|---|
| 822 | Cmd> i = 3
 | 
|---|
| 823 | Cmd> vecv[i] = 'Ooohhh' 
 | 
|---|
| 824 | \end{verbatim}
 | 
|---|
| 825 | 
 | 
|---|
| 826 | A droite du signe egal (membre de droite), les variables doivent etre
 | 
|---|
| 827 | adressees a l'aide du signe \$.  
 | 
|---|
| 828 | 
 | 
|---|
| 829 | Une chaine peut etre cassee en mots a l'aide de la commande var2words
 | 
|---|
| 830 | \begin{verbatim}
 | 
|---|
| 831 | Cmd> var2words varname wordvarname [separateur]
 | 
|---|
| 832 | \end{verbatim}
 | 
|---|
| 833 | 
 | 
|---|
| 834 | \item[\rond] {\bf Acces aux variables } \\
 | 
|---|
| 835 | L'acces aux variables s'effectue par le signe \$  {\tt \$varname} .
 | 
|---|
| 836 | Les {\tt \$xxx} sont remplaces par le contenu de la variable xxx. 
 | 
|---|
| 837 | Cette substitution ne s'effectue pas entre simple quotes {\tt ' ... \$xxx '},
 | 
|---|
| 838 | mais se fait entre double quotes {\tt " ... \$xxx ... "} . Les formes
 | 
|---|
| 839 | {\tt \${vname} } ou {\tt \$(vname)} peuvent etre utilisees.
 | 
|---|
| 840 | 
 | 
|---|
| 841 | \begin{verbatim}
 | 
|---|
| 842 | Cmd> x = 'Hello'
 | 
|---|
| 843 | Cmd> echo $x
 | 
|---|
| 844 | # Taille d'une variable de type vecteur $#vname
 | 
|---|
| 845 | Cmd> set vx ( 111 2222 3333 444444 )
 | 
|---|
| 846 | Cmd> echo $#vx 
 | 
|---|
| 847 | # Acces aux elements de tableau
 | 
|---|
| 848 | Cmd> echo $vx[0] $vx[1] 
 | 
|---|
| 849 | #  ou bien indexe par une variable 
 | 
|---|
| 850 | Cmd> i = 2
 | 
|---|
| 851 | Cmd> echo $vx[i] 
 | 
|---|
| 852 | # Une syntaxe particuliere: $[vname] retourne le contenu de
 | 
|---|
| 853 | # la variable dont le nom est ds vname 
 | 
|---|
| 854 | Cmd> zzz = 'Commander'
 | 
|---|
| 855 | Cmd> xxx = 'zzz'
 | 
|---|
| 856 | Cmd> echo '$[xxx]= '  $[xxx]
 | 
|---|
| 857 | $[xxx]= Commander
 | 
|---|
| 858 | \end{verbatim}
 | 
|---|
| 859 | 
 | 
|---|
| 860 | Variables d'environnement: L'acces aux variables d'environnement 
 | 
|---|
| 861 | se fait simplement par{\tt \$varenvname}. Attention, les variables locales
 | 
|---|
| 862 | de l'interpreteur sont prioritaires.
 | 
|---|
| 863 | 
 | 
|---|
| 864 | \item[\rond] {\bf Variables particulieres: } \\
 | 
|---|
| 865 | {\tt \$retval} ou {\tt \$retstr}  :  chaine specifee sur la derniere commande return 
 | 
|---|
| 866 | {\tt \$status} : code de retour de la derniere commande executee.
 | 
|---|
| 867 | (variable existe et est rempli - mais il faudra se donner une regle 
 | 
|---|
| 868 | plus claire ...)
 | 
|---|
| 869 | Arguments des fichiers .pic appeles par la commande exec 
 | 
|---|
| 870 | {\tt \$\# } : nombre d'arguments, a part \$0 
 | 
|---|
| 871 | {\tt \$0} nom du fichier ou du script 
 | 
|---|
| 872 | {\tt \$1 \$2 \$3} .... les arguments  (pour les scripts et les .pic (exec))
 | 
|---|
| 873 | 
 | 
|---|
| 874 |  
 | 
|---|
| 875 | \item[\rond] {\bf Structures de controle  } \\
 | 
|---|
| 876 | \begin{verbatim}
 | 
|---|
| 877 | foreach f ( w1 w2 w3 ... )
 | 
|---|
| 878 |   ...
 | 
|---|
| 879 |   echo $f
 | 
|---|
| 880 | end
 | 
|---|
| 881 | \end{verbatim}
 | 
|---|
| 882 | 
 | 
|---|
| 883 | Espace avant/apres '(' et avant ')' obligatoire.
 | 
|---|
| 884 | 
 | 
|---|
| 885 | \begin{verbatim}
 | 
|---|
| 886 | foreach v vecname 
 | 
|---|
| 887 |   ...
 | 
|---|
| 888 |   echo $v
 | 
|---|
| 889 | end
 | 
|---|
| 890 | \end{verbatim}
 | 
|---|
| 891 | 
 | 
|---|
| 892 | Boucle de type integer:
 | 
|---|
| 893 | \begin{verbatim}
 | 
|---|
| 894 | for i  startInt:endInt[:stepInt]
 | 
|---|
| 895 |   ....
 | 
|---|
| 896 |   echo $i 
 | 
|---|
| 897 | end
 | 
|---|
| 898 | \end{verbatim}
 | 
|---|
| 899 | 
 | 
|---|
| 900 | Boucle de type float
 | 
|---|
| 901 | \begin{verbatim}
 | 
|---|
| 902 | for f  startFloat:endFloat[:stepFloat]
 | 
|---|
| 903 |   ....
 | 
|---|
| 904 |   echo $f
 | 
|---|
| 905 | end
 | 
|---|
| 906 | \end{verbatim}
 | 
|---|
| 907 | 
 | 
|---|
| 908 | Boucle sur les lignes d'un fichier:
 | 
|---|
| 909 | \begin{verbatim}
 | 
|---|
| 910 | forinfile line FileName
 | 
|---|
| 911 |   ...
 | 
|---|
| 912 |   echo $line
 | 
|---|
| 913 | end
 | 
|---|
| 914 | \end{verbatim}
 | 
|---|
| 915 | 
 | 
|---|
| 916 | Instruction {\tt break} pour casser une boucle
 | 
|---|
| 917 | 
 | 
|---|
| 918 | \item[\rond] {\bf Les tests  }
 | 
|---|
| 919 | \begin{verbatim}
 | 
|---|
| 920 | if ( test ) then 
 | 
|---|
| 921 | endif
 | 
|---|
| 922 | 
 | 
|---|
| 923 | if ( test ) then
 | 
|---|
| 924 |  ....
 | 
|---|
| 925 | else
 | 
|---|
| 926 |  .... 
 | 
|---|
| 927 | endif
 | 
|---|
| 928 | \end{verbatim}
 | 
|---|
| 929 | 
 | 
|---|
| 930 | Espace avant/apres '(' et avant ')' obligatoire.
 | 
|---|
| 931 | 
 | 
|---|
| 932 | test de type {\tt a == b} OU {\tt a != b} OU {\tt a < b}  OU {\tt a > b} 
 | 
|---|
| 933 | OU {\tt a <= b} OU {\tt a >= b}
 | 
|---|
| 934 | les espaces avant l'operateur de comparaison sont obligatoires.
 | 
|---|
| 935 | {\tt ==} et {\tt !=}  effectue une comparaison de chaines de caracteres.
 | 
|---|
| 936 | {\tt < , > , <= , >=}une comparaison apres conversion en valeur flottante.
 | 
|---|
| 937 | 
 | 
|---|
| 938 | \item[\rond] {\bf Definition de script } \\
 | 
|---|
| 939 | \begin{verbatim}
 | 
|---|
| 940 | defscript scriptname  [description ]
 | 
|---|
| 941 |    ....
 | 
|---|
| 942 | endscript 
 | 
|---|
| 943 | \end{verbatim}
 | 
|---|
| 944 | 
 | 
|---|
| 945 | L'appel a un script se fait simplement a l'aide
 | 
|---|
| 946 | du nom de script (contrairement aux fichiers
 | 
|---|
| 947 | de commande qui sont executes a l'aide de la 
 | 
|---|
| 948 | commande {\tt exec} )
 | 
|---|
| 949 | \begin{verbatim}
 | 
|---|
| 950 | Cmd> scriptname arg1 arg2 arg3 ....
 | 
|---|
| 951 | \end{verbatim}
 | 
|---|
| 952 | 
 | 
|---|
| 953 | L'instruction {\tt return} provoque l'arret (et le retour) d'execution d'un
 | 
|---|
| 954 | script ou d'un fichier de commandes.
 | 
|---|
| 955 | Commandes {\bf listscript }et {\bf clearscript scriptname} 
 | 
|---|
| 956 |  permettet d'avoir la liste des scripts 
 | 
|---|
| 957 |  definis / supprimer la definition d'un script 
 | 
|---|
| 958 | 
 | 
|---|
| 959 | \item[\rond] {\bf Autres commandes}
 | 
|---|
| 960 | \begin{itemize}
 | 
|---|
| 961 | \item Instruction {\bf echo } pour ecrire sur cout/stdout
 | 
|---|
| 962 | \item Instruction {\bf echo2file} pour ecrire a la fin d'un fichier
 | 
|---|
| 963 | \item Instruction {\bf sleep nsec} (attente de nsec seconds )
 | 
|---|
| 964 | \item Instructions {\bf timingon , timingoff , traceon , traceoff } \\
 | 
|---|
| 965 | %
 | 
|---|
| 966 | \item Commande {\bf exec commandfilename [arg1 arg2 ... ] }
 | 
|---|
| 967 | \item Commandes {\bf help et help keyword/commandname }
 | 
|---|
| 968 | \item Commandes {\bf listvars , listcommands }
 | 
|---|
| 969 | \item  Defintion et liste d'alias : {\bf alias aliasname 'string ' } et {\bf  listalias} 
 | 
|---|
| 970 | \end{itemize} 
 | 
|---|
| 971 | 
 | 
|---|
| 972 | \item[\rond] {\bf Threads d'execution de commandes (Avril 2005)} \\
 | 
|---|
| 973 | Possibilite de lancer des commandes (autre que les commandes
 | 
|---|
| 974 |   de l'interpreteur lui-meme) en thread separe (il suffit de mettre un \& 
 | 
|---|
| 975 |   a la fin de la commande) \\ 
 | 
|---|
| 976 |   Commandes des gestion des threads : \\
 | 
|---|
| 977 |   {\bf thrlist  ;  cleanthrlist  ;  cancelthr ThId ;   waitthr  } \\
 | 
|---|
| 978 |   Attention, la possibilite de lancer des commandes en threads separes ne fonctionne que
 | 
|---|
| 979 | pour des commandes "thread-safe".
 | 
|---|
| 980 | La plupart de nos commandes de piapp sont  \\
 | 
|---|
| 981 |    - soit trop rapide,  \\
 | 
|---|
| 982 |    - soit non "thread-safe"   \\
 | 
|---|
| 983 | 
 | 
|---|
| 984 |   \item[\rond] controle d'execution : \\
 | 
|---|
| 985 | Possibilite d'arreter l'execution de l'interpreteur (dans une boucle
 | 
|---|
| 986 |    ou dans dans un fichier .pic ... 
 | 
|---|
| 987 |    Utiliser la commande {\bf stop} ou {\tt <Cntrl C>} dans PIConsole
 | 
|---|
| 988 | 
 | 
|---|
| 989 | \end{itemize} 
 | 
|---|
| 990 | 
 | 
|---|
| 991 | \soustitre{Classes CExpressionEvaluator et RPNExpressionEvaluator }
 | 
|---|
| 992 | \begin{itemize}
 | 
|---|
| 993 | \item[\rond]  Ajout des classes RPNExpressionEvaluator et CExpressionEvaluator 
 | 
|---|
| 994 | d'valuation d'expressions numriques en notation polonaise inverse
 | 
|---|
| 995 | et avec la syntaxe C . Utilise dans la classe Commander.  
 | 
|---|
| 996 | \item[\rond]   Programme test Test/tcmd.cc 
 | 
|---|
| 997 | \item[\rond]  extrait de {\tt cvs log cexpre.cc }
 | 
|---|
| 998 | {\small \begin{verbatim} 
 | 
|---|
| 999 | ----------------------------
 | 
|---|
| 1000 | revision 1.3
 | 
|---|
| 1001 | date: 2004/03/18 18:15:19;  author: ansari;  state: Exp;  lines: +10 -6
 | 
|---|
| 1002 | Suite (presque finie) des modifications de l'interpreteur - gestion des variables en particulier - Reste au moins un bug ds CExpressionEvaluator - Reza 18/03/2004
 | 
|---|
| 1003 | ----------------------------
 | 
|---|
| 1004 | revision 1.2
 | 
|---|
| 1005 | date: 2004/03/16 08:47:48;  author: ansari;  state: Exp;  lines: +5 -6
 | 
|---|
| 1006 | suppression variables inutilisees ds cexpr.cc - Reza 16 Mars 2004
 | 
|---|
| 1007 | ----------------------------
 | 
|---|
| 1008 | revision 1.1
 | 
|---|
| 1009 | date: 2004/03/15 22:19:43;  author: ansari;  state: Exp;
 | 
|---|
| 1010 | Ajout fichiers des classes RPNExpressionEvaluator et CExpressionEvaluator (expression arithmetiques) et MAJ du fichier Makefile et objlist.list - Reza 15 Mars 2003
 | 
|---|
| 1011 | \end{verbatim} }
 | 
|---|
| 1012 | 
 | 
|---|
| 1013 | \item[\rond] Extrait du message du 3 Mars 2004 
 | 
|---|
| 1014 | \begin{verbatim}
 | 
|---|
| 1015 | Le code est base sur une hierarchie de classe d'expression :
 | 
|---|
| 1016 |  Expr --------  NumberExp
 | 
|---|
| 1017 |       --------- BinExp ------ AddExp
 | 
|---|
| 1018 |                        ------ MulExp
 | 
|---|
| 1019 |                        ------ SubExp
 | 
|---|
| 1020 |                        ------ DivExp
 | 
|---|
| 1021 |     ---------  FuncExp
 | 
|---|
| 1022 |     ---------  CExpressionEvaluator
 | 
|---|
| 1023 | 
 | 
|---|
| 1024 | NumberExp  : expression elementaire de nombre, sait actuellement traduire Pi et E
 | 
|---|
| 1025 |                           tres facile d'ajouter d'autres constantes
 | 
|---|
| 1026 | BinExp: Classe d'operations binaires (deux operandes) a+b a-b a*b a/b
 | 
|---|
| 1027 |                avec gestion de niveau de priorite des operateurs
 | 
|---|
| 1028 |                On peut facilement ajouter d'autres operateurs binaires (par exemple
 | 
|---|
| 1029 |                puissance ^ a^b ) - et les priorites relatives seront gerees en principe.
 | 
|---|
| 1030 | FuncExp: classe d'expression fonctionnelle, avec n arguments f(x1,x2,...x3)
 | 
|---|
| 1031 |                   actuellemenent, n=0 a n=3 arguments et quelques fonctions
 | 
|---|
| 1032 |                   usuelles sont decodes ds cette classe (sin,cos,tan, asin, acos, atan, exp, log,
 | 
|---|
| 1033 |                   atan2, pow ) - voir ds le code
 | 
|---|
| 1034 | 
 | 
|---|
| 1035 | CExpressionEvaluator : C'est la classe de haut niveau a utiliser -
 | 
|---|
| 1036 |                                             la fonction de decodage de la chaine ASCII (qui utilise
 | 
|---|
| 1037 |                                             les fonctionalites des differentes classes est la dedans
 | 
|---|
| 1038 |                                             et ce n'est pas tres long.
 | 
|---|
| 1039 | (+ une classe d'exception specifique).
 | 
|---|
| 1040 | \end{verbatim}
 | 
|---|
| 1041 | 
 | 
|---|
| 1042 | \end{itemize}
 | 
|---|
| 1043 | 
 | 
|---|
| 1044 | 
 | 
|---|
| 1045 | %%%%%%%%
 | 
|---|
| 1046 | \titre{FitsIOServer}
 | 
|---|
| 1047 | %%%
 | 
|---|
| 1048 | \begin{itemize}
 | 
|---|
| 1049 | \item[\rond] Aout 2006 : Ecriture/Lecture des classes Histo,HProf,HistoErr,Histo2D dans fichier FITS.
 | 
|---|
| 1050 | Les Histo2D et leurs projections 1D associ\'ees sont lus et \'ecrits
 | 
|---|
| 1051 | sur plusieurs HDU cons\'ecutifs.
 | 
|---|
| 1052 | \item[\rond]  Juin 2006 : Ajout verification/correction noms de colonne lors de lecture FITS / DataTable, 
 | 
|---|
| 1053 | et remplacement throw par un warning lors de lecture fits-healpix avec $nbcols > 1$ \\[1mm]
 | 
|---|
| 1054 | \item[\rond]  { \large Sep 2005-Jan 2006 : Refondation totale du module }
 | 
|---|
| 1055 | \begin{itemize}
 | 
|---|
| 1056 | \item[\rond] Amelioration du programme PrgUtil/scanppf - 
 | 
|---|
| 1057 | (scanfits -V1 -lh -rd -header filename) 
 | 
|---|
| 1058 | \item[\rond] La classe FitsFile (et donc FitsInFile FitsOutFile) heritent de FitsInOutFile.
 | 
|---|
| 1059 | (Jan 2006) 
 | 
|---|
| 1060 | \item[\rond] Fonctionalites classe {\bf FitsManager } etendues - en particulier ScanFile() 
 | 
|---|
| 1061 | \item[\rond] Les FitsIOHandler (ancien) heritent de FitsHandlerInterface - 
 | 
|---|
| 1062 | Tous les handlers sont pris en charge et enregistre par FitsManager (Jan 2006) 
 | 
|---|
| 1063 | \item[\rond] Ajout classe d'initialisation du module {\bf FitsIOServerInitiator },
 | 
|---|
| 1064 | fichiers fiosinit.h .cc (Dec 2005) 
 | 
|---|
| 1065 | \item[\rond]  Classe { \bf SwFitsDataTable } (DataTable avec swap sur FITS) ajoute 
 | 
|---|
| 1066 |  + classe FitsHandler<BaseDataTable> modifie pour prise 
 | 
|---|
| 1067 | en charge de SwFitsDataTable (Dec 2005 - Jan 2006) 
 | 
|---|
| 1068 | \item[\rond] Classes {\bf FITSDataSwapper$<$T$>$} modifies (Dec 2005) 
 | 
|---|
| 1069 | \item[\rond]  Prise en charge de types TSTRING et TCOMPLEX et TDBLCOMPLEX 
 | 
|---|
| 1070 | lors de lecture/ecriture de colonnes FITS. 
 | 
|---|
| 1071 | \item[\rond]  Prise en charge de l'ensemble des types de colonnes pour le handler de Fits
 | 
|---|
| 1072 | de DataTable
 | 
|---|
| 1073 | \item[\rond]  Classe {\bf  FitsInOutFile } comme wrapper des fonctions de la librairie cfitsio +
 | 
|---|
| 1074 | classe d'exception spcifique {\bf FitsIOException} , et la classe des types FITS {\bf FitsTypes}.
 | 
|---|
| 1075 | \item[\rond]  Classe template {\bf FitsBlockRW$<$T$>$} pour lecture/criture (tableaux de donnes)
 | 
|---|
| 1076 | sur IMGHDU et Tables.
 | 
|---|
| 1077 | \item[\rond] Classes gestionnaires I/O Fits pour les objets {\bf FitsHandler$<$T$>$} et {\bf FitsManager}
 | 
|---|
| 1078 | \item[\rond] Classes gestionnaire pour les tableaux : {\bf FitsArrayHandler$<$T$>$} 
 | 
|---|
| 1079 | \item[\rond] Classes gestionnaire pour les DataTable {\bf FitsHandler$<$BaseDataTable$>$}
 | 
|---|
| 1080 | \item[\rond] Mai 2005 : Classe {\bf FITSDataSwapper$<$T$>$} pour la gestion des 
 | 
|---|
| 1081 | SwSegDataBlock sur fichiers FITS
 | 
|---|
| 1082 | \end{itemize}
 | 
|---|
| 1083 | \end{itemize}
 | 
|---|
| 1084 | 
 | 
|---|
| 1085 | \titre{LinAlg} 
 | 
|---|
| 1086 | Extension des fonctionalits de la classe {\tt LapackServer<T>} : 
 | 
|---|
| 1087 | (Juillet 2004 / cmv , Fvrier 2005 / Reza)
 | 
|---|
| 1088 | \begin{itemize}
 | 
|---|
| 1089 | \item[\rond] Ajout lancement d'exception sur renvoi de code d'erreur par lapack 
 | 
|---|
| 1090 | (desactivable par flag au niveau du constructeur de la classe serveur) 
 | 
|---|
| 1091 | \item[\rond] Introduction de l'interface Lapack d'inversion des matrices symetriques (21/7/2004)
 | 
|---|
| 1092 | \item[\rond]  Introduction de l'interface Lapack de recherche de valeurs et vecteurs propres
 | 
|---|
| 1093 |   (cas general, symetrique et hermitique) (21/7/2004)
 | 
|---|
| 1094 | \item[\rond] Introduction d'un fonction d'interface pour le calculateur de workspace
 | 
|---|
| 1095 |   (ilaenv\_) (21/7/2004)
 | 
|---|
| 1096 | \item[\rond] Ajout prog test Tests/tsttminv.cc + Commentaires sur les diverses methodes et sur les matrices FORTRAN (21/7/2004)
 | 
|---|
| 1097 | \item[\rond] Ajout SVD decomp by Divide and Conquer SVD\_DC (23/7/2004)
 | 
|---|
| 1098 | \item[\rond] Ajout  Least Square with SVD DC
 | 
|---|
| 1099 | \item[\rond] Ajout methode calcul de la matrice inverse par Lapack en utilisant la 
 | 
|---|
| 1100 | resolution de systemes (07/02/2005) 
 | 
|---|
| 1101 | \end{itemize}
 | 
|---|
| 1102 | 
 | 
|---|
| 1103 | \titre{IFFTW}
 | 
|---|
| 1104 | \noindent 
 | 
|---|
| 1105 | - Juillet 2007 : Passage a FFTW 3 \\
 | 
|---|
| 1106 | - Nov 2005 : Correction du bug dans le cas de FFT-1D Backward(complex -> reel) 
 | 
|---|
| 1107 | in(1).imag() pouvait etre ecrase.
 | 
|---|
| 1108 | 
 | 
|---|
| 1109 | \titre{PI,PIext,piapp} 
 | 
|---|
| 1110 | \soustitre{PI: Classes modifiees - ameliorees}
 | 
|---|
| 1111 | \begin{itemize}
 | 
|---|
| 1112 | \item[\rond] {\bf  PIImageNavigator } \\
 | 
|---|
| 1113 | Ajout de la classe {\tt PIImageNavigator } permettant de visualiser une image 
 | 
|---|
| 1114 | avec ses propres widget zoom / global view et colormap. (Fevrier 2005) \\
 | 
|---|
| 1115 | Commande {\tt imagnav} ajoute ds piapp/baseexcute.cc . \\
 | 
|---|
| 1116 | \item[\rond] Avril 2005 - Amelioration de la classe {\bf PIConsole} \\
 | 
|---|
| 1117 | 1/Envoi Message PIMSG\_Cancel lors de {\tt <Cntl C>} \\ 
 | 
|---|
| 1118 |  2/ Correction positionnement curseur lors de rappel de commande,
 | 
|---|
| 1119 |   Si possible en fin de commande - mais toujours avec le 
 | 
|---|
| 1120 |   debut de commande visible.  \\
 | 
|---|
| 1121 | 3/ Correction (probable) du petit bug sur les derniers caracteres lors de copier/coller
 | 
|---|
| 1122 |   ds PIConsole
 | 
|---|
| 1123 | \item[\rond] Codage Options graphiques en text (string) pour PIGraphicAtt  (Nov-Dec 2005) 
 | 
|---|
| 1124 | \item[\rond] Corrections diverses trace d'axes  etc ... (Dec 2005) 
 | 
|---|
| 1125 | \item[\rond] PIext rendu indpendant de FITS (Avril 2006) - commandes spcifiques dans 
 | 
|---|
| 1126 | ProgPI/fitsbtadapter.cc 
 | 
|---|
| 1127 | \item[\rond] BUG A corriger, DrawOpaqueString ds PIGraphPS (sortie postscript)
 | 
|---|
| 1128 | \end{itemize}
 | 
|---|
| 1129 | %%%% 
 | 
|---|
| 1130 | \soustitre{ Codage texte des options graphiques (11 Mars 2004)}
 | 
|---|
| 1131 | \begin{verbatim}
 | 
|---|
| 1132 | //   Methode retournant un vecteur de string a partir des options
 | 
|---|
| 1133 | virtual int        PIDrawer::OptionToString(vector<string> & opt) const
 | 
|---|
| 1134 | qui vient completer les deux methodes
 | 
|---|
| 1135 | virtual int        PIDrawer:: DecodeOptionString(vector<string> & opt, bool ...) et
 | 
|---|
| 1136 | virtual void       PIDrawer:: GetOptionsHelpInfo(string& info);
 | 
|---|
| 1137 | Ces methodes s'occupent de decoder les options graphiques (et l'aide
 | 
|---|
| 1138 | associe). La methode ajoutee permet de faire l'operation inverse, fabriquer
 | 
|---|
| 1139 | une serie de chaine de caracteres a partir des options graphiques.
 | 
|---|
| 1140 | Il y a aussi la methode
 | 
|---|
| 1141 | virtual int            PIWdgGen::OptionToString(vector<string> & opt) const
 | 
|---|
| 1142 | que j'ai ajoute (rien a faire pour le moment) - ainsi que
 | 
|---|
| 1143 | int PIGraphicAtt::AttToStrings(vector<string> & att) const.
 | 
|---|
| 1144 | 
 | 
|---|
| 1145 | Peux-tu remplir la methode PIGraphicAtt::AttToStrings(vector<string> & att) const.
 | 
|---|
| 1146 | L'implementation par defaut de PIDrawer::OptionToString(vector<string> & opt) const
 | 
|---|
| 1147 | appelle PIGraphicAtt::AttToStrings() -  a laisser donc tel quel.
 | 
|---|
| 1148 | 
 | 
|---|
| 1149 | par contre, pour les autres drawer (PIYfXDrawer, PIFuncDrawer, PIElDrawer,
 | 
|---|
| 1150 | PISurfaceDrawer, PIHisto, PIHisto2D, PINTuple ...) - lorsque
 | 
|---|
| 1151 | DecodeOptionString(vector<string> & opt, bool ...) est modifie,
 | 
|---|
| 1152 | rajouter la methode OptionToString(vector<string> & opt) et verifier le help.
 | 
|---|
| 1153 | Attention, il ne faut pas mettre l'argument opt a zero, mais ajouter des chaines
 | 
|---|
| 1154 | derriere (push_back()) afin de pouvoir cumuler les options de base  + options
 | 
|---|
| 1155 | specifiques.
 | 
|---|
| 1156 | 
 | 
|---|
| 1157 | Comment tester ?
 | 
|---|
| 1158 | Pour tester, tu peux utiliser  la fenetre des options texte ou j'ai ajoute le bouton
 | 
|---|
| 1159 | [GetOption] . Tu peux acceder a cette fenetre a partir de la fenetre des options
 | 
|---|
| 1160 | graphiques <Alt>O , ou directement sur un objet de gestionnaire 2D - par
 | 
|---|
| 1161 | <Alt>T - <Shift>Button-1 permet de selectionner le drawer actif
 | 
|---|
| 1162 | \end{verbatim}
 | 
|---|
| 1163 | 
 | 
|---|
| 1164 | \soustitre{ Trace des axes (11 Mars 2004)}
 | 
|---|
| 1165 |     Ajouter la possibilite de specifier l'origine (le point de croisement des axes)
 | 
|---|
| 1166 | lorsque les axes ne sont pas de type 'box' - classes PIAxes et PIElDrawer.  FAIT
 | 
|---|
| 1167 | 
 | 
|---|
| 1168 | \soustitre{ Selection graphique (souris) du drawer actif (11 Mars 2004)}
 | 
|---|
| 1169 | \begin{verbatim}
 | 
|---|
| 1170 | J'ai ajoute la methode PIDrawer::GetDistanceToPoint(double x, double y)
 | 
|---|
| 1171 | // Renvoie une distance au point x,y
 | 
|---|
| 1172 | // 0: au(x) point(s) le(s) plus proche(s) ... 1  au bord xmin/xmax , ymin/ymax
 | 
|---|
| 1173 | // La methode par defaut calcule la distance normalisee au point ((xmin+xmax)/2,
 | 
|---|
| 1174 | (ymin+ymax)/2)
 | 
|---|
| 1175 |   virtual double     PIDrawer::GetDistanceToPoint(double x, double y);
 | 
|---|
| 1176 | 
 | 
|---|
| 1177 | ainsi que ce qu'il faut ds PIBaseWdgGen et ds PIDrawer pour exploiter cette
 | 
|---|
| 1178 | methode + code permettant le test ds PIScDrawWdg.
 | 
|---|
| 1179 | (virtual  void      PIDrawer::WdgCoord2DrwCoord(int x, int y, double& xu ...
 | 
|---|
| 1180 |  virtual int PIBaseWdgGen:;FindNearestDrawerId(int x, int y) ...)
 | 
|---|
| 1181 | Tu as a t'aoccuper de la methode  PIDrawer::GetDistanceToPoint(double x, double y)
 | 
|---|
| 1182 | qui doit etre redefinie si possible pour chaque drawer, afin de fournir une
 | 
|---|
| 1183 | distance raisonnable au point (x,y) en argument.
 | 
|---|
| 1184 | J'ai juste mis une implementation par defaut (ds PIDrawer) et une implementation
 | 
|---|
| 1185 | partielle pour PIElDrawer (qui trace les axes en particulier) - qu'il faut
 | 
|---|
| 1186 | completer.
 | 
|---|
| 1187 | 
 | 
|---|
| 1188 | Comment tester ?
 | 
|---|
| 1189 | J'ai mis ce qu'il faut ds le gestionnaire 2D (PIScDrawWdg) -
 | 
|---|
| 1190 | <Shift>Button-1 choisit le drawer le plus proche (base sur la
 | 
|---|
| 1191 | valeur de retour de  PIDrawer::GetDistanceToPoint(double x, double y)
 | 
|---|
| 1192 | comme drawer actif. Ce drawer est passe en 'highlight' pendant que
 | 
|---|
| 1193 | le bouton est appuye.
 | 
|---|
| 1194 | \end{verbatim}
 | 
|---|
| 1195 | 
 | 
|---|
| 1196 | \soustitre{ Manipulation interactive des drawers (3 Juin 2004) }
 | 
|---|
| 1197 | La manipulation interactive des drawers ( l'aide d'un menu) a
 | 
|---|
| 1198 | t finalise pour les PIImage PIScDrawWdg PI3DWdg .
 | 
|---|
| 1199 | 
 | 
|---|
| 1200 | \begin{verbatim}
 | 
|---|
| 1201 |    o <Alt>D affiche le menu avec les differentes option
 | 
|---|
| 1202 |    o Move/Resize: Affichage du rectangle + rectangle milieu
 | 
|---|
| 1203 |    (deplacement) + coin bas-droite (deplacement) - 
 | 
|---|
| 1204 |    clicker ailleurs pour finir
 | 
|---|
| 1205 |    o Mouse Select : Le mouse select des drawers est gere
 | 
|---|
| 1206 |    maintenant par un PIEventHandler (comme pour Move/ReSize)
 | 
|---|
| 1207 |    Drawer actif affiche par le rectangle muni d'un petit coin 
 | 
|---|
| 1208 |    (petit carre + rond dedans, en bas a droite). 
 | 
|---|
| 1209 |    Click souris change eventuellement le drawer actif. 
 | 
|---|
| 1210 |    On termine en clickant ds le petit [carre+rond] 
 | 
|---|
| 1211 | \end{verbatim}
 | 
|---|
| 1212 | 
 | 
|---|
| 1213 | \soustitre{ Traceur de bar-graph (classe PIBarGraph) (3 Juin 2004) } 
 | 
|---|
| 1214 | Ajout du traceur de bar-graph (classe {\bf PIBarGraph}) ds module PI/
 | 
|---|
| 1215 | et commande {\tt bargraph}  ds PIext/basexecut.cc .
 | 
|---|
| 1216 | La commande bargraph ne gere pas encore toutes les possibilites
 | 
|---|
| 1217 | de la classe PIBarGraph. \\
 | 
|---|
| 1218 | Exemple d'utilisation:
 | 
|---|
| 1219 | \begin{verbatim}
 | 
|---|
| 1220 | Cmd> bargraph ' ' -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1221 | Cmd> bargraph 'blue ' -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1222 | Cmd> bargraph 'blue horizontalbars' -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1223 | Cmd> bargraph 'blue horizontalbars barvaluelabel ' -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1224 | Cmd> bargraph 'blue verticalbars nofill barvaluelabel ' -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1225 | Cmd> bargraph 'font=times,bold,16 blue verticalbars nofill barvaluelabel ' \
 | 
|---|
| 1226 |      -10. 15. 2 2. 8. 33. 7 -4. 
 | 
|---|
| 1227 | Cmd> bargraph 'font=times,bold,16 blue verticalbars fill barvaluelabel packfrac=0.8' \
 | 
|---|
| 1228 |      -10. 15. 22. 8. 33. 7 -4. 
 | 
|---|
| 1229 | \end{verbatim}
 | 
|---|
| 1230 | 
 | 
|---|
| 1231 | \soustitre{ Traceur de lignes de texte (classe PITextDrawer)  (3 Juin 2004) } 
 | 
|---|
| 1232 | 
 | 
|---|
| 1233 | Ajout d'une classe de traceur de lignes de texte (classe {\bf PITextDrawer}) et commande 
 | 
|---|
| 1234 | {\tt textdrawe}r ds PIext/basexecut.cc . Mais le traceur (et sa commande) 
 | 
|---|
| 1235 | doivent etre completes. \\
 | 
|---|
| 1236 | Exemple d'utilisation:
 | 
|---|
| 1237 | \begin{verbatim}
 | 
|---|
| 1238 | # On affiche qque chose
 | 
|---|
| 1239 | Cmd> openppf demo.ppf
 | 
|---|
| 1240 | Cmd> disp h1d
 | 
|---|
| 1241 | Cmd> textdrawer 'frame line=solid,2 font=times,bold,16 red inset'  \
 | 
|---|
| 1242 |      ' Christophe ' ' Reza Ansari' ' SOPHYA ' 
 | 
|---|
| 1243 | \end{verbatim}
 | 
|---|
| 1244 | 
 | 
|---|
| 1245 | \soustitre{ Gestion de re-scale-ing des  axes en 3D  (3 Juin 2004)  }
 | 
|---|
| 1246 | 
 | 
|---|
| 1247 | Mise en place complete (?) de la gestion de re-scale-ing des  axes en 3D 
 | 
|---|
| 1248 | avec gestion des options graphiques (texte) - Il est possible en particulier d'imposer
 | 
|---|
| 1249 | les limites de la boites 3D.
 | 
|---|
| 1250 | cela a ete une grosse prise de tete de tout un apres-midi.
 | 
|---|
| 1251 | J'ai eu ensuite mal a la tete une partie de la soiree !  \\
 | 
|---|
| 1252 | Exemple d'utilisation:
 | 
|---|
| 1253 | 
 | 
|---|
| 1254 | \begin{verbatim}
 | 
|---|
| 1255 | 
 | 
|---|
| 1256 | # On ouvre le fichier demo.ppf
 | 
|---|
| 1257 | Cmd> openppf demo.ppf
 | 
|---|
| 1258 | Cmd> surf mtx1 'colbr32'
 | 
|---|
| 1259 | Cmd> surf mtx1 'colbr32 noautoscale'
 | 
|---|
| 1260 | Cmd> surf mtx1 'colbr32 lim3dbox=-10,60,-10,60,-3,15 autoscale3dbox'
 | 
|---|
| 1261 | #  Affichage avec superposition
 | 
|---|
| 1262 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red'
 | 
|---|
| 1263 | Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
 | 
|---|
| 1264 | #  Ou bien : 
 | 
|---|
| 1265 | Cmd> nt3d nt32 x y z - - - - - 'marker=circle,7 red noautoscale'
 | 
|---|
| 1266 | Cmd> nt3d nt32 x y z - - - - - 'same marker=cross,5 blue '
 | 
|---|
| 1267 | 
 | 
|---|
| 1268 | \end{verbatim}
 | 
|---|
| 1269 | \soustitre{piapp (PIext/ProgPI) }
 | 
|---|
| 1270 | \begin{itemize}
 | 
|---|
| 1271 | %%%%
 | 
|---|
| 1272 | \item[\rond] Juillet 2006 : Ameliorations et ajouts divers : \\
 | 
|---|
| 1273 | - Ajout commande {\bf plot3dw} ({\tt Services2NObjMgr::DisplayPoints3DW() }) \\
 | 
|---|
| 1274 | - Ajout possibilite d'acces aux caracteristiques des objets par {\tt \$\{objname.att\} }  \\
 | 
|---|
| 1275 | {\tt (PIACmd::GetVarApp()) } et amelioration verification du nom des objets 
 | 
|---|
| 1276 | (methode {\tt NamedObjMgr::CheckName()}) \\
 | 
|---|
| 1277 | - Operations sur objets: commande {\bf objaoper} ({\tt NObjMgrAdapter::PerformOperation()}) 
 | 
|---|
| 1278 | 
 | 
|---|
| 1279 | \begin{verbatim}
 | 
|---|
| 1280 | #  Extracting row / column from matrix
 | 
|---|
| 1281 | Cmd> objaoper matrixname row 23
 | 
|---|
| 1282 | Cmd> objaoper matrixname col 148
 | 
|---|
| 1283 | #  Extracting plane from 3D array (slicexy slicexz sliceyz)
 | 
|---|
| 1284 | Cmd> objaoper arr3dname slicexy 14
 | 
|---|
| 1285 | \end{verbatim} 
 | 
|---|
| 1286 | %%%%
 | 
|---|
| 1287 | \item[\rond] Avril 2006: Ajout possibilite de lecture des commandes sur le terminal (stdin) 
 | 
|---|
| 1288 | et flag en argument de commande {\tt -small} \\
 | 
|---|
| 1289 | Extrait de cvs log :
 | 
|---|
| 1290 | \begin{verbatim}
 | 
|---|
| 1291 | revision 1.16
 | 
|---|
| 1292 | date: 2006/04/26 15:53:18;  author: ansari;  state: Exp;  lines: +20 -11
 | 
|---|
| 1293 | 1/ Ajout classe de lecture sur stdin (terminal) avec thread separe pour
 | 
|---|
| 1294 | piapp - incluant la possibilite d'utilisation de la librairie GNU readline
 | 
|---|
| 1295 | (fichiers piacmdrdr.cc piacmdrdr.h + fichier makfile specifique makefile_wgrdl
 | 
|---|
| 1296 |  pour compil+link avec GNU readline)
 | 
|---|
| 1297 | 2/ MAJ Makefile et modif programme principal piapp.cc avec flag -small
 | 
|---|
| 1298 | et activation thread de lecture sur terminal
 | 
|---|
| 1299 |                            Reza , 26/04/2006
 | 
|---|
| 1300 | 
 | 
|---|
| 1301 | ----------------------------
 | 
|---|
| 1302 | \end{verbatim}
 | 
|---|
| 1303 | 
 | 
|---|
| 1304 | \item[\rond] Jan 2006 : commandes readfits writefits scanfits ont ete ajoutees 
 | 
|---|
| 1305 | dans ProgPI/fitsbtadapter.cc en utilisant le nouveau FITS - 
 | 
|---|
| 1306 | Le menu OpenFits de PIStdImgApp utilise desormais ces commandes
 | 
|---|
| 1307 | \item {\bf BUG } a corriger pour {\tt imagvav}: 
 | 
|---|
| 1308 | La destruction de l'objet et/ou widget pascorrectement geres - 
 | 
|---|
| 1309 | provoque des plantages lors de la sortie de l'application.
 | 
|---|
| 1310 | \end{itemize}
 | 
|---|
| 1311 | \soustitre{piapp multi-thread }
 | 
|---|
| 1312 | \begin{itemize}
 | 
|---|
| 1313 | \item[\rond] Avril 2005: Possibilit d'execution de commandes en threads separes, en
 | 
|---|
| 1314 | ajoutant {\bf \&} en fin de ligne de commande.
 | 
|---|
| 1315 | \item[\rond] Janvier 2004: Le multithreading a t mis en oeuvre dans piapp . 
 | 
|---|
| 1316 | 
 | 
|---|
| 1317 | \item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } : 
 | 
|---|
| 1318 | \begin{verbatim}
 | 
|---|
| 1319 | revision 1.77
 | 
|---|
| 1320 | date: 2005/04/27 11:55:00;  author: ansari;  state: Exp;  lines: +26 -10
 | 
|---|
| 1321 | 1/ Prise en charge de DataTable et SwPPFDataTable pour piapp (NObjMgrAdapter) :
 | 
|---|
| 1322 | nomhistadapter.cc et piiinit.cc
 | 
|---|
| 1323 | 2/ Lecture de tous les objets ds un fichier PPF par NamedObjMgr::ReadAll() pour
 | 
|---|
| 1324 | fichier PPF sans nametag.
 | 
|---|
| 1325 | 3/ Ajout bloc try/catch ds PIStdImgApp::Run() (boucle d'evenements)
 | 
|---|
| 1326 |                                            Reza , 27 Avril 2005
 | 
|---|
| 1327 | ----------------------------
 | 
|---|
| 1328 | revision 1.76
 | 
|---|
| 1329 | date: 2005/04/19 09:13:49;  author: ansari;  state: Exp;  lines: +3 -1
 | 
|---|
| 1330 | Ajout de l option nodisp ds les affichages des NamedObjMgr, prise en compte de 
 | 
|---|
| 1331 | <Cntrl C> (Msg_Cancel) pour arreter l'execution de l'interpreteur ds PIStdImgApp 
 | 
|---|
| 1332 | et remplacement commande breakexe par stop ds PIACmd - Reza 19/4/2005
 | 
|---|
| 1333 | ----------------------------
 | 
|---|
| 1334 | revision 1.75
 | 
|---|
| 1335 | date: 2005/04/19 06:56:52;  author: ansari;  state: Exp;  lines: +5 -4
 | 
|---|
| 1336 | Remis en marche la possibilite d'execution d'un .pic au lancement de piapp - 
 | 
|---|
| 1337 | Reza 19/4/2005
 | 
|---|
| 1338 | ----------------------------
 | 
|---|
| 1339 | revision 1.74
 | 
|---|
| 1340 | date: 2005/02/18 14:09:47;  author: ansari;  state: Exp;  lines: +62 -37
 | 
|---|
| 1341 | Modifications pour l'utilisation viewer PIImageNavigator (ajout commande imagnav
 | 
|---|
| 1342 | ) - Reza 18 Fev 2005
 | 
|---|
| 1343 | ----------------------------
 | 
|---|
| 1344 | revision 1.73
 | 
|---|
| 1345 | date: 2004/11/19 17:41:07;  author: ansari;  state: Exp;  lines: +26 -0
 | 
|---|
| 1346 | Ajout commandes addoval addfoval pour trace d'ellipse - Reza 19/11/2004
 | 
|---|
| 1347 | ----------------------------
 | 
|---|
| 1348 | revision 1.71
 | 
|---|
| 1349 | date: 2004/09/07 07:10:18;  author: ansari;  state: Exp;  lines: +35 -0
 | 
|---|
| 1350 | Ajout bloc try/catch ds piacmd.cc (thread execution commandes) et ds pistdimgapp.cc (
 | 
|---|
| 1351 | methode process, thread boucle d'evts) - Reza 07/09/2004
 | 
|---|
| 1352 | ----------------------------
 | 
|---|
| 1353 | revision 1.70
 | 
|---|
| 1354 | date: 2004/01/06 18:44:56;  author: ansari;  state: Exp;  lines: +11 -1
 | 
|---|
| 1355 |  Suite debugging gestion lock entre threads ds piapp - A l'air de
 | 
|---|
| 1356 | marcher sur OSF1 et Linux ...   Reza 06/01/2004
 | 
|---|
| 1357 | ----------------------------
 | 
|---|
| 1358 | revision 1.69
 | 
|---|
| 1359 | date: 2004/01/06 17:05:25;  author: ansari;  state: Exp;  lines: +33 -7
 | 
|---|
| 1360 | Suite debug piapp multithread : on ne peut pas utiliser ZSync() ds un if (destructeur
 | 
|---|
| 1361 |  appele de suite) - Reza 06/01/2004
 | 
|---|
| 1362 | ----------------------------
 | 
|---|
| 1363 | revision 1.68
 | 
|---|
| 1364 | date: 2004/01/04 19:02:43;  author: ansari;  state: Exp;  lines: +43 -13
 | 
|---|
| 1365 | Suite des modifs pour piapp multi-threads
 | 
|---|
| 1366 | 1) Ajout Mutex de synchronisation ds ls classe NamedObjMgr
 | 
|---|
| 1367 | 2) Suite controle de gestion d'appel aux methodes de PIStdImgApp depuis
 | 
|---|
| 1368 | la classe elle-meme, a travers le NamedObjMgr
 | 
|---|
| 1369 | 3) Modification de la boucle d'evenements, avec un thread de reveil
 | 
|---|
| 1370 | periodique
 | 
|---|
| 1371 |                                     Reza, 4 Janvier 2004
 | 
|---|
| 1372 | \end{verbatim}
 | 
|---|
| 1373 | \item[\rond] Extrait de {\tt cvs log pistdimgapp.cc } : 
 | 
|---|
| 1374 | \begin{verbatim}
 | 
|---|
| 1375 | ----------------------------
 | 
|---|
| 1376 | revision 1.62
 | 
|---|
| 1377 | date: 2003/11/27 10:51:58;  author: ansari;  state: Exp;  lines: +45 -20
 | 
|---|
| 1378 | Suite modification/adaptations a la classe PIACmd qui herite maintenent de SOPHYA::Co
 | 
|---|
| 1379 | mmander - Reza 27/11/2003
 | 
|---|
| 1380 | ----------------------------
 | 
|---|
| 1381 | revision 1.61
 | 
|---|
| 1382 | date: 2003/11/26 23:01:55;  author: ansari;  state: Exp;  lines: +20 -1755
 | 
|---|
| 1383 | Modification du code de PIACmd : La classe PIACmd herite maintenant de la classe Comm
 | 
|---|
| 1384 | ander (de SysTools) - Reza 26/11/2003
 | 
|---|
| 1385 | ----------------------------
 | 
|---|
| 1386 | revision 1.60
 | 
|---|
| 1387 | date: 2003/07/21 21:13:10;  author: cmv;  state: Exp;  lines: +3 -3
 | 
|---|
| 1388 | - introduction notion de numero de ligne dans expression ntuple
 | 
|---|
| 1389 |   modif prototype PlotExprFunc NTLoopExprFunc (add _nl _nstart _nend)
 | 
|---|
| 1390 |   modif int_4 -> int_8_exprf (long long) pour _nl (DecodeLoopParameters,
 | 
|---|
| 1391 |      PrepareNTExpressionCFile, LinkExprFunc,...)
 | 
|---|
| 1392 | - doc pour _nl _nstart _nend et arragement repartition RegisterHelp/RegisterCommand
 | 
|---|
| 1393 |              (rz + cmv 21/7/2003)
 | 
|---|
| 1394 | ----------------------------
 | 
|---|
| 1395 | \end{verbatim}
 | 
|---|
| 1396 | \end{itemize}
 | 
|---|
| 1397 | 
 | 
|---|
| 1398 | \titre{Documentation (Manual/) } 
 | 
|---|
| 1399 | %%%%
 | 
|---|
| 1400 | Documentation des classes de SysTools. \\
 | 
|---|
| 1401 | Extrait message du 12 Aout 2004 : \\
 | 
|---|
| 1402 | \begin{verbatim} 
 | 
|---|
| 1403 | ---> Au sujet de la doc (Manual/)
 | 
|---|
| 1404 |        J'ai installe doxygen sur le Mac, version 1.3.8 -
 | 
|---|
| 1405 |        Il faut updater le fichier de config de depart (dox_sophya.conf)
 | 
|---|
| 1406 |        Pour ma part, j'ai du modifier mkmf (en version privee) -
 | 
|---|
| 1407 |       En effet, il n'y avait pas le program doxysearch - Je ne sais pas si c'est general
 | 
|---|
| 1408 |       ou specifique Mac.
 | 
|---|
| 1409 | 
 | 
|---|
| 1410 |       J'ai aussi modifie certaines options de doxygen (en version privee)
 | 
|---|
| 1411 |      EXTRACT_LOCAL_CLASSES  --> NO   (au lieu de YES)
 | 
|---|
| 1412 |      DETAILS_AT_TOP  ---> YES     (au lieu de No)
 | 
|---|
| 1413 |      SORT_MEMBER_DOCS  ---> NO    (au lieu de YES)
 | 
|---|
| 1414 | 
 | 
|---|
| 1415 |       Si on est d'accord, on peut modifier ces options ds le fichier dox_sophya.conf et
 | 
|---|
| 1416 |       utiliser la fonction update de doxygen (doxygen -u)
 | 
|---|
| 1417 | \end{verbatim}
 | 
|---|
| 1418 | 
 | 
|---|
| 1419 | \titre{Mgr} 
 | 
|---|
| 1420 | \begin{itemize}
 | 
|---|
| 1421 | \item Avril-Mai 2005 : Basculement vers la nouvelle version de scripts 
 | 
|---|
| 1422 | de gestion du code (module {\bf BuildMgr/ } ) 
 | 
|---|
| 1423 | On n'a plus a se preoccuper des indications de cette section 
 | 
|---|
| 1424 | 
 | 
|---|
| 1425 | \item 
 | 
|---|
| 1426 | Septembre 2003 (17/9/2003) :  Changement DPCDEVREP, DPCBASEREP
 | 
|---|
| 1427 | en SOPHYADEVREP , SOPHYABASEREP , EROSCXX en SOPHYACXX 
 | 
|---|
| 1428 | \end{itemize}
 | 
|---|
| 1429 | 
 | 
|---|
| 1430 | 
 | 
|---|
| 1431 | 
 | 
|---|
| 1432 | \titre{Plan de modifs pour SOPHYA V 2.x PI/piapp V 4.x }
 | 
|---|
| 1433 | 
 | 
|---|
| 1434 | {\bf Sep 2006} : La grande majorit\'e des modifs pr\'evues en 2003 ont \'et\'e
 | 
|---|
| 1435 | effectu\'ees. Reste \`a faire , si besoin :
 | 
|---|
| 1436 | \begin{itemize}
 | 
|---|
| 1437 | \item SophyaLib::TArray/ 
 | 
|---|
| 1438 | \begin{verbatim}
 | 
|---|
| 1439 |   - Ajouter une classe de base abstraite GenericMatrix<T>
 | 
|---|
| 1440 |     avec methode d'acces aux elements, nb de lignes, nb de colonnes,
 | 
|---|
| 1441 |   - Introduire les TinyMatrix  (TinyMatrix<T, int L, int C>)
 | 
|---|
| 1442 |     avec passage de/vers TMatrix<T> (et TinyVector<T, int N>) ?
 | 
|---|
| 1443 |   - Introduire des matrices creuses simples SpareMatrix<T>
 | 
|---|
| 1444 |   - Introduire les DiagonalMatrix<T>
 | 
|---|
| 1445 | Remarque: Les TMatrix TinyMatrix et  SparseMatrix heritent de GenericMatrix
 | 
|---|
| 1446 | \end{verbatim}
 | 
|---|
| 1447 | 
 | 
|---|
| 1448 | \item PI/ piapp 
 | 
|---|
| 1449 | \begin{verbatim}
 | 
|---|
| 1450 | o Ajouter un traceur de  ApplePie (BarChart fait )
 | 
|---|
| 1451 | o Ajouter un traceur de Lego-Plot
 | 
|---|
| 1452 | o (?) Une fonction pour faire facilement une fenetre d'alerte ou d'info (?)
 | 
|---|
| 1453 | o Voir comment on pourrait "joindre" deux objets ayant l'interface NTupleInterface
 | 
|---|
| 1454 |   pour pouvoir plotter des objets, l'un vs l'autre
 | 
|---|
| 1455 | o (???) Introduire quelque chose du style
 | 
|---|
| 1456 |   AddDialogue("Cmd", "dialogue-description)
 | 
|---|
| 1457 |   qui pourrait fabriquer automatiquement une fenetre avec des champs a remplir
 | 
|---|
| 1458 |   pour les commandes usuelles (???)
 | 
|---|
| 1459 | \end{verbatim}
 | 
|---|
| 1460 | \end{itemize}
 | 
|---|
| 1461 | 
 | 
|---|
| 1462 | 
 | 
|---|
| 1463 | \end{document}
 | 
|---|