Line data Source code
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 0 : 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 0 : 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 18 : ClassDef(AliMUONRefitter,0)
78 : };
79 :
80 : #endif
81 :
|