]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TRD/AliTRDpid.h
Do not unload gAlice, it is needed until the end of the simulation run
[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 //                                                                           //
9 //   The TRD particle identification base class                              //
10 //                                                                           //
11 //   Its main purposes are:                                                  //
12 //      - Provide I/O framework for all neccessary files                     //
13 //      - Assignment of a e/pi propability to a given track                  //
14 //                                                                           //
15 ///////////////////////////////////////////////////////////////////////////////
16
17 #include <TNamed.h>
18
19 class TObjArray;
20 class TFile;
21
22 class AliTRDgeometry;
23 class AliTRDtrack;
24
25 class AliTRDpid : public TNamed {
26
27  public:
28
29   AliTRDpid();
30   AliTRDpid(const char* name, const char* title);
31   AliTRDpid(const AliTRDpid &p);
32   virtual ~AliTRDpid();
33   AliTRDpid &operator=(const AliTRDpid &p);
34
35   virtual void          Copy(TObject &p) const;
36   virtual Bool_t        Init();
37   virtual Bool_t        AssignLikelihood();
38   virtual Bool_t        AssignLikelihood(TObjArray *tarray);
39   virtual Bool_t        AssignLikelihood(AliTRDtrack *t) = 0;
40   virtual Bool_t        FillSpectra();
41   virtual Bool_t        FillSpectra(TObjArray *tarray);
42   virtual Bool_t        FillSpectra(const AliTRDtrack *t) = 0;
43   virtual Bool_t        Open(const Char_t *name, Int_t event = 0);
44   virtual Bool_t        Open(const Char_t *namekine
45                            , const Char_t *namecluster
46                            , const Char_t *nametracks, Int_t event = 0); 
47   virtual Int_t         MCpid(const AliTRDtrack *t);
48   virtual Int_t         MCpid(const AliTRDtrack *t, Int_t *pdg, Int_t *nFound, Int_t *indices);
49   virtual Bool_t        ReadCluster(const Char_t *name);
50   virtual Bool_t        ReadTracks(const Char_t *name);
51   virtual Bool_t        ReadKine(const Char_t *name, Int_t event);
52   virtual Bool_t        SumCharge(const AliTRDtrack *t, Float_t *charge, Int_t *nCluster);
53
54   virtual Int_t         GetIndex(const AliTRDtrack *t) = 0;
55
56           void          SetGeometry(AliTRDgeometry *geo)    { fGeometry      = geo;    };
57           void          SetTrackArray(TObjArray *tarray)    { fTrackArray    = tarray; };
58           void          SetClusterArray(TObjArray *carray)  { fClusterArray  = carray; };
59
60           void          SetPIDratioMin(Float_t min)         { fPIDratioMin   = min;    };
61           void          SetPIDpurePoints(Bool_t pure)       { fPIDpurePoints = pure;   };
62           void          SetPIDindexMin(Int_t min)           { fPIDindexMin   = min;    };
63           void          SetPIDindexMax(Int_t max)           { fPIDindexMax   = max;    };
64
65           void          SetThreePadOnly(Bool_t only)        { fThreePadOnly  = only;   };
66           void          SetEvent(Int_t event)               { fEvent         = event;  };
67
68           TObjArray    *GetTrackArray()               const { return fTrackArray;      }; 
69           TObjArray    *GetClusterArray()             const { return fClusterArray;    };
70
71           Float_t       GetPIDratioMin()              const { return fPIDratioMin;     };
72           Bool_t        GetPIDpurePoints()            const { return fPIDpurePoints;   };
73           Float_t       GetPIDindexMin()              const { return fPIDindexMin;     };
74           Float_t       GetPIDindexMax()              const { return fPIDindexMax;     };
75
76           Bool_t        GetThreePadOnly()             const { return fThreePadOnly;    };
77
78  protected:
79
80   enum { 
81     kNpid     = 2,                   //  Number of pid types (pion + electron)
82     kElectron = 0,                   //  Electron pid
83     kPion     = 1                    //  Pion pid
84   };
85
86   Float_t         fPIDratioMin;      //  Minimum fraction of cluster from one particle
87   Bool_t          fPIDpurePoints;    //  Require pure (nono overlapping) cluster
88   Int_t           fPIDindexMin;      //  Lower index MC particles to be considered
89   Int_t           fPIDindexMax;      //  Upper index MC particles to be considered
90
91   Bool_t          fThreePadOnly;     //  Use only three pad cluster in the charge sum
92
93   Int_t           fEvent;            //  Event number
94
95   TObjArray      *fTrackArray;       //! Array containing the tracks
96   TObjArray      *fClusterArray;     //! Array containing the cluster
97   AliTRDgeometry *fGeometry;         //! The TRD geometry
98   TFile          *fFileKine;         //! The kine input file
99
100   ClassDef(AliTRDpid,1)              //  Assigns the e/pi propability to the tracks 
101
102 };
103 #endif