09b86459 |
1 | #include "AliReadESD.h" |
2 | |
3 | //====================================================================================== |
4 | TChain * AliReadESDfromdisk(const UInt_t eventsToRead, |
5 | const TString dirName, |
6 | const TString esdTreeName, |
7 | const char * pattern) |
8 | { |
9 | // Reads ESDs from Disk |
10 | TChain * rv = 0; |
11 | |
12 | AliInfo( Form("\nReading files in %s \nESD tree name is %s \nReading %d events", |
13 | dirName.Data(), esdTreeName.Data(), eventsToRead) ) ; |
14 | |
15 | // create a TChain of all the files |
16 | TChain * cESDTree = new TChain(esdTreeName) ; |
17 | |
18 | // read from the directory file until the require number of events are collected |
19 | void * from = gSystem->OpenDirectory(dirName) ; |
20 | if (!from) { |
21 | AliError( Form("Directory %s does not exist") ) ; |
22 | rv = 0 ; |
23 | } |
24 | else{ // reading file names from directory |
69036fc3 |
25 | const char * subdir ; |
09b86459 |
26 | // search all subdirectories witch matching pattern |
69036fc3 |
27 | while( (subdir = gSystem->GetDirEntry(from)) && |
28 | (cESDTree->GetEntries() < eventsToRead)) { |
29 | if ( strstr(subdir, pattern) != 0 ) { |
30 | char file[200] ; |
31 | sprintf(file, "%s%s/AliESDs.root", dirName.Data(), subdir); |
09b86459 |
32 | AliInfo( Form("Adding %s\n", file) ); |
33 | cESDTree->Add(file) ; |
34 | } |
35 | } // while file |
36 | |
37 | AliInfo( Form(" %d events read", cESDTree->GetEntriesFast()) ) ; |
38 | rv = cESDTree ; |
39 | |
40 | } // reading file names from directory |
41 | return rv ; |
42 | } |
43 | |
44 | //====================================================================================== |
45 | TChain * AliReadESD(const UInt_t eventsToRead, |
46 | const TString dirName, |
47 | const TString esdTreeName, |
48 | const char * pattern) |
49 | { |
50 | // Read AliESDs files and return a Chain of events |
51 | |
52 | if ( dirName == "" ) { |
53 | AliError("Give the name of the DIR where to find files") ; |
54 | return 0 ; |
55 | } |
56 | if ( esdTreeName == "" ) |
57 | return AliReadESDfromdisk(eventsToRead, dirName) ; |
58 | else if ( strcmp(pattern, "") == 0 ) |
59 | return AliReadESDfromdisk(eventsToRead, dirName, esdTreeName) ; |
60 | else |
61 | return AliReadESDfromdisk(eventsToRead, dirName, esdTreeName, pattern) ; |
62 | } |