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