ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-----------------------------------------------------------------------
// This class compares the global reconstruction with the MC information
// Author : Marta Verweij - UU
//-----------------------------------------------------------------------

#ifndef ALIPWG4HIGHPTQAMC_H
#define ALIPWG4HIGHPTQAMC_H

#include "AliAnalysisTask.h"

class TH1F;
class TH2F;
class TH3F;
class TProfile;
class TList;
class AliESDEvent;
class AliESDtrackCuts;
class AliMCEvent;
class AliStack;
class AliESDVertex;
class AliGenPythiaEventHeader;
//class AliAnalysisHelperJetTasks;

class AliPWG4HighPtQAMC: public AliAnalysisTask {

 public:
  AliPWG4HighPtQAMC();
  AliPWG4HighPtQAMC(const char *name);
  ~AliPWG4HighPtQAMC() {;}
 
  virtual void   ConnectInputData(Option_t *);
  virtual void   CreateOutputObjects();
  virtual void   Exec(Option_t *option);
  virtual void   Terminate(Option_t *);
  virtual Bool_t Notify(); //Copied from AliAnalysisTaskJetSpectrum2

  Bool_t SelectEvent();    //decides if event is used for analysis

  void SetCuts(AliESDtrackCuts* trackCuts) {fTrackCuts = trackCuts;}
  void SetCutsReject(AliESDtrackCuts* trackCuts) {fTrackCutsReject = trackCuts;}

  void SetTrackType(Int_t trackType) {fTrackType = trackType;}
  void SetSigmaConstrainedMax(Double_t sigma) {fSigmaConstrainedMax=sigma;}
  void SetPtMax(Float_t ptmax) {fPtMax = ptmax;}
  Float_t GetPtMax()           {return fPtMax;}
  void SetPtBinEdges(Int_t region, Double_t ptmax, Double_t ptBinWidth);

  static AliGenPythiaEventHeader*  GetPythiaEventHeader(AliMCEvent *mcEvent);
  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

 protected:

 private:
  AliPWG4HighPtQAMC(const AliPWG4HighPtQAMC&);
  AliPWG4HighPtQAMC& operator=(const AliPWG4HighPtQAMC&);

  AliESDEvent *fESD;              //! ESD object
  AliMCEvent  *fMC;               //! MC event object
  AliStack    *fStack;            //! stack object

  const AliESDVertex   *fVtx;     //! vertex object

  AliESDtrackCuts *fTrackCuts;    // TrackCuts for global reconstructed vs MC comparison
  AliESDtrackCuts *fTrackCutsReject;     // trackCuts to reject tracks (hybrid case)

  Int_t   fTrackType;             // 0: global track; 1:TPConly track 2: TPConly constrained track 3: global ITSrefit

  Double_t fSigmaConstrainedMax;  // max sigma on constrained fit
  Float_t fPtMax;                 // Maximum pT for histograms
  Float_t fPtBinEdges[3][2];      // 3 regions total with different binning for pT axis of histos

  Float_t fAvgTrials;             // Average number of trials
  
  TH1F *fNEventAll;                            //! Event counter
  TH1F *fNEventSel;                            //! Event counter
  TH1F *fNEventReject;                         //! Book keeping of reason of rejecting events
 
  TProfile*     fh1Xsec;                       //! pythia cross section and trials
  TH1F*         fh1Trials;                     //! trials which are added
  TH1F*         fh1PtHard;                     //! pt hard of the event
  TH1F*         fh1PtHardTrials;               //! pt hard of the event

  TH1F *fPtAll;                                //! Pt spectrum all charged particles
  TH1F *fPtSel;                                //! Pt spectrum all selected charged particles by fTrackCuts
  TH1F *fPtSelFakes;                           //! Pt distributions for tracks with negative label (=fake tracks)
  TH1F *fNPointTPCFakes;                       //! NTPCCluster of fake tracks
  TH1F *fPtSelLargeLabel;                      //! Filled if label is larger than nMCtracks
  TH1F *fMultRec;                              //! Bookkeeping of multiple times reconstructed tracks
  TH1F *fNPointTPCMultRec;                     //! NTPCClusters of multiple reconstructed tracks
  TH2F *fDeltaPtMultRec;                       //! Delta pT versus pT of first track for multiple reconstructed tracks

