]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/hfe/AliHFEpid.h
Update of the HFE package
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEpid.h
1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 *                                                                        *
4 * Author: The ALICE Off-line Project.                                    *
5 * Contributors are mentioned in the code where appropriate.              *
6 *                                                                        *
7 * Permission to use, copy, modify and distribute this software and its   *
8 * documentation strictly for non-commercial purposes is hereby granted   *
9 * without fee, provided that the above copyright notice appears in all   *
10 * copies and that both the copyright notice and this permission notice   *
11 * appear in the supporting documentation. The authors make no claims     *
12 * about the suitability of this software for any purpose. It is          *
13 * provided "as is" without express or implied warranty.                  *
14 **************************************************************************/
15 //
16 // Steering class for electron identification
17 // Combines detector PID objects
18 // For more information please check the implementation file
19 //
20 #ifndef ALIHFEPID_H
21 #define ALIHFEPID_H
22
23 #ifndef ROOT_TObject
24 #include <TObject.h>
25 #endif
26
27 #ifndef ALIHFEPIDBASE_H
28 #include "AliHFEpidBase.h"
29 #endif
30
31 class AliESDpid;
32 class AliESDtrack;
33 class AliHFEpidBase;
34 class AliVParticle;
35 class AliMCParticle;
36
37 class TList;
38
39 class AliHFEpid : public TObject{
40  public:
41     AliHFEpid();
42     AliHFEpid(const AliHFEpid &c);
43     AliHFEpid &operator=(const AliHFEpid &c);
44     ~AliHFEpid();
45     
46     Bool_t InitializePID(TString argument);
47     Bool_t IsSelected(AliHFEpidObject *track);
48
49     Bool_t IsQAOn() const { return TestBit(kIsQAOn); };
50     Bool_t HasMCData() const { return TestBit(kHasMCData); };
51     void SetESDpid(AliESDpid *pid);
52     void SetDebugLevel(Int_t debugLevel) { fDebugLevel = debugLevel; }
53     void SetQAOn();
54     void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData, hasMCdata); };
55     TList *GetQAhistograms() const { return fQAlist; };
56
57   protected:
58     Bool_t MakePidTpcTof(AliHFEpidObject *track);
59     Bool_t MakePidTpcTrd(AliHFEpidObject *track);
60     void MakePlotsItsTpc(AliHFEpidObject *track);
61
62     // Stratgies
63     void InitStrategy1();
64     void InitStrategy2();
65     void InitStrategy3();
66     void InitStrategy4();
67     void InitStrategy5();
68     void InitStrategy6();
69     void InitStrategy7();
70     Bool_t IdentifyStrategy0(AliHFEpidObject *track);
71     Bool_t IdentifyStrategy1(AliHFEpidObject *track);
72     Bool_t IdentifyStrategy2(AliHFEpidObject *track);
73     Bool_t IdentifyStrategy3(AliHFEpidObject *track);
74     Bool_t IdentifyStrategy4(AliHFEpidObject *track);
75     Bool_t IdentifyStrategy5(AliHFEpidObject *track);
76     Bool_t IdentifyStrategy6(AliHFEpidObject *track);
77     Bool_t IdentifyStrategy7(AliHFEpidObject *track);
78   private:
79     enum{
80       kIsQAOn = BIT(14),
81       kHasMCData = BIT(15)
82     };
83     enum{
84       kMCpid = 0,
85       kESDpid = 1,
86       kITSpid = 2,
87       kTPCpid = 3,
88       kTRDpid = 4,
89       kTOFpid = 5,
90       kNdetectorPID = 6
91     };
92     enum{
93       kCombinedTPCTRD=0
94     };
95     enum{
96       kTRDSignal = 0,
97       kITSSignal = 1
98     };
99
100     void AddCommonObject(TObject * const o);
101     void ClearCommonObjects();
102
103     AliHFEpidBase *fDetectorPID[kNdetectorPID];     //! Detector PID classes
104     UInt_t fEnabledDetectors;                       //  Enabled Detectors
105     UInt_t fPIDstrategy;                            //  PID Strategy
106     TList *fQAlist;                                 //! QA histograms
107     Int_t fDebugLevel;                              //  Debug Level
108     TObjArray *fCommonObjects;                       // Garbage Collector
109
110   ClassDef(AliHFEpid, 1)      // Steering class for Electron ID
111 };
112
113 #endif