]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONDetElement.h
- ESD can be used instead of AliMUONTrack objects to access the reconstructed variables.
[u/mrichter/AliRoot.git] / MUON / AliMUONDetElement.h
1 #ifndef ALIMUONDETELEMENT_H
2 #define ALIMUONDETELEMENT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 /// \ingroup rec
9 /// \class AliMUONDetElement
10 /// \brief Detection element object containing information for combined 
11 /// cluster / track finder in the MUON arm 
12 ///
13 /// \author Alexander Zinchenko, JINR Dubna
14  
15 #include <TObject.h>
16 class TObjArray;
17 class TClonesArray;
18 class AliMUONDigit;
19 class AliMUONHitMapA1;
20 class AliMUONSegmentation;
21 class AliMUONGeometrySegmentation;
22 class AliMUONData;
23 class AliMUONRawCluster;
24 class AliMUONClusterFinderAZ;
25
26 class AliMUONDetElement : public TObject 
27 {
28  public:
29
30   AliMUONDetElement();
31   AliMUONDetElement(Int_t idDE, AliMUONDigit *dig, 
32                     AliMUONClusterFinderAZ *recModel, AliMUONSegmentation* segmentation); // constructor
33   virtual ~AliMUONDetElement(); // Destructor
34
35   Int_t IdDE(void) const { return fidDE; } // det. elem. ID
36   Int_t Chamber(void) const { return fChamber; } // chamber No
37   Double_t Z(void) const { return fZ; } // Z-coordinate
38   Int_t Left(Int_t cath) const { return fLeft[cath]; } // number of unused digits
39   //Int_t GetMapElem(AliMUONDigit *digit) const; // get map element
40   TObjArray *Digits(Int_t cath) const { return fDigits[cath]; } // array of digits
41   TObjArray *RawClusters() const { return fRawClus; } // array of raw clusters
42   TObjArray *HitsForRec() const { return fHitsForRec; } // hits for rec.
43   Int_t NHitsForRec() const { return fNHitsForRec; } // No. of hits for rec.
44   //Bool_t Inside(Double_t x, Double_t y, Double_t z) const; // check if point inside DE
45   Bool_t Inside(Double_t x, Double_t y, Double_t z, Double_t dx, Double_t dy) const; // check if point inside DE
46   
47   void SetID(Int_t idDE) { fidDE = idDE; } // set det. elem. ID
48   void SetIndex(Int_t index) { fIndex = index; } // set position index
49   void SetZ(Double_t z) { fZ = z; } // set Z-coord.
50   void SetLeft(Int_t cath, Int_t left) { fLeft[cath] = left; } // set No. of digits
51   //void SetMapElem(const AliMUONDigit *digit, Int_t flag); // set map element 
52   void AddDigit(AliMUONDigit *dig); // add digit
53   void Fill(AliMUONData *data); // fill hit maps 
54   void ClusterReco(Double_t x, Double_t y, Double_t dx, Double_t dy); // run cluster reco around (x,y)
55   void AddHitForRec(AliMUONRawCluster *clus); // make HitForRec
56   // What is necessary for sorting TObjArray's
57   Bool_t IsSortable() const { return kTRUE; }
58   Int_t Compare(const TObject* detElem) const; // "Compare" function for sorting
59
60  private:
61   Int_t fidDE; ///< det. elem. ID
62   Int_t fIndex; ///< det. elem. position index in container
63   Int_t fChamber; ///< chamber No
64   Double_t fZ; ///< det. elem. Z-coordinate
65   Int_t fLeft[2]; ///< numbers of digits not used for clustering
66   Int_t fNHitsForRec; ///< number of hits for rec.
67   AliMUONGeometrySegmentation* fSeg[2]; ///< segmentation
68   AliMUONHitMapA1 *fHitMap[2]; ///< map of digits
69   TObjArray *fDigits[2]; ///< container of digits from this det. elem.
70   TObjArray *fRawClus; ///< raw clusters
71   TObjArray *fHitsForRec; ///< HitForRec's
72   AliMUONClusterFinderAZ *fRecModel; ///< cluster finder
73
74   // Functions
75   AliMUONDetElement(const AliMUONDetElement & rhs); // copy constructor
76   AliMUONDetElement& operator = (const AliMUONDetElement& rhs); // assignment operator
77
78   ClassDef(AliMUONDetElement,0) // detection element object
79     };
80 #endif