]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONESDInterface.h
Updating the periods
[u/mrichter/AliRoot.git] / MUON / AliMUONESDInterface.h
index 9858ea9466ae2230b4e55a56c765d5a1154cbf9a..43d7024093e98af43413d26cb240a5c772c00f57 100644 (file)
@@ -23,12 +23,18 @@ class AliMUONVCluster;
 class AliMUONVClusterStore;
 class AliMUONVDigit;
 class AliMUONVDigitStore;
+class AliMUONLocalTrigger;
+class AliMUONTriggerTrack;
+class AliMUONVTriggerTrackStore;
+class AliMUONVTriggerStore;
 class AliMUONTrackParam;
+class AliMUONVTrackReconstructor;
 class AliESDEvent;
 class AliESDMuonTrack;
 class AliESDMuonCluster;
 class AliESDMuonPad;
 class TIterator;
+class AliMUONRecoParam;
 
 class AliMUONESDInterface : public TObject
 {
@@ -39,12 +45,14 @@ public: // methods to play with internal objects
   
   virtual void Clear(Option_t* = "");
   
-  void LoadEvent(AliESDEvent& esdEvent);
+  void LoadEvent(AliESDEvent& esdEvent,  Bool_t refit = kTRUE);
   
   /// Return internal track store
   AliMUONVTrackStore* GetTracks() const {return fTracks;}
   /// Return internal track store
   AliMUONVDigitStore* GetDigits() const {return fDigits;}
+  /// Return internal trigger store
+  AliMUONVTriggerStore* GetTriggers() const {return fTriggers;}
   
   // Return numbers of tracks/clusters/digits
   Int_t GetNTracks() const;
@@ -54,12 +62,17 @@ public: // methods to play with internal objects
   Int_t GetNDigits(UInt_t trackId) const;
   Int_t GetNDigits(UInt_t trackId, UInt_t clusterId) const;
   Int_t GetNDigitsInCluster(UInt_t clusterId) const;
+  Int_t GetNTriggers() const;
+  
+  // Check that all digits have been stored for a given track
+  Bool_t DigitsStored(UInt_t trackId) const;
   
   // Find internal MUON objects
-  AliMUONTrack*    FindTrack(UInt_t trackId) const;
-  AliMUONVCluster* FindCluster(UInt_t clusterId) const;
-  AliMUONVCluster* FindCluster(UInt_t trackId, UInt_t clusterId) const;
-  AliMUONVDigit*   FindDigit(UInt_t digitId) const;
+  AliMUONTrack*        FindTrack(UInt_t trackId) const;
+  AliMUONVCluster*     FindCluster(UInt_t clusterId) const;
+  AliMUONVCluster*     FindCluster(UInt_t trackId, UInt_t clusterId) const;
+  AliMUONVDigit*       FindDigit(UInt_t digitId) const;
+  AliMUONLocalTrigger* FindLocalTrigger(Int_t boardNumber) const;
   
   // iterate over internal MUON objects
   TIterator* CreateTrackIterator() const;
@@ -69,21 +82,33 @@ public: // methods to play with internal objects
   TIterator* CreateDigitIterator(UInt_t trackId) const;
   TIterator* CreateDigitIterator(UInt_t trackId, UInt_t clusterId) const;
   TIterator* CreateDigitIteratorInCluster(UInt_t clusterId) const;
+  TIterator* CreateLocalTriggerIterator() const;
   
   
 public: // static methods
   
+  // Reset the MUON tracker (using "recoParam" if provided)
+  static void ResetTracker(const AliMUONRecoParam* recoParam = 0x0, Bool_t info = kTRUE);
+  /// Return pointer to the MUON tracker if any (use first ResetTracker(...) to create it)
+  static AliMUONVTrackReconstructor* GetTracker() {return fgTracker;}
+  
   /// Set the version of track store
   static void UseTrackStore(TString name) {fgTrackStoreName = name;}
   /// Set the version of cluster store
   static void UseClusterStore(TString name) {fgClusterStoreName = name;}
   /// Set the version of digit store
   static void UseDigitStore(TString name) {fgDigitStoreName = name;}
+  /// Set the version of trigger store
+  static void UseTriggerStore(TString name) {fgTriggerStoreName = name;}
   
   // Create empty stores (use the version defined in this interface)
   static AliMUONVTrackStore* NewTrackStore();
   static AliMUONVClusterStore* NewClusterStore();
+  static AliMUONVCluster* NewCluster();
   static AliMUONVDigitStore* NewDigitStore();
+  static AliMUONVDigit* NewDigit();
+  static AliMUONVTriggerStore* NewTriggerStore();
+  static AliMUONVTriggerTrackStore* NewTriggerTrackStore();
   
   // ESD track parameters --> MUON track parameters
   static void GetParamAtVertex(const AliESDMuonTrack& esdTrack, AliMUONTrackParam& trackParam);
@@ -98,18 +123,29 @@ public: // static methods
   static void SetParamCov(const AliMUONTrackParam& trackParam, AliESDMuonTrack& esdTrack);
   
   // ESDMuon objects --> MUON objects conversion
-  static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrack& track);
+  static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONTrack& track, Bool_t refit = kTRUE);
+  static void ESDToMUON(const AliESDMuonTrack& esdTrack, AliMUONLocalTrigger& locTrg);
   static void ESDToMUON(const AliESDMuonCluster& esdCluster, AliMUONVCluster& cluster);
   static void ESDToMUON(const AliESDMuonPad& esdPad, AliMUONVDigit& digit);
   
   // MUON objects --> ESDMuon objects conversion
