]>
Commit | Line | Data |
---|---|---|
d7c6ab14 | 1 | // $Id$ |
2 | ||
3 | //_________________________________________________________________________ | |
4 | /////////////////////////////////////////////////////////////////////////// | |
5d60c8f9 | 5 | // // |
6 | // class AliJetParticlesReader // | |
7 | // // | |
8 | // This reader reads tracks from Event Summary Data // | |
9 | // taken from Piotr.Skowronski@cern.ch // | |
10 | // more info: http://alisoft.cern.ch/people/skowron/analyzer/index.html // | |
11 | // // | |
12 | // loizides@ikf.uni-frankfurt.de // | |
d7c6ab14 | 13 | /////////////////////////////////////////////////////////////////////////// |
14 | ||
5d60c8f9 | 15 | #include <TClass.h> |
d7c6ab14 | 16 | #include <TObjArray.h> |
17 | #include <TClonesArray.h> | |
d7c6ab14 | 18 | #include <TString.h> |
19 | #include <TObjString.h> | |
5f0d5628 | 20 | #include <TTree.h> |
d7c6ab14 | 21 | #include "AliJetEventParticles.h" |
22 | #include "AliJetParticlesReader.h" | |
23 | ||
24 | ||
25 | ClassImp(AliJetParticlesReader) | |
26 | ||
27 | AliJetParticlesReader::AliJetParticlesReader() | |
28 | : TNamed(), | |
29 | fEventParticles(0), | |
30 | fOwner(kTRUE), | |
31 | fDirs(0), | |
32 | fCurrentEvent(0), | |
33 | fCurrentDir(0), | |
34 | fNEventsRead(0), | |
35 | fFirst(0), | |
36 | fLast(0), | |
37 | fPtMin(0),fPtMax(1000), | |
38 | fEtaMin(-1),fEtaMax(1), | |
5f0d5628 | 39 | fPhiMin(0),fPhiMax(2*TMath::Pi()), |
40 | fNewTree(0), | |
41 | fTree(0) | |
d7c6ab14 | 42 | { |
5d60c8f9 | 43 | //Constructor |
d7c6ab14 | 44 | } |
45 | ||
46 | AliJetParticlesReader::AliJetParticlesReader(TObjArray *dirs) | |
47 | : TNamed(), | |
48 | fEventParticles(0), | |
49 | fOwner(kTRUE), | |
50 | fDirs(dirs), | |
51 | fCurrentEvent(0), | |
52 | fCurrentDir(0), | |
53 | fNEventsRead(0), | |
54 | fFirst(0), | |
55 | fLast(0), | |
56 | fPtMin(0),fPtMax(1000), | |
57 | fEtaMin(-1),fEtaMax(1), | |
5f0d5628 | 58 | fPhiMin(0),fPhiMax(2*TMath::Pi()), |
59 | fNewTree(0), | |
60 | fTree(0) | |
d7c6ab14 | 61 | { |
62 | } | |
63 | ||
64 | AliJetParticlesReader::~AliJetParticlesReader() | |
65 | { | |
5d60c8f9 | 66 | //Constructor |
d7c6ab14 | 67 | if((fOwner) && (fEventParticles)) delete fEventParticles; |
68 | } | |
69 | ||
70 | Int_t AliJetParticlesReader::Next() | |
71 | { | |
72 | //moves to next event | |
d7c6ab14 | 73 | //if asked to read up to event nb. fLast, |
74 | //and it is overcome, report no more events | |
75 | if ((fNEventsRead > fLast) && (fLast > 0) ) return kFALSE; | |
76 | ||
77 | do //if asked to read from event fFirst, rewind to it | |
78 | { | |
79 | if ( ReadNext() == kFALSE) | |
80 | return kFALSE; //if no more evets, return it | |
81 | } while (fNEventsRead < fFirst); | |
82 | ||
83 | //here we have event | |
5f0d5628 | 84 | if(fTree && fEventParticles){ |
85 | if(fNewTree){ | |
86 | fTree->Branch("particles","AliJetEventParticles",&fEventParticles,32000,1); | |
87 | fNewTree=0; | |
88 | } | |
89 | fTree->Fill(); | |
90 | } | |
d7c6ab14 | 91 | return kTRUE; |
92 | } | |
93 | ||
94 | TString& AliJetParticlesReader::GetDirName(Int_t entry) | |
95 | { | |
96 | //returns directory name of entry to read | |
d7c6ab14 | 97 | TString* retval;//return value |
98 | if (fDirs == 0) | |
99 | { | |
100 | retval = new TString("."); | |
101 | return *retval; | |
04a02430 | 102 | } |
d7c6ab14 | 103 | |
104 | if ((entry>fDirs->GetEntries()) || (entry<0)) | |
04a02430 | 105 | //if out of bounds return empty string |
106 | //note that entry==0 is accepted even if array is empty (size=0) | |
d7c6ab14 | 107 | { |
108 | Error("GetDirName","Entry out of bounds"); | |
109 | retval = new TString(); | |
110 | return *retval; | |
111 | } | |
112 | ||
113 | if (fDirs->GetEntries() == 0) | |
114 | { | |
115 | retval = new TString("."); | |
116 | return *retval; | |
117 | } | |
118 | ||
119 | TClass *objclass = fDirs->At(entry)->IsA(); | |
120 | TClass *stringclass = TObjString::Class(); | |
121 | ||
122 | TObjString *dir = (TObjString*)objclass->DynamicCast(stringclass,fDirs->At(entry)); | |
123 | if(dir == 0) | |
124 | { | |
125 | Error("GetDirName","Object in TObjArray is not a TObjString"); | |
126 | retval = new TString(); | |
127 | return *retval; | |
128 | } | |
129 | ||
130 | //Info("GetDirName","Returned ok %s",dir->String().Data()); | |
131 | return dir->String(); | |
132 | } | |
133 |