ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoEventReaderAOD - the reader class for the Alice AOD                //
// Reads in AOD information and converts it into internal AliFemtoEvent       //
// Authors: Adam Kisiel kisiel@mps.ohio-state.edu                             //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOEVENTREADERAOD_H
#define ALIFEMTOEVENTREADERAOD_H
#include "AliFemtoEventReader.h"
#include "AliFemtoEnumeration.h"

#include <string>
#include <vector>
#include "TTree.h"
#include "TChain.h"
#include "TBits.h"
#include "AliAODEvent.h"
#include <list>
//#include "AliPWG2AODTrack.h"
#include "AliAODMCParticle.h"
#include "AliFemtoV0.h"
#include "AliAODpidUtil.h"
#include "AliAODHeader.h"
#include "AliAnalysisUtils.h"

class AliFemtoEvent;
class AliFemtoTrack;

class AliFemtoEventReaderAOD : public AliFemtoEventReader
{
 public:
  enum EventMult {kCentrality=0, kGlobalCount=1, kReference=2, kTPCOnlyRef=3, kVZERO=4, kCentralityTRK=5, kCentralityZNA=6, kCentralityCL1=7, kCentralityCND=9,  kCentralityV0A=10, kCentralityV0C=11, kCentralityZNC=12, kCentralityCL0=13, kCentralityFMD=14, kCentralityTKL=15, kCentralityNPA=16};
  typedef enum EventMult EstEventMult;

  AliFemtoEventReaderAOD();
  AliFemtoEventReaderAOD(const AliFemtoEventReaderAOD &aReader);
  virtual ~AliFemtoEventReaderAOD();

  AliFemtoEventReaderAOD& operator=(const AliFemtoEventReaderAOD& aReader);

  virtual AliFemtoEvent* ReturnHbtEvent();
  AliFemtoString Report();
  void SetInputFile(const char* inputfile);
  void SetFilterBit(UInt_t ibit);
  void SetFilterMask(int ibit);
  void SetReadMC(unsigned char a);
  void SetReadV0(unsigned char a);
  void SetCentralityPreSelection(double min, double max);
  void SetNoCentrality(bool anocent);
  void SetAODpidUtil(AliAODpidUtil *aAODpidUtil);
  void SetAODheader(AliAODHeader *aAODheader);
  void SetMagneticFieldSign(int s);
  void SetEPVZERO(Bool_t);
  void GetGlobalPositionAtGlobalRadiiThroughTPC(AliAODTrack *track, Float_t bfield, Float_t globalPositionsAtRadii[9][3]);
  void SetUseMultiplicity(EstEventMult aType);
  void SetpA2013(Bool_t pa2013); //set vertex configuration for pA (2013): IsVertexSelected2013pA
  void SetUseMVPlpSelection(Bool_t mvplp);
  void SetIsPileUpEvent(Bool_t ispileup);
  void SetMinVtxContr(Int_t contr=1) {fMinVtxContr=contr;}
  void SetMinPlpContribMV(Int_t minPlpContribMV) { fMinPlpContribMV = minPlpContribMV;}
  void SetMinPlpContribSPD(Int_t minPlpContribSPD) { fMinPlpContribSPD = minPlpContribSPD;}
  void SetDCAglobalTrack(Bool_t dcagt);

  bool RejectEventCentFlat(float MagField, float CentPercent);
  void SetCentralityFlattening(Bool_t flat);

 protected:
  virtual AliFemtoEvent* CopyAODtoFemtoEvent();
  virtual AliFemtoTrack* CopyAODtoFemtoTrack( AliAODTrack *tAodTrack
				    //				    AliPWG2AODTrack *tPWG2AODTrack
				    );
  virtual AliFemtoV0* CopyAODtoFemtoV0(AliAODv0 *tAODv0);
  virtual void CopyPIDtoFemtoTrack( AliAODTrack *tAodTrack,
				   AliFemtoTrack *tFemtoTrack);

  int            fNumberofEvent;    // number of Events in AOD file
  int            fCurEvent;         // number of current event
  AliAODEvent*   fEvent;            // AOD event
  TBits          fAllTrue;          // Bit set with all true bits
  TBits          fAllFalse;         // Bit set with all false bits
  UInt_t         fFilterBit;        // Bitmap bit for AOD filters
  UInt_t         fFilterMask;
  //  TClonesArray*  fPWG2AODTracks;    // Link to PWG2 specific AOD information (if it exists)

  unsigned char  fReadMC;           // Attempt to read the MC information from the AOD
  unsigned char  fReadV0;           // Read V0 information from the AOD and put it into V0Collection
  unsigned char  fUsePreCent;       // Use centrality pre-selection to speed up analysis
  EstEventMult   fEstEventMult;  // Type of the event multiplicity estimator
  double         fCentRange[2];     // Centrality pre-selection range
  AliAODpidUtil* fAODpidUtil;
  AliAODHeader* fAODheader;


 private:

  AliAODMCParticle* GetParticleWithLabel(TClonesArray *mcP, Int_t aLabel);

  string         fInputFile;        // name of input file with AOD filenames
  TChain*        fTree;             // AOD tree
  TFile*         fAodFile;          // AOD file
  int            fMagFieldSign;     // Magnetic field sign
  Bool_t fisEPVZ; // to get event plane angle from VZERO
  Bool_t fpA2013; // analysis on pA 2013 data
  Bool_t fisPileUp; //pile up rejection on?
  Bool_t fMVPlp;  //multi-vertex pileup rejection?
  Int_t fMinVtxContr; //no of contributors for pA 2013 data
  Int_t fMinPlpContribMV; //no of contributors for multivertex pile-up rejection
  Int_t fMinPlpContribSPD; //no of contributors for SPD pile-up rejection
  Bool_t fDCAglobalTrack; // to get DCA from global tracks instead of TPC-only

  bool fFlatCent;


#ifdef __ROOT__
  ClassDef(AliFemtoEventReaderAOD, 11)
#endif

};

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