ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoEventReaderESDChain - the reader class for the Alice ESD           //
// tailored for the Task framework                                            //
// Reads in AliESDfriend to create shared hit/quality information             //
// Authors: Adam Kisiel kisiel@mps.ohio-state.edu                             //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
#ifndef ALIFEMTOEVENTREADERESDCHAIN_H
#define ALIFEMTOEVENTREADERESDCHAIN_H

#include "AliFemtoEventReader.h"
#include "AliFemtoEnumeration.h"
#include "AliFemtoV0.h"
#include "AliESDv0.h"

#include <string>
#include <vector>
#include "TTree.h"
#include "TGraph.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliPhysicsSelection.h"
#include "AliESDtrackCuts.h"
#include <list>

#include "AliESDpid.h"

class AliFemtoEvent;

class AliFemtoEventReaderESDChain : public AliFemtoEventReader 
{
 public:
  enum TrackType {kGlobal=0, kTPCOnly=1, kITSOnly=2, kSPDTracklet=3};
  typedef enum TrackType ReadTrackType;

  enum EventMult {kCentrality=0, kGlobalCount=1, kReferenceITSTPC=2, kReferenceITSSA=3, kReferenceTracklets=4, kSPDLayer1=5, kVZERO=6, kCentralityTRK=7, kCentralityZNA=8, kCentralityCL1=9, kCentralityCND=10, kCentralityV0A=11, kCentralityV0C=12, kCentralityZNC=13, kCentralityCL0=14, kCentralityFMD=15, kCentralityTKL=16, kCentralityNPA=17};
  typedef enum EventMult EstEventMult;

  AliFemtoEventReaderESDChain();
  AliFemtoEventReaderESDChain(const AliFemtoEventReaderESDChain& aReader);
  ~AliFemtoEventReaderESDChain();

  AliFemtoEventReaderESDChain& operator=(const AliFemtoEventReaderESDChain& aReader);

  AliFemtoEvent* ReturnHbtEvent();
  AliFemtoString Report();
  void SetConstrained(const bool constrained);
  void SetReadTPCInner(const bool readinner);
  void SetUseTPCOnly(const bool usetpconly);

  virtual void CopyESDtoFemtoV0(AliESDv0 *tESDv0, AliFemtoV0 *tFemtoV0, AliESDEvent *fESDevent);
  void SetReadV0(bool a);
  void GetGlobalPositionAtGlobalRadiiThroughTPC(AliESDtrack *track, Float_t bfield, Float_t globalPositionsAtRadii[9][3]);
  void SetMagneticFieldSign(int s);

  void SetUseMultiplicity(EstEventMult aType);
  void SetEventTrigger(UInt_t eventtrig); //trigger

  bool GetConstrained() const;
  bool GetReadTPCInner() const;
  bool GetUseTPCOnly() const;
  
  void SetReadTrackType(ReadTrackType aType);

  void SetESDSource(AliESDEvent *aESD);
  //  void SetESDfriendSource(AliESDfriend *aFriend);
  void SetESDPid(AliESDpid *esdPid) { fESDpid = esdPid; }

  void CopyESDtoFemtoEvent(AliFemtoEvent *hbtEvent);
  void SetpA2013(Bool_t pa2013);
  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;}

 protected:

 private:
  string         fFileName;      //name of current ESD file
  bool           fConstrained;   //flag to set which momentum from ESD file will be use
  bool           fReadInner;     // flag to set if one wants to read TPC-only momentum
                                 // and store it in the hidden info
  bool           fUseTPCOnly;    // flag to set if one wants to replace the global parameters 
                                 // by the TPC only ones
  int            fNumberofEvent; //number of Events in ESD file
  int            fCurEvent;      //number of current event
  unsigned int   fCurFile;       //number of current file
  AliESDEvent*   fEvent;         //ESD event
  //  AliESDfriend*  fEventFriend;
  ReadTrackType  fTrackType;     // Type of track read
  EstEventMult   fEstEventMult;  // Type of the event multiplicity estimator
  UInt_t         fEventTrig;     //event trigger


/*   list<Int_t>  **fSharedList;       //! Table (one list per padrow) of clusters which are shared */
/*   list<Int_t>  **fClusterPerPadrow; //! Table (one list per padrow) of clusters in each padrow */
		
  Float_t GetSigmaToVertex(double *impact, double *covar);


  AliESDpid *fESDpid;
  Bool_t fIsPidOwner;
  bool           fReadV0;           // Read V0 information from the AOD and put it into V0Collection
  int    fMagFieldSign;

  Bool_t fpA2013;
  Bool_t fisPileUp;
  Bool_t fMVPlp;
  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

#ifdef __ROOT__
  ClassDef(AliFemtoEventReaderESDChain, 1)
#endif

    };
  
#endif


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