ROOT logo
// $Id: AliJEfficiencyScanner.h,v 1.5 2012/04/19 15:19:52 jkral Exp $

//______________________________________________________________________________
// Analysis task for high pt particle correlations 
// author: R.Diaz, J. Rak,  D.J. Kim
// ALICE Group University of Jyvaskyla 
// Finland 
//
// Fill the analysis containers for ESD or AOD
// Note: Adapted for AliAnalysisTaskSE
//////////////////////////////////////////////////////////////////////////////

#ifndef ALIJEFFCIENCYSCANNER_H
#define ALIJEFFCIENCYSCANNER_H

#include <TNamed.h>
#include "AliJRunHeader.h"
#include <iostream>
#include <TClonesArray.h>

#include <AliJConst.h>
#include <TVectorT.h>
#include "AliJMCTrack.h"
#include "AliJTrack.h"
#include <AliJTrackCut.h>
#include <TFile.h>
#include <TF1.h>

//==============================================================

#ifndef AliJMaxDimBuffer
#define AliJMaxDimBuffer
const int kMaxDimBuffer = 300;//max length of a line read to a buffe
#endif

class AliJEventHeader;
class AliJRunHeader;
class AliJTrack;
class AliAnalysisTaskSE;

class TH1D;
class TH2D;

class AliJEfficiencyScanner : public TNamed  {

 public:
     enum { kJPhysicsPrimary, kJFake, kNPrimaryStatus };
     enum { kJMCTrack, kJGlobal, kJTPCOnly, kJGCG , kNTrackType };
     enum { kNVtxBin=1 };
     enum { kNCentBin=21};
  AliJEfficiencyScanner();
  AliJEfficiencyScanner(const char *name);
  AliJEfficiencyScanner(const AliJEfficiencyScanner& ap);   
  AliJEfficiencyScanner& operator = (const AliJEfficiencyScanner& ap);
  virtual ~AliJEfficiencyScanner();

  // methods to fill from AliAnalysisTaskSE
  virtual void UserCreateOutputObjects(); 
  virtual void Init();   
  virtual void LocalInit() { Init(); }
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t * opt = "");

  void SetJTrackList( TClonesArray * l ) { fTrackList  = l ; } 
  void SetJMCTrackList( TClonesArray * l ) { fMCTrackList  = l ; } 
  void SetJEventHeader( AliJEventHeader * h ){ fEventHeader = h ; }
  void SetJRunHeader( AliJRunHeader *h ){ fRunHeader = h; }
  void SetMBTriggMask(int mask ){ fMBTriggMask = mask; }

  bool IsSelected( AliJTrack * track, int itrigger )const { return AliJTrackCut::GetInstance().IsSelected(track, itrigger); }

  AliJTrack * GetJTrack( int i ){ return (AliJTrack*) fTrackList->At(i); }
  AliJMCTrack * GetJMCTrack( int i ){ return (AliJMCTrack*) fMCTrackList->At(i); }
  TClonesArray * GetJMCTracks() { return fMCTrackList; }
  TClonesArray * GetJTracks() { return fTrackList; }
  AliJEventHeader * GetJEventHeader(){ return fEventHeader; }
  AliJRunHeader * GetJRunHeader(){ return fRunHeader; }

  TH1 * AddTH1(TString name, TH1*h ){
      h->SetName(name);
      h->SetTitle(name);
      h->Sumw2();
      h->SetDirectory(gDirectory);
      return h;
  }
  TH1D * AddTH1D( TString name, TH1D*h){ return (TH1D*)AddTH1(name,h); }
  TH2D * AddTH2D( TString name, TH2D*h){ return (TH2D*)AddTH1(name,h); }

 private:

  Int_t        DebugLevel(){ return 5; }
  inline void   DEBUG(int level, int type, TString msg1, TString msg2=""){
    if(DebugLevel()>level) std::cout<<msg1<<" : "<<msg2<<"\t"<<type<<std::endl;
  }

  void PrintOut() const;

  int fMBTriggMask;
  
  TClonesArray *    fTrackList;   //! list of charged track objects
  TClonesArray *    fMCTrackList; //! list of charged track objects
  AliJEventHeader * fEventHeader;
  AliJRunHeader*    fRunHeader; //!  run details (mg field, trigger mask,etc...)

  TH1D *fhChargedPtMC[kNVtxBin][kNCentBin];      //! all MC tracks  filled with MC pt
  TH2D *fh2DChargedPtTrigg[kNVtxBin][kNCentBin];   //! all MC track filled with MC pt in triggered event
  TH2D *fh2DChargedPtTriggVtx[kNVtxBin][kNCentBin];//! all MC track filled with MC pt in trigg event with rec vertex
  TH2D *fh2DChargedPtRec[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts];  //! [centr][cut] well reconstructed MC track filled with MC
  TH2D *fh2DChargedPtAll[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts];  //! [centr][cut] all reconstructed tracks filled with reconstructed pT 

  TH2D* fhVertexZMC;
  TH2D* fhVertexZTrigg;
  TH2D* fhVertexZTriggVtx;

  TH1D* fhVZRawMC;
  TH1D* fhVZRecMC;
  TH1D* fhVZRecAccMC;

  TH1D * fhChargedPtMCTrigg[kNVtxBin][kNCentBin];
  TH1D * fhChargedPtMCTriggVtx[kNVtxBin][kNCentBin];
  TH1D * fhChargedPtMCRecoCentVtx[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts][kNPrimaryStatus][kNTrackType];
  TH2D * fh2VtxCent;

  TH2D * fh2MultGenRawPrimary[AliJTrackCut::kJNTrackCuts];
  TH2D * fh2MultGenRawAll[AliJTrackCut::kJNTrackCuts];

  TH1D * fhDCA2VertexXY[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts];
  TH1D * fhDCA2VertexZ[kNVtxBin][kNCentBin][AliJTrackCut::kJNTrackCuts];

  TH1D * fhL0Input;
  TH1D * fhTriggerAlice;
  TH1D * fhZVtxMCAll;
  TH1D * fhZVtxMCTrigg;
  TH1D * fhZVtxMCTriggVtx;
  TH1D * fhZVtxRecAll;
  TH1D * fhZVtxRecTrigg;
  TH1D * fhZVtxRecTriggVtx;

  TF1 * fVtxReFunc;
  TF1 * fVtxMCFunc;
  TF1 * fVtxRatioFunc;
  double fVtxRatioMax;

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