]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONRefitter.h
Take into account common installation locations for includes
[u/mrichter/AliRoot.git] / MUON / AliMUONRefitter.h
1 #ifndef ALIMUONREFITTER_H
2 #define ALIMUONREFITTER_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 rec
10 /// \class AliMUONRefitter
11 /// \brief class to refit the ESD clusters/tracks
12 /// 
13 //  Author Philippe Pillot
14
15 #include <TObject.h>
16
17 class AliMUONGeometryTransformer;
18 class AliMUONVClusterFinder;
19 class AliMUONVClusterServer;
20 class AliMUONVTrackReconstructor;
21 class AliMUONESDInterface;
22 class AliMUONVClusterStore;
23 class AliMUONVTrackStore;
24 class AliMUONTrack;
25 class AliMUONRecoParam;
26
27 class AliMUONRefitter : public TObject
28 {
29 public:
30   
31   AliMUONRefitter(const AliMUONRecoParam* recoParam);
32   virtual ~AliMUONRefitter();
33   
34   /// connect to the ESD interface containing MUON data to refit
35   void Connect(const AliMUONESDInterface* esdInterface) {fkESDInterface = esdInterface;}
36   
37   // re-reconstruct all tracks (clusters) in the ESD event
38   AliMUONVTrackStore* ReconstructFromDigits();
39   AliMUONVTrackStore* ReconstructFromClusters();
40   
41   // refit a particular track in the ESD event
42   AliMUONTrack* RetrackFromDigits(UInt_t trackId);
43   AliMUONTrack* RetrackFromClusters(UInt_t trackId);
44   
45   // re-clusterize a particular cluster in the ESD event
46   AliMUONVClusterStore* ReClusterize(UInt_t trackId, UInt_t clusterId);
47   AliMUONVClusterStore* ReClusterize(UInt_t clusterId);
48   
49   // set the first index of clusters produced by this refitter (to build its uniqueID)
50   void SetFirstClusterIndex(Int_t index) {nextClusterIndex = (index >= 0) ? index : 0;}
51   
52 protected:
53   
54   AliMUONRefitter (const AliMUONRefitter&); ///< copy constructor
55   AliMUONRefitter& operator=(const AliMUONRefitter&); ///< assignment operator
56   
57   
58 private:
59   
60   void CreateGeometryTransformer();
61   void CreateClusterServer(AliMUONGeometryTransformer& transformer);
62   
63   AliMUONTrack* RetrackFromDigits(const AliMUONTrack& track);
64   
65   Bool_t AddClusterToTracks(const AliMUONVClusterStore &localClusterStore, AliMUONVTrackStore &trackStore);
66   
67 private:
68     
69   const AliMUONRecoParam*     fkRecoParam;          ///< pointer to reco param (not owner)
70   const AliMUONESDInterface*  fkESDInterface;       ///< container of MUON tracks/clusters/digits (not owner)
71   AliMUONGeometryTransformer* fGeometryTransformer; ///< geometry transformer (owner)
72   AliMUONVClusterServer*      fClusterServer;       ///< clusterizer (owner)
73   AliMUONVTrackReconstructor* fTracker;             ///< tracker (owner)
74   
75   Int_t nextClusterIndex; ///< Index of the next cluster produced by this refitter (to build its uniqueID)
76   
77   ClassDef(AliMUONRefitter,0)
78 };
79
80 #endif
81