source: trunk/MagicSoft/Mars/manalysis/MPedestalWorkaround.cc@ 2903

Last change on this file since 2903 was 2746, checked in by wittek, 21 years ago
*** empty log message ***
File size: 19.4 KB
Line 
1/* ======================================================================== *\
2!
3! *
4! * This file is part of MARS, the MAGIC Analysis and Reconstruction
5! * Software. It is distributed to you in the hope that it can be a useful
6! * and timesaving tool in analysing Data of imaging Cerenkov telescopes.
7! * It is distributed WITHOUT ANY WARRANTY.
8! *
9! * Permission to use, copy, modify and distribute this software and its
10! * documentation for any purpose is hereby granted without fee,
11! * provided that the above copyright notice appear in all copies and
12! * that both that copyright notice and this permission notice appear
13! * in supporting documentation. It is provided "as is" without express
14! * or implied warranty.
15! *
16!
17!
18! Author(s): Sabrina Stark 12/2003 <mailto:lstark@particle.phys.ethz.ch>
19! Wolfgang Wittek 12/2003 <mailto:wittek@mppmu.mpg.de>
20!
21! Copyright: MAGIC Software Development, 2000-2003
22!
23!
24\* ======================================================================== */
25
26/////////////////////////////////////////////////////////////////////////////
27// //
28// MPedestalWorkaround //
29// //
30// copies the pedestal value and the pedestal RMS //
31// from the container MPedPhotCam //
32// into the contaier MPedestalCam //
33// //
34// put the zenith angle into MMcEvt; //
35// the zenith angle is taken from the runbooks //
36// (1 fixed zenith angle for a given run) //
37// //
38// this workaround is necessary //
39// - as long as the analysis classes //
40// take the pedestals from MPedestalCam; in the long run they have to //
41// be taken from MPedPhotCam //
42// - and as long as the container for the zenith angle is not defined //
43// //
44/////////////////////////////////////////////////////////////////////////////
45#include "MPedestalWorkaround.h"
46
47#include <stdio.h>
48#include "MLog.h"
49#include "MLogManip.h"
50#include "MParList.h"
51#include "MGeomCam.h"
52
53#include "MPedestalCam.h"
54#include "MPedestalPix.h"
55#include "MPedPhotCam.h"
56#include "MMcEvt.hxx"
57#include "MRawRunHeader.h"
58
59using namespace std;
60
61ClassImp(MPedestalWorkaround);
62
63MPedestalWorkaround::MPedestalWorkaround(const char *name, const char *title)
64{
65 fName = name ? name : "MPedestalWorkaround";
66 fTitle = title ? title : "Storage of pedestal values and RMS in units of photons";
67
68}
69
70// ------------------------------------------------------------------------
71//
72
73Int_t MPedestalWorkaround::PreProcess(MParList *pList)
74{
75 fPed = (MPedestalCam*)pList->FindObject("MPedestalCam");
76 if (!fPed)
77 {
78 *fLog << err << "MPedestalCam not found... aborting." << endl;
79 return kFALSE;
80 }
81
82 fPedPhot = (MPedPhotCam*)pList->FindObject("MPedPhotCam");
83 if (!fPedPhot)
84 {
85 *fLog << err << "MPedPhotCam not found... aborting." << endl;
86 return kFALSE;
87 }
88
89 fCam = (MGeomCam*)pList->FindObject("MGeomCam");
90 if (!fCam)
91 {
92 *fLog << err << "MGeomCam not found (no geometry information available)... aborting." << endl;
93 return kFALSE;
94 }
95
96 fRun = (MRawRunHeader*)pList->FindObject("MRawRunHeader");
97 if (!fRun)
98 {
99 *fLog << err << "MRawRunHeader not found... aborting." << endl;
100 return kFALSE;
101 }
102
103 fMcEvt = (MMcEvt*)pList->FindObject("MMcEvt");
104 if (!fMcEvt)
105 {
106 *fLog << err << "MMcEvt not found... aborting." << endl;
107 return kFALSE;
108 }
109
110 return kTRUE;
111}
112
113// ------------------------------------------------------------------------
114//
115Int_t MPedestalWorkaround::Process()
116{
117 //-------------------------------------------------------------------
118 // copy the pedestal and the pedestal RMS
119 // from MPedPhotCam into MPedestalCam
120
121 UInt_t imaxnumpix = fCam->GetNumPixels();
122
123 for (UInt_t i=0; i<imaxnumpix; i++)
124 {
125 Int_t type = 0;
126 Double_t val;
127 Float_t valout;
128 fPedPhot->GetPixelContent( val, i, *fCam, type);
129 valout = (*fPed)[i].GetPedestal();
130 (*fPed)[i].SetPedestal(val);
131 *fLog << "i, val, valout : " << i <<", "<< val<<", " << valout << endl;
132 type = 1;
133 fPedPhot->GetPixelContent( val, i, *fCam, type);
134 valout = (*fPed)[i].GetPedestalRms();
135 (*fPed)[i].SetPedestalRms(val);
136 *fLog << "RMS : i, val, valout : " << i <<", "<< val<<", " << valout
137 << endl;
138 }
139
140
141 //-------------------------------------------------------------------
142 // put the zenith angle into MMcEvt
143
144 Int_t run = fRun->GetRunNumber();
145 Double_t thetadeg;
146 Double_t thetarad;
147
148 if (run == 3127) thetadeg = 27.2; // Crab
149 else if (run == 3128) thetadeg = 25.6;
150 else if (run == 3129) thetadeg = 24.3;
151 else if (run == 3130) thetadeg = 23.9;
152
153
154 else if (run == 3132) thetadeg = 22.9;
155 else if (run == 3133) thetadeg = 22.8;
156 else if (run == 3134) thetadeg = 22.3;
157 else if (run == 3135) thetadeg = 21.9;
158 else if (run == 3136) thetadeg = 21.5;
159 else if (run == 3137) thetadeg = 21.1;
160 else if (run == 3138) thetadeg = 20.8;
161 else if (run == 3139) thetadeg = 20.4;
162
163 else if (run == 3140) thetadeg = 19.5;
164 else if (run == 3141) thetadeg = 19.4;
165 else if (run == 3142) thetadeg = 19.0;
166 else if (run == 3143) thetadeg = 18.6;
167 else if (run == 3144) thetadeg = 13.0;
168 else if (run == 3145) thetadeg = 12.4;
169 else if (run == 3146) thetadeg = 12.1;
170 else if (run == 3147) thetadeg = 11.7;
171 else if (run == 3148) thetadeg = 11.3;
172 else if (run == 3149) thetadeg = 11.9;
173
174 else if (run == 3150) thetadeg = 10.6;
175 else if (run == 3151) thetadeg = 10.3;
176 else if (run == 3152) thetadeg = 10.0;
177 else if (run == 3153) thetadeg = 9.6;
178 else if (run == 3154) thetadeg = 9.3;
179 else if (run == 3155) thetadeg = 9.0;
180 else if (run == 3156) thetadeg = 8.7;
181 else if (run == 3157) thetadeg = 8.4;
182 else if (run == 3158) thetadeg = 8.1;
183 else if (run == 3159) thetadeg = 7.9;
184
185 else if (run == 3160) thetadeg = 7.7;
186 else if (run == 3161) thetadeg = 7.3;
187 else if (run == 3162) thetadeg = 7.2;
188 else if (run == 3163) thetadeg = 7.0;
189 else if (run == 3164) thetadeg = 6.8;
190 else if (run == 3165) thetadeg = 6.7;
191 else if (run == 3166) thetadeg = 6.6;
192 else if (run == 3167) thetadeg = 6.5;
193 else if (run == 3168) thetadeg = 6.4;
194 else if (run == 3169) thetadeg = 6.4;
195
196 else if (run == 3170) thetadeg = 6.4;
197 else if (run == 3171) thetadeg = 6.4;
198 else if (run == 3172) thetadeg = 6.5;
199 else if (run == 3173) thetadeg = 6.6;
200 else if (run == 3174) thetadeg = 6.7;
201
202 else if (run == 3176) thetadeg = 7.1;
203 else if (run == 3177) thetadeg = 7.4;
204 else if (run == 3178) thetadeg = 7.6;
205 else if (run == 3179) thetadeg = 7.9;
206
207
208 else if (run == 3182) thetadeg = 8.4;
209 else if (run == 3183) thetadeg = 8.9;
210 else if (run == 3184) thetadeg = 9.2;
211 else if (run == 3185) thetadeg = 9.5;
212 else if (run == 3186) thetadeg = 9.8;
213 else if (run == 3187) thetadeg = 10.5;
214 else if (run == 3188) thetadeg = 10.9;
215 else if (run == 3189) thetadeg = 11.2;
216
217 else if (run == 3190) thetadeg = 11.6;
218 else if (run == 3191) thetadeg = 11.6;
219 else if (run == 3192) thetadeg = 12.4;
220 else if (run == 3193) thetadeg = 12.7;
221 else if (run == 3194) thetadeg = 13.1;
222 else if (run == 3195) thetadeg = 13.5;
223 else if (run == 3196) thetadeg = 13.9;
224 else if (run == 3197) thetadeg = 14.3;
225 else if (run == 3198) thetadeg = 14.7;
226 else if (run == 3199) thetadeg = 15.1;
227
228 else if (run == 3200) thetadeg = 15.6;
229 else if (run == 3201) thetadeg = 16.0;
230 else if (run == 3202) thetadeg = 16.5;
231 else if (run == 3203) thetadeg = 16.9;
232 else if (run == 3204) thetadeg = 17.3;
233 else if (run == 3205) thetadeg = 17.7;
234 else if (run == 3206) thetadeg = 18.2;
235 else if (run == 3207) thetadeg = 18.6;
236 else if (run == 3208) thetadeg = 19.0;
237 else if (run == 3209) thetadeg = 19.4;
238
239 else if (run == 3210) thetadeg = 19.9;
240 else if (run == 3211) thetadeg = 20.4;
241 else if (run == 3212) thetadeg = 20.8;
242 else if (run == 3213) thetadeg = 21.2;
243 else if (run == 3214) thetadeg = 21.7;
244 else if (run == 3215) thetadeg = 22.2;
245 else if (run == 3216) thetadeg = 25.6; // Off Crab1
246 else if (run == 3217) thetadeg = 25.0;
247 else if (run == 3218) thetadeg = 24.5;
248 else if (run == 3219) thetadeg = 24.0;
249
250 else if (run == 3220) thetadeg = 23.5;
251 else if (run == 3221) thetadeg = 22.5;
252 else if (run == 3222) thetadeg = 22.1;
253
254 else if (run == 3225) thetadeg = 15.1;
255 else if (run == 3226) thetadeg = 15.0;
256 else if (run == 3227) thetadeg = 14.5;
257 else if (run == 3228) thetadeg = 14.1;
258 else if (run == 3229) thetadeg = 13.8;
259
260 else if (run == 3230) thetadeg = 13.3;
261 else if (run == 3231) thetadeg = 13.0;
262 else if (run == 3232) thetadeg = 12.6;
263 else if (run == 3233) thetadeg = 12.3;
264 else if (run == 3234) thetadeg = 12.0;
265 else if (run == 3235) thetadeg = 11.6;
266 else if (run == 3236) thetadeg = 11.3;
267 else if (run == 3237) thetadeg = 11.0;
268 else if (run == 3238) thetadeg = 10.8;
269 else if (run == 3239) thetadeg = 10.4;
270
271 else if (run == 3240) thetadeg = 10.1;
272 else if (run == 3241) thetadeg = 9.9;
273 else if (run == 3242) thetadeg = 9.6;
274 else if (run == 3243) thetadeg = 9.4;
275 else if (run == 3244) thetadeg = 9.2;
276 else if (run == 3245) thetadeg = 9.0;
277 else if (run == 3246) thetadeg = 8.9;
278 else if (run == 3247) thetadeg = 8.8;
279 else if (run == 3248) thetadeg = 8.7;
280 else if (run == 3249) thetadeg = 8.6;
281
282 else if (run == 3250) thetadeg = 8.6;
283 else if (run == 3251) thetadeg = 8.6;
284 else if (run == 3252) thetadeg = 8.6;
285 else if (run == 3253) thetadeg = 8.7;
286 else if (run == 3254) thetadeg = 8.8;
287 else if (run == 3255) thetadeg = 8.9;
288 else if (run == 3256) thetadeg = 9.1;
289 else if (run == 3257) thetadeg = 9.3;
290 else if (run == 3258) thetadeg = 9.5;
291 else if (run == 3259) thetadeg = 9.7;
292 else if (run == 3260) thetadeg = 9.9;
293
294 else if (run == 3261) thetadeg = 10.2;
295 else if (run == 3262) thetadeg = 10.5;
296 else if (run == 3263) thetadeg = 10.8;
297 else if (run == 3264) thetadeg = 11.1;
298 else if (run == 3265) thetadeg = 11.4;
299 else if (run == 3266) thetadeg = 11.8;
300 else if (run == 3267) thetadeg = 12.1;
301 else if (run == 3268) thetadeg = 12.5;
302 else if (run == 3269) thetadeg = 12.8;
303
304 else if (run == 3270) thetadeg = 13.2;
305 else if (run == 3271) thetadeg = 13.5;
306 else if (run == 3272) thetadeg = 13.9;
307 else if (run == 3273) thetadeg = 14.0;
308 else if (run == 3274) thetadeg = 14.4;
309
310 else if (run == 3284) thetadeg = 7.0; // Crab
311 else if (run == 3285) thetadeg = 7.2;
312 else if (run == 3286) thetadeg = 7.4;
313 else if (run == 3287) thetadeg = 7.5;
314 else if (run == 3288) thetadeg = 8.4;
315 else if (run == 3289) thetadeg = 9.0;
316
317 else if (run == 3290) thetadeg = 9.4;
318 else if (run == 3291) thetadeg = 9.8;
319 else if (run == 3292) thetadeg = 10.2;
320 else if (run == 3293) thetadeg = 10.5;
321 else if (run == 3294) thetadeg = 10.9;
322 else if (run == 3295) thetadeg = 11.3;
323 else if (run == 3296) thetadeg = 11.8;
324 else if (run == 3297) thetadeg = 12.2;
325 else if (run == 3298) thetadeg = 12.6;
326 else if (run == 3299) thetadeg = 13.0;
327
328 else if (run == 3300) thetadeg = 13.5;
329 else if (run == 3301) thetadeg = 13.9;
330 else if (run == 3302) thetadeg = 14.3;
331 else if (run == 3303) thetadeg = 14.8;
332 else if (run == 3304) thetadeg = 15.2;
333 else if (run == 3305) thetadeg = 15.7;
334 else if (run == 3306) thetadeg = 16.2;
335 else if (run == 3307) thetadeg = 16.6;
336 else if (run == 3308) thetadeg = 17.1;
337 else if (run == 3309) thetadeg = 17.6;
338
339 else if (run == 3310) thetadeg = 17.9;
340 else if (run == 3311) thetadeg = 18.4;
341 else if (run == 3312) thetadeg = 18.9;
342 else if (run == 3313) thetadeg = 19.3;
343 else if (run == 3314) thetadeg = 19.8;
344 else if (run == 3315) thetadeg = 20.1;
345 else if (run == 3316) thetadeg = 20.7;
346 else if (run == 3317) thetadeg = 21.2;
347 else if (run == 3318) thetadeg = 21.7;
348 else if (run == 3319) thetadeg = 22.1;
349
350 else if (run == 3320) thetadeg = 22.5;
351 else if (run == 3321) thetadeg = 23.1;
352 else if (run == 3322) thetadeg = 23.6;
353 else if (run == 3323) thetadeg = 24.1;
354 else if (run == 3324) thetadeg = 24.6;
355 else if (run == 3325) thetadeg = 24.9;
356 else if (run == 3326) thetadeg = 25.5;
357 else if (run == 3327) thetadeg = 26.0;
358 else if (run == 3328) thetadeg = 26.0;
359 else if (run == 3329) thetadeg = 26.6;
360
361 else if (run == 3330) thetadeg = 26.6;
362 else if (run == 3331) thetadeg = 27.1;
363 else if (run == 3332) thetadeg = 27.7;
364 else if (run == 3333) thetadeg = 28.2;
365 else if (run == 3334) thetadeg = 28.5;
366
367 else if (run == 3340) thetadeg = 10.5;
368 else if (run == 3341) thetadeg = 10.3;
369 else if (run == 3342) thetadeg = 9.6;
370 else if (run == 3343) thetadeg = 9.2;
371 else if (run == 3344) thetadeg = 8.9;
372 else if (run == 3345) thetadeg = 8.6;
373 else if (run == 3346) thetadeg = 8.3;
374 else if (run == 3347) thetadeg = 8.0;
375 else if (run == 3348) thetadeg = 7.7;
376 else if (run == 3349) thetadeg = 7.5;
377
378 else if (run == 3350) thetadeg = 7.2;
379 else if (run == 3351) thetadeg = 7.0;
380 else if (run == 3352) thetadeg = 6.8;
381 else if (run == 3353) thetadeg = 6.7;
382 else if (run == 3354) thetadeg = 6.6;
383 else if (run == 3355) thetadeg = 6.5;
384 else if (run == 3356) thetadeg = 6.4;
385 else if (run == 3357) thetadeg = 6.4;
386 else if (run == 3358) thetadeg = 6.4;
387 else if (run == 3359) thetadeg = 6.5;
388
389 else if (run == 3360) thetadeg = 6.6;
390
391 else if (run == 3362) thetadeg = 6.7;
392 else if (run == 3363) thetadeg = 6.8;
393 else if (run == 3364) thetadeg = 7.0;
394 else if (run == 3365) thetadeg = 7.2;
395 else if (run == 3366) thetadeg = 7.5;
396 else if (run == 3367) thetadeg = 7.7;
397 else if (run == 3368) thetadeg = 8.0;
398 else if (run == 3369) thetadeg = 8.3;
399
400 else if (run == 3370) thetadeg = 8.6;
401 else if (run == 3371) thetadeg = 9.0;
402 else if (run == 3372) thetadeg = 9.3;
403 else if (run == 3373) thetadeg = 9.6;
404 else if (run == 3374) thetadeg = 10.0;
405 else if (run == 3375) thetadeg = 10.4;
406 else if (run == 3376) thetadeg = 10.7;
407 else if (run == 3377) thetadeg = 11.1;
408 else if (run == 3378) thetadeg = 11.5;
409 else if (run == 3379) thetadeg = 11.9;
410
411 else if (run == 3380) thetadeg = 12.3;
412 else if (run == 3381) thetadeg = 12.7;
413 else if (run == 3382) thetadeg = 13.1;
414 else if (run == 3383) thetadeg = 13.5;
415 else if (run == 3384) thetadeg = 13.9;
416 else if (run == 3385) thetadeg = 14.3;
417 else if (run == 3386) thetadeg = 14.7;
418 else if (run == 3387) thetadeg = 15.2;
419 else if (run == 3388) thetadeg = 15.6;
420 else if (run == 3389) thetadeg = 16.0;
421
422 else if (run == 3390) thetadeg = 16.4;
423 else if (run == 3391) thetadeg = 16.7;
424 else if (run == 3392) thetadeg = 17.9;
425 else if (run == 3393) thetadeg = 18.3;
426 else if (run == 3394) thetadeg = 18.7;
427 else if (run == 3395) thetadeg = 19.2;
428 else if (run == 3396) thetadeg = 19.6;
429 else if (run == 3397) thetadeg = 20.0;
430 else if (run == 3398) thetadeg = 20.5;
431 else if (run == 3399) thetadeg = 20.9;
432
433 else if (run == 3400) thetadeg = 21.4;
434 else if (run == 3401) thetadeg = 21.8;
435 else if (run == 3402) thetadeg = 22.1;
436 else if (run == 3403) thetadeg = 22.6;
437 else if (run == 3404) thetadeg = 23.1;
438 else if (run == 3405) thetadeg = 23.4;
439 else if (run == 3406) thetadeg = 23.9;
440 else if (run == 3407) thetadeg = 24.3;
441 else if (run == 3408) thetadeg = 24.7;
442 else if (run == 3409) thetadeg = 26.9;
443
444 else if (run == 3410) thetadeg = 27.3;
445 else if (run == 3411) thetadeg = 27.7;
446 else if (run == 3412) thetadeg = 28.2;
447 else if (run == 3413) thetadeg = 28.7;
448 else if (run == 3414) thetadeg = 29.1;
449 else if (run == 3415) thetadeg = 29.2;
450 else if (run == 3416) thetadeg = 30.0;
451 else if (run == 3417) thetadeg = 18.5; // Off Crab1
452 else if (run == 3418) thetadeg = 18.4;
453 else if (run == 3419) thetadeg = 17.5;
454
455 else if (run == 3420) thetadeg = 17.2;
456 else if (run == 3421) thetadeg = 16.8;
457 else if (run == 3422) thetadeg = 16.4;
458 else if (run == 3423) thetadeg = 16.0;
459 else if (run == 3424) thetadeg = 15.6;
460 else if (run == 3425) thetadeg = 15.3;
461 else if (run == 3426) thetadeg = 14.9;
462 else if (run == 3427) thetadeg = 14.5;
463 else if (run == 3428) thetadeg = 14.1;
464 else if (run == 3429) thetadeg = 13.7;
465
466 else if (run == 3430) thetadeg = 13.4;
467 else if (run == 3431) thetadeg = 13.0;
468 else if (run == 3432) thetadeg = 12.7;
469 else if (run == 3433) thetadeg = 12.3;
470 else if (run == 3434) thetadeg = 12.0;
471 else if (run == 3435) thetadeg = 12.0;
472 else if (run == 3436) thetadeg = 11.6;
473 else if (run == 3437) thetadeg = 11.3;
474 else if (run == 3438) thetadeg = 11.0;
475 else if (run == 3439) thetadeg = 10.7;
476
477 else if (run == 3440) thetadeg = 10.4;
478 else if (run == 3441) thetadeg = 10.1;
479 else if (run == 3442) thetadeg = 9.9;
480 else if (run == 3443) thetadeg = 9.8;
481 else if (run == 3444) thetadeg = 30.8; // Mkn 421
482 else if (run == 3445) thetadeg = 30.6;
483 else if (run == 3446) thetadeg = 29.7;
484 else if (run == 3447) thetadeg = 29.3;
485 else if (run == 3448) thetadeg = 28.9;
486 else if (run == 3449) thetadeg = 28.5;
487
488 else if (run == 3450) thetadeg = 28.1;
489 else if (run == 3451) thetadeg = 27.7;
490 else if (run == 3452) thetadeg = 27.3;
491 else if (run == 3453) thetadeg = 26.9;
492 else if (run == 3454) thetadeg = 26.5;
493 else if (run == 3455) thetadeg = 26.1;
494 else if (run == 3456) thetadeg = 25.7;
495 else if (run == 3457) thetadeg = 25.3;
496 else if (run == 3458) thetadeg = 24.9;
497 else if (run == 3459) thetadeg = 24.5;
498
499 else if (run == 3460) thetadeg = 24.1;
500
501 else if (run == 3463) thetadeg = 23.2;
502 else if (run == 3464) thetadeg = 22.8;
503 else if (run == 3465) thetadeg = 22.4;
504 else if (run == 3466) thetadeg = 22.0;
505 else if (run == 3467) thetadeg = 21.6;
506 else if (run == 3468) thetadeg = 21.2;
507 else if (run == 3469) thetadeg = 20.8;
508
509 else if (run == 3470) thetadeg = 20.4;
510 else if (run == 3471) thetadeg = 20.1;
511 else if (run == 3472) thetadeg = 19.7;
512 else if (run == 3473) thetadeg = 19.3;
513 else if (run == 3474) thetadeg = 18.9;
514 else if (run == 3475) thetadeg = 18.5;
515 else if (run == 3476) thetadeg = 18.2;
516 else if (run == 3477) thetadeg = 18.1;
517 else if (run == 3478) thetadeg = 17.7;
518
519
520 else if (run == 3480) thetadeg = 17.5;
521 else if (run == 3481) thetadeg = 17.1;
522 else if (run == 3482) thetadeg = 16.7;
523 else if (run == 3483) thetadeg = 16.3;
524 else if (run == 3484) thetadeg = 16.0;
525 else if (run == 3485) thetadeg = 15.6;
526 else if (run == 3486) thetadeg = 15.3;
527 else if (run == 3487) thetadeg = 15.0;
528 else if (run == 3488) thetadeg = 14.8;
529 else if (run == 3489) thetadeg = 14.8;
530
531 else
532 {
533 *fLog << warn << "MPedestalWorkaround : no zenith angle for run number = "
534 << run << endl;
535 thetadeg = 90.0;
536 }
537
538 thetarad = thetadeg / kRad2Deg;
539 fMcEvt->SetTelescopeTheta(thetarad);
540
541 return kTRUE;
542}
543
544Int_t MPedestalWorkaround::PostProcess()
545{
546 return kTRUE;
547}
548
549
550
551
552
553
554
Note: See TracBrowser for help on using the repository browser.