ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoEventReaderStandard - the reader class for the Alice ESD, AOD      //
// the model Kinematics information tailored for the Task framework           //
// Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
#ifndef ALIFEMTOEVENTREADERSTANDARD_H
#define ALIFEMTOEVENTREADERSTANDARD_H

#include "AliFemtoEventReader.h"
#include "AliFemtoEnumeration.h"

#include <string>
#include <vector>
#include <TTree.h>
#include <AliESDEvent.h>
#include <AliAODEvent.h>
#include <AliESDfriend.h>
#include <AliStack.h>
#include <list>
#include <AliGenEventHeader.h>
#include <AliPhysicsSelection.h>
#include <AliESDtrackCuts.h>
#include <AliAODMCParticle.h>

class AliFemtoEvent;
class AliFemtoTrack;

class AliFemtoEventReaderStandard : public AliFemtoEventReader 
{
 public:
  enum InputType {kUnknown = -1, kESD=0, kAOD=1, kESDKine=2, kAODKine=3};
  typedef enum InputType AliFemtoInputType;

  AliFemtoEventReaderStandard();
  AliFemtoEventReaderStandard(const AliFemtoEventReaderStandard& aReader);
  ~AliFemtoEventReaderStandard();

  AliFemtoEventReaderStandard& operator=(const AliFemtoEventReaderStandard& aReader);

  AliFemtoEvent* ReturnHbtEvent();
  AliFemtoString Report();

  void SetESDSource(AliESDEvent *aESD);
  void SetAODSource(AliAODEvent *aAOD);
  void SetStackSource(AliStack *aStack);
  void SetInputType(AliFemtoInputType aInput);
  void SetGenEventHeader(AliGenEventHeader *aGenHeader);
  void SetUsePhysicsSelection(const bool usephysics);

  void SetESDTrackCuts(AliESDtrackCuts *esdcuts);
  void SetUseTPCOnly(const bool usetpconly);

 protected:

  void CopyAODtoFemtoTrack(const AliAODTrack *tAodTrack, AliFemtoTrack *tFemtoTrack);
  AliAODMCParticle* GetParticleWithLabel(TClonesArray *mcP, Int_t aLabel);

 private:
  string             fFileName;      //  name of current ESD file
  int                fNumberofEvent; //  number of Events in ESD file
  int                fCurEvent;      //  number of current event
  unsigned int       fCurFile;       //  number of current file
  AliESDEvent       *fESDEvent;      //! ESD event
  AliAODEvent       *fAODEvent;      //! AOD event
  AliStack          *fStack;         //! Kinematics stack pointer
  AliGenEventHeader *fGenHeader;     //! Link to the generator event header
  AliFemtoInputType  fInputType;     //  Select data input type

  bool                 fUsePhysicsSel; // if true the physics selection class will be used
  AliPhysicsSelection *fSelect;        // Class to select only physics events

  AliESDtrackCuts     *fTrackCuts;     // Link to external ESD track cut
  bool                 fUseTPCOnly;    // if true the TPC only parameters will be used

#ifdef __ROOT__
  ClassDef(AliFemtoEventReaderStandard, 1)
#endif

};
  
#endif


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