Fixes for coverity.
[u/mrichter/AliRoot.git] / PWGJE / AliPWG4HighPtQAMC.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 //-----------------------------------------------------------------------
17 // This class compares the global reconstruction with the MC information
18 // Author : Marta Verweij - UU
19 //-----------------------------------------------------------------------
20
21 #ifndef ALIPWG4HIGHPTQAMC_H
22 #define ALIPWG4HIGHPTQAMC_H
23
24 #include "AliAnalysisTask.h"
25
26 class TH1F;
27 class TH2F;
28 class TH3F;
29 class TProfile;
30 class TList;
31 class AliESDEvent;
32 class AliESDtrackCuts;
33 class AliMCEvent;
34 class AliStack;
35 class AliESDVertex;
36 class AliGenPythiaEventHeader;
37 //class AliAnalysisHelperJetTasks;
38
39 class AliPWG4HighPtQAMC: public AliAnalysisTask {
40
41  public:
42   AliPWG4HighPtQAMC();
43   AliPWG4HighPtQAMC(const char *name);
44   ~AliPWG4HighPtQAMC() {;}
45  
46   virtual void   ConnectInputData(Option_t *);
47   virtual void   CreateOutputObjects();
48   virtual void   Exec(Option_t *option);
49   virtual void   Terminate(Option_t *);
50   virtual Bool_t Notify(); //Copied from AliAnalysisTaskJetSpectrum2
51
52   Bool_t SelectEvent();    //decides if event is used for analysis
53
54   void SetCuts(AliESDtrackCuts* trackCuts) {fTrackCuts = trackCuts;}
55   void SetCutsReject(AliESDtrackCuts* trackCuts) {fTrackCutsReject = trackCuts;}
56
57   void SetTrackType(Int_t trackType) {fTrackType = trackType;}
58   void SetSigmaConstrainedMax(Double_t sigma) {fSigmaConstrainedMax=sigma;}
59   void SetPtMax(Float_t ptmax) {fPtMax = ptmax;}
60   Float_t GetPtMax()           {return fPtMax;}
61   void SetPtBinEdges(Int_t region, Double_t ptmax, Double_t ptBinWidth);
62
63   static AliGenPythiaEventHeader*  GetPythiaEventHeader(AliMCEvent *mcEvent);
64   static Bool_t PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials);// get the cross section and the trails either from pyxsec.root or from pysec_hists.root
65
66  protected:
67
68  private:
69   AliPWG4HighPtQAMC(const AliPWG4HighPtQAMC&);
70   AliPWG4HighPtQAMC& operator=(const AliPWG4HighPtQAMC&);
71
72   AliESDEvent *fESD;              //! ESD object
73   AliMCEvent  *fMC;               //! MC event object
74   AliStack    *fStack;            //! stack object
75
76   const AliESDVertex   *fVtx;     //! vertex object
77
78   AliESDtrackCuts *fTrackCuts;    // TrackCuts for global reconstructed vs MC comparison
79   AliESDtrackCuts *fTrackCutsReject;     // trackCuts to reject tracks (hybrid case)
80
81   Int_t   fTrackType;             // 0: global track; 1:TPConly track 2: TPConly constrained track 3: global ITSrefit
82
83   Double_t fSigmaConstrainedMax;  // max sigma on constrained fit
84   Float_t fPtMax;                 // Maximum pT for histograms
85   Float_t fPtBinEdges[3][2];      // 3 regions total with different binning for pT axis of histos
86
87   Float_t fAvgTrials;             // Average number of trials
88   
89   TH1F *fNEventAll;                            //! Event counter
90   TH1F *fNEventSel;                            //! Event counter
91   TH1F *fNEventReject;                         //! Book keeping of reason of rejecting events
92  
93   TProfile*     fh1Xsec;                       //! pythia cross section and trials
94   TH1F*         fh1Trials;                     //! trials which are added
95   TH1F*         fh1PtHard;                     //! pt hard of the event
96   TH1F*         fh1PtHardTrials;               //! pt hard of the event
97
98   TH1F *fPtAll;                                //! Pt spectrum all charged particles
99   TH1F *fPtSel;                                //! Pt spectrum all selected charged particles by fTrackCuts
100   TH1F *fPtSelFakes;                           //! Pt distributions for tracks with negative label (=fake tracks)
101   TH1F *fNPointTPCFakes;                       //! NTPCCluster of fake tracks
102   TH1F *fPtSelLargeLabel;                      //! Filled if label is larger than nMCtracks
103   TH1F *fMultRec;                              //! Bookkeeping of multiple times reconstructed tracks
104   TH1F *fNPointTPCMultRec;                     //! NTPCClusters of multiple reconstructed tracks
105   TH2F *fDeltaPtMultRec;                       //! Delta pT versus pT of first track for multiple reconstructed tracks
106
107   TH2F *fPtAllvsPtMC;                          //! Reconstructed momentum vs generated momentum
108   TH2F *fPtAllminPtMCvsPtMC;                   //! Momentum resolution (global vs MC) as function of pTMC
109   TH2F *fPtAllminPtMCvsPtAll;                  //! Momentum resolution (global vs MC) as function of pTrec
110   TH3F *fPtAllvsPtMCvsMult;                    //! Reconstructed momentum vs generated momentum vs multiplicity
111   TH3F *fPtAllminPtMCvsPtAllvsMult;            //! Momentum resolution (global vs MC) vs multiplicity
112   TH3F *fPtAllminPtMCvsPtAllNPointTPC;         //! Momentum resolution vs NPointTPC
113   TH3F *fPtAllminPtMCvsPtAllNPointTPCIter1;    //! Momentum resolution vs NPointTPC Iter1
114   TH3F *fPtAllminPtMCvsPtAllChi2TPC;           //! Momentum resolution vs Chi2TPC
115   TH3F *fPtAllminPtMCvsPtAllChi2TPCIter1;      //! Momentum resolution vs Chi2TPC Iter1
116   TH3F *fPtAllminPtMCvsPtAllDCAR;              //! Momentum resolution vs DCAR
117   TH3F *fPtAllminPtMCvsPtAllDCAZ;              //! Momentum resolution vs DCAZ
118   TH3F *fPtAllminPtMCvsPtAllPhi;               //! Momentum resolution vs Phi
119   TH3F *fPtAllminPtMCvsPtAllNPointITS;         //! Momentum resolution vs NPointITS
120   TH3F *fPtAllminPtMCvsPtAllNSigmaToVertex;    //! Momentum resolution vs NSigmaToVertes
121   TH3F *fPtAllminPtMCvsPtAllChi2C;             //! Momentum resolution vs Chi2Constrained
122   TH3F *fPtAllminPtMCvsPtAllRel1PtUncertainty; //! Momentum resolution vs relUncertainty1Pt
123
124   TH1F *fPtAllMC;     //! Pt spectrum all charged particles
125   TH1F *fPtSelMC;     //! Pt spectrum all selected charged particles by fTrackCuts
126
127   TList *fHistList; //! List of Histograms
128   
129   ClassDef(AliPWG4HighPtQAMC,1) 
130   
131 };
132 #endif