]>
Commit | Line | Data |
---|---|---|
c6415e52 | 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 | /* $Id$ */ | |
16 | ||
17 | //_________________________________________________________________________ | |
18 | // To navigate in the AliEn catalogue (very elementary) | |
19 | // check here : /afs/cern.ch/user/p/peters/public/README.ALIEN | |
20 | //-- Author: Yves Schutz (CERN) | |
21 | ||
22 | // --- ROOT system --- | |
23 | #include "TObjString.h" | |
24 | #include "TAlienResult.h" | |
25 | ||
26 | // --- Standard library --- | |
27 | ||
28 | // --- AliRoot header files --- | |
29 | ||
30 | #include "AliPHOSAliEnFile.h" | |
31 | ||
32 | ClassImp(AliPHOSAliEnFile) ; | |
33 | ||
34 | //____________________________________________________________________________ | |
35 | AliPHOSAliEnFile::AliPHOSAliEnFile() | |
36 | { | |
37 | // default ctor; Doing initialisation ; | |
38 | ||
39 | fGrid = TGrid::Connect("alien://aliendb1.cern.ch:15000/?direct") ; | |
40 | if ( !fGrid ) | |
41 | Fatal("ctor", "Cannot connect to alien://aliendb1.cern.ch:15000/?direct") ; | |
42 | ||
43 | fRoot = "/alice/production/aliprod" ; | |
44 | if ( !fGrid->OpenDir(fRoot) ) | |
45 | Fatal("ctor", "Cannot find directory %s ", fRoot.Data() ) ; | |
46 | ||
47 | fYear = "" ; | |
48 | fProd = "" ; | |
49 | fVers = "" ; | |
50 | fType = "" ; | |
51 | fRun = "" ; | |
52 | fEvt = "" ; | |
53 | ||
54 | fPath += fRoot ; | |
55 | ||
56 | } | |
57 | ||
58 | //____________________________________________________________________________ | |
59 | AliPHOSAliEnFile::~AliPHOSAliEnFile() | |
60 | { | |
61 | } | |
62 | ||
63 | //____________________________________________________________________________ | |
64 | TString AliPHOSAliEnFile::GetLFN() const | |
65 | { | |
66 | TString fileName(Pwd()) ; | |
67 | fileName += "galice.root" ; | |
68 | if ( !fGrid->GetAccessPath(fileName) ) { | |
69 | Warning("GetLFN", "file %s does not exist", fileName.Data()) ; | |
70 | fileName = "" ; | |
71 | } | |
72 | else | |
73 | fileName.Prepend("alien://") ; | |
74 | return fileName ; | |
75 | } | |
76 | ||
77 | //____________________________________________________________________________ | |
78 | void AliPHOSAliEnFile::Copy(AliPHOSAliEnFile & lfn) | |
79 | { | |
80 | //Copy method used by the Copy ctor | |
81 | fRoot = lfn.fRoot ; | |
82 | fYear = lfn.fYear ; | |
83 | fProd = lfn.fProd ; | |
84 | fVers = lfn.fVers ; | |
85 | fType = lfn.fType ; | |
86 | fRun = lfn.fRun ; | |
87 | fEvt = lfn.fEvt ; | |
88 | TObject::Copy(lfn) ; | |
89 | } | |
90 | ||
91 | //____________________________________________________________________________ | |
92 | void AliPHOSAliEnFile::Help() | |
93 | { | |
94 | // Prints information on available lfn's | |
95 | ||
96 | Info("Info", " ") ; | |
97 | ||
98 | } | |
99 | ||
100 | //____________________________________________________________________________ | |
101 | void AliPHOSAliEnFile::ListEvents() const | |
102 | { | |
103 | // list the available events for the current path and run selected | |
104 | ||
105 | char path[80] ; | |
106 | sprintf(path, "%s/%s-%s/%s/%s/%s", fRoot.Data(), fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), fRun.Data()) ; | |
107 | Info("ListEvents", "Searching %s", path) ; | |
108 | Grid_ResultHandle_t gr = fGrid->Find(path, "galice.root") ; | |
109 | TAlienResult ar(gr) ; | |
110 | ar.Print() ; | |
111 | } | |
112 | ||
113 | //____________________________________________________________________________ | |
114 | void AliPHOSAliEnFile::ListRuns() const | |
115 | { | |
116 | // list the available runs for the current path selected | |
117 | ||
118 | char path[80] ; | |
119 | sprintf(path, "%s/%s-%s/%s/%s", fRoot.Data(), fYear.Data(), fProd.Data(), fVers.Data(), fType.Data()) ; | |
120 | Info("ListEvents", "Searching %s", path) ; | |
121 | Grid_ResultHandle_t gr = fGrid->OpenDir(path) ; | |
122 | TAlienResult ar(gr) ; | |
123 | ar.Print() ; | |
124 | } | |
125 | ||
126 | //____________________________________________________________________________ | |
127 | Bool_t AliPHOSAliEnFile::SetYearProd(TString year, TString prod) | |
128 | { | |
129 | // set the year and verifies if the directory exists | |
130 | Bool_t rv = kFALSE ; | |
131 | char tempo[80] ; | |
132 | sprintf(tempo, "/%s-%s", year.Data(), prod.Data()) ; | |
133 | ||
134 | TString path(fRoot) ; | |
135 | path += tempo ; | |
136 | if ( !fGrid->OpenDir(path) ) | |
137 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
138 | else { | |
139 | rv = kTRUE ; | |
140 | fYear = year ; | |
141 | fProd = prod ; | |
142 | fPath = path ; | |
143 | } | |
144 | return rv ; | |
145 | } | |
146 | ||
147 | //____________________________________________________________________________ | |
148 | Bool_t AliPHOSAliEnFile::SetVers(TString vers) | |
149 | { | |
150 | // set the year and verifies if the directory exists | |
151 | Bool_t rv = kFALSE ; | |
152 | char tempo[80] ; | |
153 | sprintf(tempo, "/%s-%s/%s", fYear.Data(), fProd.Data(), vers.Data()) ; | |
154 | fVers = tempo ; | |
155 | ||
156 | TString path(fRoot) ; | |
157 | path += tempo ; | |
158 | if ( !fGrid->OpenDir(path) ) | |
159 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
160 | else { | |
161 | rv = kTRUE ; | |
162 | fVers = vers ; | |
163 | fPath = path ; | |
164 | } | |
165 | return rv ; | |
166 | } | |
167 | ||
168 | //____________________________________________________________________________ | |
169 | Bool_t AliPHOSAliEnFile::SetType(TString type) | |
170 | { | |
171 | // set the year and verifies if the directory exists | |
172 | Bool_t rv = kFALSE ; | |
173 | char tempo[80] ; | |
174 | sprintf(tempo, "/%s-%s/%s/%s", fYear.Data(), fProd.Data(), fVers.Data(), type.Data()) ; | |
175 | ||
176 | TString path(fRoot) ; | |
177 | path += tempo ; | |
178 | if ( !fGrid->OpenDir(path) ) | |
179 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
180 | else { | |
181 | rv = kTRUE ; | |
182 | fType = type ; | |
183 | fPath = path ; | |
184 | } | |
185 | return rv ; | |
186 | } | |
187 | ||
188 | //____________________________________________________________________________ | |
189 | Bool_t AliPHOSAliEnFile::SetPath(TString year, TString prod, TString vers, TString type) | |
190 | { | |
191 | // set the year and verifies if the directory exists | |
192 | Bool_t rv = kFALSE ; | |
193 | char tempo[80] ; | |
194 | sprintf(tempo, "/%s-%s/%s/%s", year.Data(), prod.Data(), vers.Data(), type.Data()) ; | |
195 | ||
196 | TString path(fRoot) ; | |
197 | path += tempo ; | |
198 | if ( !fGrid->OpenDir(path) ) | |
199 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
200 | else { | |
201 | rv = kTRUE ; | |
202 | fPath = path ; | |
203 | fYear += year ; | |
204 | fProd += prod ; | |
205 | fVers += vers ; | |
206 | fType += type ; | |
207 | } | |
208 | return rv ; | |
209 | } | |
210 | ||
211 | //____________________________________________________________________________ | |
212 | Bool_t AliPHOSAliEnFile::SetRun(Int_t run) | |
213 | { | |
214 | // set the year and verifies if the directory exists | |
215 | Bool_t rv = kFALSE ; | |
216 | ||
217 | TString zero("00000") ; | |
218 | TString srun ; | |
219 | srun += run ; | |
220 | Int_t nzero = zero.Length() - srun.Length() ; | |
221 | Int_t index ; | |
222 | for (index = 0 ; index < nzero ; index++) | |
223 | srun.Prepend("0") ; | |
224 | ||
225 | char tempo[80] ; | |
226 | sprintf(tempo, "/%s-%s/%s/%s/%s", fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), srun.Data()) ; | |
227 | ||
228 | TString path(fRoot) ; | |
229 | path += tempo ; | |
230 | if ( !fGrid->OpenDir(path) ) | |
231 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
232 | else { | |
233 | rv = kTRUE ; | |
234 | fRun = srun ; | |
235 | fPath = path ; | |
236 | } | |
237 | return rv ; | |
238 | } | |
239 | ||
240 | //____________________________________________________________________________ | |
241 | Bool_t AliPHOSAliEnFile::SetEvt(Int_t evt) | |
242 | { | |
243 | // set the year and verifies if the directory exists | |
244 | Bool_t rv = kFALSE ; | |
245 | ||
246 | TString zero("00000") ; | |
247 | TString sevt ; | |
248 | sevt += evt ; | |
249 | Int_t nzero = zero.Length() - sevt.Length() ; | |
250 | Int_t index ; | |
251 | for (index = 0 ; index < nzero ; index++) | |
252 | sevt.Prepend("0") ; | |
253 | ||
254 | char tempo[80] ; | |
255 | sprintf(tempo, "/%s-%s/%s/%s/%s/%s/", fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), fRun.Data(), sevt.Data()) ; | |
256 | TString path(fRoot) ; | |
257 | path += tempo ; | |
258 | if ( !fGrid->OpenDir(path) ) | |
259 | Error("ctor", "Cannot find directory %s ", path.Data() ) ; | |
260 | else { | |
261 | rv = kTRUE ; | |
262 | fEvt = sevt ; | |
263 | fPath = path ; | |
264 | } | |
265 | return rv ; | |
266 | } | |
267 | ||
268 |