]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONESDInterface.h
Writing back ITS alignement data (Ruben).
[u/mrichter/AliRoot.git] / MUON / AliMUONESDInterface.h
... / ...
CommitLineData
1#ifndef ALIMUONESDINTERFACE_H
2#define ALIMUONESDINTERFACE_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 AliMUONESDInterface
11/// \brief Converter between MUON track/cluster/digit and ESDMuon track/cluster/pad
12///
13// Author Philippe Pillot
14
15#include <AliMpExMap.h>
16#include <TObject.h>
17#include <TString.h>
18#include "AliLog.h"
19
20class AliMUONTrack;
21class AliMUONVTrackStore;
22class AliMUONVCluster;
23class AliMUONVClusterStore;
24class AliMUONVDigit;
25class AliMUONVDigitStore;
26class AliMUONLocalTrigger;
27class AliMUONTriggerTrack;
28class AliMUONVTriggerTrackStore;
29class AliMUONVTriggerStore;
30class AliMUONTrackParam;
31class AliMUONVTrackReconstructor;
32class AliESDEvent;
33class AliESDMuonTrack;
34class AliESDMuonCluster;
35class AliESDMuonPad;
36class TIterator;
37class AliMUONRecoParam;
38
39class AliMUONESDInterface : public TObject
40{
41public: // methods to play with internal objects
42
43 AliMUONESDInterface();
44 virtual ~AliMUONESDInterface();
45
46 virtual void Clear(Option_t* = "");
47
48 void LoadEvent(AliESDEvent& esdEvent, Bool_t refit = kTRUE);
49
50 /// Return internal track store
51 AliMUONVTrackStore* GetTracks() const {return fTracks;}
52 /// Return internal track store
53 AliMUONVDigitStore* GetDigits() const {return fDigits;}
54 /// Return internal trigger store
55 AliMUONVTriggerStore* GetTriggers() const {return fTriggers;}
56
57 // Return numbers of tracks/clusters/digits
58 Int_t GetNTracks() const;
59 Int_t GetNClusters() const;
60 Int_t GetNClusters(UInt_t trackId) const;
61 Int_t GetNDigits() const;
62 Int_t GetNDigits(UInt_t trackId) const;
63 Int_t GetNDigits(UInt_t trackId, UInt_t clusterId) const;
64 Int_t GetNDigitsInCluster(UInt_t clusterId) const;
65 Int_t GetNTriggers() const;
66
67 // Check that all digits have been stored for a given track
68 Bool_t DigitsStored(UInt_t trackId) const;
69
70 // Find internal MUON objects
71 AliMUONTrack* FindTrack(UInt_t trackId) const;
72 AliMUONVCluster* FindCluster(UInt_t clusterId) const;
73 AliMUONVCluster* FindCluster(UInt_t trackId, UInt_t clusterId) const;
74 AliMUONVDigit* FindDigit(UInt_t digitId) const;
75 AliMUONLocalTrigger* FindLocalTrigger(Int_t boardNumber) const;
76
77 // iterate over internal MUON objects
78 TIterator* CreateTrackIterator() const;
79 TIterator* CreateClusterIterator() const;
80 TIterator* CreateClusterIterator(UInt_t trackId) const;
81 TIterator* CreateDigitIterator() const;
82 TIterator* CreateDigitIterator(UInt_t trackId) const;
83 TIterator* CreateDigitIterator(UInt_t trackId, UInt_t clusterId) const;
84 TIterator* CreateDigitIteratorInCluster(UInt_t clusterId) const;
85 TIterator* CreateLocalTriggerIterator() const;
86
87
88public: // static methods
89
90 // Reset the MUON tracker (using "recoParam" if provided)
91 static void ResetTracker(const AliMUONRecoParam* recoParam = 0x0, Bool_t info = kTRUE);
92 /// Return pointer to the MUON tracker if any (use first ResetTracker(...) to create it)
93 static AliMUONVTrackReconstructor* GetTracker() {return fgTracker;}
94
95 /// Set the version of track store
96 static void UseTrackStore(TString name) {fgTrackStoreName = name;}
97 /// Set the version of cluster store
98 static void UseClusterStore(TString name) {fgClusterStoreName = name;}
99 /// Set the version of digit store
100 static void UseDigitStore(TString name) {fgDigitStoreName = name;}
101 /// Set the version of trigger store
102 static void UseTriggerStore(TString name) {fgTriggerStoreName = name;}
103
104 // Create empty stores (use the version defined in this interface)
105 static AliMUONVTrackStore* NewTrackStore();
106 static AliMUONVClusterStore* NewClusterStore();
107 static AliMUONVCluster* NewCluster();
108 static AliMUONVDigitStore* NewDigitStore();
109 static AliMUONVDigit* NewDigit();
110 static AliMUONVTriggerStore* NewTriggerStore();
111 static AliMUONVTriggerTrackStore* NewTriggerTrackStore();
112
113 // ESD track parameters --> MUON track parameters
114 static void GetParamAtVertex(const AliESDMuonTrack& esdTrack, AliMUONTrackParam& trackParam);
115 static void GetParamAtDCA(const AliESDMuonTrack& esdTrack, AliMUONTrackParam& trackParam);
116 static void GetParamAtFirstCluster(const AliESDMuonTrack& esdTrack, AliMUONTrackParam& trackParam);
117 static void GetParamCov(const AliESDMuonTrack& esdTrack, AliMUONTrackParam& trackParam);
118
119 // MUON track parameters --> ESD track parameters
120 static void SetParamAtVertex(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
121 static void SetParamAtDCA(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
122 static void SetParamAtFirstCluster(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
123 static void SetParamCov(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
124
125 // ESDMuon objects --> MUON objects conversion
126 static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrack& track, Bool_t refit = kTRUE);
127 static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONLocalTrigger& locTrg);
128 static void ESDToMUON(const AliESDMuonCluster& esdCluster, AliMUONVCluster& cluster);
129 static void ESDToMUON(const AliESDMuonPad& esdPad, AliMUONVDigit& digit);
130
131 // MUON objects --> ESDMuon objects conversion
132 static void MUONToESD(const AliMUONTrack& track, AliESDEvent& esd, const Double_t vertex[3],
133 const AliMUONVDigitStore* digits = 0x0, const AliMUONLocalTrigger* locTrg = 0x0);
134 static void MUONToESD(const AliMUONTrack& track, AliESDMuonTrack& esdTrack, const Double_t vertex[3],
135 const AliMUONLocalTrigger* locTrg = 0x0);
136 static void MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDEvent& esd, UInt_t trackId,
137 const AliMUONTriggerTrack* triggerTrack = 0x0);
138 static void MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuonTrack& esdTrack, UInt_t trackId,
139 const AliMUONTriggerTrack* triggerTrack = 0x0);
140 static void MUONToESD(const AliMUONVCluster& cluster, AliESDEvent& esd, const AliMUONVDigitStore* digits = 0x0);
141 static void MUONToESD(const AliMUONVCluster& cluster, AliESDMuonCluster& esdCluster, Bool_t copyPadsId = kFALSE);
142 static void MUONToESD(const AliMUONVDigit& digit, AliESDEvent& esd);
143 static void MUONToESD(const AliMUONVDigit& digit, AliESDMuonPad& esdPad);
144
145 // Add ESD object into the corresponding MUON store
146 // return a pointer to the corresponding MUON object into the store
147 static AliMUONTrack* Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore, Bool_t refit = kTRUE);
148 static void Add(const AliESDMuonTrack& esdTrack, AliMUONVTriggerStore& triggerStore);
149 static AliMUONVCluster* Add(const AliESDMuonCluster& esdCluster, AliMUONVClusterStore& clusterStore);
150 static AliMUONVDigit* Add(const AliESDMuonPad& esdPad, AliMUONVDigitStore& digitStore);
151
152
153protected:
154
155 AliMUONESDInterface (const AliMUONESDInterface&); ///< copy constructor
156 AliMUONESDInterface& operator=(const AliMUONESDInterface&); ///< assignment operator
157
158
159private:
160
161 void Reset();
162
163
164private:
165
166 static AliMUONRecoParam* fgRecoParam; ///< reconstruction parameters for refitting
167 static AliMUONVTrackReconstructor* fgTracker; ///< track reconstructor for refitting
168
169 static TString fgTrackStoreName; ///< class name of the track store to use
170 static TString fgClusterStoreName; ///< class name of the cluster store to use
171 static TString fgDigitStoreName; ///< class name of the digit store to use
172 static TString fgTriggerStoreName; ///< class name of the trigger store to use
173 static TString fgTriggerTrackStoreName; ///< class name of the trigger track store to use
174
175 // data containers
176 AliMUONVTrackStore* fTracks; ///< track container
177 AliMUONVDigitStore* fDigits; ///< digit container
178 AliMUONVTriggerStore* fTriggers; ///< trigger container
179
180 // maps (to speed up data retrieval)
181 AliMpExMap* fClusterMap; ///< map of clusters
182 AliMpExMap* fDigitMap; ///< map of digits
183
184
185 ClassDef(AliMUONESDInterface,0)
186};
187
188#endif
189