  TH2F *fPtAllvsPtMC;                          //! Reconstructed momentum vs generated momentum
  TH2F *fPtAllminPtMCvsPtMC;                   //! Momentum resolution (global vs MC) as function of pTMC
  TH2F *fPtAllminPtMCvsPtAll;                  //! Momentum resolution (global vs MC) as function of pTrec
  TH3F *fPtAllvsPtMCvsMult;                    //! Reconstructed momentum vs generated momentum vs multiplicity
  TH3F *fPtAllminPtMCvsPtAllvsMult;            //! Momentum resolution (global vs MC) vs multiplicity
  TH3F *fPtAllminPtMCvsPtAllNPointTPC;         //! Momentum resolution vs NPointTPC
  TH3F *fPtAllminPtMCvsPtAllNPointTPCIter1;    //! Momentum resolution vs NPointTPC Iter1
  TH3F *fPtAllminPtMCvsPtAllChi2TPC;           //! Momentum resolution vs Chi2TPC
  TH3F *fPtAllminPtMCvsPtAllChi2TPCIter1;      //! Momentum resolution vs Chi2TPC Iter1
  TH3F *fPtAllminPtMCvsPtAllDCAR;              //! Momentum resolution vs DCAR
  TH3F *fPtAllminPtMCvsPtAllDCAZ;              //! Momentum resolution vs DCAZ
  TH3F *fPtAllminPtMCvsPtAllPhi;               //! Momentum resolution vs Phi
  TH3F *fPtAllminPtMCvsPtAllNPointITS;         //! Momentum resolution vs NPointITS
  TH3F *fPtAllminPtMCvsPtAllNSigmaToVertex;    //! Momentum resolution vs NSigmaToVertes
  TH3F *fPtAllminPtMCvsPtAllChi2C;             //! Momentum resolution vs Chi2Constrained
  TH3F *fPtAllminPtMCvsPtAllRel1PtUncertainty; //! Momentum resolution vs relUncertainty1Pt

  TH1F *fPtAllMC;     //! Pt spectrum all charged particles
  TH1F *fPtSelMC;     //! Pt spectrum all selected charged particles by fTrackCuts

  TList *fHistList; //! List of Histograms
  
