Thanks for the reply.
It seems CINT doesn’t like ostringstream variables…
I corrected the code, or i think so:
[code]int run(){
ostringstream title;
ostringstream endTitle;
ostringstream otherTitle;
title<<“amirOut”;
endTitle<<title.str()<<".root";
otherTitle<<title.str()<<“sigma.root”;
TTree *sigmaTree =new TTree(“Sigma”,“Sigma”);
TFile *myfile =TFile::Open(endTitle.str().c_str());
Double_t PETotpmt1;
Double_t PETotpmt2;
Double_t PETotpmt3;
Double_t PETotb;
Double_t sigma;
sigmaTree->Branch(“sigma”,&sigma,“sigma/D”);
for(Int_t b=1;b<4;b++)
{
PETotpmt1 =0;
PETotpmt2 =0;
PETotpmt3 =0;
PETotb=0;
const Char_t* dir;
ostringstream pippo;
pippo<<"Run "<<b;
dir =pippo.str().c_str();
myfile->cd(dir);
gDirectory->cd(“Station 119”);
cout<<"directory: "<pwd();
TTree *pmt1Tot =(TTree *)gDirectory->Get(“pmt1Tot”);
TTree *pmt2Tot =(TTree *)gDirectory->Get(“pmt2Tot”);
TTree *pmt3Tot =(TTree *)gDirectory->Get(“pmt3Tot”);
pmt1Tot->SetBranchAddress(“PETot”,&PETotpmt1);
Int_t nentriesPmt1 =(Int_t)pmt1Tot->GetEntries();
pmt1Tot->GetEntry(nentriesPmt1-1);
pmt2Tot->SetBranchAddress(“PETot”,&PETotpmt2);
Int_t nentriesPmt2 =(Int_t)pmt2Tot->GetEntries();
pmt2Tot->GetEntry(nentriesPmt2-1);
pmt3Tot->SetBranchAddress(“PETot”,&PETotpmt3);
Int_t nentriesPmt3 =(Int_t)pmt3Tot->GetEntries();
pmt3Tot->GetEntry(nentriesPmt3-1);
PETotb =PETotpmt1 +PETotpmt2 +PETotpmt3;
sigma =pow(0.5*(pow(PETotpmt1-(PETotb/3.0),2) +pow(PETotpmt2-(PETotb/3.0),2) +pow(PETotpmt3-(PETotb/3.0),2)),0.5);
cout<<"sigma: "<<sigma<<endl;
sigmaTree->Fill();
myfile->cd();
}
TFile *sigmafile =new TFile(otherTitle.str().c_str(),“recreate”);
TTree *sigmaTreeNew =sigmaTree->CloneTree();
sigmaTreeNew->Write();
cout<<“All Green!”<<endl;[/code]
But still it doesnt work with the first strike.
Running .L sigma.cc+
produces
Info in <TUnixSystem::ACLiC>: creating shared library /home/amir/2/./sigma_cc.so
In file included from /home/amir/2/fileWaoUoa.h:32,
from /home/amir/2/fileWaoUoa.cxx:16:
/home/amir/2/sigma.cc: In function `int run()':
/home/amir/2/sigma.cc:22: error: aggregate `std::ostringstream title' has
incomplete type and cannot be defined
/home/amir/2/sigma.cc:23: error: aggregate `std::ostringstream endTitle' has
incomplete type and cannot be defined
/home/amir/2/sigma.cc:24: error: aggregate `std::ostringstream otherTitle' has
incomplete type and cannot be defined
/home/amir/2/sigma.cc:50: error: aggregate `std::ostringstream pippo' has
incomplete type and cannot be defined
/home/amir/2/sigma.cc:55: error: no match for 'operator<<' in 'std::operator<<
[with _Traits = std::char_traits<char>]((&std::cout), "directory: ") <<
(*(gDirectory->TDirectory::_vptr.TObject + 336))(gDirectory)'
/usr/include/c++/3.3.4/bits/ostream.tcc:63: error: candidates are:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(std::basic_ostream<_CharT,
_Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:74: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(std::basic_ios<_CharT,
_Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits
= std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:86: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char,
_Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:122: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:156: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:98: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(bool) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:178: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(short int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:189: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:193: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:204: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:181: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long long int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:216: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:241: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(double) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:219: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(float) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:265: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(long double) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:289: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(const void*) [with _CharT = char, _Traits =
std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:313: error:
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,
_Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT =
char, _Traits = std::char_traits<char>]
/home/amir/root5.02/include/TBuffer.h:514: error: TBuffer&
operator<<(TBuffer&, const TObject*)
/home/amir/root5.02/include/TString.h:232: error: TBuffer&
operator<<(TBuffer&, const TString*)
/home/amir/root5.02/include/TString.h:368: error: std::ostream&
operator<<(std::ostream&, const TString&)
/home/amir/root5.02/include/TString.h:370: error: TBuffer&
operator<<(TBuffer&, const TString&)
/home/amir/root5.02/include/TUUID.h:100: error: TBuffer&
operator<<(TBuffer&, const TUUID&)
/home/amir/root5.02/include/TArray.h:74: error: TBuffer&
operator<<(TBuffer&, const TArray*)
/home/amir/root5.02/include/TArrayD.h:74: error: TBuffer&
operator<<(TBuffer&, const TArrayD*)
/home/amir/root5.02/include/TArrayC.h:73: error: TBuffer&
operator<<(TBuffer&, const TArrayC*)
/home/amir/root5.02/include/TArrayS.h:73: error: TBuffer&
operator<<(TBuffer&, const TArrayS*)
/home/amir/root5.02/include/TArrayI.h:74: error: TBuffer&
operator<<(TBuffer&, const TArrayI*)
/home/amir/root5.02/include/TArrayF.h:73: error: TBuffer&
operator<<(TBuffer&, const TArrayF*)
/usr/include/c++/3.3.4/ostream:491: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, const unsigned char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:486: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, const signed char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:616: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, const char*) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:572: error:
std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) [with
_CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:452: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, unsigned char) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:447: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, signed char) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/bits/ostream.tcc:512: error:
std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char,
_Traits>&, char) [with _Traits = std::char_traits<char>]
/usr/include/c++/3.3.4/ostream:436: error:
std::basic_ostream<_CharT, _Traits>&
std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) [with _CharT =
char, _Traits = std::char_traits<char>]
/home/amir/2/sigma.cc:89: warning: unused variable `TFile*sigmafile'
g++: /home/amir/2/./fileWaoUoa.o: No such file or directory
Error in <ACLiC>: Compilation failed!
While doing it with valgrind activated
==10808== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 69 from 4)
==10808== malloc/free: in use at exit: 15832496 bytes in 23767 blocks.
==10808== malloc/free: 119385 allocs, 95618 frees, 26887964 bytes allocated.
==10808== For counts of detected errors, rerun with: -v
==10808== searching for pointers to 23767 not-freed blocks.
==10808== checked 18529536 bytes.
==10808==
==10808== LEAK SUMMARY:
==10808== definitely lost: 11979 bytes in 86 blocks.
==10808== possibly lost: 112505 bytes in 2579 blocks.
==10808== still reachable: 15708012 bytes in 21102 blocks.
==10808== suppressed: 0 bytes in 0 blocks.
==10808== Use --leak-check=full to see details of leaked memory.
Do you think i should run .L sigma.cc ?
It is useful to post valgrind --tool=memcheck --leak-check=full root.exe -b -l
?
Sorry for the long post
Amir