]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PHOS/macros/pi0Calib/addhistoEmc.C
Coverity fix
[u/mrichter/AliRoot.git] / PHOS / macros / pi0Calib / addhistoEmc.C
CommitLineData
60da4435 1#include "TFile.h"
2#include "TList.h"
3#include "TObjString.h"
4#include "TObjArray.h"
5#include "TH1.h"
6
7void addhistoEmc(const char* list="list.txt", char *newname=0)
8{
9 // Add histograms from a set of files listed in file list
10 // and write the result into a new file.
11
12 char SumName[20];
13
14 if (!newname) {
15 sprintf(SumName,"Sum_All_Emc.root");
16 newname=SumName;
17 printf("\n === Default output file name is %s ===\n",newname);
18 }
19
20 TFile *f=NULL;
21 TH1F* hst[5][64][56];
22 TH1F* hadd=NULL;
23 char hnam[80]; char htit[80];
24 TList* hlist = 0;
25
26 char fpath[80];
27 int ifscanf=0;
28 Int_t ifile=0;
29
30 for(Int_t iMod=0; iMod<5; iMod++) {
31 for(Int_t iX=0; iX<64; iX++) {
32 for(Int_t iZ=0; iZ<56; iZ++) {
33 sprintf(hnam,"%d_%d_%d",iMod,iX,iZ);
34 sprintf(htit,"Two-gamma inv. mass for mod %d, cell (%d,%d)",iMod,iX,iZ);
35 hst[iMod][iX][iZ] = new TH1F(hnam,htit,100,0.,300.);
36 }
37 }
38 }
39
40 TH1F* hmgg = new TH1F("hmgg","2-cluster invariant mass",100,0.,300.);
41
42 FILE* fd = fopen(list,"r");
43 while( ifscanf = fscanf(fd,"%s",fpath) != EOF) {
44 f=new TFile(fpath);
45 hlist = (TList*)f->Get("histos");
46
47 for(Int_t iList=0; iList<hlist->GetEntries(); iList++) {
48 hadd = (TH1F*)hlist->At(iList);
49 const char* str = hadd->GetName();
50 int md,X,Z;
51 if (sscanf(str,"%d_%d_%d",&md,&X,&Z)) {
52 hst[md][X][Z]->Add(hadd);
53 //printf("Added hst[%d][%d][%d]\n",md,X,Z);
54 }
55 else {
56 printf("Trying to add histogram %s to hmgg.\n",hadd->GetName());
57 hmgg->Add(hadd);
58 }
59 }
60
61 printf("Deleting list..\n");
62 hlist->Delete();
63 printf("OK!\n");
64 ifile++;
65
66 printf("File %s processed.\n",fpath);
67 if(f) delete f;
68 }
69
70 printf("%d processed.\n",ifile);
71
72 TFile outfile(newname,"recreate");
73
74 for(Int_t iMod=0; iMod<5; iMod++) {
75 for(Int_t iX=0; iX<64; iX++) {
76 for(Int_t iZ=0; iZ<56; iZ++) {
77 if(hst[iMod][iX][iZ]->GetEntries()) hst[iMod][iX][iZ]->Print();
78 hst[iMod][iX][iZ]->Write();
79 }
80 }
81 }
82
83 hmgg->Write();
84 outfile.Close();
85}