1 #if !defined(__CINT__) || defined(__MAKECINT__)
3 #include <TFileMerger.h>
4 #include <TAlienFile.h>
8 #include <TGridResult.h>
10 #include <TObjArray.h>
13 void ReadQASDD(Int_t runNb = 101498,Int_t year=2009,Char_t period[10]="LHC09c",Char_t pass[8]="pass1",Int_t maxfiles=300,Char_t filetosearch[50]="Merged.QA.Data.root",Char_t initfileout[50]="File.QA")
16 //****************** Connection to alien *****************************************
17 gSystem->Load("libNetx") ;
18 gSystem->Load("libRAliEn");
19 TGrid::Connect("alien://",0,0,"t");
20 //TGrid *gGrid = TGrid::Connect("alien");
21 if(!gGrid||!gGrid->IsConnected()) {
22 printf("gGrid not found! exit macro\n");
27 merger.SetFastMethod(kTRUE);
29 Char_t directory[100];
30 sprintf(fileName,"%s.%i.%s.%s.Run.%i.root",initfileout,year,period,pass,runNb);
31 merger.OutputFile(fileName);//metto il nome del file QA
32 //sprintf(directory,"local://%s",gSystem->pwd());
35 sprintf(path,"/alice/data/%04i/%s/%09i/ESDs/%s/%02i%09i*.*",year,period,runNb,pass,year-2000,runNb);
36 printf("path %s\n",path);
38 TGridResult *gr = gGrid->Query(path,filetosearch);
39 if (gr->GetEntries() < 1) {
40 printf("In this run there are not QA files: Exit macro\n");
43 else{printf("================>%d files found\n", gr->GetEntries());}
45 Int_t mergedFiles = 0;
46 Int_t nFiles = gr->GetEntries();
47 if(nFiles>maxfiles) nFiles=maxfiles;
48 for (Int_t i = 3; i <nFiles ; i++) {
49 printf("File %i/%i\n",i+1,nFiles);
50 sprintf(directory,"%s",gr->GetKey(i,"turl"));
51 printf("%s\n\n", directory);
54 TFile *checkfile=TFile::Open(directory);
55 if(checkfile->GetKey("ITS")==0x0){
56 printf("file: %s \n Run %d, In this run ITS QA has not been executed.-- Exit macro\n",directory, runNb);
64 if (merger.AddFile(directory))
67 // ------------------------------in this section we create a file that will contain the number of chunks to normalize later
70 pChunkNumber = fopen ("ChunkNumber.txt","w+");
71 fprintf (pChunkNumber, "%f\n", mergedFiles);
72 fclose (pChunkNumber);
74 //printf("Add done\n");
75 if(merger.Merge()==kTRUE){
76 printf("merged %d files\n", mergedFiles);
77 printf("output written on %s\n", fileName);
78 printf("Merge done!\n");
80 else{printf("no files merged\n");return;}
82 else{printf("no files merged\n");return;}