rootcint function arg limit

S.J.M. Peeters (Simon.Peeters@cern.ch)
Wed, 5 Aug 1998 15:32:37 +0200 (METDST)


Hi ROOTers,

The code at the bottom of the file produces the following error:

Error in <TFile::TFile>: file does not exist

*** Break *** bus error

( 0) 0xc1821f00 StackTrace__11TUnixSystemFv + 0x28
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libUnix.sl]
( 1) 0xc1820938 DispatchSignals__11TUnixSystemF8ESignals + 0xd0
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libUnix.sl]
( 2) 0xc181f420 SigHandler__F8ESignals + 0x30
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libUnix.sl]
( 3) 0xc1823780 sighandler__Fi + 0x68
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libUnix.sl]
( 4) 0xc012f2e0 _sigreturn [/usr/lib/libc.1]
( 5) 0xc1864994 _sigreturn + 0x3e995
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libTree.sl]
( 6) 0xc1867ee4 GetBasket__7TBranchFi + 0x134
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libTree.sl]
( 7) 0xc18679bc Fill__7TBranchFv + 0x54
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libTree.sl]
( 8) 0xc186b714 Fill__13TBranchObjectFv + 0xb4
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libTree.sl]
( 9) 0xc18dae1c Fill__5TTreeFv + 0x8c
[/afs/cern.ch/na49/library/local/ROOT/hpux10aCC/root/lib/libTree.sl]
...

I suspected it had something to do with the inheretance from TOBject, so I
initailised TROOT in the main program where the class is called, but that
was not succesfull.. it didn't recognize the initialisation.

This is the program, the error occurs when the program goes through the
track_list for the first time.

void RootWriter::store_tracks(const list<Track*> &track_list) {

TROOT ROOTiPatRec("iPatRec","Track reconstruction from seeds");
TFile *Bestand = new TFile("Tracks.root","RECREATE");
TTree *Boom = new TTree("Boom","Tracks with residuals");
AlignmentTrack *FillTrack = 0;
Boom->Branch("track","AlignmentTrack",&FillTrack,0,64000);

TStopwatch timer;
timer.Start();

list<Track*>::const_iterator itbTrackList;
for ( itbTrackList = track_list.begin() ;
itbTrackList != track_list.end() ;
++itbTrackList ) {
Int_t HitCounter = 0;
list<AlignmentHit> TempTrack;
list<HitOnTrack*> MyList((*itbTrackList)->list_of_hits());
vector<Double_t> MyRes ((*itbTrackList)->residuals());
vector<Double_t>::const_iterator itbResidual = MyRes.begin();
list<HitOnTrack*>::iterator itbHitList;
for ( itbHitList = MyList.begin() ;
itbHitList != MyList.end() ;
++itbHitList ) {
vector<Double_t> TempResidual;
HitCounter++;
if ( itbResidual != MyRes.end() ) {
if ( (*itbHitList)->status() == -21) {
TempResidual.push_back(*(itbResidual++));
TempResidual.push_back(*(itbResidual++));
} else {
TempResidual.push_back(*(itbResidual++));
} // if HitContainer[index].is_pixel()
} else {
cout << "Inconstistent datalength of hits and residuals!" <<
endl;
} // if itbResidual
AlignmentHit TempHit( (*itbHitList)->status(), TempResidual ,
(*itbHitList)->index () );
TempTrack.push_back(TempHit);
} // for itbHitList
FillTrack = new AlignmentTrack(TempTrack);
Boom->Fill();
delete FillTrack;
} // for itbTrackList
Boom->Print();
cout << "done" << endl;

// Stop timer and print results
timer.Stop();
cout << "Real time: " << timer.RealTime() << endl;
cout << "CPU time: " << timer.CpuTime() << endl;
//cout << "File size: " << << endl;
Bestand->Write();
Bestand->Close();
}

Thanks in advance,

Simon Peeters.

--
NIKHEF, National Institute for Nuclear and High Energy Physics
Kruislaan 409, office H-044 Tel:(+31-20-592) 5140
P.O. Box 41882, 1009 DB Amsterdam (NL) Fax:(+31-20-592) 5155
CERN, building 40, office 2-D06 Tel:(+41-22-76) 71157