  ClassDef(AliPWG4HighPtQAMC,1) 
  
};
#endif
 AliPWG4HighPtQAMC.h:1
 AliPWG4HighPtQAMC.h:2
 AliPWG4HighPtQAMC.h:3
 AliPWG4HighPtQAMC.h:4
 AliPWG4HighPtQAMC.h:5
 AliPWG4HighPtQAMC.h:6
 AliPWG4HighPtQAMC.h:7
 AliPWG4HighPtQAMC.h:8
 AliPWG4HighPtQAMC.h:9
 AliPWG4HighPtQAMC.h:10
 AliPWG4HighPtQAMC.h:11
 AliPWG4HighPtQAMC.h:12
 AliPWG4HighPtQAMC.h:13
 AliPWG4HighPtQAMC.h:14
 AliPWG4HighPtQAMC.h:15
 AliPWG4HighPtQAMC.h:16
 AliPWG4HighPtQAMC.h:17
 AliPWG4HighPtQAMC.h:18
 AliPWG4HighPtQAMC.h:19
 AliPWG4HighPtQAMC.h:20
 AliPWG4HighPtQAMC.h:21
 AliPWG4HighPtQAMC.h:22
 AliPWG4HighPtQAMC.h:23
 AliPWG4HighPtQAMC.h:24
 AliPWG4HighPtQAMC.h:25
 AliPWG4HighPtQAMC.h:26
 AliPWG4HighPtQAMC.h:27
 AliPWG4HighPtQAMC.h:28
 AliPWG4HighPtQAMC.h:29
 AliPWG4HighPtQAMC.h:30
 AliPWG4HighPtQAMC.h:31
 AliPWG4HighPtQAMC.h:32
 AliPWG4HighPtQAMC.h:33
 AliPWG4HighPtQAMC.h:34
 AliPWG4HighPtQAMC.h:35
 AliPWG4HighPtQAMC.h:36
 AliPWG4HighPtQAMC.h:37
 AliPWG4HighPtQAMC.h:38
 AliPWG4HighPtQAMC.h:39
 AliPWG4HighPtQAMC.h:40
 AliPWG4HighPtQAMC.h:41
 AliPWG4HighPtQAMC.h:42
 AliPWG4HighPtQAMC.h:43
 AliPWG4HighPtQAMC.h:44
 AliPWG4HighPtQAMC.h:45
 AliPWG4HighPtQAMC.h:46
 AliPWG4HighPtQAMC.h:47
 AliPWG4HighPtQAMC.h:48
 AliPWG4HighPtQAMC.h:49
 AliPWG4HighPtQAMC.h:50
 AliPWG4HighPtQAMC.h:51
 AliPWG4HighPtQAMC.h:52
 AliPWG4HighPtQAMC.h:53
 AliPWG4HighPtQAMC.h:54
 AliPWG4HighPtQAMC.h:55
 AliPWG4HighPtQAMC.h:56
 AliPWG4HighPtQAMC.h:57
 AliPWG4HighPtQAMC.h:58
 AliPWG4HighPtQAMC.h:59
 AliPWG4HighPtQAMC.h:60
 AliPWG4HighPtQAMC.h:61
 AliPWG4HighPtQAMC.h:62
 AliPWG4HighPtQAMC.h:63
 AliPWG4HighPtQAMC.h:64
 AliPWG4HighPtQAMC.h:65
 AliPWG4HighPtQAMC.h:66
 AliPWG4HighPtQAMC.h:67
 AliPWG4HighPtQAMC.h:68
 AliPWG4HighPtQAMC.h:69
 AliPWG4HighPtQAMC.h:70
 AliPWG4HighPtQAMC.h:71
 AliPWG4HighPtQAMC.h:72
 AliPWG4HighPtQAMC.h:73
 AliPWG4HighPtQAMC.h:74
 AliPWG4HighPtQAMC.h:75
 AliPWG4HighPtQAMC.h:76
 AliPWG4HighPtQAMC.h:77
 AliPWG4HighPtQAMC.h:78
 AliPWG4HighPtQAMC.h:79
 AliPWG4HighPtQAMC.h:80
 AliPWG4HighPtQAMC.h:81
 AliPWG4HighPtQAMC.h:82
 AliPWG4HighPtQAMC.h:83
 AliPWG4HighPtQAMC.h:84
 AliPWG4HighPtQAMC.h:85
 AliPWG4HighPtQAMC.h:86
 AliPWG4HighPtQAMC.h:87
 AliPWG4HighPtQAMC.h:88
 AliPWG4HighPtQAMC.h:89
 AliPWG4HighPtQAMC.h:90
 AliPWG4HighPtQAMC.h:91
 AliPWG4HighPtQAMC.h:92
 AliPWG4HighPtQAMC.h:93
 AliPWG4HighPtQAMC.h:94
 AliPWG4HighPtQAMC.h:95
 AliPWG4HighPtQAMC.h:96
 AliPWG4HighPtQAMC.h:97
 AliPWG4HighPtQAMC.h:98
 AliPWG4HighPtQAMC.h:99
 AliPWG4HighPtQAMC.h:100
 AliPWG4HighPtQAMC.h:101
 AliPWG4HighPtQAMC.h:102
 AliPWG4HighPtQAMC.h:103
 AliPWG4HighPtQAMC.h:104
 AliPWG4HighPtQAMC.h:105
 AliPWG4HighPtQAMC.h:106
 AliPWG4HighPtQAMC.h:107
 AliPWG4HighPtQAMC.h:108
 AliPWG4HighPtQAMC.h:109
 AliPWG4HighPtQAMC.h:110
 AliPWG4HighPtQAMC.h:111
 AliPWG4HighPtQAMC.h:112
 AliPWG4HighPtQAMC.h:113
 AliPWG4HighPtQAMC.h:114
 AliPWG4HighPtQAMC.h:115
 AliPWG4HighPtQAMC.h:116
 AliPWG4HighPtQAMC.h:117
 AliPWG4HighPtQAMC.h:118
 AliPWG4HighPtQAMC.h:119
 AliPWG4HighPtQAMC.h:120
 AliPWG4HighPtQAMC.h:121
 AliPWG4HighPtQAMC.h:122
 AliPWG4HighPtQAMC.h:123
 AliPWG4HighPtQAMC.h:124
 AliPWG4HighPtQAMC.h:125
 AliPWG4HighPtQAMC.h:126
 AliPWG4HighPtQAMC.h:127
 AliPWG4HighPtQAMC.h:128
 AliPWG4HighPtQAMC.h:129
 AliPWG4HighPtQAMC.h:130
 AliPWG4HighPtQAMC.h:131
 AliPWG4HighPtQAMC.h:132