void hbtcorrections(Int_t first = -1,Int_t last = -1) { const char* basedir="."; const char* serie=""; const char* field = ""; AliHBTReader* reader = new AliHBTReaderInternal("ESD.old.root"); TObjArray* dirs=0; if ( (first >= 0) && (last>=0) && ( (last-first)>=0 ) ) {//read from many dirs dirs char buff[50]; dirs = new TObjArray(last-first+1); for (Int_t i = first; i<=last; i++) { sprintf(buff,"%s/%s/%s/%d",basedir,field,serie,i); TObjString *odir= new TObjString(buff); dirs->Add(odir); } } reader->SetDirs(dirs); AliHBTParticleCut* readerpartcut= new AliHBTParticleCut(); readerpartcut->SetPtRange(0.0,1.0); readerpartcut->SetPID(kPiPlus); reader->AddParticleCut(readerpartcut);//read this particle type with this cut AliHBTAnalysis* analysis = new AliHBTAnalysis(); analysis->SetReader(reader); analysis->SetDisplayInfo(100000); AliHBTPairCut *paircut = new AliHBTPairCut(); paircut->SetQInvRange(0.0,0.15); analysis->SetGlobalPairCut(paircut); AliHBTCorrectQInvCorrelFctn* correctqinvCF = new AliHBTCorrectQInvCorrelFctn(); analysis->AddTrackFunction(correctqinvCF); TFile* outf = TFile::Open("hbtcorrected.root","recreate"); if (outf == 0x0) { cout<<"\n\nERROR: can not open file"<SetInitialValues(0.8,12.0); correctqinvCF->SetRadiusConvergenceTreshold(0.005); correctqinvCF->SetLambdaConvergenceTreshold(0.01); while (1) { iter++; dirname = ietration+iter; TDirectory* dir = outf->mkdir(dirname,"results after "+dirname); outf->Write(); if (dir) dir->cd(); else { cout<<"\n\nERROR: can not make an directory in file named"<Process("Tracks"); /*****************************************/ dir->cd(); correctqinvCF->WriteAll(); /*****************************************/ if (correctqinvCF->IsConverged()) break; else { correctqinvCF->SetInitialValues(correctqinvCF->GetFittedLambda(),correctqinvCF->GetFittedRadius()); } } outf->cd(); analysis->Write(); delete outf; }