don't lie in the log!
[u/mrichter/AliRoot.git] / PWGPP / TPC / AliMaterialBudget.h
1 #ifndef ALIMATERIALBUDGET_H
2 #define ALIMATERIALBUDGET_H
3
4 // ROOT includes
5 #include <TList.h>
6 #include <TH1.h>
7 #include <TH2.h>
8
9 // AliRoot includes
10 #include <AliAnalysisTask.h>
11 #include <AliESDEvent.h>
12 #include <AliESDfriend.h>
13 #include <AliESDtrack.h>
14 #include <AliESDfriendTrack.h>
15 #include <AliTPCseed.h>
16 #include <TString.h>
17 class AliGenInfoMaker;
18 class TTreeSRedirector;
19 class AliMCEventHadnler;
20 class TParticle;
21 class AliMCInfo;
22 class AliMCParticle;
23 class AliESDRecInfo;
24 class AliESDEvent;
25 class AliMCEvent;
26 class AliComparisonObject;
27
28 class AliMaterialBudget : public AliAnalysisTask {
29  public:
30  AliMaterialBudget();
31  AliMaterialBudget(const char *name);
32   virtual ~AliMaterialBudget();
33   
34   virtual void   ConnectInputData(Option_t *);
35   virtual void   CreateOutputObjects();
36   virtual void   Exec(Option_t *option);
37   virtual void   Terminate(Option_t *);
38   virtual void FinishTaskOutput();
39   void         SetDebugOuputhPath(const char * name){fDebugOutputPath=name;}
40
41   //
42   void           FindPairs(AliESDEvent * event);
43   Bool_t         IsPair(AliExternalTrackParam *tr0, AliExternalTrackParam *tr1);
44   //
45   void           ProcessMCInfo();
46   void           ProcessRefTracker(AliTrackReference* refIn, AliTrackReference* refOut, TParticle*part, Int_t type);
47   
48   void           FitTrackRefs(TParticle * part, TClonesArray * trefs);
49
50   //
51   // debug streamer part
52   //
53   TTreeSRedirector *GetDebugStreamer();
54   void       SetStreamLevel(Int_t streamLevel){fStreamLevel=streamLevel;}
55   void       SetDebugLevel(Int_t level) {fDebugLevel = level;}
56   Int_t      GetStreamLevel() const {return fStreamLevel;}
57   Int_t      GetDebugLevel() const {return fDebugLevel;}
58   //
59   static Bool_t PropagateCosmicToDCA(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t mass);
60   static AliExternalTrackParam * MakeTrack(const AliTrackReference* ref, TParticle*part);
61   static Bool_t  PropagateToPoint(AliExternalTrackParam *param, Double_t *xyz, Double_t mass,  Float_t step);
62   //
63   AliTrackReference * GetFirstTPCTrackRef(AliMCParticle *mcParticle);
64   AliTrackReference * GetAllTOFinfo(AliMCParticle *mcParticle, Int_t & nTrackRef, Int_t &nTrackRefITS, Int_t retValue =0);
65  protected:
66   void RegisterDebugOutput();
67   AliMaterialBudget(const AliMaterialBudget& /*info*/);
68   AliMaterialBudget& operator=(const AliMaterialBudget& /*info*/) { return *this;}
69   AliMCEvent  * fMCinfo;          //! MC event handler
70   AliESDEvent * fESD;             //! current esd event
71   //
72   //
73   //
74   TTreeSRedirector *fDebugStreamer;     //! debug streamer
75   Int_t  fStreamLevel;                  //  debug stream level 
76   Int_t  fDebugLevel;                   //  debug level
77   TString      fDebugOutputPath; // debug output path
78   //
79   // histogran
80   //
81   TList * fListHist;     // list for histograms
82   TH1F  * fHistMult;     // track multiplicity histograms
83   //
84   // cuts
85   //
86   Float_t fCutMaxD;     // maximal distance in rfi ditection
87   Float_t fCutMaxDz;    // maximal distance in z ditection
88   Float_t fCutTheta;    // maximal distance in theta ditection
89   Float_t fCutMinDir;   // direction vector products
90   //
91   ClassDef(AliMaterialBudget, 1); // Analysis task base class for tracks
92 };
93
94 #endif