-  static void MUONToESD(const AliMUONTrack& track, AliESDMuonTrack& esdTrack, const Double_t vertex[3], const AliMUONVDigitStore* digits = 0x0);
-  static void MUONToESD(const AliMUONVCluster& cluster, AliESDMuonCluster& esdCluster, const AliMUONVDigitStore* digits = 0x0);
+  static void MUONToESD(const AliMUONTrack& track, AliESDEvent& esd, const Double_t vertex[3],
+                       const AliMUONVDigitStore* digits = 0x0, const AliMUONLocalTrigger* locTrg = 0x0);
+  static void MUONToESD(const AliMUONTrack& track, AliESDMuonTrack& esdTrack, const Double_t vertex[3],
+                       const AliMUONLocalTrigger* locTrg = 0x0);
+  static void MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDEvent& esd, UInt_t trackId,
+                       const AliMUONTriggerTrack* triggerTrack = 0x0);
+  static void MUONToESD(const AliMUONLocalTrigger& locTrg, AliESDMuonTrack& esdTrack, UInt_t trackId,
+                       const AliMUONTriggerTrack* triggerTrack = 0x0);
+  static void MUONToESD(const AliMUONVCluster& cluster, AliESDEvent& esd, const AliMUONVDigitStore* digits = 0x0);
+  static void MUONToESD(const AliMUONVCluster& cluster, AliESDMuonCluster& esdCluster, Bool_t copyPadsId = kFALSE);
+  static void MUONToESD(const AliMUONVDigit& digit, AliESDEvent& esd);
   static void MUONToESD(const AliMUONVDigit& digit, AliESDMuonPad& esdPad);
   
   // Add ESD object into the corresponding MUON store
   // return a pointer to the corresponding MUON object into the store
-  static AliMUONTrack*    Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore);
+  static AliMUONTrack*    Add(const AliESDMuonTrack& esdTrack, AliMUONVTrackStore& trackStore, Bool_t refit = kTRUE);
+  static void             Add(const AliESDMuonTrack& esdTrack, AliMUONVTriggerStore& triggerStore);
   static AliMUONVCluster* Add(const AliESDMuonCluster& esdCluster, AliMUONVClusterStore& clusterStore);
   static AliMUONVDigit*   Add(const AliESDMuonPad& esdPad, AliMUONVDigitStore& digitStore);
   
@@ -123,24 +159,29 @@ protected:
 private:
   
   void Reset();
-  AliMUONVCluster* FindClusterInTrack(const AliMUONTrack& track, UInt_t clusterId) const;
   
   
 private:
   
+  static AliMUONRecoParam*           fgRecoParam; ///< reconstruction parameters for refitting
+  static AliMUONVTrackReconstructor* fgTracker;   ///< track reconstructor for refitting
+    
   static TString fgTrackStoreName;   ///< class name of the track store to use
   static TString fgClusterStoreName; ///< class name of the cluster store to use
   static TString fgDigitStoreName;   ///< class name of the digit store to use
+  static TString fgTriggerStoreName; ///< class name of the trigger store to use
+  static TString fgTriggerTrackStoreName; ///< class name of the trigger track store to use
   
   // data containers
-  AliMUONVTrackStore* fTracks; ///< track container
-  AliMUONVDigitStore* fDigits; ///< digit container
+  AliMUONVTrackStore*   fTracks;   ///< track container
+  AliMUONVDigitStore*   fDigits;   ///< digit container
+  AliMUONVTriggerStore* fTriggers; ///< trigger container
   
   // maps (to speed up data retrieval)
   AliMpExMap* fClusterMap; ///< map of clusters
   AliMpExMap* fDigitMap;   ///< map of digits
-    
-    
+  
+  
   ClassDef(AliMUONESDInterface,0)
 };