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 */
9 /// \class AliMUONDetElement
10 /// \brief Detection element object containing information for combined
11 /// cluster / track finder in MUON arm
13 /// \author Alexander Zinchenko, JINR Dubna
19 class AliMUONHitMapA1;
20 class AliMUONGeometrySegmentation;
22 class AliMUONRawCluster;
23 class AliMUONClusterFinderAZ;
25 class AliMUONDetElement : public TObject
30 AliMUONDetElement(Int_t idDE, AliMUONDigit *dig, AliMUONClusterFinderAZ *recModel); // constructor
31 virtual ~AliMUONDetElement(); // Destructor
33 Int_t IdDE(void) const { return fidDE; } // det. elem. ID
34 Int_t Chamber(void) const { return fChamber; } // chamber No
35 Double_t Z(void) const { return fZ; } // Z-coordinate
36 Int_t Left(Int_t cath) const { return fLeft[cath]; } // number of unused digits
37 //Int_t GetMapElem(AliMUONDigit *digit) const; // get map element
38 TObjArray *Digits(Int_t cath) const { return fDigits[cath]; } // array of digits
39 TObjArray *RawClusters() const { return fRawClus; } // array of raw clusters
40 TClonesArray *HitsForRec() const { return fHitsForRec; } // hits for rec.
41 Int_t NHitsForRec() const { return fNHitsForRec; } // No. of hits for rec.
42 Bool_t Inside(Double_t x, Double_t y, Double_t z) const; // check if point inside DE
44 void SetID(Int_t idDE) { fidDE = idDE; } // set det. elem. ID
45 void SetIndex(Int_t index) { fIndex = index; } // set position index
46 void SetZ(Double_t z) { fZ = z; } // set Z-coord.
47 void SetLeft(Int_t cath, Int_t left) { fLeft[cath] = left; } // set No. of digits
48 //void SetMapElem(const AliMUONDigit *digit, Int_t flag); // set map element
49 void AddDigit(AliMUONDigit *dig); // add digit
50 void Fill(AliMUONData *data); // fill hit maps
51 void ClusterReco(Double_t x, Double_t y); // run cluster reco around (x,y)
52 void AddHitForRec(AliMUONRawCluster *clus); // make HitForRec
53 // What is necessary for sorting TObjArray's
54 Bool_t IsSortable() const { return kTRUE; }
55 Int_t Compare(const TObject* detElem) const; // "Compare" function for sorting
59 Int_t fidDE; ///< det. elem. ID
60 Int_t fIndex; ///< det. elem. position index in container
61 Int_t fChamber; ///< chamber No
62 Double_t fZ; ///< det. elem. Z-coordinate
63 Int_t fLeft[2]; ///< numbers of digits not used for clustering
64 Int_t fNHitsForRec; ///< number of hits for rec.
65 AliMUONGeometrySegmentation* fSeg[2]; ///< segmentation
66 AliMUONHitMapA1 *fHitMap[2]; ///< map of digits
67 TObjArray *fDigits[2]; ///< container of digits from this det. elem.
68 TObjArray *fRawClus; ///< raw clusters
69 TClonesArray *fHitsForRec; ///< HitForRec's
70 AliMUONClusterFinderAZ *fRecModel; ///< cluster finder
73 AliMUONDetElement(const AliMUONDetElement & rhs); // copy constructor
74 AliMUONDetElement& operator = (const AliMUONDetElement& rhs); // assignment operator
76 ClassDef(AliMUONDetElement,0) // detection element object