]>
Commit | Line | Data |
---|---|---|
fa6e7866 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /* $Id$ */ | |
17 | ||
e54bf126 | 18 | /// \ingroup macros |
19 | /// \file MergeMuonLight.C | |
20 | /// \brief This macro merges several files built with DecodeRecoCocktail.C into | |
21 | /// a single one | |
22 | /// | |
23 | /// \author A. De Falco, H. Woehri, INFN Cagliari, July 2006 | |
3c226639 | 24 | |
25 | #if !defined(__CINT__) || defined(__MAKECINT__) | |
26 | #include "TFile.h" | |
27 | #include "TTree.h" | |
28 | #include "TClonesArray.h" | |
29 | #include "AliMUONTrackLight.h" | |
30 | #include "AliMUONPairLight.h" | |
31 | #endif | |
32 | ||
33 | ||
e54bf126 | 34 | void MergeMuonLight(char *foutname="MuonLightMerged.root",char *flistname="lista.lis", Bool_t saveAll = kTRUE) |
35 | { | |
36 | /// \param foutname name of the output file | |
37 | /// \param flistname name of a text file containing the list of files | |
38 | /// to be merged | |
39 | /// \param saveAll boolian that allows/forbids saving of events with no muons | |
40 | ||
fa6e7866 | 41 | // up to 2000 input files |
42 | ||
43 | TFile *file[2000]; | |
44 | TClonesArray *muonArray = new TClonesArray("AliMUONTrackLight",2); | |
45 | TClonesArray *dimuonArray = new TClonesArray("AliMUONPairLight",1); | |
46 | ||
47 | // open output file | |
48 | TFile *fout = new TFile (foutname,"recreate"); | |
49 | TTree *treeOut = new TTree("tree","tree"); | |
50 | treeOut->Branch("muons",&muonArray); | |
51 | treeOut->Branch("dimuons",&dimuonArray); | |
52 | ||
53 | char *filename = new char[100]; | |
54 | // read the list of input files | |
55 | FILE *pf= fopen(flistname,"r"); | |
56 | Int_t nfiles=0; | |
57 | Int_t outflag=0; | |
58 | // open the n input files | |
59 | while (!outflag) { | |
60 | if (fscanf(pf,"%s",filename)==1) { | |
61 | file[nfiles++] = new TFile (filename); | |
3c226639 | 62 | printf("Opening for input %s", filename); |
fa6e7866 | 63 | } |
64 | else outflag = 1; | |
65 | } | |
66 | fclose(pf); | |
67 | ||
68 | ||
69 | for (Int_t ifile=0; ifile<nfiles; ifile++) { | |
70 | printf ("Scanning file %d: %s\n",ifile, file[ifile]->GetName()); | |
71 | TTree *tree = (TTree*) file[ifile]->Get("tree"); | |
72 | tree->SetBranchAddress("muons",&muonArray); | |
73 | tree->SetBranchAddress("dimuons",&dimuonArray); | |
74 | Int_t nev = tree->GetEntriesFast(); | |
75 | printf ("Scanning file %d: %s containing %d events\n", | |
76 | ifile, file[ifile]->GetName(),nev); | |
77 | for (Int_t iev=0; iev<nev; iev++) { | |
78 | tree->GetEvent(iev); | |
4d309390 | 79 | Int_t nMu = muonArray->GetEntriesFast(); |
80 | if(!saveAll) | |
81 | if(nMu < 1) continue; | |
fa6e7866 | 82 | treeOut->Fill(); |
83 | } | |
4d309390 | 84 | file[ifile]->Close(); |
85 | }//end of scanning incoming file | |
fa6e7866 | 86 | fout->cd(); |
87 | treeOut->Write(); | |
88 | } |