Fixes in reconstruction:
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.h
1 #ifndef ALIMUONRECOCHECK_H
2 #define ALIMUONRECOCHECK_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 /// \ingroup evaluation
10 /// \class AliMUONRecoCheck
11 /// \brief Utility class to check reconstruction
12
13 #include <TObject.h>
14
15 class TClonesArray;
16 class TFile;
17 class TTree;
18 class AliESDEvent;
19 class AliMCEventHandler;
20 class AliMUONVTrackStore;
21 class AliMUONTrack;
22
23 class AliMUONRecoCheck : public TObject 
24 {
25 public:
26   AliMUONRecoCheck(const Char_t *chLoader, const Char_t *pathSim = "./");
27   AliMUONRecoCheck(AliESDEvent *esdEvent, AliMCEventHandler *mcEventHandler);
28   virtual ~AliMUONRecoCheck();
29
30   /// Return the list of reconstructed tracks
31   AliMUONVTrackStore* ReconstructedTracks(Int_t event, Bool_t refit = kTRUE);
32   
33   /// Return reference muon tracks
34   AliMUONVTrackStore* TrackRefs(Int_t event);
35
36   /// Return reconstructible reference tracks
37   AliMUONVTrackStore* ReconstructibleTracks(Int_t event, UInt_t requestedStationMask = 0x1F, Bool_t request2ChInSameSt45 = kTRUE);
38   
39   /// Return the run number of the current ESD event
40   Int_t GetRunNumber();
41   
42   /// Return the total number of events.
43   Int_t NumberOfEvents() const;
44   
45   /// Return the reconstructed data of current event
46   const AliESDEvent* GetESDEvent() { return fESDEvent; }
47   
48   /// Return the interface to the Monte Carlo data of current event
49   const AliMCEventHandler* GetMCEventHandler() { return fMCEventHandler; }
50   
51   /// Return the track from the store matched with the given track (or 0x0) and the fraction of matched clusters.
52   static AliMUONTrack* FindCompatibleTrack(AliMUONTrack &track, AliMUONVTrackStore &trackStore,
53                                            Int_t &nMatchClusters, Bool_t useLabel = kFALSE, Double_t sigmaCut = 10.);
54   
55 private:
56   /// Not implemented
57   AliMUONRecoCheck(const AliMUONRecoCheck& rhs);
58   /// Not implemented
59   AliMUONRecoCheck& operator = (const AliMUONRecoCheck& rhs);
60
61   void ResetStores();
62   
63   void MakeReconstructedTracks(Bool_t refit);
64   
65   void MakeTrackRefs();
66   
67   void CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefStore);
68   
69   void MakeReconstructibleTracks(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kTRUE);
70
71 private:
72   AliMCEventHandler* fMCEventHandler; ///< to access MC truth information
73   AliESDEvent* fESDEvent; ///< ESD event to access MUON data
74   TTree* fESDTree;        ///< ESD tree to access MUON data
75   TFile* fESDFile;        ///< ESD file to access MUON data
76   
77   Int_t fCurrentEvent; ///< current event number
78   
79   AliMUONVTrackStore* fTrackRefStore;     ///< current simulated tracks (owner)
80   AliMUONVTrackStore* fRecoTrackRefStore; ///< current reconstructible tracks (owner)
81   AliMUONVTrackStore* fRecoTrackStore;    ///< current reconstructed tracks (owner)
82   
83   Bool_t fESDEventOwner;         ///< using constructor from the analysis task
84
85   ClassDef(AliMUONRecoCheck, 0)   //Utility class to check reconstruction
86 };
87
88 #endif
89