ROOT logo
#ifndef ALIANALYSISTASKSEHFCJQA_H
#define ALIANALYSISTASKSEHFCJQA_H

/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//*************************************************************************
// Class AliAnalysisTaskSEHFCJqa
// AliAnalysisTask with QA plots for HFCJ analyses
//
// Authors: Andrea Rossi, andrea.rossi@cern.ch
//          Elena Bruna,  elena.bruna@to.infn.it
//*************************************************************************

class TH1F;
class TH2F;
class TH3F;
class AliAODDEvent;
class AliAODMCHeader;
class AliAODRecoDecayHF2Prong;
class AliAODRecoDecayHF;
class AliAODMCParticle;
class AliAnalysisVertexingHF;
class AliRDHFCutsD0toKpi;
class AliNormalizationCounter;
class AliPIDResponse;
#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskSEHFCJqa : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskSEHFCJqa();
  AliAnalysisTaskSEHFCJqa(const char* name);
  virtual ~AliAnalysisTaskSEHFCJqa();

 // Implementation of interface methods
  virtual void UserCreateOutputObjects();
  virtual void Init();
  virtual void LocalInit() {Init();}
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *option);  
  AliAODMCParticle* IsMCJet(TClonesArray *arrayMC,const AliAODJet *jet, Double_t &contribution);
  AliAODMCParticle* GetMCPartonOrigin(TClonesArray *arrayMC,AliAODMCParticle *p, Int_t &idx);
  void SetCutObject(AliRDHFCuts *cuts){fCuts=cuts;}
  void SetFilterBit(Int_t bit){ffilterbit=bit;}
  void SetLoadJet(Int_t ljet,TString strJetArray=""){fLoadJet=ljet;fJetArrayString=strJetArray;}
 
 private:
  AliAnalysisTaskSEHFCJqa(const AliAnalysisTaskSEHFCJqa&); // copy constructo not implemented yet
  AliAnalysisTaskSEHFCJqa& operator=(const AliAnalysisTaskSEHFCJqa&); // assignment operator not implemented yet
  Bool_t FillTrackHistosAndSelectTrack(AliAODTrack *aodtr,const AliESDVertex *primary,Double_t magfield); // method to filter tracks and fill related histograms
  void SetupPIDresponse();
  void FillJetRecoHisto(const AliAODJet *jet,Int_t partonnat,Double_t contribution,Double_t ptpart);
  void FillTrackHistosPID(AliAODTrack *aodtr);

  Bool_t fReadMC;                         // flag to read MC data
  Int_t ffilterbit;                       // selected filter bit
  Bool_t fKeepTrackNegID;                //  flag for rejecting track with neg ID
  AliPIDResponse *fpidResp;               // !pid response object
  AliRDHFCuts *fCuts;                     // cut object (temporary D2H cut object calss used)
  TH1F *fhEventCounter;                   //! histo with counter of event selected
  TH3F *fhImpParResolITSsel;              //! histo with imp par distribution as a function of pt and ITS clusters
  TH3F *fhImpParResolITSselGoodTracks;    //! histo with imp par distribution as a function of pt and ITS clusters for selected tracks
  THnSparseF *fhSparseFilterMask;          //! sparse histo with track information
  THnSparseF *fhSparseFilterMaskTrackAcc;    //! sparse with filter bits and track kine/geometrical properties
  THnSparseF *fhSparseFilterMaskImpPar;    //! sparse with kine/geometrical prop and imp par xy
  THnSparseF *fhSparseEoverPeleTPC;       //! sparse histo with TPC-EMCal PID electron information
  THnSparseF *fhSparseShowShapeEleTPC;    //! sparse histo with TPC-EMCAL PID electron info, including shower shape & Ncells
  TH3F *fhnSigmaTPCTOFEle;                //! sparse with TPC-TOF nsigma informations, centered on ele hypo
  TH3F *fhnSigmaTPCTOFPion;              //! sparse with TPC-TOF nsigma informations, centered on pion hypo
  TH3F *fhnSigmaTPCTOFKaon;               //! sparse with TPC-TOF nsigma informations, centered on kaon hypo
  TH3F *fhnSigmaTPCTOFProton;             //! sparse with TPC-TOF nsigma informations, centered on proton hypo
  THnSparseF *fhTrackEMCal;              //! sparse with EMCal cluster properties related to clusters matched to tracks 
  THnSparseF *fSparseRecoJets;           //! sparse histo with jet properties
  Int_t fLoadJet;                         // flag for reading jet array (0=no, 1=online reco jets, 2=from friend file)
  TString fJetArrayString;                // jet array name
  TList *fListTrackAndPID;                // list with single track and PID properties
  TList *fListJets;                       // list with jet properties
ClassDef(AliAnalysisTaskSEHFCJqa,2); // analysis task for MC study
};

