- add protection against invalid sector/stack information in on-line track matching
[u/mrichter/AliRoot.git] / TRD / AliTRDtrackingSector.h
1 #ifndef ALITRDTRACKINGSECTOR_H
2 #define ALITRDTRACKINGSECTOR_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 /* $Id: AliTRDtrackingSector.h 22646 2007-11-29 18:13:40Z cblume $ */
8
9 ////////////////////////////////////////////////////////////////////////////
10 //                                                                        //
11 // Data container for one TRD supermodule                                 // 
12 //                                                                        // 
13 // Authors:                                                               //
14 //                                                                        //
15 //    Marian Ivanov <M.Ivanov@gsi.de>                                     //
16 //    Alex Bercuci <A.Bercuci@gsi.de>                                     //
17 //                                                                        //
18 ////////////////////////////////////////////////////////////////////////////
19
20 #ifndef ALITRDGEOMETRY_H
21 #include "AliTRDgeometry.h"
22 #endif
23
24 class AliTRDReconstructor;
25 class AliTRDtrackingChamber;
26 class AliTRDtrackingSector 
27 {
28
29 public:
30   AliTRDtrackingSector();
31   AliTRDtrackingSector(AliTRDgeometry* geo, Int_t gs);
32   virtual ~AliTRDtrackingSector(){;}
33     
34   void     Clear(const Option_t *opt = NULL);
35   Int_t    GetNChambers() const             { return fN; }
36   Double_t GetX(Int_t pl) const                  { return pl >=0 && pl < AliTRDgeometry::kNlayer ? fX0[pl] : 0.; }
37   AliTRDtrackingChamber* GetChamber(Int_t i) const  { return i>=0 && i < fN ? fChamber[i] : NULL;  }
38   AliTRDtrackingChamber* GetChamber(Int_t stack, Int_t plane, Bool_t build = kFALSE);
39   AliTRDtrackingChamber** GetStack(Int_t stack);
40   Int_t    GetSector() const {return fSector;}  
41
42   void     Init(const AliTRDReconstructor *rec);
43   void     Print(Option_t *opt = NULL) const;
44   
45   void     SetGeometry(AliTRDgeometry *const geo) {fGeom = geo;}
46   
47 private:
48   AliTRDtrackingSector(const AliTRDtrackingSector &/*t*/);
49   AliTRDtrackingSector &operator=(const AliTRDtrackingSector &/*t*/);
50
51
52 private:
53   Char_t         fSector;           // Sector# in AliTRDgeometry
54   UChar_t        fN;                // Total number of chambers allocated
55   Char_t         fIndex[AliTRDgeometry::kNdets]; // indexes of allocated chambers
56   Float_t        fX0[AliTRDgeometry::kNlayer];      // average position of pad plane for each plane
57   AliTRDgeometry *fGeom;            // Geometry
58   AliTRDtrackingChamber *fChamber[AliTRDgeometry::kNdets];// chambers   
59   AliTRDtrackingChamber *fStack[AliTRDgeometry::kNlayer]; //! temporary holding one stack
60
61   ClassDef(AliTRDtrackingSector, 1) // TRD tracker container for one sector
62 };
63
64
65 #endif // ALITRDTRACKINGSECTOR_H
66