ROOT logo
#ifndef ALIGENINFOTASK_H
#define ALIGENINFOTASK_H

// ROOT includes
#include <TList.h>
#include <TH1.h>
#include <TH2.h>

// AliRoot includes
#include <AliAnalysisTask.h>
#include <AliESDEvent.h>
#include <AliESDfriend.h>
#include <AliESDtrack.h>
#include <AliESDfriendTrack.h>
#include <AliTPCseed.h>
class AliGenInfoMaker;
class TTreeSRedirector;
class AliMCEventHadnler;
class TParticle;
class AliMCInfo;
class AliESDRecInfo;
class AliESDEvent;
class AliESDfriend;
class AliMCEvent;
class AliComparisonObject;

class AliGenInfoTask : public AliAnalysisTask {
 public:
 AliGenInfoTask();
 AliGenInfoTask(const char *name);
  virtual ~AliGenInfoTask();
  
  virtual void   ConnectInputData(Option_t *);
  virtual void   CreateOutputObjects();
  virtual void   Exec(Option_t *option);
  virtual void   Terminate(Option_t *);
  virtual void   FinishTaskOutput();
  //
  //
  void ProcessMCInfo();
  void ProcessESDInfo();
  void ProcessComparison();
  void DumpInfo();  
  static  Float_t GetTPCTrackLength(const TClonesArray& trackRefs, TParticle*part, Float_t bz,  Int_t &counter, Float_t deadWidth);
  //
  //
  // debug streamer part
  //
  TTreeSRedirector *GetDebugStreamer();
  void       SetStreamLevel(Int_t streamLevel){fStreamLevel=streamLevel;}
  void       SetDebugLevel(Int_t level) {fDebugLevel = level;}
  Int_t      GetStreamLevel() const {return fStreamLevel;}
  Int_t      GetDebugLevel() const {return fDebugLevel;}
  //
  Bool_t     AcceptParticle(TParticle *part);  
  AliMCInfo *GetTrack(Int_t index, Bool_t force=kFALSE);
  AliESDRecInfo *GetRecTrack(Int_t index, Bool_t force=kFALSE);
  Bool_t     AddComparisonObject(AliComparisonObject *pObj);
  void             RegisterDebugOutput(const char *path);
  void         SetDebugOuputhPath(const char * name){fDebugOutputPath=name;}
 protected:
  AliGenInfoTask(const AliGenInfoTask& /*info*/);
  AliGenInfoTask& operator=(const AliGenInfoTask& /*info*/) { return *this;}
  AliMCEvent  * fMCinfo;     //! MC event handler
  AliESDEvent * fESD;             //! current esd event
  AliESDfriend * fESDfriend;             //! current esd event
  //
  TObjArray   *fCompList;        // comparison object list
  //
  TClonesArray *fGenTracksArray;  //clones array with filtered particles
  TClonesArray *fGenKinkArray;    //clones array with filtered Kinks
  TClonesArray *fGenV0Array;      //clones array with filtered V0s
  //
  TClonesArray *fRecTracksArray;  //clones array with filtered tracks 
  //
  //
  TTreeSRedirector *fDebugStreamer;     //! debug streamer
  Int_t  fStreamLevel;                  //  debug stream level 
  Int_t  fDebugLevel;                   //  debug level
  TString      fDebugOutputPath; // debug output path
  ClassDef(AliGenInfoTask, 1); // Analysis task base class for tracks
};

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