source: Sophya/trunk/SophyaLib/Manual/modifs.tex@ 3791

Last change on this file since 3791 was 3754, checked in by ansari, 16 years ago

MAJ fichiers modifs.tex suite prise en charge des floats 128 bits par NDataBlock/PPersist, Reza 03/03/2010

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