]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTrackHitPattern.h
Start a list of OCDB objects we use
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackHitPattern.h
index 9b0d21e616cd8c89112266376897c5201154b4a2..f6b61028354b801980973a29ba1e0783ef04db27 100644 (file)
 //  Author: Diego Stocco
 
 #include <TObject.h>
+#include <TMatrixD.h>
+#include <TArrayI.h>
+#include <TArrayF.h>
 
 class AliMUONVTrackStore;
 class AliMUONVTriggerStore;
+class AliMUONVTriggerTrackStore;
 class AliMUONTrackParam;
 class AliMUONDigitMaker;
 class AliMUONGeometryTransformer;
 class AliMUONVDigitStore;
+class AliMUONTriggerTrack;
+class AliMUONTrack;
+class AliMUONRecoParam;
 
 class AliMUONTrackHitPattern : public TObject 
 {
 public:
 
-  AliMUONTrackHitPattern(const AliMUONGeometryTransformer& transformer,
+  AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
+                         const AliMUONGeometryTransformer& transformer,
                          const AliMUONDigitMaker& digitMaker);
   virtual ~AliMUONTrackHitPattern(); // Destructor
-    
-    void GetHitPattern(AliMUONVTrackStore& trackStore,
-                       const AliMUONVTriggerStore& triggerStore) const;
-    
-    void FindPadMatchingTrack(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;
-    
-    void GetPosUncertainty(const AliMUONTrackParam& trackParm, Float_t zChamber,
-                           Float_t &sigmaX, Float_t &sigmaY, Float_t &sigmaMS) const;
-
-    Bool_t TriggerDigits(const AliMUONVTriggerStore& triggerStore, 
-                         AliMUONVDigitStore& digitStore) const;
 
+  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;
+
+  UShort_t GetHitPattern(AliMUONTriggerTrack* matchedTriggerTrack,
+                        AliMUONVDigitStore& digitStore) const;
+  
+  UShort_t GetHitPattern(AliMUONTrackParam* trackParam,
+                        AliMUONVDigitStore& digitStore) const;
+
+protected:
+  void ApplyMCSCorrections(AliMUONTrackParam& trackParam) const;
+  
+  void InitMembers();
+  
+  // 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;
+
+  /// Return reco parameters
+  const AliMUONRecoParam* GetRecoParam() const { return fkRecoParam; }
+  
 private:
-    /// Not implemented
-    AliMUONTrackHitPattern(const AliMUONTrackHitPattern& rhs);
-    /// Not implemented
-    AliMUONTrackHitPattern& operator = (const AliMUONTrackHitPattern& rhs);
+  /// 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
 
-    const AliMUONGeometryTransformer& fTransformer; //!< geometry transformer
-    const AliMUONDigitMaker& fDigitMaker; ///< pointer to digit maker
+  TMatrixD* fTrigCovariance; //!< Covariance matrix 3x3 (X,Y,slopeY) for trigger tracks
 
-    ClassDef(AliMUONTrackHitPattern, 0) // MUON track hit pattern
+  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
 };
 
 #endif