Line data Source code
1 : #ifndef ALITPCCALPADREGION_H
2 : #define ALITPCCALPADREGION_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 : #include <TNamed.h>
8 : #include <TString.h>
9 : #include <TObjArray.h>
10 : #include <TIterator.h>
11 :
12 : class AliTPCCalPadRegion: public TNamed {
13 : public:
14 : AliTPCCalPadRegion();
15 : AliTPCCalPadRegion(const AliTPCCalPadRegion& obj);
16 : AliTPCCalPadRegion(const char *name, const char *title);
17 : //AliTPCCalPadRegion(const TString &name, const TString &title) : TNamed(name, title) { }
18 0 : virtual ~AliTPCCalPadRegion() { delete fObjects; }
19 : AliTPCCalPadRegion& operator=(const AliTPCCalPadRegion& rhs);
20 :
21 : virtual TObject* GetObject(UInt_t segment, UInt_t padType);
22 : virtual void SetObject(TObject* obj, UInt_t segment, UInt_t padType);
23 0 : virtual void Delete(Option_t* option = "") { if (fObjects) fObjects->Delete(option); }
24 0 : virtual TIterator* MakeIterator(Bool_t direction = kIterForward) const { return fObjects->MakeIterator(direction); }
25 0 : static UInt_t GetNSegments() { return fgkNSegments; }
26 0 : static UInt_t GetNPadTypes() { return fgkNPadTypes; }
27 : static void GetPadRegionCenterLocal(UInt_t padType, Double_t* xy);
28 : // static UInt_t GetStartRow(UInt_t padType);
29 : // static UInt_t GetEndRow(UInt_t padType);
30 :
31 : protected:
32 : virtual Bool_t BoundsOk(const char* where, UInt_t segment, UInt_t padType) const
33 0 : { return (segment >= fgkNSegments || padType >= fgkNPadTypes) ? OutOfBoundsError(where, segment, padType) : kTRUE; }
34 : virtual Bool_t OutOfBoundsError(const char* where, UInt_t segment, UInt_t padType) const
35 0 : { Error(where, "Index out of bounds (trying to access segment %d, pad type %d).", segment, padType); return kFALSE; }
36 :
37 : TObjArray* fObjects; // array containing an object for each pad region
38 :
39 : static const UInt_t fgkNSegments = 36; // number of TPC sectors, 0-17: A side, 18-35: C side (IROC and OROC are treated as one sector)
40 : static const UInt_t fgkNPadTypes = 3; // number of pad types, 0: short pads, 1: medium pads, 2: long pads
41 :
42 6 : ClassDef(AliTPCCalPadRegion, 1)
43 : };
44 :
45 :
46 : #endif
|