ROOT logo
/////////////////////////////////////////////////////////////////////////////////////
//                                                                                 //
// AliFemtoEventReaderKinematicsChain - the reader class for the Alice ESD and     //
// the model Kinematics information tailored for the Task framework and the        //
// Reads in AliESDfriend to create shared hit/quality information                  //
// Authors: Malgorzata Janik, Warsaw University of Technology, majanik@cern.ch     //
//          Lukasz Graczykowski, Warsaw University of Technology, lgraczyk@cern.ch //
//  	       				                                           //
/////////////////////////////////////////////////////////////////////////////////////


#ifndef ALIFEMTOEVENTREADERKINEMATICSCHAIN_H
#define ALIFEMTOEVENTREADERKINEMATICSCHAIN_H

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

#include <string>
#include <vector>
#include <TTree.h>
#include <AliStack.h>
#include <list>
#include <AliGenEventHeader.h>

class AliFemtoEvent;

class AliFemtoEventReaderKinematicsChain : public AliFemtoEventReader 
{
 public:
  enum EventMult {kGlobalCount=0, kVZERO=1};
  typedef enum EventMult EstEventMult;

  AliFemtoEventReaderKinematicsChain();
  AliFemtoEventReaderKinematicsChain(const AliFemtoEventReaderKinematicsChain& aReader);
  ~AliFemtoEventReaderKinematicsChain();

  AliFemtoEventReaderKinematicsChain& operator=(const AliFemtoEventReaderKinematicsChain& aReader);

  AliFemtoEvent* ReturnHbtEvent();
  AliFemtoString Report();
  void SetConstrained(const bool constrained);
  bool GetConstrained() const;

  //void SetESDSource(AliESDEvent *aESD);
  void SetStackSource(AliStack *aStack);
  void SetGenEventHeader(AliGenEventHeader *aGenHeader);
  void SetRotateToEventPlane(short dorotate);
  void SetUseMultiplicity(EstEventMult aType);
  void CopyAODtoFemtoV0(TParticle *tv0, AliFemtoV0 *tFemtoV0 );

 protected:

 private:
  string         fFileName;      // name of current ESD file
  bool           fConstrained;   // flag to set which momentum from ESD file will be use
  int            fNumberofEvent; // number of Events in ESD file
  int            fCurEvent;      // number of current event
  unsigned int   fCurFile;       // number of current file
  AliStack       *fStack;         // Kinematics stack pointer
  AliGenEventHeader *fGenHeader; // Link to the generator event header
  EstEventMult   fEstEventMult;  // Type of the event multiplicity estimator
  short          fRotateToEventPlane; // Rotate the event so that event plane is at x=0

  Float_t GetSigmaToVertex(double *impact, double *covar);

#ifdef __ROOT__
  ClassDef(AliFemtoEventReaderKinematicsChain, 1)
#endif

    };
  
#endif


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