21 #include "TObjArray.h" 23 #include "AliTPCcalibBase.h" 27 gSystem->Load(
"libANALYSIS");
28 gSystem->Load(
"libTPCcalib");
40 if (!objfile.Contains(
"root"))
continue;
41 TFile currentFile(objfile.Data());
42 printf(
"Open file:Counter\t%d\tMerging file %s\n",counter,objfile.Data());
46 TList *farr = currentFile.GetListOfKeys();
48 for (Int_t ical=0; ical<farr->GetEntries(); ical++){
49 if (!farr->At(ical))
continue;
50 TObject *obj = currentFile.Get(farr->At(ical)->GetName());
51 if (obj) carray->AddLast(obj);
55 if (carray->GetEntries()==0)
continue;
58 if (!mergeArray) { mergeArray = carray;
continue;}
59 printf(
"Counter\t%d\tMerging file %s\n",counter,objfile.Data());
60 for (Int_t icalib=0; icalib<mergeArray->GetEntries(); icalib++){
61 AliTPCcalibBase *calib = ( AliTPCcalibBase *)mergeArray->At(icalib);
63 if (!calib->InheritsFrom(
"AliTPCcalibBase"))
continue;
64 if (calib->InheritsFrom(
"AliTPCcalibTrigger"))
continue;
76 printf(
"Merging\t%s\n",calib->GetName());
78 TObject *objectMerge = carray->FindObject(calib->GetName());
80 printf(
"Object not found\n");
83 toMerge.AddAt(objectMerge,0);
84 toMerge.SetOwner(kFALSE);
85 calib->Merge(&toMerge);
90 carray->SetOwner(kTRUE);
103 if (counter>nmax)
break;
108 for (Int_t icalib=0; icalib<mergeArray->GetEntries(); icalib++){
109 TFile * output =
new TFile(oname,
"UPDATE");
110 TObject * obj = mergeArray->At(icalib);
125 gSystem->Exec(Form(
"kill -9 %d",gSystem->GetPid()));
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void CalibFileMerger(const char *oname, Int_t nmax=1000, const char *filename="mergelist.txt")
static void AddStamp(const char *sname, Int_t id0=-1, Int_t id1=-1, Int_t id2=-1, Int_t id3=-1)