ROOT logo
#ifndef ALIMATERIALBUDGET_H
#define ALIMATERIALBUDGET_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>
#include <TString.h>
class AliGenInfoMaker;
class TTreeSRedirector;
class AliMCEventHadnler;
class TParticle;
class AliMCInfo;
class AliMCParticle;
class AliESDRecInfo;
class AliESDEvent;
class AliMCEvent;
class AliComparisonObject;

class AliMaterialBudget : public AliAnalysisTask {
 public:
 AliMaterialBudget();
 AliMaterialBudget(const char *name);
  virtual ~AliMaterialBudget();
  
  virtual void   ConnectInputData(Option_t *);
  virtual void   CreateOutputObjects();
  virtual void   Exec(Option_t *option);
  virtual void   Terminate(Option_t *);
  virtual void FinishTaskOutput();
  void         SetDebugOuputhPath(const char * name){fDebugOutputPath=name;}

  //
  void           FindPairs(AliESDEvent * event);
  Bool_t         IsPair(AliExternalTrackParam *tr0, AliExternalTrackParam *tr1);
  //
  void           ProcessMCInfo();
  void           ProcessRefTracker(AliTrackReference* refIn, AliTrackReference* refOut, TParticle*part, Int_t type);
  
  void           FitTrackRefs(TParticle * part, TClonesArray * trefs);

  //
  // 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;}
  //
  static Bool_t PropagateCosmicToDCA(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t mass);
  static AliExternalTrackParam * MakeTrack(const AliTrackReference* ref, TParticle*part);
  static Bool_t  PropagateToPoint(AliExternalTrackParam *param, Double_t *xyz, Double_t mass,  Float_t step);
  //
  AliTrackReference * GetFirstTPCTrackRef(AliMCParticle *mcParticle);
  AliTrackReference * GetAllTOFinfo(AliMCParticle *mcParticle, Int_t & nTrackRef, Int_t &nTrackRefITS, Int_t retValue =0);
 protected:
  void RegisterDebugOutput();
  AliMaterialBudget(const AliMaterialBudget& /*info*/);
  AliMaterialBudget& operator=(const AliMaterialBudget& /*info*/) { return *this;}
  AliMCEvent  * fMCinfo;          //! MC event handler
  AliESDEvent * fESD;             //! current esd event
  //
  //
  //
  TTreeSRedirector *fDebugStreamer;     //! debug streamer
  Int_t  fStreamLevel;                  //  debug stream level 
  Int_t  fDebugLevel;                   //  debug level
  TString      fDebugOutputPath; // debug output path
  //
  // histogran
  //
  TList * fListHist;     // list for histograms
  TH1F  * fHistMult;     // track multiplicity histograms
  //
  // cuts
  //
  Float_t fCutMaxD;     // maximal distance in rfi ditection
  Float_t fCutMaxDz;    // maximal distance in z ditection
  Float_t fCutTheta;    // maximal distance in theta ditection
  Float_t fCutMinDir;   // direction vector products
  //
  ClassDef(AliMaterialBudget, 1); // Analysis task base class for tracks
};

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