Changes in digits IO. Add merging of summable digits
[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        AssignLikelihood();
29   virtual Bool_t        AssignLikelihood(TObjArray *tarray);
30   virtual Bool_t        AssignLikelihood(AliTRDtrack *t) = 0;
31   virtual Bool_t        FillSpectra();
32   virtual Bool_t        FillSpectra(TObjArray *tarray);
33   virtual Bool_t        FillSpectra(const AliTRDtrack *t) = 0;
34   virtual Bool_t        Open(const Char_t *name, Int_t event = 0);
35   virtual Bool_t        Open(const Char_t *namekine
36                            , const Char_t *namecluster
37                            , const Char_t *nametracks, Int_t event = 0); 
38   virtual Int_t         MCpid(const AliTRDtrack *t);
39   virtual Int_t         MCpid(const AliTRDtrack *t, Int_t *pdg, Int_t *nFound, Int_t *indices);
40   virtual Bool_t        ReadCluster(const Char_t *name);
41   virtual Bool_t        ReadTracks(const Char_t *name);
42   virtual Bool_t        ReadKine(const Char_t *name, Int_t event);
43   virtual Bool_t        SumCharge(const AliTRDtrack *t, Float_t *charge, Int_t *nCluster);
44
45   virtual Int_t         GetIndex(const AliTRDtrack *t) = 0;
46
47           void          SetGeometry(AliTRDgeometry *geo)    { fGeometry      = geo;    };
48           void          SetTrackArray(TObjArray *tarray)    { fTrackArray    = tarray; };
49           void          SetClusterArray(TObjArray *carray)  { fClusterArray  = carray; };
50
51           void          SetPIDratioMin(Float_t min)         { fPIDratioMin   = min;    };
52           void          SetPIDpurePoints(Bool_t pure)       { fPIDpurePoints = pure;   };
53           void          SetPIDindexMin(Int_t min)           { fPIDindexMin   = min;    };
54           void          SetPIDindexMax(Int_t max)           { fPIDindexMax   = max;    };
55
56           void          SetThreePadOnly(Bool_t only)        { fThreePadOnly  = only;   };
57           void          SetEvent(Int_t event)               { fEvent         = event;  };
58
59           TObjArray    *GetTrackArray()                     { return fTrackArray;      }; 
60           TObjArray    *GetClusterArray()                   { return fClusterArray;    };
61
62           Float_t       GetPIDratioMin()                    { return fPIDratioMin;     };
63           Bool_t        GetPIDpurePoints()                  { return fPIDpurePoints;   };
64           Float_t       GetPIDindexMin()                    { return fPIDindexMin;     };
65           Float_t       GetPIDindexMax()                    { return fPIDindexMax;     };
66
67           Bool_t        GetThreePadOnly()                   { return fThreePadOnly;    };
68
69  protected:
70
71   enum { 
72     kNpid     = 2,                   //  Number of pid types (pion + electron)
73     kElectron = 0,                   //  Electron pid
74     kPion     = 1                    //  Pion pid
75   };
76
77   Float_t         fPIDratioMin;      //  Minimum fraction of cluster from one particle
78   Bool_t          fPIDpurePoints;    //  Require pure (nono overlapping) cluster
79   Int_t           fPIDindexMin;      //  Lower index MC particles to be considered
80   Int_t           fPIDindexMax;      //  Upper index MC particles to be considered
81
82   Bool_t          fThreePadOnly;     //  Use only three pad cluster in the charge sum
83
84   Int_t           fEvent;            //  Event number
85
86   TObjArray      *fTrackArray;       //! Array containing the tracks
87   TObjArray      *fClusterArray;     //! Array containing the cluster
88   AliTRDgeometry *fGeometry;         //! The TRD geometry
89   TFile          *fFileKine;         //! The kine input file
90
91   ClassDef(AliTRDpid,1)              //  Assigns the e/pi propability to the tracks 
92
93 };
94 #endif