1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 //-----------------------------------------------------------------------
17 // This class compares the global reconstruction with the MC information
18 // Author : Marta Verweij - UU
19 //-----------------------------------------------------------------------
21 #ifndef ALIPWG4HIGHPTQAMC_H
22 #define ALIPWG4HIGHPTQAMC_H
24 #include "AliAnalysisTask.h"
32 class AliESDtrackCuts;
36 class AliGenPythiaEventHeader;
37 //class AliAnalysisHelperJetTasks;
39 class AliPWG4HighPtQAMC: public AliAnalysisTask {
43 AliPWG4HighPtQAMC(const char *name);
44 ~AliPWG4HighPtQAMC() {;}
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
52 Bool_t SelectEvent(); //decides if event is used for analysis
54 void SetCuts(AliESDtrackCuts* trackCuts) {fTrackCuts = trackCuts;}
55 void SetCutsITS(AliESDtrackCuts* trackCutsITS) {fTrackCutsITS = trackCutsITS;}
57 void SetTrackType(Int_t trackType) {fTrackType = trackType;}
58 void SetPtMax(Float_t ptmax) {fPtMax = ptmax;}
59 Float_t GetPtMax() {return fPtMax;}
61 static AliGenPythiaEventHeader* GetPythiaEventHeader(AliMCEvent *mcEvent);
62 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
67 AliPWG4HighPtQAMC(const AliPWG4HighPtQAMC&);
68 AliPWG4HighPtQAMC& operator=(const AliPWG4HighPtQAMC&);
70 AliESDEvent *fESD; //! ESD object
71 AliMCEvent *fMC; //! MC event object
72 AliStack *fStack; //! stack object
74 const AliESDVertex *fVtx; //! vertex object
76 AliESDtrackCuts *fTrackCuts; // TrackCuts for global reconstructed vs MC comparison
77 AliESDtrackCuts *fTrackCutsITS; // TrackCuts including ITSrefit
79 Int_t fTrackType; // 0: global track; 1:TPConly track 2: TPConly constrained track 3: global ITSrefit
81 Float_t fPtMax; // Maximum pT for histograms
83 Float_t fAvgTrials; // Average number of trials
85 TH1F *fNEventAll; //! Event counter
86 TH1F *fNEventSel; //! Event counter
87 TH1F *fNEventReject; //! Book keeping of reason of rejecting events
89 TProfile* fh1Xsec; //! pythia cross section and trials
90 TH1F* fh1Trials; //! trials which are added
91 TH1F* fh1PtHard; //! pt hard of the event
92 TH1F* fh1PtHardTrials; //! pt hard of the event
94 TH1F *fPtAll; //! Pt spectrum all charged particles
95 TH1F *fPtSel; //! Pt spectrum all selected charged particles by fTrackCuts
96 TH1F *fPtSelFakes; //! Pt distributions for tracks with negative label (=fake tracks)
97 TH1F *fNPointTPCFakes; //! NTPCCluster of fake tracks
98 TH1F *fPtSelLargeLabel; //! Filled if label is larger than nMCtracks
99 TH1F *fMultRec; //! Bookkeeping of multiple times reconstructed tracks
100 TH1F *fNPointTPCMultRec; //! NTPCClusters of multiple reconstructed tracks
101 TH2F *fDeltaPtMultRec; //! Delta pT versus pT of first track for multiple reconstructed tracks
103 TH2F *fPtAllvsPtMC; //! Reconstructed momentum vs generated momentum
104 TH2F *fPtAllminPtMCvsPtAll; //! Momentum resolution (global vs MC)
105 TH3F *fPtAllvsPtMCvsMult; //! Reconstructed momentum vs generated momentum vs multiplicity
106 TH3F *fPtAllminPtMCvsPtAllvsMult; //! Momentum resolution (global vs MC) vs multiplicity
107 TH3F *fPtAllminPtMCvsPtAllNPointTPC; //! Momentum resolution vs NPointTPC
108 TH3F *fPtAllminPtMCvsPtAllDCAR; //! Momentum resolution vs DCAR
109 TH3F *fPtAllminPtMCvsPtAllDCAZ; //! Momentum resolution vs DCAZ
110 TH3F *fPtAllminPtMCvsPtAllPhi; //! Momentum resolution vs Phi
111 TH3F *fPtAllminPtMCvsPtAllNPointITS; //! Momentum resolution vs NPointITS
112 TH3F *fPtAllminPtMCvsPtAllNSigmaToVertex; //! Momentum resolution vs NSigmaToVertes
113 TH3F *fPtAllminPtMCvsPtAllChi2C; //! Momentum resolution vs Chi2Constrained
114 TH3F *fPtAllminPtMCvsPtAllRel1PtUncertainty; //! Momentum resolution vs relUncertainty1Pt
116 TH1F *fPtAllMC; //! Pt spectrum all charged particles
117 TH1F *fPtSelMC; //! Pt spectrum all selected charged particles by fTrackCuts
118 TH1F *fPtSelMCITS; //! Pt spectrum all selected charged particles by fTrackCutsITS
120 TList *fHistList; //! List of Histograms
122 TH1F *fPtSelITS; //! Pt spectrum all selected charged particles by fTrackCutsITS
123 TH2F *fPtITSminPtMCvsPtITS; //! Momentum resolution (global with ITSrefit vs MC)
124 TH3F *fPtITSminPtMCvsPtITSNPointTPC; //! Momentum resolution vs NPointTPC
125 TH3F *fPtITSminPtMCvsPtITSDCAR; //! Momentum resolution vs DCAR
126 TH3F *fPtITSminPtMCvsPtITSDCAZ; //! Momentum resolution vs DCAZ
127 TH3F *fPtITSminPtMCvsPtITSPhi; //! Momentum resolution vs Phi
128 TH3F *fPtITSminPtMCvsPtITSNPointITS; //! Momentum resolution vs NPointITS
129 TH3F *fPtITSminPtMCvsPtITSNSigmaToVertex; //! Momentum resolution vs NSigmaToVertex
130 TH3F *fPtITSminPtMCvsPtITSChi2C; //! Momentum resolution vs Chi2Constrained
131 TH3F *fPtITSminPtMCvsPtITSRel1PtUncertainty; //! Momentum resolution vs relUncertainty1Pt
133 TList *fHistListITS; //! List of Histograms
136 ClassDef(AliPWG4HighPtQAMC,1)