Added to TrackerGlo possibility to fill control histos with residuals,pulls,chi2
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUClusterPix.h
1 #ifndef ALIITSUCLUSTERPIX_H
2 #define ALIITSUCLUSTERPIX_H
3
4 #include "AliCluster.h"
5
6 class TGeoHMatrix;
7 class AliITSUGeomTGeo;
8
9
10 class AliITSUClusterPix : public AliCluster
11 {
12  public:
13   enum { // frame in which the track is currently defined
14     kFrameLoc  = BIT(16)
15     ,kFrameTrk = BIT(17)
16     ,kFrameGlo = BIT(18)
17     ,kFrameBits = kFrameLoc|kFrameTrk|kFrameGlo
18   };
19   //
20   enum SortMode_t { // various modes
21     kSortIdLocXZ  = BIT(0)    // sort according to ID, then X,Z of local frame
22     ,kSortIdTrkYZ = BIT(1)    // sort according to ID, then Y,Z of tracking frame
23     ,kSortBits = kSortIdLocXZ|kSortIdTrkYZ
24   };
25
26  public:
27   AliITSUClusterPix();
28   AliITSUClusterPix(const AliITSUClusterPix& cluster);
29   AliITSUClusterPix &operator=(const AliITSUClusterPix& cluster);
30   virtual ~AliITSUClusterPix();
31   //
32   Bool_t  IsFrameLoc()         const {return TestBit(kFrameLoc);}
33   Bool_t  IsFrameGlo()         const {return TestBit(kFrameGlo);}
34   Bool_t  IsFrameTrk()         const {return TestBit(kFrameTrk);}
35   void    SetFrameLoc()              {ResetBit(kFrameBits); SetBit(kFrameLoc);}
36   void    SetFrameGlo()              {ResetBit(kFrameBits); SetBit(kFrameGlo);}
37   void    SetFrameTrk()              {ResetBit(kFrameTrk);  SetBit(kFrameTrk);}
38    //
39   void    GoToFrameGlo();
40   void    GoToFrameLoc();
41   void    GoToFrameTrk();
42   void    GetLocalXYZ(Float_t xyz[3])                       const;
43   void    GetTrackingXYZ(Float_t xyz[3])                    const; 
44   //
45   void    SetNxNzN(UChar_t nx,UChar_t nz,UShort_t n) {fNxNzN = (n<<16) + (nx<<8) + nz;}
46   Int_t   GetNx()                                           const {return (fNxNzN>>8)&0xff;}
47   Int_t   GetNz()                                           const {return fNxNzN&0xff;}
48   Int_t   GetNPix()                                         const {return fNxNzN>>16;}
49   //
50   void    SetQ(UShort_t q)                                        {fCharge = q;}
51   Int_t   GetQ()                                            const {return fCharge;}
52   //
53   virtual void                 Print(Option_t* option = "") const;
54   virtual const TGeoHMatrix*   GetTracking2LocalMatrix()           const;
55   virtual TGeoHMatrix*         GetMatrix(Bool_t original = kFALSE) const;
56   virtual Bool_t               GetGlobalXYZ(Float_t xyz[3]) const;
57   virtual Bool_t               GetGlobalCov(Float_t cov[6]) const;
58   virtual Bool_t               GetXRefPlane(Float_t &xref)  const;
59   //
60   virtual Bool_t               IsSortable()                 const {return kTRUE;}
61   virtual Bool_t               IsEqual(const TObject* obj)  const;
62   virtual Int_t                Compare(const TObject* obj)  const;
63   //
64   static  void                 SetGeom(AliITSUGeomTGeo* gm) {fgGeom = gm;}
65   static  void                 SetSortMode(SortMode_t md)   {fgMode &= ~kSortBits; fgMode |= md;}
66   static  UInt_t               GetSortMode()                {return fgMode|kSortBits;}
67   static  UInt_t               GetMode()                    {return fgMode;}
68   static  SortMode_t           SortModeIdTrkYZ()            {return kSortIdTrkYZ;}
69   static  SortMode_t           SortModeIdLocXZ()            {return kSortIdLocXZ;}
70   //
71  protected:
72   //
73   UShort_t                fCharge;        //  charge (for MC studies only)
74   Int_t                   fNxNzN;         //  effective cluster size in X (1st byte) and Z (2nd byte) directions 
75                                           //  and total Npix(3d&4th bytes)
76   static UInt_t           fgMode;         //! general mode (sorting mode etc)
77   static AliITSUGeomTGeo* fgGeom;         //! pointer on the geometry data
78
79   ClassDef(AliITSUClusterPix,1)
80 };
81
82 #endif