]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCCalPadRegion.h
Calibration strategy updated: mapping + LASER data
[u/mrichter/AliRoot.git] / TPC / AliTPCCalPadRegion.h
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    virtual ~AliTPCCalPadRegion() { delete fObjects; }
19    AliTPCCalPadRegion& operator=(const AliTPCCalPadRegion& rhs);
20    
21    virtual TObject*   GetObject(UInt_t segment, UInt_t padType)
22       { return BoundsOk("GetObject", segment, padType) ? fObjects->At(segment+fgkNSegments*padType) : 0x0; }
23    virtual void       SetObject(TObject* obj, UInt_t segment, UInt_t padType)
24       { if (BoundsOk("SetObject", segment, padType)) fObjects->AddAt(obj, segment+fgkNSegments*padType); }
25   virtual void       Delete(Option_t* option = "") { if (fObjects) fObjects->Delete(option); }
26    virtual TIterator* MakeIterator(Bool_t direction = kIterForward) const { return fObjects->MakeIterator(direction); }
27    static  UInt_t     GetNSegments() { return fgkNSegments; }
28    static  UInt_t     GetNPadTypes() { return fgkNPadTypes; }
29    static  void       GetPadRegionCenterLocal(UInt_t padType, Double_t* xy);
30 //   static  UInt_t     GetStartRow(UInt_t padType);
31 //   static  UInt_t     GetEndRow(UInt_t padType);
32     
33 protected:
34    virtual Bool_t BoundsOk(const char* where, UInt_t segment, UInt_t padType) const
35       { return (segment >= fgkNSegments || padType >= fgkNPadTypes) ? OutOfBoundsError(where, segment, padType) : kTRUE; }
36    virtual Bool_t OutOfBoundsError(const char* where, UInt_t segment, UInt_t padType) const
37       { Error(where, "Index out of bounds (trying to access segment %d, pad type %d).", segment, padType); return kFALSE; }
38
39    TObjArray* fObjects;     // array containing an object for each pad region
40
41    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)
42    static const UInt_t fgkNPadTypes = 3;     // number of pad types, 0: short pads, 1: medium pads, 2: long pads
43
44    ClassDef(AliTPCCalPadRegion, 1)
45 };
46
47
48 #endif