remove option C for Clear for trigger array for the moment, causes malloc error
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnAnalysisPhi7TeVNoPID.h
1 //
2 // Header file for implementation of data analysis aft 900 GeV
3 //
4 // Author: A. Pulvirenti
5 //
6
7 #ifndef ALIRSNANALYSISPHI7TEVNOPID_H
8 #define ALIRSNANALYSISPHI7TEVNOPID_H
9
10 #include "AliAnalysisTaskSE.h"
11 #include "AliRsnTOFT0maker.h"
12 #include "AliESDtrackCuts.h"
13
14 class TH1I;
15 class TH1F;
16 class TTree;
17
18 class AliStack;
19 class AliESDEvent;
20 class AliESDVertex;
21 class AliESDpid;
22 class AliTOFT0maker;
23 class AliTOFcalib;
24
25 class AliRsnAnalysisPhi7TeVNoPID : public AliAnalysisTaskSE
26 {
27   public:
28   
29     enum
30     {
31       kGoodTracksPrimaryVertex = 0,
32       kGoodSPDPrimaryVertex    = 1,
33       kFarTracksPrimaryVertex  = 2,
34       kFarSPDPrimaryVertex     = 3,
35       kNoGoodPrimaryVertex     = 4,
36       kEvaluations             = 5
37     };
38
39     AliRsnAnalysisPhi7TeVNoPID(const char *name = "Phi7TeVNoPID");
40     AliRsnAnalysisPhi7TeVNoPID(const AliRsnAnalysisPhi7TeVNoPID& copy);
41     AliRsnAnalysisPhi7TeVNoPID& operator=(const AliRsnAnalysisPhi7TeVNoPID& copy);
42     virtual ~AliRsnAnalysisPhi7TeVNoPID();
43
44     void             SetUseMC(Bool_t yn = kTRUE) {fUseMC = yn;}
45     
46     void             SetMaxVz(Double_t v)   {fMaxVz = v;}
47     
48     void             SetITSband(Double_t v) {fMaxITSband = v;}
49     
50     void             SetTPCpLimit(Double_t v) {fTPCpLimit = v;}
51     void             SetTPCrange(Double_t min, Double_t max) {fMinTPCband = min; fMaxTPCband = max;}
52     void             SetTPCpar(Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4)
53                        {fTPCpar[0]=p0;fTPCpar[1]=p1;fTPCpar[2]=p2;fTPCpar[3]=p3;fTPCpar[4]=p4;}
54
55     void             SetTOFcalibrateESD(Bool_t yn = kTRUE)  {fTOFcalibrateESD = yn;}
56     void             SetTOFcorrectTExp (Bool_t yn = kTRUE)  {fTOFcorrectTExp = yn;}
57     void             SetTOFuseT0       (Bool_t yn = kTRUE)  {fTOFuseT0 = yn;}
58     void             SetTOFtuneMC      (Bool_t yn = kTRUE)  {fTOFtuneMC = yn;}
59     void             SetTOFresolution  (Double_t v = 100.0) {fTOFresolution = v;}
60
61     virtual void     UserCreateOutputObjects();
62     virtual void     UserExec(Option_t *option = "");
63     virtual void     Terminate(Option_t *option = "");
64     
65     Int_t            EventEval(AliESDEvent *esd);
66     AliESDtrackCuts* GetCutsTPC() {return &fESDtrackCutsTPC;}
67     AliESDtrackCuts* GetCutsITS() {return &fESDtrackCutsITS;}
68
69   private:
70
71     void     ProcessESD(AliESDEvent *esd, AliStack *stack);
72     void     ProcessMC(AliStack *stack);
73
74     Bool_t   fUseMC;        // use MC or data?
75     
76     Short_t  fPDG;          // PDG code
77     Short_t  fCh;           // control flag for like/unlike sign
78     Short_t  fITS[2];       // check flag to know if one or both candidates are ITS standalone
79     Float_t  fIM;           // inv mass
80     Float_t  fPt;           // transv momentum
81     Float_t  fY;            // rapidity
82     Float_t  fEta;          // pseudo-rapidity
83     Float_t  fTPCnsigma[2]; // number of sigma in TPC
84     Float_t  fITSnsigma[2]; // number of sigma in ITS
85     Float_t  fTOFdiff[2];   // relative PID signal in TOF
86     Float_t  fP[2];         // total momentum at vertex
87     Float_t  fPTPC[2];      // total momentum at inner TPC wall
88     
89     Double_t fMaxVz;      // range in Z of primary vertex w.r. to origin
90     
91     Double_t fMaxITSband; // range for ITS de/dx band
92
93     Double_t fTPCpLimit;  // limit to choose what band to apply
94     Double_t fTPCpar[5];  // parameters for TPC bethe-Bloch
95     Double_t fMinTPCband; // range for TPC de/dx band - min
96     Double_t fMaxTPCband; // range for TPC de/dx band - max
97
98     TTree     *fRsnTreeComp;    // output tree of computed pairs
99     TTree     *fRsnTreeTrue;    // output tree of true pairs
100     TList     *fOutList;        // list for monitoring histograms
101     TH1I      *fHEvents;        // histogram of event types
102     TH1F      *fVertexX[2];     // histogram of X coordinate of primary vertex ([0] = tracks, [1] = SPD)
103     TH1F      *fVertexY[2];     // histogram of Y coordinate of primary vertex ([0] = tracks, [1] = SPD)
104     TH1F      *fVertexZ[2];     // histogram of Z coordinate of primary vertex ([0] = tracks, [1] = SPD)
105     
106     AliESDtrackCuts  fESDtrackCutsTPC;  //  ESD standard defined track cuts for TPC tracks
107     AliESDtrackCuts  fESDtrackCutsITS;  //  ESD standard defined track cuts for ITS-SA tracks
108     AliESDpid       *fESDpid;           //! PID manager
109     AliTOFT0maker   *fTOFmaker;         //! TOF time0 computator
110     AliTOFcalib     *fTOFcalib;         //! TOF calibration
111     Bool_t           fTOFcalibrateESD;  //  TOF settings
112     Bool_t           fTOFcorrectTExp;   //  TOF settings
113     Bool_t           fTOFuseT0;         //  TOF settings
114     Bool_t           fTOFtuneMC;        //  TOF settings
115     Double_t         fTOFresolution;    //  TOF settings
116
117     // ROOT dictionary
118     ClassDef(AliRsnAnalysisPhi7TeVNoPID,1)
119 };
120
121 #endif