Hi Martina,
You are writing into the string array s[100], but your file names are
more than 120 characters, so you overwrite this array.
This is likely the cause of the crash.
You should also remove the statement "gROOT->Reset();"
This statement should be used only at the beginning of unnamed macros.
See my modified file below.
Let me know the result
Rene
void mergephoton(int a, int b){
//gROOT->Reset(); //<============
char s[160]; //<============
Long_t id,size,flags,mt; //<============
TChain tree("CBNT/h3333");
for (int j=a;j<=b;j++){
if(j<10)
sprintf(s,"rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.0000%d.test.photon_20_250.root",j);
else
sprintf(s,"rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.000%d.test.photon_20_250.root",j);
Int_t i = gSystem->GetPathInfo(s,&id,&size,&flags,&mt);
cout<<s<<" "<<i<<endl;
if (i==0) tree.Add(s);
}
sprintf(s,"~/cern/w0/photons002028lumi10/files%d-%d.root",a,b);
cout <<s<<endl;
tree->Merge(s);
cout <<"done"<<endl;
}
On
Wed, 4 Jun 2003,
Schaefer Martina wrote:
> Hi,
>
> i send you my macro and the output. Everything is working fine, the output
> root-file is ok, but there is this
> *** Break *** segmentation violation
> Generating stack trace...
> at the end.
>
> What am I doing wrong?
>
>
> Thanks a lot,
> Martina
>
> the macro:
> --------------------------------------
> void mergephoton(int a, int b){
> gROOT->Reset();
> char s[100];
> TChain tree("CBNT/h3333");
> for (int j=a;j<=b;j++){
> if(j<10)
> sprintf(s,"rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.0000%d.test.photon_20_250.root",j);
> else
> sprintf(s,"rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.000%d.test.photon_20_250.root",j);
> Long_t id,size,flags,mt;
> Int_t i = gSystem->GetPathInfo(s,&id,&size,&flags,&mt);
> cout<<s<<" "<<i<<endl;
> if (i==0) tree.Add(s);
> sprintf(s,"~/cern/w0/photons002028lumi10/files%d-%d.root",a,b);
> cout <<s<<endl;
> tree->Merge(s);
> cout <<"done"<<endl;
>
> }
>
>
>
> --------------
> the output:
> --------------
> root [0] .L merge.C
> root [1] mergephoton(16,20)
> rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.00016.test.photon_20_250.root
> 0
> rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.00017.test.photon_20_250.root
> 0
> rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.00018.test.photon_20_250.root
> 0
> rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.00019.test.photon_20_250.root
> 0
> rfio:/castor/cern.ch/user/m/mschafer/photons002028lumi10/dc1.002028.lumi10.recon.008.00020.test.photon_20_250.root
> 0
> ~/cern/w0/photons002028lumi10/files16-20.root
> done
>
> *** Break *** segmentation violation
> Generating stack trace...
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:12 MET