]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackHitPattern.h
- Update and add new ESD QA histograms
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackHitPattern.h
index 3aa628609dd014441276a5d55b67ae9677151314..9dbede21d3bc2367226a5fe7c8c9bcfee23f1c81 100644 (file)
@@ -3,6 +3,8 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
+/*$Id$*/
+
 /// \ingroup rec
 /// \class AliMUONTrackHitPattern
 /// \brief Class for the MUON track hit pattern
 //  Author: Diego Stocco
 
 #include <TObject.h>
-#include <TList.h>
+#include <TMatrixD.h>
+#include <TArrayI.h>
+#include <TArrayF.h>
 
-class AliMUONData;
-class AliMUONLocalStruct;
-class AliMUONLocalTriggerBoard;
+class AliMUONVTrackStore;
+class AliMUONVTriggerStore;
+class AliMUONVTriggerTrackStore;
 class AliMUONTrackParam;
-class AliMUONTriggerCrateStore;
-
+class AliMUONDigitMaker;
 class AliMUONGeometryTransformer;
+class AliMUONVDigitStore;
+class AliMUONTriggerTrack;
+class AliMUONTrack;
+class AliMUONRecoParam;
 
-class TClonesArray;
-
-class AliMUONTrackHitPattern : public TObject {
+class AliMUONTrackHitPattern : public TObject 
+{
 public:
-    AliMUONTrackHitPattern(AliMUONData *MUONData); // Default Constructor
-    virtual ~AliMUONTrackHitPattern(); // Destructor
-    
-    void GetHitPattern(TClonesArray *recTracksArray);
+
+  AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
+                         const AliMUONGeometryTransformer& transformer,
+                         const AliMUONDigitMaker& digitMaker);
+  virtual ~AliMUONTrackHitPattern(); // Destructor
+
+  void ExecuteValidation(const AliMUONVTrackStore& trackStore,
+                        const AliMUONVTriggerTrackStore& triggerTrackStore,
+                        const AliMUONVTriggerStore& triggerStore) const;
+  
+  AliMUONTriggerTrack* MatchTriggerTrack(AliMUONTrack* track,
+                                        AliMUONTrackParam& trackParam,
+                                        const AliMUONVTriggerTrackStore& triggerTrackStore,
+                                        const AliMUONVTriggerStore& triggerStore) const;
     
-    void FindPadMatchingTrack(AliMUONTrackParam *trackParam, Bool_t isMatch[2], Int_t iChamber);
-    Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
-                              Float_t dpx, Float_t dpy, AliMUONTrackParam *trackParam);
-    void GetPosUncertainty(AliMUONTrackParam *trackParm, Float_t zChamber,
-                          Float_t &sigmaX, Float_t &sigmaY, Float_t &sigmaMS);
+  UShort_t GetHitPattern(AliMUONTrackParam& trackParam,
+                        AliMUONTriggerTrack* matchedTriggerTrack,
+                        AliMUONVDigitStore& digitStore) const;
+
+protected:
+  void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
+  
+  Bool_t TriggerDigits(const AliMUONVTriggerStore& triggerStore, 
+                      AliMUONVDigitStore& digitStore) const;
+
+  void InitMembers();
+  
+  void SetBit(UShort_t& pattern, Int_t cathode, Int_t chamber) const;
+  
+  void AddEffInfo(UShort_t& pattern, Int_t slat, Int_t effType) const;
+  
 
-    Bool_t TriggerDigits();
+  // Methods for hit pattern from tracker track
+  void FindPadMatchingTrack(const AliMUONVDigitStore& digitStore,
+                           const AliMUONTrackParam& trackParam,
+                           Bool_t isMatch[2], Int_t iChamber) const;
 
+  Float_t MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
+                            Float_t dpx, Float_t dpy, 
+                            const AliMUONTrackParam& trackParam) const;
+
+  // Methods for hit pattern from matched trigger track
+  Bool_t PerformTrigTrackMatch(UShort_t &pattern,
+                              const AliMUONTriggerTrack* matchedTrigTrack,
+                              AliMUONVDigitStore& digitStore) const;
+  
+  Int_t FindPadMatchingTrig(const AliMUONVDigitStore& digitStore, Int_t &detElemId, Float_t coor[2],
+                           Bool_t isMatch[2], TArrayI nboard[2],
+                           TArrayF &zRealMatch, Float_t y11) const;
+  
+  Float_t PadMatchTrack(Float_t xPad, Float_t yPad, Float_t dpx, Float_t dpy,
+                       Float_t xTrackAtPad, Float_t yTrackAtPad) const;
+  
+  Int_t DetElemIdFromPos(Float_t x, Float_t y, Int_t chamber, Int_t cathode) const;
+  
+  void LocalBoardFromPos(Float_t x, Float_t y, Int_t detElemId,
+                        Int_t cathode, Int_t localBoard[4]) const;
+
+  const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
+  
 private:
-    AliMUONData *fMUONData; ///< Data container for MUON subsystem
-    TList fTriggerDigitsList[4]; ///< List of trigger digits, one per chamber
-    AliMUONGeometryTransformer *fTransformer; //!< pointer to transformation
-    AliMUONTriggerCrateStore *fCrateManager; ///< pointer to crate manager
+  /// Not implemented
+  AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
+  /// Not implemented
+  AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
+
+  void CheckConstants() const;
+
+  const AliMUONRecoParam* fkRecoParam; //!< pointer to reco parameters
+  const AliMUONGeometryTransformer& fkTransformer; //!< geometry transformer
+  const AliMUONDigitMaker& fkDigitMaker; //!< pointer to digit maker
+
+  Double_t fDeltaZ; //!< distance between stations
+
+  TMatrixD* fTrigCovariance; //!< Covariance matrix 3x3 (X,Y,slopeY) for trigger tracks
+
+  const Float_t fkMaxDistance; //!< Maximum distance for reference
+  static const Int_t fgkNcathodes=2; //!<Number of cathodes
+  static const Int_t fgkNchambers=4; //!<Number of chambers
+  static const Int_t fgkNplanes=8;   //!<Number of planes
+  static const Int_t fgkNlocations=4; //!<Number of locations
 
-    ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
+  enum {
+    kNoEff,
+    kChEff,
+    kSlatEff,
+    kBoardEff
+  };
+  
+  ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
 };
 
 #endif