886d01177696cfa1e993f33a08c92bd9fb3ee406
[u/mrichter/AliRoot.git] / TRD / AliTRDpid.h
1 #ifndef ALITRDPID_H
2 #define ALITRDPID_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 #include <TNamed.h>
9
10 class TObjArray;
11 class TFile;
12
13 class AliTRDgeometry;
14 class AliTRDtrack;
15
16 class AliTRDpid : public TNamed {
17
18  public:
19
20   AliTRDpid();
21   AliTRDpid(const char* name, const char* title);
22   AliTRDpid(const AliTRDpid &p);
23   virtual ~AliTRDpid();
24   AliTRDpid &operator=(const AliTRDpid &p);
25
26   virtual void          Copy(TObject &p);
27   virtual Bool_t        Init();
28   virtual Bool_t        AssignLQ(TObjArray *tarray);
29   virtual Bool_t        AssignLQ(AliTRDtrack *t);
30   virtual Bool_t        FillQspectra();
31   virtual Bool_t        FillQspectra(const AliTRDtrack *t);
32   virtual Bool_t        CreateHistograms(const Int_t nmom
33                                        , const Float_t minmom
34                                        , const Float_t maxmom);
35   virtual Float_t       LQPion(const Float_t *charge);
36   virtual Float_t       LQElectron(const Float_t *charge);
37   virtual Bool_t        Open(const Char_t *name, Int_t event = 0);
38   virtual Bool_t        Open(const Char_t *namekine
39                            , const Char_t *namecluster
40                            , const Char_t *nametracks, Int_t event = 0); 
41   virtual Int_t         Pid(const AliTRDtrack *t);
42   virtual Bool_t        ReadCluster(const Char_t *name);
43   virtual Bool_t        ReadTracks(const Char_t *name);
44   virtual Bool_t        ReadKine(const Char_t *name, Int_t event);
45   virtual Bool_t        SumCharge(const AliTRDtrack *t, Float_t *charge);
46
47   inline  Int_t         GetIndexLQ(const Int_t imom, const Int_t ipid);
48   inline  Int_t         GetIndexLQ(const Float_t mom, const Int_t ipid);
49   inline  Int_t         GetIndexQ(const Int_t imom, const Int_t ipla, const Int_t ipid);   
50   inline  Int_t         GetIndexQ(const Float_t mom, const Int_t ipla, const Int_t ipid);
51
52           TObjArray*    GetQHist() const                    { return fQHist;  };
53           TObjArray*    GetLQHist() const                   { return fLQHist; };
54
55           void          SetGeometry(AliTRDgeometry *geo)    { fGeometry     = geo;    };
56           void          SetTrackArray(TObjArray *tarray)    { fTrackArray   = tarray; };
57           void          SetClusterArray(TObjArray *carray)  { fClusterArray = carray; };
58
59  protected:
60
61   enum { 
62     kNpid     = 2,                   //  Number of pid types (pion + electron)
63     kElectron = 0,                   //  Electron pid
64     kPion     = 1                    //  Pion pid
65   };
66
67   Int_t           fNMom;             //  Number of momentum bins
68   Float_t         fMinMom;           //  Lower momentum
69   Float_t         fMaxMom;           //  Upper momentum
70   Float_t         fWidMom;           //  Width of the momentum bins
71   TObjArray      *fLQHist;           //  Array of L-Q histograms
72   TObjArray      *fQHist;            //  Array of Q histograms
73   TObjArray      *fTrackArray;       //! Array containing the tracks
74   TObjArray      *fClusterArray;     //! Array containing the cluster
75   AliTRDgeometry *fGeometry;         //! The TRD geometry
76
77   ClassDef(AliTRDpid,1)              //  Assigns e/pi propability to the tracks 
78
79 };
80 #endif