#endif
 AliAnalysisTaskSEHFCJqa.h:1
 AliAnalysisTaskSEHFCJqa.h:2
 AliAnalysisTaskSEHFCJqa.h:3
 AliAnalysisTaskSEHFCJqa.h:4
 AliAnalysisTaskSEHFCJqa.h:5
 AliAnalysisTaskSEHFCJqa.h:6
 AliAnalysisTaskSEHFCJqa.h:7
 AliAnalysisTaskSEHFCJqa.h:8
 AliAnalysisTaskSEHFCJqa.h:9
 AliAnalysisTaskSEHFCJqa.h:10
 AliAnalysisTaskSEHFCJqa.h:11
 AliAnalysisTaskSEHFCJqa.h:12
 AliAnalysisTaskSEHFCJqa.h:13
 AliAnalysisTaskSEHFCJqa.h:14
 AliAnalysisTaskSEHFCJqa.h:15
 AliAnalysisTaskSEHFCJqa.h:16
 AliAnalysisTaskSEHFCJqa.h:17
 AliAnalysisTaskSEHFCJqa.h:18
 AliAnalysisTaskSEHFCJqa.h:19
 AliAnalysisTaskSEHFCJqa.h:20
 AliAnalysisTaskSEHFCJqa.h:21
 AliAnalysisTaskSEHFCJqa.h:22
 AliAnalysisTaskSEHFCJqa.h:23
 AliAnalysisTaskSEHFCJqa.h:24
 AliAnalysisTaskSEHFCJqa.h:25
 AliAnalysisTaskSEHFCJqa.h:26
 AliAnalysisTaskSEHFCJqa.h:27
 AliAnalysisTaskSEHFCJqa.h:28
 AliAnalysisTaskSEHFCJqa.h:29
 AliAnalysisTaskSEHFCJqa.h:30
 AliAnalysisTaskSEHFCJqa.h:31
 AliAnalysisTaskSEHFCJqa.h:32
 AliAnalysisTaskSEHFCJqa.h:33
 AliAnalysisTaskSEHFCJqa.h:34
 AliAnalysisTaskSEHFCJqa.h:35
 AliAnalysisTaskSEHFCJqa.h:36
 AliAnalysisTaskSEHFCJqa.h:37
 AliAnalysisTaskSEHFCJqa.h:38
 AliAnalysisTaskSEHFCJqa.h:39
 AliAnalysisTaskSEHFCJqa.h:40
 AliAnalysisTaskSEHFCJqa.h:41
 AliAnalysisTaskSEHFCJqa.h:42
 AliAnalysisTaskSEHFCJqa.h:43
 AliAnalysisTaskSEHFCJqa.h:44
 AliAnalysisTaskSEHFCJqa.h:45
 AliAnalysisTaskSEHFCJqa.h:46
 AliAnalysisTaskSEHFCJqa.h:47
 AliAnalysisTaskSEHFCJqa.h:48
 AliAnalysisTaskSEHFCJqa.h:49
 AliAnalysisTaskSEHFCJqa.h:50
 AliAnalysisTaskSEHFCJqa.h:51
 AliAnalysisTaskSEHFCJqa.h:52
 AliAnalysisTaskSEHFCJqa.h:53
 AliAnalysisTaskSEHFCJqa.h:54
 AliAnalysisTaskSEHFCJqa.h:55
 AliAnalysisTaskSEHFCJqa.h:56
 AliAnalysisTaskSEHFCJqa.h:57
 AliAnalysisTaskSEHFCJqa.h:58
 AliAnalysisTaskSEHFCJqa.h:59
 AliAnalysisTaskSEHFCJqa.h:60
 AliAnalysisTaskSEHFCJqa.h:61
 AliAnalysisTaskSEHFCJqa.h:62
 AliAnalysisTaskSEHFCJqa.h:63
 AliAnalysisTaskSEHFCJqa.h:64
 AliAnalysisTaskSEHFCJqa.h:65
 AliAnalysisTaskSEHFCJqa.h:66
 AliAnalysisTaskSEHFCJqa.h:67
 AliAnalysisTaskSEHFCJqa.h:68
 AliAnalysisTaskSEHFCJqa.h:69
 AliAnalysisTaskSEHFCJqa.h:70
 AliAnalysisTaskSEHFCJqa.h:71
 AliAnalysisTaskSEHFCJqa.h:72
 AliAnalysisTaskSEHFCJqa.h:73
 AliAnalysisTaskSEHFCJqa.h:74
 AliAnalysisTaskSEHFCJqa.h:75
 AliAnalysisTaskSEHFCJqa.h:76
 AliAnalysisTaskSEHFCJqa.h:77
 AliAnalysisTaskSEHFCJqa.h:78
 AliAnalysisTaskSEHFCJqa.h:79
 AliAnalysisTaskSEHFCJqa.h:80
 AliAnalysisTaskSEHFCJqa.h:81