forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog-2-24
1247 lines (1060 loc) · 46.8 KB
/
ChangeLog-2-24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//________________________________________________________________________
//
//::> VERSION 2.24/05 16/05/2000 16.07.27
//
//
// 16/05/2000 16.03.14 by Rene Brun
//
- This version should be the last version maintained with CMZ.
Next version will be maintained by CVS.
- Modify TF1::IntegralMultiple. The maximum number of points maxpts
has been increased to improve the result. Thanks Regis Terrier.
//
// 16/05/2000 12.04.12 by Fons Rademakers
//
- THtml: fix in way pathnames of source files are found. If pathname
contains a path (i.e. / (or \ on win32)) then after prepending a
source dir prefix this file is looked for. If not found the path
is stripped off and the source search path is used (old behaviour).
//
// 16/05/2000 11.58.00 by Masaharu Goto
//
* 5.14.38 5 May 2000
*-1306, ctor call for class object as static data member, t377.cxx, t380.cxx
* 1307, global namespace, using directive and function call, t382.h/cxx
* 1308, pointer to reference conversion bug fix, t383.cxx
* 1309, #pragma link C++ function A::B(); t384.h
* 1310, f(int (**)()); t385.h
* 1311, namespace{class{enum{}}} bug fix, t386.h
* 1312, N::A a; N::f(a); f(a); 3.4.2, t387.cxx, review needed
* 1313, #pragma link C++ function A::B(); with function template, t384.h
* 1314, Assume CINTSYSDIR from GetModuleFileName(),Win32
//
// 15/05/2000 23.20.31 by Rene Brun
//
- Add a new parameter nentries to TChain::Add
void TChain::Add(const char *name, Int_t nentries=-1)
if nentries < 0, the file is connected and the tree header read in memory
to get the number of entries.
if (nentries >= 0, the file is not connected, nentries is assumed to be
the number of entries in the file. In this case, no check is made that
the file exists and the Tree existing in the file. This second mode
is interesting in case the number of entries in the file is already stored
in a run data base for example.
- Add a new branch constructor to TTree:
Int_t Branch(TList *list, Int_t bufsize=32000);
This new function creates one branch for each element in the list.
Two cases are supported:
list[i] is a TObject*: a TBranchObject is created with a branch name
being the name of the object.
list[i] is a TClonesArray*: A TBranchClones is created.
if list[i]->TestBit(TClonesArray::kNoSplit) is 1, the TClonesArray
is not split.
if list[i]->TestBit(TClonesArray::kForgetBits) is 1 and the TClonesArray
is split, then no branches are created for the fBits and fUniqueID
of the TObject part of the class referenced by the TClonesArray.
The function returns the total number of branches created.
- Add a new member function in class TObjLink.
TObject **GetObjectRef()
The function returns the address of the object referenced by TObjLink.
This new function was necessary for the implementation of the new TTree::Branch
constructor described above.
- Modify TBranchClones constructor to add a new parameter splitlevel.
Modify TTree::Branch for TClonesArray to not create branches for the TObject
part (fBits and fUniqueID) if the splitlevel is > 1.
- Add new enum list in TClonesArray.h. The following options are defined:
enum {
kForgetBits = BIT(0), // Do not create branches for fBits, fUniqueID
kNoSplit = BIT(1) // array not split by TTree::Branch
};
- A few changes from Damir Buskulic and Jiri Masik for Linuxppc in
rootd, root daemon, proofd and Makefile.linuxdeb2.
- Extend kMAXFOUND from 50 to 200 in TFormula.
The previous value of 50 was a bit short when TFormula is used by TTreeFormula
and many cuts are defined.
- Modify TTreePlayer::MakeClass to change the name of the variable for the loop
index from j to jentry.
- Merge with Fons and Valery's versions
//
// 13/05/2000 18.56.36 by Rene Brun
//
- Mods in TTreePlayer::MakeCode when generating the pointer name in case
of a TBranchObject.
//
// 11/05/2000 16.11.27 by Fons Rademakers
//
- TBranch: fEntryBuffer was not initialized.
- vvector: corrected a test case.
//
// 11/05/2000 07.20.41 by Rene Brun
//
- protection added in TBranchClones constructor in case the Tree is created
in memory (no file open) (thanks Gene Van Buren).
- Merge with Valery's version of May10.
- Add two fixes reported by Masa in CINT_Infunc.
- Add minor changes reported by Damir Buskiluc when compiling with gcc 2.05
under ppcLinux.
- fix some problems with strings (backslask escaping ") in some strings
in tutorials Ifit and Shared.
//
// 09/05/2000 19.40.35 by Fons Rademakers
//
- tutorials/rootalias.C: use gSystem->GetName() to distinguish
between unix and win32 (instead of cmz +IF conditionals).
//
// 08/05/2000 19.40.35 by Fons Rademakers
//
- TGMimeTypes: fixed win32 case.
- TFormula: introduced #pragma for win32 case.
- TTUBE, TTUBS: #ifdef's cleaned up.
//
// 07/05/2000 17.11.56 by Fons Rademakers
//
- New abstract class TInspectorImp. This interface class is used
via the TGuiFactories to create and object inspector window. Currently
this is only used for the Win32 implementation (the X11 version uses
a normal TCanvas). The introduction was needed to remove the last
Win32 graphics dependency from TWinNTSystem (to be able to build
libCore.dll seperately from libWin32.dll). For the introduction of this
class changes were made in: TObject, TSystem, TWinNTSystem, TGuiFactory,
and TWin32GuiFactory.
- rootcint: fix for Win32.
- TGToolTip: corrected comments.
//________________________________________________________________________
//
//::> VERSION 2.24/04 05/05/2000 14.08.29
//
//
// 05/05/2000 12.58.00 by Masaharu Goto
//
* 5.14.36 9 Apr 2000
* - , minor fix in VC++ and BC++ setup
* - , turned on G__CONSTNESSFLAG
* 1293, bug fix to 1290, risk3, t364.cxx
* 1294, SetGlobalcomp() changed by Philippe Canal
* - , G__STRUCTPVAR -> divided as 1.2 due to size reason
* - , ifunc.c C++ comment error
* 1295, G__free_friendtag() problem only with rootcint,,
* 1296, static member in nested class, t370.cxx, risk3
* 1297, nested ClassDef,
* 1298, ImplFileLine support
*
* 5.14.37 29 Apr 2000
* 1299, overload matching for pointer to function, t373.cxx
* 1300, Check $LINES, $COLUMNS for G__more_pause(), risk1
* 1301, Bug fix for PHIL0, null fp, t372.h, risk3
* - , DataMbr.h/cxx, errno -> errnum fix
* 1302, 1290 bug fix, infinit loop, t376.cxx
* 1303, bug fix from Philippe Canal,
* 1304, workaround for Philippe's problem, bad3.cxx, t377.cxx
* 1305, Win32, ifstream::open(), t375.cxx, bug fix
//
// 05/05/2000 09.42.44 by Rene Brun
//
- Implement support for operator "*" in TCut. File Tree_LinkDef modified.
Examples of use:
Root > TCut c1 = "x<1"
Root > TCut c2 = "y<0"
Root > TCut c3 = c1&&c2
Root > ntuple.Draw("x", c1)
Root > ntuple.Draw("x", c1||"x>0")
Root > ntuple.Draw("x", c1&&c2)
Root > ntuple.Draw("x", "(x+y)"*(c1&&c2))
//________________________________________________________________________
//
//::> VERSION 2.24/03 04/05/2000 08.40.02
//
//
// 04/05/2000 8.48.59 by Rene Brun
//
- minor typos fixed.
- Rename global functions H() to R__H().
//
// 03/05/2000 08.13.47 by Rene Brun
//
- Import latest version from Fons and implement a few changes from Philippe
in BASE_System and CINT_loadfile.
//
// 03/05/2000 01.35.47 by Philippe Canal
//
- Addition of a new option for TSystem::CompileMacro and Change in
Semantic of the '+' and '++' options for .L, .x and .X.
Both .L MyFunc.C++ and .L MyFunc.C+ now keep the shared library at the
end of the ROOT session.
If the shared library already exist, .L MyFunc.C+ will only recompile it
if the macro file is newer than the shared library. However it does not
detect whether any of the files included by the macro has been changed
more recently than the shared library.
.L MyFunc.C++ always recompiles the shared library.
TSystem::CompileMacro(const char *filename, Option_t * opt)
The second argument can now be any combination of the letter 'k' and 'f'
with the following meaning:
k : keep the shared library after the session end.
f : force recompilation.
//
// 02/05/2000 19.15.59 by Rene Brun
//
- Merge with latest versions from Philippe and valery.
//
// 02/05/2000 19.01.23 by Philippe Canal
//
- The macro ClassDef and ClassImp have been upgraded to be able to handle
classes inside namespaces and to handle nested classes (classes defined
inside other classes).
In order to use this upgrade, you just have to enclose your class inside
a namespace and to make sure that the ClassImp macro is also used inside
the same namespace:
#include "TObject.h"
namespace MyProject {
class MyClass : public TObject {
public:
MyClass();
int Loop();
ClassDef( MyClass, 1 ) // This is a class inside a namespace
};
};
And in the implementation file
#include "MyClass.h"
namespace MyProject {
ClassImp( MyClass )
MyClass::MyClass() {
// Body of the constructor
}
int MyClass::Loop() {
// Body of the Loop
}
};
Once this is done, when refering in root to this class using a string
(for example to define a TClonesArrays, a Branch in a Tree, or on the
root prompt), you have to always use the fully qualified name. There
isn't yet an equivalent to 'using namespace MyProject;' for ROOT.
For example to define a TClonesArray of MyClass objects:
TClonesArray * o = new TClonesArray("MyProject::MyClass");
IMPORTANT WARNING:
This change is only transparent for classes for which a dictionary is
produced! If you need to use a class with ClassDef and ClassImp but do
NOT want to generate a dictionary file for it, you HAVE TO use the macro
ClassImp2 instead of ClassImp! In our example above you would write in
the implementation file:
#include "MyClass.h"
namespace MyProject {
ClassImp2(MyProject, MyClass )
MyClass::MyClass() {
// Body of the constructor
}
int MyClass::Loop() {
// Body of the Loop
}
};
If your classes do not belong to a namespace just omit the first
argument:
#include "MyClass_not_in_namespace.h"
ClassImp2(,MyClass_not_in_namespace)
MyClass_not_in_namespace::MyClass_not_in_namespace() {
// Body of the constructor
}
int MyClass_not_in_namespace::Loop() {
// Body of the Loop
}
IMPORTANT WARNING 2:
ClassDef and ClassImp for namespaces and nested classes is
NOT yet fully implemented for templated classes.
//
// 02/05/2000 08.40.13 by Rene Brun
//
- Add a new static function to class TH1.
static void AddDirectory(Bool_t add=kTRUE)
By default (fAddDirectory = kTRUE), histograms are automatically added
to the list of objects in memory.
Note that an histogram can be removed from its support directory
by calling h->SetDirectory(0) or h->SetDirectory(dir) to add it
to the list of objects in the directory dir.
//
// 01/05/2000 22.08.01 by Rene Brun
//
- Activate option DATE in TStyle:
New data members, fDateX, fDateY and fAttDate.
New member functions SetDateX, SetDateY, GetAttDate.
void TStyle::SetOptDate(Int_t mode)
if mode is non null, the current date/time will be printed in the canvas.
The position of the date string can be controlled by:
mode = 1 (default) date is printed in the bottom/left corner.
mode = 2 date is printed in the bottom/right corner.
mode = 3 date is printed in the top/right corner.
The date position can also be controlled by:
gStyle->SetDateX(x); x in NDC
gStyle->SetDateY(y); y in NDC
The date text attributes can be changed with:
gStyle->GetAttDate()->SetTextFont(font=62);
gStyle->GetAttDate()->SetTextSize(size=0.025);
gStyle->GetAttDate()->SetTextAngle(angle=0);
gStyle->GetAttDate()->SetTextAlign(align=11);
gStyle->GetAttDate()->SetTextColor(color=1);
The current date attributes can be obtained via:
gStyle->GetAttDate()->GetTextxxxx();
When the date option is active, a text object is created when the pad
paint its list of primitives. The text object is named "DATE".
The DATE attributes can also be edited interactively (position
and attributes) via the normal context menu.
//
// 30/04/2000 10.16.21 by Rene Brun
//
- Change name of variable errno to errn in DataMbr.h and in
G__DataMemberInfo::ValidArrayIndex. errno is a reserved keyword.
Problem was apparent with VC++ and AIX/xlC.
- Comment most ClassDef & ClassImp in WIN32 directory. A side-effect
of the changes in the ClassDef/ClassImp macros forces the dictionary
for all classes including these macros.
//
// 29/04/2000 12.37.58 by Rene Brun
//
- Add new member functions in TGeometry and TNode to transform master
to local coordinate system(thanks to Robert Hatcher).
TGeometry/TNode provided Local2Master coordinate transformations, but not
the reverse. In case of some data of object positions in global coordinates
but trying to build a truly hierarchical structure (thus the need for
"placement" relative to local coordinates) this was an impediment.
void TGeometry::Master2Local(Double_t *master, Double_t *local);
void TGeometry::Master2Local(Float_t *master, Float_t *local);
void TNode::Master2Local(Double_t *master, Double_t *local);
void TNode::Master2Local(Float_t *master, Float_t *local);
- Add fix from Masa in CINT_ifunc.c to appear in CINT 5.14.37.
This fix a problem with function overloading. the same code can now
be used with the compiler or the interpreter when calling TF1 functions.
- Modify test program stress to take advantage of the changes in CINT_ifunc.
- Modify h2root to support boolean data types from Hbook. Instead of using
unsigned integers, the new code uses unsigned chars.
- Modify print format in TTree::Show in case of a TLeafB. print up
to 10 variables on the same line.
//
// 28/04/2000 18.17.48 by Rene Brun
//
- Remove a limitation in THistPainter::PaintAxis preventing to set
a negative number of divisions on the Y axis. A negative number of divisions
may be specified to force a precise number of primary divisions on an axis.
- Implement support for regular expressions in TDirectory::Delete.
One can now do gDirectory->Delete("foo*")
- Modify TROOT::ls to call TDirectory::ls
- in TCutG constructor, remove a possible TCutG with the same name
in the list of special objects. stress7 can now be executed more than once.
- Add compiler option -Wp,-H10000 to the list of CINT compiler options
for HP-UC CC compiler to prevent a limitation of CC when compiling CINT_var.
- Change tolerance in stress/stress16 from 10 bytes to 20 bytes.
//
// 28/04/2000 16.58.41 by Fons Rademakers
//
- TGTextEntry: fix in SetFont() to correctly modify the graphics
contexts. Before SetFont() changed the default GC used by many
widgets.
- guitest.cxx: show example for TGTextEntry::SetFont.
- TROOT: use preprocessor symbols __DATE__ and __TIME__ to get
the date/time of compilation instead of CMZ symbols in preparation
of move to CVS.
//
// 27/04/2000 15.54.53 by Rene Brun
//
- Modify test program stress/stress1 to be able to run it with CINT.
- Modify code generated by TTreePlayer::MakeClass to generate special code
for TChains. Also generate new member function Cut.
- Changes in TH2, TH3, TProfile2D include files to avoid warning messages
under AIX and HP-UX.
- Modify CINT function IFUNC to avoid a compiler problkem under AIX.
the C function IFUNC contained a C++ style comment.
- Merge with Fons and Philippe's versions.
//
// 26/04/2000 12.15.54 by Fons Rademakers
//
- TObjArray: IsEmpty() correctly returns kTRUE in case TObjArray
is empty (idem for TClonesArray).
- rootcint: mods by Philippe for support of namespaces.
- Rtypes.h: mods in the ClassDef and ClassImp macros for namespace
support.
//
// 25/04/2000 17.56.34 by Rene Brun
//
- Merge with Philippe Canal's version.
- Implement support for branches with names ending with "."
in TTree::MakeClass.
//
// 25/04/2000 15.13.17 by Philippe Canal
//
Phillippe implemented a way for the user to fill a tree directly from a
TBuffer or TMessage;
This only work for branches that contain a non-split object.
Using this features makes the files non-readable by previous version of
root (2.24/02 and below).
To use this features, you need to have something like:
TBuffer * pointerToMyBuffer;
.....
myBranch->SetBufferAddress( pointerToMyBuffer );
And when myTree->Fill() is called, the data is copied from MyBuffer.
The amount of data copied is determined either by the current offset of
the buffer if it is not null or by the maximum size of the buffer.
Here are three valid usages examples
1. TBuffer * buf = new TBuffer(TBuffer::kWrite, bufsize);
branch->SetBufferAddress(buf);
buf->Reset();
buf->SetWriteMode();
event->Streamer(*buf);
buf->SetReadMode();
tree->Fill();
2. TBuffer * buf = new TBuffer(TBuffer::kWrite, bufsize);
branch->SetBufferAddress(buf);
char * data;
int nbyte = Copy_Data_From_Somewhere(data);
buf->SetBuffer(data,nbytes);
tree->Fill();
3. TMessage *mess;
Int_t messlen;
do {
messlen = s->Recv(mess);
} while ( messlen == 0 );
branch->SetBufferAddress(mess);
tree->Fill()
The extra information needed to correctly read the file created using this
features is stored at the end of each basket (using this features) just
after the array containing the entries offset within the basket.
//
// 23/04/2000 22.30.47 by Rene Brun
//
- Fix a problem in TBranchObject::SetAddress in case of a branchobject
in split mode and the branch name is of the forme "name." and one of
the sub branches members is a TClonesArray. The TClonesArray branch name
was not correctly encoded. Solution was to use the same logic already
used for other data member types.
(thanks Christian Holm Christensen for reporting this problem)
- Sasha Vanyashin has reduced further the byte swapping overhead on linux
by introducing asm routines bswapcpy32 and bswapcpy16 (similar to memcpy)
in TBuffer.
//
// 21/04/2000 21.54.54 by Rene Brun
//
- Fix a bug in TH2::FillRandom and TH3FillRandom. These functions were
correct only in the case where the x range and the y range were identical.
(thanks Laurent APHECETCHE).
- Implement support for histogram min/max in TLego::SurfaceFunction.
With this change, one can now do TH1::Draw("surf") on a histogram
where a min/max have been specified.
//
// 19/04/2000 18.32.19 by Fons Rademakers
//
- TPad: fix in Print() so a pad can be saved to gif, before
the complete canvas was always saved.
//
// 19/04/2000 11.24.25 by Rene Brun
//
- In TBranchClones::GetEntry, add a statement to clear the TClonesArray
before reading a new event. In case of split mode, the number of entries
in the array was not updated (thanks Thorsten Glebe for reporting).
- Merge with Valery's version.
This includes a protection in the THtml class and a new version
of the STAR classes.
//
// 18/04/2000 17.45.49 by Fons Rademakers
//
- Changes in several files related to the imminent move to CVS.
//
// 18/04/2000 10.36.20 by Rene Brun
//
- Activate option to write a TClonesArray in non-split mode
in TTree::Branch (TClonesArray flavour).
- Add a new tutorials tcl.C. This tutorial illustrate how to use a
TClonesArray in various mode: split, no-split.
The tutorials also shows how to run with the interpreter or
the script compiler.
//
// 16/04/2000 23.08.00 by Rene Brun
//
- Optimize code in TBasket, TBranch and TBuffer. Several functions declared
non virtual.
- In TRootBrowser::IconBoxAction Chdir has to been called after
obj->Browse because Browse assume that the current directory is the
one where to find the object while Chdir actually change the directory.
(from Philippe Canal).
- New class TProfile2D (2-dim profile histograms).
Same functionality as class TProfile for 1-dim histograms.
- Optimize TArrayC,S,I,F,L,D replacing implicit loop to set array
elements to 0 by a call to memset.
//
// 15/04/2000 19.07.24 by Rene Brun
//
- IMPORTANT ADDITION TO THE HISTOGRAMING PACKAGE
==============================================
Two new global functions have been added to TH1.h
TH1 *R__H(Int_t hid);
TH1 *R__H(const char *hname);
The first function R__H returns a pointer to a histogram with a name
corresponding to the encoding of "h" and the integer hid.
For example, if the histogram with name "h23" exists in the current
directory (either memory or disk), R__H(23) returns a pointer to
this histogram. if hid is a negative integer (eg -23), R__H(-23) returns
a pointer to the histogram with name "h_23".
The second function H returns a pointer to the histogram with name hname.
eg: R__H("h23").
The main advantage of these two functions is that they can be called
anywhere in the user's code without using global pointers for each
histogram.
These two functions provide also an easier access to histograms converted
from Hbook files.
These functions have however a severe performance penalty.
Using R__H(10)->Fill(x) is on average 6 times slower than h->Fill(x) !
R__H(const char *hname) finds the address of the histogram hname in
the hashlist of objects in memory corresponding to the current file.
If no object is found in memory, hname is searched in the list of objects
in the current directory on disk.
R__H(Int_t hid) converts hid into hname and then proceeds like R__H(const char *hname).
//
// 15/04/2000 11.58.37 by Philippe Canal
//
- Some files similar to those produced by h2root, can have simple
type AND branches that contain more than one leaf and have no reason to
contain a leaf with the same name. Those files currently core dumps the
TChain::Merge mechanism because the fill address of the new tree is not reset
properly after a change of file.
//
// 14/04/2000 12.24.20 by Rene Brun
//
- Rename functions in TPaveStats;
GetFormatFit -----> GetFitFormat
GetFormatStat -----> GetStatFormat
SetFormatFit -----> SetFitFormat
SetFormatStat -----> SetStatFormat
The TPaveStats fFitFormat and fStatFormat are now initialized
from the TStyle permanent parameters.
- New functions in TStyle:
GetFitFormat, GetStatFormat, SetFitFormat, SetStatFormat
- Introduce a new function in TProfile:
TH1D *TProfile::ProjectionX(const char* name="_px", const char *option="e")
Similarly to TH2::ProjectionX, this new function fills the profile projection
along X. It creates a TH1D histogram. if the option "e" is specified
the histogram has the profile error bars.
- Add new static functions in TVirtualFitter:
TVirtualFitter::SetMaxIterations(Int_t maxiter=5000);
TVirtualFitter::SetPrecision(Double_t prec=1e-6);
TVirtualFitter::GetMaxIterations();
TVirtualFitter::GetPrecision();
The SetPrecision function can be used to set a fit relative_precision.
The default value for relative_precision is 1e-6.
- TH1::Fit and TGraph::Fit have been modified to take advantage of
the new TVirtualFitter functions. Because TMinuit precision is an absolute
precision, an estimation of the final sum of squares of residuals (sumw2)
is computed in these two functions. The precision requested from TMinuit
is sumw2*relative_precision. The new algorithm should give in general
a better fit precision.
- Minor change in TBtInnerNode constructor to bypass a compiler bug
with gcc2.95 (thanks Matthew D. Langston).
//
// 14/04/2000 11.48.54 by Fons Rademakers
//
TExMap: implemented Streamer().
//
// 13/04/2000 19.19.49 by Rene Brun
//
- Modify AA_ARCHS to add one line for solarisgcc.
- Modify TH1::Copy to set the TAxis parents.
- Add missing file basic.dat in $ROOTSYS/tutorials.
- Modify tutorial exec1.C. logic was broken since the changes in gPad.
- In RConfig.h, define __i486__ only if not already defined. This is to avoid
a long list of warnings on Debian systems.
- Modify the comments in class TButton example. add missing backslash
in front of ".
- Improvement in TTreePlayer::Scan (thanks Jiri Masik).
When one scans a tree and interrupts it via q key and <CR>,
the q is read by getchar but the <CR> remains unread in the stream.
Any subsequent Scan scrolls two screens without prompting as the new
getchar is reading the last <CR>.
//________________________________________________________________________
//
//::> VERSION 2.24/02 07/04/2000 08.52.32
//
//
// 07/04/2000 08.45.56 by Rene Brun
//
- Merge with Fons and Valery's latest versions.
//
// 06/04/2000 16.06.22 by Fons Rademakers
//
- TDatime: new ctor taking a SQL compatible time string.
- TEnv: made most member functions virtual to allow overriding.
Also a fix in GetValue() to correctly return negative integers.
- TStopWatch: made the new Counter() an const inline function.
- TRootEmbeddedCanvas: extension to allow the embedding of a custom,
TCanvas derived, canvas. See ctor for extensive example.
- rootcint: small cleanup of Philippe's code.
- TRint: added a noLogo arg to ctor. Setting it to kTRUE will not
print the standard logo. This allows for custom a logo in a TRint
derived class.
- TGLBContainer: InsertEntry() now correctly inserts a new entry at the
head of the list if the parameter afterID is set to -1. Fix by
Reiner Rohlfs.
- TUnixSystem: in dtor reset signals to handlers that were active
before the TUnixSystem object was created. This was needed in an
app that also uses Oracle OCI. Fix provided by Fedor Ratnikov.
- TClonesArray: made several method virtual and made the data members
protected. Denis Bertini (Hades/GSI).
- TObjArray: made the datamembers protected. Denis Bertini (Hades/GSI).
- importcint: updated CINT import macro for new STL includes.
//
// 06/04/2000 13.23.49 by Valery Fine(fine@bnl.gov)
//
- WinNTSystem::DirName - bug fixed (Thanks V.Onuchin)
- ZIP inflate function Writedata: logic has been modified
//
// 05/04/2000 08.36.47 by Rene Brun
//
- Fix a problem in TH2::ProfileY (thanks Gerco Onderwater).
When creating a profile along the y-axis from a 2D histo, the number of bins
in the profile are incorrect (as a matter of fact, the number of bins on the
x-axis of the original 2d histo is used).
- Remove a memory leak in TCint::UpdateListOfTypes.
The leak was apparent when running the THtml class.
- Implement new function "fmod" in TFormula and TTreeFormula.
one can do: t.Draw("x","fmod(y,0.5)>0.2")
- Protection added in TLeafObject::GetMethodCall (thanks Philippe Canal).
a TMethodCall was created by passing a null pointer as argument. However
the code from this constructor (and/or functions called from within) assumes
an argument list.
//
// 04/04/2000 15.07.50 by Rene Brun
//
- A small change in TPostScript::Initialize (Thanks Olivier Couet).
When including ps or eps files in PowerPoint, some horizonthal lines
were appearing in the picture. This problem is due to a bug in PowerPoint
that does always closes all the open paths. To circumvent this problem,
an additional "newpath" statement is now generated when opening
a new picture.
//
// 03/04/2000 12.44.10 by Rene Brun
//
- Add new tutorial gaxis.C
- Fix a problem in THistPainter::PaintInit in case of log scale along X.
Must check that the selected last bin is not greater than the number of bins.
Problem was apparent in case of variable bin size histograms.
- Merge with Valery's version. This version fixes a problem in TPGON::FillTableOfCoSin
Protections in TWinNtSystem and TTabCom.
//________________________________________________________________________
//
//::> VERSION 2.24/01 31/03/2000 12.19.07
//
//
// 31/03/2000 12.11.55 by Rene Brun
//
- The following functions from the ZIP package have been renamed to avoid
clashes between ROOT and external packages using modified versions of
the original ZIP package. The old names are now prefixed with R__.
(thanks to Ursula Berthon to help understanding the problem).
This is the new list of the ZIP functions:
R__ReadByte
R__WriteData
R__build_bl_tree
R__build_tree
R__compress_block
R__fill_window
R__flush_outbuf
R__gen_bitlen
R__gen_codes
R__init_block
R__longest_match
R__pqdownheap
R__scan_tree
R__send_all_trees
R__send_tree
R__set_file_type
- Implement TEventList::SetName. TEventList is a TNamed.
TNamed::SetName must be overloaded in TEventList because TEventList objects
like TH1s and TTrees are inserted into a THashList. Changing the name
of one of these objects implies recomputing the hashlist.
- Merge with Valery's version.
Valery has introduced a new function TStopwatch::Counter counting
the number of start/stops.
Cleanup of STAR code to follow the ROOT coding style.
//
// 28/03/2000 12.39.19 by Rene Brun
//
- Improve functions TPolyMarker3D::PaintH3 and TMarker3DBox::PaintH3
to take into account the current axis ranges (set via TAxis::SetRange).
- minor change in tutorial graph.C. Add the statement c1->Modified() at
the end of the macro.
- Slight modification (Philippe Canal) in the destructor for TClass to avoid
accessing deleted memory.
Sometime ago the TList destructor was changed from strictly not deleting
the object it is holding to checking via GetObject()->TestBit(kCanDelete)
if it should delete the object or not. The consequence is that while
deleting fAllPubMethod and fAllPubData, eventhough it was not deleting the
object a second time, it was still accessing them. Thus the deletion of
these two list have to be done before the deletion of the objects in it.
- Modify TGraph::GetXaxis and GetYaxis to use TGraph::GetHistogram
rather than fHistogram.
- Modify the globals kumac for KCC on SGI, removing --no-exceptions.
same change in the makefile and root-config.
- Add new macro hadd.C in the list of tutorials. This macro can be used
to merge histogram files.
//
// 23/03/2000 09.59.30 by Rene Brun
//
- Minor change in root-config for HP-UX CC compiler. +Z option added
in the list of compiler options.
- The following set of Bessel functions has been added in class TMath.
origin from Nick van Eijndhoven and based on Numerical Recipes.
Double_t BesselI(Int_t n,Double_t x); // Compute integer order modified Bessel function I_n(x)
Double_t BesselK(Int_t n,Double_t x); // Compute integer order modified Bessel function K_n(x)
Double_t BesselI0(Double_t x); // Compute modified Bessel function I_0(x)
Double_t BesselK0(Double_t x); // Compute modified Bessel function K_0(x)
Double_t BesselI1(Double_t x); // Compute modified Bessel function I_1(x)
Double_t BesselK1(Double_t x); // Compute modified Bessel function K_1(x)
- Bug corrected in TH3::Project3D. When looping on the bins, the current
value for the bin error was obtained after filling the bin. It should be
obtained before filling the bin. (Thanks Angela Biselli for reporting).
//
// 21/03/2000 11.07.07 by Rene Brun
//
- Modify TFile::Init to read the file title. The file title was written
to the file but never read in when the file was reconnected.
//
// 20/03/2000 10.26.46 by Rene Brun
//
- Fix code generation in TTreePlayer::MakeClass and MakeCode in case
of variable length two dim arrays (Thanks Philippe Canal).
- Protection in TF1::GetRandom (when the parabola becomes flat).
Thanks Federico Carminati.
- Add library -lnsl in installation of h2root, g2root for Linux.
This is required on RH6.1 with the new version of CERNLIB.
- Add possibility to close a TCutG with a double click in TPad::createNewPolyLine
- Merge with valery's version including changes for TPadView3D (moved to BASE)
//
// 16/03/2000 08.11.07 by Rene Brun
//
- In TMinuit destructor remove the TMinuit object from gROOT->GetListofSpecials().
Also reset gMinuit=0 if gMinuit=this.
//
// 15/03/2000 16.55.10 by Fons Rademakers
//
- TString: can now specify which character to strip in Strip().
- mmalloc, mfree, mmprivate: changed "struct list" to "struct mmlist"
to avoid possible clash with STl list class (fix by pcanal).
//
// 11/03/2000 16.04.06 by Rene Brun
//
- Changes in include Bytes.h to support an optimized byte swapping code
on Linux machines (thanks to Sasha Vanyashin ).
The Bytes.h uses asm macros from the #include <byteswap.h>
This is a part of the GNU C library: /usr/include/byteswap.h and
/usr/include/bits/byteswap.h. To get the most of the macros one has to use
the compiler switches higher then i386 (e.g., -march=pentiumpro -mpentiumpro),
since the default gcc copmpiler settings are just the i386.
Because the byteswap.h is missing on many Linux systems, a copy of
this include is provided in Byteswap.h
- Fix a problem in TMethodCall::ReturnType to take into account
the Root data types Float_t, Int_t, etc in addition to the basic types.
(thanks Gene Van Buren)
- New functionality added to class TLatex (Marthe Brun)
#left(, #right) to draw parenthesis with a size corresponding
to the block between parenthesis.
Support for Upper and Lower indices in front of a letter (useful for
chemical elements). try for example {}_{3}^{7}Li.
Use this new functions in tutorial latex.C.
Better vertical aligment of Greek characters
//
// 10/03/2000 10.47.26 by Philippe canal
//
- New version of rootcint. This new version is now able to automatically
generate the Streamer functions for classes containing pointers to basic types
in the following case.
Int_t fN; //Number of array elements
Int_t *fType; //[fN] array of fN integers
Float_t *fX; //[3*fN] array of 3*fN floats
- Extensions to TSystem such that the following will nicely work:
root> .L stress.cxx
root> stress(); // will interpret
root> .L stress.cxx
root> stress(); // will interpret a new version
root> .L stress.cxx++
root> stress(); // will execute compiled code
root> .L stress.cxx++ // does not re-compiled if stress.cxx is NOT newer.
root> stress(); // will execute new compiled code
//
// 08/03/2000 14.57.15 by Rene Brun
//
- In TVirtualFitter destructor, reset fgFitter and fgMaxpar to 0.
This is necessary in case a previous fitter was created with a number
of parameters maxpar, then deleted and a new fitter created with
less parameters. (case shown by Nicolas Produit)
//
// 07/03/2000 16.50.31 by Rene Brun
//
- Modify CINT/libstrm deck header to add -KCC.
Modify importcint to add -kCC when importing libstrm.
- Add comments in TNamed::SetName, TNamed::SetObject to mention that
if an object is a member of a THashList, the THashList must be
rehashed after the SetName.
Comment also added to the THashList constructors.
//
// 06/03/2000 08.43.09 by Rene Brun
//
- Update a wrong comment in tutorial Ifit (mnhelp("*") instead of mnhelp("*",0).
(thanks Ben Kilminster).
- Modify test programs Tetris and hworld to replace references to gPad
by TVirtualPad::Pad().
- Merge with Valery's new version. This new version includes several changes
in the STAR classes + support for double-click on WindowsNT.
//
// 05/03/2000 16.11.09 by Rene Brun
- Declare the TTree::Branch functions to be virtual (Fred Gray request).
//
//
// 04/03/2000 16.34.54 by Rene Brun
//
- Fix a clipping problem in TGraph::PaintGraph in case of option Bar.
Add SetBit(kClipFrame) in default TGraph constructor.
(thanks Anton Fokin).
//
// 03/03/2000 19.02.17 by Fons Rademakers
//
- TDatime: allow 100 - 199 as years (100 is returned by Linux's gmtime
for the year 2000).
- TMatrix, TVector: print errors when two matrices or vectors are not
compatible instead of silently doing nothing.
- TGSlider: fixed two case of && which should be & in DoDraw() for TGVSlider
and TGHSlider. Found by Yun-Ha Shin.
//
// 02/03/2000 10.10.41 by Rene Brun
//
- In TChain::SetBranchAddress and TChain::SetBranchStatus,
set fTreeNumber = -1 to force TChain::LoadEntry to be executed
at the next call to TChain::GetEntry. This statement is necessary
in case a user calls one of these two functions after a first pass
to the files in the chain. (thanks Goetz Gaycken)
- Add new function int() to TFormula::Analyze, TFormula::Eval
and to TTreeFormula::Eval
//
// 01/03/2000 17.27.39 by Rene Brun
//
- Important change in histogram classes
=====================================
- All histogram classes are derived from the base class TH1
TH1
^
|
|
|
-----------------------------------------------------
| | | | | |
| | TH1C TH1S TH1F TH1D
| | |
| | |