]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRecoCheck.h
Fixes for #86059: Install data when ALICE_ROOT does not point to source (Christian)
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoCheck.h
index 06cc3c8b7be985ede64f3e76e0cab5207a663237..a2640033459f0c03d6edcff8e50d3946a1d70019 100644 (file)
 
 /* $Id$ */
 
-/// \ingroup base
+/// \ingroup evaluation
 /// \class AliMUONRecoCheck
 /// \brief Utility class to check reconstruction
 
 #include <TObject.h>
-#include "AliMUONTrack.h"
 
 class TClonesArray;
-class AliMUONData;
-class AliRunLoader;
-
+class TFile;
+class TTree;
+class AliESDEvent;
+class AliMCEventHandler;
+class AliMUONVTrackStore;
+class AliMUONVTriggerTrackStore;
+class AliMUONTrack;
+class AliMUONTrackParam;
+class AliMUONTriggerTrack;
+class AliMUONGeometryTransformer;
+class AliMUONTriggerCircuit;
+class AliMUONLocalTrigger;
+class AliMUONCalibrationData;
+class AliMUONTriggerElectronics;
 
 class AliMUONRecoCheck : public TObject 
 {
 public:
-  AliMUONRecoCheck(Char_t *chLoader);
-  AliMUONRecoCheck(AliRunLoader *runloader, AliMUONData *muondata);
-  virtual          ~AliMUONRecoCheck();
-
-  /// Return MUON data          
-  AliMUONData*  GetMUONData() {return fMUONData;}
-  /// Return run loader         
-  AliRunLoader* GetRunLoader() {return fRunLoader;}
-
-  void MakeTrackRef();
-                /// Add track reference
-  void AddMuonTrackReference(const AliMUONTrack *muonTrack) 
-    {new ((*fMuonTrackRef)[fMuonTrackRef->GetEntriesFast()]) AliMUONTrack(*muonTrack);}
-
-  void PrintEvent() const;
-  void ResetTracks() const;
-  void CleanMuonTrackRef();
-  void ReconstructibleTracks();
-                /// Return number of reconstructible tracks
-  Int_t GetNumberOfReconstuctibleTracks() {return fReconstructibleTracks;}
-                /// Return number of reconstructed tracks
-  Int_t GetNumberOfRecoTracks() {return fRecoTracks;}
-  TClonesArray *GetTrackReco();
-                /// Return reference muon tracks
-  TClonesArray *GetMuonTrackRef() {return fMuonTrackRef;}
-
-private:
+  AliMUONRecoCheck(const Char_t *chLoader, const Char_t *pathSim = "./");
+  AliMUONRecoCheck(AliESDEvent *esdEvent, AliMCEventHandler *mcEventHandler);
+  virtual ~AliMUONRecoCheck();
+
+  /// Return the list of reconstructed tracks
+  AliMUONVTrackStore* ReconstructedTracks(Int_t event, Bool_t refit = kTRUE);
+
+  /// Return the list of reconstructed trigger tracks
+  AliMUONVTriggerTrackStore* TriggeredTracks(Int_t event);
+
+  void TriggerToTrack(const AliMUONLocalTrigger& locTrg, AliMUONTriggerTrack& triggerTrack);
+       
+  /// Return reference muon tracks
+  AliMUONVTrackStore* TrackRefs(Int_t event);
+
+  /// Return triggerable reference tracks
+  AliMUONVTriggerTrackStore* TriggerableTracks(Int_t event);
+       
+  /// Return reconstructible reference tracks
+  AliMUONVTrackStore* ReconstructibleTracks(Int_t event, UInt_t requestedStationMask = 0x1F,
+                                           Bool_t request2ChInSameSt45 = kTRUE,
+                                           Bool_t hitInFrontOfPad = kFALSE);
+
+       
+  /// Return the run number of the current ESD event
+  Int_t GetRunNumber();
   
-  AliRunLoader* fRunLoader;     ///< alice run loader 
-  AliMUONData*  fMUONData;      ///< Data container for MUON subsystem 
-  TClonesArray* fMuonTrackRef;  ///< reference muon tracks
-  TClonesArray* fTrackReco;     ///< reconstructed muon tracks
-  Int_t fReconstructibleTracks; ///< number of reconstructible tracks 
-  Int_t fRecoTracks;            ///< number of reconstructed tracks 
-  Bool_t fIsLoadConstructor;    //!< \brief boolean to tag the constructor, 
-                                /// to decide if the class should or not deal with the loaders
-
-
+  /// Return the total number of events.
+  Int_t NumberOfEvents() const;
+  
+  /// Return the reconstructed data of current event
+  const AliESDEvent* GetESDEvent() const { return fESDEvent; }
+  
+  /// Return the interface to the Monte Carlo data of current event
+  const AliMCEventHandler* GetMCEventHandler() const { return fMCEventHandler; }
+  
+  /// Return the track from the store matched with the given track (or 0x0) and the fraction of matched clusters
+  static AliMUONTrack* FindCompatibleTrack(AliMUONTrack &track, AliMUONVTrackStore &trackStore,
+                                          Int_t &nMatchClusters, Bool_t useLabel = kFALSE,
+                                          Double_t sigmaCut = 10.);
+  
+  /// Return the trigger track from the store matched with the given track (or 0x0)
+  static AliMUONTriggerTrack* FindCompatibleTrack(AliMUONTriggerTrack &track,
+                                                  const AliMUONVTriggerTrackStore &triggerTrackStore,
+                                                  Double_t sigmaCut = 10.);
+  
+private:
+  /// Not implemented
   AliMUONRecoCheck(const AliMUONRecoCheck& rhs);
+  /// Not implemented
   AliMUONRecoCheck& operator = (const AliMUONRecoCheck& rhs);
 
+  void ResetStores();
+  
+  void MakeReconstructedTracks(Bool_t refit);
+       
+  void MakeTriggeredTracks();
+  
+  void MakeTrackRefs();
+  
+  void CleanMuonTrackRef(const AliMUONVTrackStore *tmpTrackRefStore);
+  
+  void MakeReconstructibleTracks(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kTRUE,
+                                Bool_t hitInFrontOfPad = kFALSE);
+       
+  void MakeTriggerableTracks();
+       
+  Bool_t InitCircuit();
+  Bool_t InitTriggerResponse();
+  Bool_t InitCalibrationData();
+  Bool_t InitGeometryTransformer();
+
+  Bool_t IsHitInFrontOfPad(AliMUONTrackParam *param) const;
+  
+private:
+  AliMCEventHandler* fMCEventHandler; ///< to access MC truth information
+  AliESDEvent* fESDEvent; ///< ESD event to access MUON data
+  TTree* fESDTree;        ///< ESD tree to access MUON data
+  TFile* fESDFile;        ///< ESD file to access MUON data
+  
+  Int_t fCurrentEvent; ///< current event number
+  
+  AliMUONVTrackStore* fTrackRefStore;     ///< current simulated tracks (owner)
+  AliMUONVTrackStore* fRecoTrackRefStore; ///< current reconstructible tracks (owner)
+  AliMUONVTriggerTrackStore* fRecoTriggerRefStore; ///< current triggerable tracks (owner)
+  AliMUONVTrackStore* fRecoTrackStore;    ///< current reconstructed tracks (owner)
+  AliMUONVTriggerTrackStore* fRecoTriggerTrackStore;    ///< current reconstructed trigger tracks (owner)
+       
+  AliMUONGeometryTransformer* fGeometryTransformer; ///< geometry transformer
+  AliMUONTriggerCircuit* fTriggerCircuit; ///< trigger circuit
+  AliMUONCalibrationData* fCalibrationData; //!< Used to load Local, Regional and Global masks
+  AliMUONTriggerElectronics* fTriggerElectronics; ///< object to re-compute the trigger info
+  
+  Bool_t fESDEventOwner;         ///< using constructor from the analysis task
+
   ClassDef(AliMUONRecoCheck, 0)   //Utility class to check reconstruction
 };
 
 #endif
 
-
-
-
-
-
-
-