Problem recovering a root file

Hello,
I have a couple of files that were generated by a program that probably crashed - when I TFile *f = new TFile(“R3_02032.RRAW”), I get[quote]Warning in TFile::Init: file r3_02032.rraw probably not closed, trying to recover
Info in TFile::Recover: r3_02032.rraw, recovered key CVoltage:CVoltage at address 662
Info in TFile::Recover: r3_02032.rraw, recovered key CBowl:CBowl at address 2184
Info in TFile::Recover: r3_02032.rraw, recovered key CCalibMass:CCalibMass at address 9789
Info in TFile::Recover: r3_02032.rraw, recovered key CRunHeader:CRunHeader at address 1473094
Warning in TFile::Init: successfully recovered 4 keys[/quote]This file has 4 small objects written to it, CBowl, CVoltage, CCalibMass and CRunHeader - These appear to be intact. However, there is also a TTree in this file that gets Flushed() everyt 10 seconds. The file is 1.7 MB and the above objects amount to only a few kB. There are TBaskets in the file (see TFile::Map() display below) so I know my TTree must be somewhere…Is there any way to recover it? The file was written with and read by win32gdk v 3.10/02

Thanks,
Ed

[quote]root [7] f->Map()
20040504/132435 At:100 N=150 TFile
20040504/132832 At:250 N=245 TBasket CX = 130.61
Address = 495 Nbytes = -167 =====G A P===========
20040504/132435 At:662 N=1522 CVoltage CX = 2.10
20040504/132435 At:2184 N=7605 CBowl CX = 1.30
20040504/132435 At:9789 N=982 CCalibMass CX = 1.48
20040504/132544 At:10771 N=2974 TBasket CX = 10.76
20040504/132832 At:13745 N=286 TBasket CX = 111.88
20040504/132832 At:14031 N=522 TBasket CX = 61.30
20040504/132913 At:14553 N=229 TBasket CX = 139.73
Address = 14782 Nbytes = -172 =====G A P===========
20040504/132604 At:14954 N=13719 TBasket CX = 1.51
20040504/132605 At:28673 N=14097 TBasket CX = 1.46
20040504/132832 At:42770 N=807 TBasket CX = 39.65
20040504/132913 At:43577 N=229 TBasket CX = 139.73
Address = 43806 Nbytes = -172 =====G A P===========
20040504/132610 At:43978 N=13317 TBasket CX = 1.52
20040504/132616 At:57295 N=12471 TBasket CX = 1.59
20040504/132832 At:69766 N=891 TBasket CX = 35.91
20040504/132913 At:70657 N=229 TBasket CX = 139.73
Address = 70886 Nbytes = -95 =====G A P===========
20040504/132633 At:70981 N=3159 TBasket CX = 10.13
20040504/132633 At:74140 N=13353 TBasket CX = 2.40
20040504/132857 At:87493 N=853 TBasket CX = 37.51
20040504/132934 At:88346 N=229 TBasket CX = 139.73
Address = 88575 Nbytes = -151 =====G A P===========
20040504/132657 At:88726 N=14591 TBasket CX = 1.49
20040504/132857 At:103317 N=633 TBasket CX = 50.55
20040504/132913 At:103950 N=547 TBasket CX = 58.50
Address = 104497 Nbytes = -59 =====G A P===========
20040504/132701 At:104556 N=14695 TBasket CX = 1.44
20040504/132706 At:119251 N=13594 TBasket CX = 1.51
20040504/132709 At:132845 N=3621 TBasket CX = 8.84
20040504/132857 At:136466 N=682 TBasket CX = 46.92
20040504/132934 At:137148 N=229 TBasket CX = 139.73
20040504/132934 At:137377 N=229 TBasket CX = 139.73
Address = 137606 Nbytes = -103 =====G A P===========
20040504/132710 At:137709 N=12274 TBasket CX = 1.62
20040504/132832 At:149983 N=1280 TBasket CX = 25.00
Address = 151263 Nbytes = -23 =====G A P===========
20040504/132736 At:151286 N=5179 TBasket CX = 6.18
20040504/132736 At:156465 N=3207 TBasket CX = 9.98
20040504/132736 At:159672 N=2661 TBasket CX = 12.02
20040504/132736 At:162333 N=12792 TBasket CX = 2.50
20040504/132736 At:175125 N=7440 TBasket CX = 4.30
20040504/132736 At:182565 N=1381 TBasket CX = 23.17
20040504/132736 At:183946 N=1403 TBasket CX = 22.81
20040504/132736 At:185349 N=13793 TBasket CX = 2.32
20040504/132737 At:199142 N=13883 TBasket CX = 1.53
20040504/132857 At:213025 N=1310 TBasket CX = 24.42
Address = 214335 Nbytes = -22 =====G A P===========
20040504/132741 At:214357 N=13629 TBasket CX = 1.52
20040504/132745 At:227986 N=12974 TBasket CX = 1.56
20040504/132749 At:240960 N=12197 TBasket CX = 1.63
20040504/132913 At:253157 N=923 TBasket CX = 34.67
20040504/132948 At:254080 N=229 TBasket CX = 139.73
Address = 254309 Nbytes = -214 =====G A P===========
20040504/132756 At:254523 N=2868 TBasket CX = 11.16
20040504/132913 At:257391 N=732 TBasket CX = 43.71
20040504/132913 At:258123 N=619 TBasket CX = 51.69
Address = 258742 Nbytes = -50 =====G A P===========
20040504/132804 At:258792 N=12927 TBasket CX = 1.60
20040504/132807 At:271719 N=12717 TBasket CX = 1.60
20040504/132810 At:284436 N=12328 TBasket CX = 1.63
20040504/132916 At:296764 N=1430 TBasket CX = 22.38
20040504/132812 At:298194 N=2565 TBasket CX = 12.47
20040504/132812 At:300759 N=12358 TBasket CX = 2.59
20040504/132813 At:313117 N=11785 TBasket CX = 1.69
20040504/132925 At:324902 N=775 TBasket CX = 41.29
20040504/132925 At:325677 N=674 TBasket CX = 47.47
Address = 326351 Nbytes = -24 =====G A P===========
20040504/132822 At:326375 N=12126 TBasket CX = 1.66
20040504/132823 At:338501 N=2325 TBasket CX = 13.76
20040504/132825 At:340826 N=11832 TBasket CX = 1.69
20040504/132827 At:352658 N=11804 TBasket CX = 1.69
20040504/132828 At:364462 N=11388 TBasket CX = 1.74
20040504/132919 At:375850 N=1501 TBasket CX = 21.32
Address = 377351 Nbytes = -13 =====G A P===========
20040504/132832 At:377364 N=2605 TBasket CX = 12.28
20040504/132832 At:379969 N=2201 TBasket CX = 14.54
20040504/132832 At:382170 N=11781 TBasket CX = 2.72
20040504/132832 At:393951 N=7475 TBasket CX = 4.28
20040504/132832 At:401426 N=9343 TBasket CX = 3.42
20040504/132832 At:410769 N=10749 TBasket CX = 2.98
20040504/132832 At:421518 N=8038 TBasket CX = 3.98
20040504/132836 At:429556 N=11584 TBasket CX = 1.72
20040504/132838 At:441140 N=11368 TBasket CX = 1.74
20040504/132839 At:452508 N=11324 TBasket CX = 1.75
20040504/132840 At:463832 N=1803 TBasket CX = 17.75
20040504/132841 At:465635 N=11131 TBasket CX = 1.77
20040504/132910 At:476766 N=1542 TBasket CX = 20.75
Address = 478308 Nbytes = -21 =====G A P===========
20040504/132847 At:478329 N=1939 TBasket CX = 16.50
20040504/132847 At:480268 N=11397 TBasket CX = 2.81
20040504/132847 At:491665 N=11150 TBasket CX = 1.77
20040504/132848 At:502815 N=10985 TBasket CX = 1.79
20040504/132849 At:513800 N=11101 TBasket CX = 1.77
20040504/132850 At:524901 N=10913 TBasket CX = 1.80
20040504/132852 At:535814 N=1789 TBasket CX = 17.89
20040504/132913 At:537603 N=1515 TBasket CX = 21.12
Address = 539118 Nbytes = -79 =====G A P===========
20040504/132855 At:539197 N=11133 TBasket CX = 1.77
20040504/132856 At:550330 N=11023 TBasket CX = 1.78
20040504/132857 At:561353 N=1852 TBasket CX = 17.28
20040504/132857 At:563205 N=11088 TBasket CX = 2.89
20040504/132857 At:574293 N=7157 TBasket CX = 4.47
20040504/132857 At:581450 N=8276 TBasket CX = 3.87
20040504/132858 At:589726 N=10989 TBasket CX = 1.79
20040504/132859 At:600715 N=10886 TBasket CX = 1.80
20040504/132902 At:611601 N=1639 TBasket CX = 19.52
20040504/132902 At:613240 N=10799 TBasket CX = 1.81
20040504/132922 At:624039 N=1548 TBasket CX = 20.67
Address = 625587 Nbytes = -95 =====G A P===========
20040504/132903 At:625682 N=10752 TBasket CX = 1.82
20040504/132904 At:636434 N=10782 TBasket CX = 1.82
20040504/132905 At:647216 N=10643 TBasket CX = 1.84
20040504/132906 At:657859 N=1672 TBasket CX = 19.14
20040504/132906 At:659531 N=11020 TBasket CX = 2.90
20040504/132908 At:670551 N=10696 TBasket CX = 1.83
20040504/132909 At:681247 N=10617 TBasket CX = 1.84
20040504/132910 At:691864 N=10692 TBasket CX = 1.83
20040504/132911 At:702556 N=10555 TBasket CX = 1.85
20040504/132925 At:713111 N=1452 TBasket CX = 22.04
20040504/132948 At:714563 N=229 TBasket CX = 139.73
Address = 714792 Nbytes = -9 =====G A P===========
20040504/132913 At:714801 N=10740 TBasket CX = 2.98
20040504/132913 At:725541 N=7149 TBasket CX = 4.48
20040504/132913 At:732690 N=5921 TBasket CX = 5.40
20040504/132913 At:738611 N=6854 TBasket CX = 4.67
20040504/132913 At:745465 N=7999 TBasket CX = 4.00
20040504/132914 At:753464 N=10669 TBasket CX = 1.83
20040504/132914 At:764133 N=10536 TBasket CX = 1.85
20040504/132915 At:774669 N=10588 TBasket CX = 1.85
20040504/132916 At:785257 N=10468 TBasket CX = 1.86
20040504/132918 At:795725 N=10530 TBasket CX = 1.85
20040504/132919 At:806255 N=10774 TBasket CX = 2.97
20040504/132919 At:817029 N=10537 TBasket CX = 1.85
20040504/132919 At:827566 N=10642 TBasket CX = 1.84
20040504/132920 At:838208 N=10564 TBasket CX = 1.85
20040504/132934 At:848772 N=696 TBasket CX = 45.97
20040504/132934 At:849468 N=596 TBasket CX = 53.68
20040504/132948 At:850064 N=229 TBasket CX = 139.73
Address = 850293 Nbytes = -193 =====G A P===========
20040504/132923 At:850486 N=10650 TBasket CX = 1.83
20040504/132923 At:861136 N=10521 TBasket CX = 1.85
20040504/132924 At:871657 N=10558 TBasket CX = 1.85
20040504/132925 At:882215 N=10755 TBasket CX = 2.98
20040504/132925 At:892970 N=6789 TBasket CX = 4.71
20040504/132925 At:899759 N=568 TBasket CX = 56.33
20040504/132925 At:900327 N=559 TBasket CX = 57.24
20040504/132925 At:900886 N=6356 TBasket CX = 5.03
20040504/132925 At:907242 N=10483 TBasket CX = 1.86
20040504/132927 At:917725 N=10528 TBasket CX = 1.85
20040504/132927 At:928253 N=1392 TBasket CX = 22.99
20040504/132928 At:929645 N=10509 TBasket CX = 1.85
20040504/132928 At:940154 N=10558 TBasket CX = 1.85
20040504/132929 At:950712 N=10465 TBasket CX = 1.86
20040504/132930 At:961177 N=1447 TBasket CX = 22.11
20040504/132930 At:962624 N=10717 TBasket CX = 2.99
20040504/132931 At:973341 N=10493 TBasket CX = 1.86
20040504/132931 At:983834 N=10454 TBasket CX = 1.86
20040504/132932 At:994288 N=10517 TBasket CX = 1.85
20040504/132932 At:1004805 N=1389 TBasket CX = 23.04
20040504/132933 At:1006194 N=10406 TBasket CX = 1.87
20040504/132943 At:1016600 N=1415 TBasket CX = 22.61
20040504/132958 At:1018015 N=229 TBasket CX = 139.73
Address = 1018244 Nbytes = -113 =====G A P===========
20040504/132934 At:1018357 N=1299 TBasket CX = 24.63
20040504/132934 At:1019656 N=10549 TBasket CX = 3.03
20040504/132934 At:1030205 N=6662 TBasket CX = 4.80
20040504/132934 At:1036867 N=469 TBasket CX = 68.22
20040504/132934 At:1037336 N=528 TBasket CX = 60.60
20040504/132934 At:1037864 N=5085 TBasket CX = 6.29
20040504/132934 At:1042949 N=5911 TBasket CX = 5.41
20040504/132934 At:1048860 N=7954 TBasket CX = 4.02
20040504/132934 At:1056814 N=10444 TBasket CX = 1.86
20040504/132934 At:1067258 N=10366 TBasket CX = 1.88
20040504/132935 At:1077624 N=10441 TBasket CX = 1.87
20040504/132935 At:1088065 N=10353 TBasket CX = 1.88
20040504/132935 At:1098418 N=1317 TBasket CX = 24.30
20040504/132937 At:1099735 N=10438 TBasket CX = 1.86
20040504/132937 At:1110173 N=10321 TBasket CX = 1.88
20040504/132937 At:1120494 N=1188 TBasket CX = 26.93
20040504/132937 At:1121682 N=10494 TBasket CX = 3.05
20040504/132938 At:1132176 N=10334 TBasket CX = 1.88
20040504/132938 At:1142510 N=10316 TBasket CX = 1.88
20040504/132940 At:1152826 N=1336 TBasket CX = 23.95
20040504/132940 At:1154162 N=10480 TBasket CX = 1.86
20040504/132940 At:1164642 N=10402 TBasket CX = 1.87
20040504/132941 At:1175044 N=10422 TBasket CX = 1.87
20040504/132941 At:1185466 N=10311 TBasket CX = 1.89
20040504/132941 At:1195777 N=622 TBasket CX = 51.44
20040504/132941 At:1196399 N=1323 TBasket CX = 24.19
20040504/132941 At:1197722 N=568 TBasket CX = 56.33
20040504/132941 At:1198290 N=10492 TBasket CX = 3.05
20040504/132941 At:1208782 N=6294 TBasket CX = 5.08
20040504/132941 At:1215076 N=515 TBasket CX = 62.13
20040504/132941 At:1215591 N=499 TBasket CX = 64.12
20040504/132941 At:1216090 N=5370 TBasket CX = 5.96
20040504/132943 At:1221460 N=10375 TBasket CX = 1.87
20040504/132954 At:1231835 N=554 TBasket CX = 57.75
20040504/132954 At:1232389 N=1161 TBasket CX = 27.56
Address = 1233550 Nbytes = -101 =====G A P===========
20040504/132943 At:1233651 N=10335 TBasket CX = 1.88
20040504/132944 At:1243986 N=10341 TBasket CX = 1.88
20040504/132944 At:1254327 N=10295 TBasket CX = 1.89
20040504/132945 At:1264622 N=1242 TBasket CX = 25.76
20040504/132945 At:1265864 N=10463 TBasket CX = 3.06
20040504/132945 At:1276327 N=10241 TBasket CX = 1.89
20040504/132946 At:1286568 N=10246 TBasket CX = 1.90
20040504/132946 At:1296814 N=10291 TBasket CX = 1.89
20040504/132947 At:1307105 N=1288 TBasket CX = 24.84
20040504/132947 At:1308393 N=10238 TBasket CX = 1.90
20040504/132948 At:1318631 N=10325 TBasket CX = 1.88
20040504/132948 At:1328956 N=592 TBasket CX = 54.05
20040504/132948 At:1329548 N=1277 TBasket CX = 25.06
20040504/132948 At:1330825 N=490 TBasket CX = 65.30
20040504/132948 At:1331315 N=10355 TBasket CX = 3.09
20040504/132948 At:1341670 N=6356 TBasket CX = 5.03
20040504/132948 At:1348026 N=409 TBasket CX = 78.23
20040504/132948 At:1348435 N=470 TBasket CX = 68.08
20040504/132948 At:1348905 N=4659 TBasket CX = 6.87
20040504/132948 At:1353564 N=5257 TBasket CX = 6.09
20040504/132948 At:1358821 N=8018 TBasket CX = 3.99
20040504/132948 At:1366839 N=10209 TBasket CX = 1.90
20040504/132949 At:1377048 N=10290 TBasket CX = 1.89
20040504/132949 At:1387338 N=10180 TBasket CX = 1.90
20040504/132950 At:1397518 N=1238 TBasket CX = 25.85
20040504/132951 At:1398756 N=10245 TBasket CX = 1.89
20040504/132951 At:1409001 N=10169 TBasket CX = 1.91
20040504/132951 At:1419170 N=10278 TBasket CX = 1.89
20040504/132951 At:1429448 N=1198 TBasket CX = 26.71
20040504/132951 At:1430646 N=10475 TBasket CX = 3.05
20040504/132952 At:1441121 N=10245 TBasket CX = 1.89
20040504/132953 At:1451366 N=1233 TBasket CX = 25.95
20040504/132953 At:1452599 N=10263 TBasket CX = 1.89
20040504/132953 At:1462862 N=10232 TBasket CX = 1.90
20040504/132954 At:1473094 N=1863 CRunHeader CX = 3.43
20040504/132954 At:1474957 N=10318 TBasket CX = 1.88
20040504/132954 At:1485275 N=10264 TBasket CX = 1.89
20040504/132954 At:1495539 N=507 TBasket CX = 63.11
20040504/132954 At:1496046 N=10297 TBasket CX = 3.11
20040504/132954 At:1506343 N=6320 TBasket CX = 5.06
20040504/132954 At:1512663 N=431 TBasket CX = 74.24
20040504/132954 At:1513094 N=446 TBasket CX = 71.74
20040504/132954 At:1513540 N=5012 TBasket CX = 6.38
20040504/132955 At:1518552 N=10605 TBasket CX = 1.84
20040504/132955 At:1529157 N=10528 TBasket CX = 1.86
20040504/132955 At:1539685 N=1812 TBasket CX = 17.66
20040504/132955 At:1541497 N=10645 TBasket CX = 1.84
20040504/132955 At:1552142 N=10569 TBasket CX = 1.85
20040504/132956 At:1562711 N=1324 TBasket CX = 24.17
20040504/132956 At:1564035 N=9496 TBasket CX = 3.37
20040504/132956 At:1573531 N=10276 TBasket CX = 1.89
20040504/132956 At:1583807 N=10201 TBasket CX = 1.90
20040504/132956 At:1594008 N=10330 TBasket CX = 1.88
20040504/132957 At:1604338 N=1126 TBasket CX = 28.42
20040504/132957 At:1605464 N=10238 TBasket CX = 1.89
20040504/132958 At:1615702 N=10184 TBasket CX = 1.90
20040504/132958 At:1625886 N=466 TBasket CX = 68.66
20040504/132958 At:1626352 N=1208 TBasket CX = 26.49
20040504/132958 At:1627560 N=383 TBasket CX = 83.54
20040504/132958 At:1627943 N=10325 TBasket CX = 3.10
20040504/132958 At:1638268 N=5227 TBasket CX = 6.12
20040504/132958 At:1643495 N=229 TBasket CX = 139.73
20040504/132958 At:1643724 N=229 TBasket CX = 139.73
20040504/132958 At:1643953 N=355 TBasket CX = 90.13
20040504/132958 At:1644308 N=380 TBasket CX = 84.20
20040504/132958 At:1644688 N=4529 TBasket CX = 7.07
20040504/132958 At:1649217 N=3984 TBasket CX = 8.03
20040504/132958 At:1653201 N=7974 TBasket CX = 4.01
20040504/132958 At:1661175 N=10135 TBasket CX = 1.91
20040504/132958 At:1671310 N=10202 TBasket CX = 1.90
20040504/132959 At:1681512 N=10191 TBasket CX = 1.90
20040504/132959 At:1691703 N=1180 TBasket CX = 27.12
20040504/133000 At:1692883 N=10229 TBasket CX = 1.89
20040504/133000 At:1703112 N=10187 TBasket CX = 1.90
20040504/133001 At:1713299 N=10196 TBasket CX = 1.90
20040504/133001 At:1723495 N=1005 TBasket CX = 31.84
20040504/133001 At:1724500 N=10376 TBasket CX = 3.08
20040504/133001 At:1734876 N=10220 TBasket CX = 1.90
Address = 1745096 Nbytes = -1998254868 =====G A P===========
20040504/133001 At:1999999964 N=1 END[/quote]

Your Tree header had never been written to the file.
Instead of calling Flush, you should call TTree::AutoSave.

Rene

Rene,
I’m sorry, I do call TTree::AutoSave() every 10 seconds, not Flush(). I gues if the TTree header is not there, there’s no recovery, right? Thanks
Ed

I do not see any TTree header in the log you sent. Are you to have executed Autosave?

Rene

Rene,
Yes. I did call AutoSave() every 10 seconds. In addition, since the CRunHeader object needs to get refreshed, after the AutoSave() call I do the following:

fHeader->Write(0,TObject::kWriteDelete);

Ed

The only possibility that I see that your file has been truncated/overwritten before the portion with the Tree header.
It is always a good practice to start writing
the tree header when starting the job
and only overwrite the cycle 2.

Rene