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

Last change on this file since 3737 was 3735, checked in by ansari, 16 years ago

MAJ fichier modifs suite introduction classe PICMapDrawer et passage PI V=4.20 et SOPHYA V=2.145 - Reza 29/01/2010

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