Yvonne's update
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliHFEtaggedTrackAnalysis.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 // Class AliHFEtaggedTrackAnalysis
17 // Analyses tracks with an apriori PID information (i.e. using the daugther
18 // tracks from well-identified decays of neutral charged particles).
19 // More information can be found inside the implementation file.
20 //
21 #ifndef ALIHFETAGGEDTRACKANALYSIS_H
22 #define ALIHFETAGGEDTRACKANALYSIS_H
23
24 #ifndef ROOT_TNamed
25 #include <TNamed.h>
26 #endif
27
28 class AliHFEcollection;
29 class AliHFEcontainer;
30 class AliHFEcuts;
31 class AliHFEpid;
32 class AliHFEpidQAmanager;
33 class AliHFEvarManager;
34
35 class AliHFEtaggedTrackAnalysis : public TNamed{
36   public:
37     AliHFEtaggedTrackAnalysis();
38     AliHFEtaggedTrackAnalysis(const char *name);
39     AliHFEtaggedTrackAnalysis(const AliHFEtaggedTrackAnalysis &ref);
40     AliHFEtaggedTrackAnalysis &operator=(const AliHFEtaggedTrackAnalysis &ref);
41     ~AliHFEtaggedTrackAnalysis();
42     
43     void InitContainer();
44     void ProcessTrack(AliVTrack *track, Int_t abinitioPID);
45         
46     AliHFEcontainer *GetContainer() const { return fContainer; }
47     AliHFEpidQAmanager *GetPIDqa() const { return fPIDqa; }
48     TList * GetPIDQA() const;
49     TList * GetCutQA() const;
50     AliHFEcollection * GetQAcollection() const { return fQAhistos; }
51     Bool_t  GetClean() const { return fClean; }; 
52     Bool_t IsPbPb() const { return fIsPbPb; }
53     Bool_t IsPP() const { return !fIsPbPb; }
54     Bool_t IspPb() const { return fIspPb; }
55     Double_t GetMagneticField() const { return fMagneticField; };
56     AliHFEvarManager *GetVarManager() const { return fVarManager; }
57
58     void SetCuts(AliHFEcuts *cuts);
59     void SetPID(AliHFEpid *pid);
60     void SetCentrality(Int_t centrality) { fCentralityF = centrality; };
61     void SetPbPb(){ fIsPbPb = kTRUE; }
62     void SetPP() { fIsPbPb = kFALSE; }
63     void SetpPb() { fIsPbPb = kFALSE; fIspPb=kTRUE; }
64     void SetAOD() { fIsAOD = kTRUE; }
65     void SetClean(Bool_t clean) { fClean = clean; };
66     void SetMagneticField(Double_t magneticField) { fMagneticField = magneticField; };
67     void SetVariablesTRD(Bool_t variablesTRD) { fVariablesTRD = variablesTRD; };
68
69   private:
70     enum{
71       kIsOwner = BIT(14),
72       kIsOwnerCuts = BIT(15)
73     };
74     AliHFEvarManager    *fVarManager;   // Variable Manager
75     AliHFEcontainer     *fContainer;    // Output container
76     AliHFEpid           *fPID;          // PID selection
77     AliHFEpidQAmanager  *fPIDqa;        // PID monitoring
78     AliHFEcuts          *fCuts;         // Single track cuts
79     AliCFManager        *fCFM;          // CF Manager used for the track filtering
80     AliHFEcollection    *fQAhistos;     // QA histos
81     Int_t              fCentralityF;  // Centrality
82     Bool_t               fClean;        // Clean
83     Double_t             fMagneticField; // Magnetic field
84     Bool_t               fVariablesTRD;  //  Use phi angle at the first plane of the TRD
85     Bool_t               fIsPbPb;        // Analysis Type: PbPb or no PbPb
86     Bool_t               fIspPb;        // Analysis Type: pPb or no pPb
87     Bool_t               fIsAOD;        // Analysis Type: AOD
88
89   ClassDef(AliHFEtaggedTrackAnalysis, 0)
90 };
91 #endif