1 #ifndef ALIMUONSEGMENTATIONDETECTIONELEMENT_H
2 #define ALIMUONSEGMENTATIONDETECTIONELEMENT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //===========================================================
9 // Segmentation classes for MUON Detection Elements
10 // Gines MARTINEZ, SUBATECH July 04
11 // This class interfaces with the mapping and segmentation
13 // This files are placed by default in
14 // $ALICE_ROOT/MUON/mapping/data/Stationxxx/yyy_plane/
15 // There are in tracking 23 types of detection elements
16 // 8 SectorSt1, 8 SectorSt2, 2 122000SR1, 2 122000NR1, 4 112200SR2, 4 112200NR2
17 // 4 122200S, 4 122200N, 8 222000N,8 220000N, 8 330000N, 4 122300N, 8 112230NR3
18 // 8 112230N, 8 222330N, 8 223300N, 16 333000N, 4 122330N, 8 112233NR3, 8 112233N
19 // 8 222333N, 8 223330N, 8 333300N
20 // Detailed information in Alice Technical Note xxxxxxxx (2004)
21 //===========================================================
22 #include <Riostream.h>
32 class AliMUONSegmentManuIndex;
33 class AliMUONSegmentPosition;
34 class AliMUONSegmentIndex;
36 class AliMUONSegmentationDetectionElement : public TObject {
38 AliMUONSegmentationDetectionElement();
39 //AliMUONSegmentationDetectionElement(const char* ElementType="");
40 virtual ~AliMUONSegmentationDetectionElement();
43 AliMUONSegmentIndex * GetIndex(Int_t manu, Int_t channel) const;
44 AliMUONSegmentIndex * GetIndexFromPosition(Float_t x, Float_t y, Int_t icathode) const;
45 AliMUONSegmentManuIndex * GetManuIndex( Int_t padx, Int_t pady, Int_t cathode) const ;
46 AliMUONSegmentPosition * GetPosition(Int_t padx, Int_t pady, Int_t cathode) const ;
49 AliMUONSegmentIndex * GetIndex( const char * SegmentManuIndexName)const;
50 AliMUONSegmentIndex * GetIndexFromPosition( const char * PositionName)const;
51 AliMUONSegmentManuIndex * GetManuIndex( const char * SegmentIndexName) const;
52 AliMUONSegmentPosition * GetPosition( const char * SegmentIndexName) const;
53 TObjArray * ListOfIndexes() {return fListOfIndexes;}
54 TObjArray * ListOfManuIndexes() {return fListOfIndexes;}
55 TObjArray * ListOfPositions() {return fListOfIndexes;}
57 AliMUONSegmentManuIndex * FindManuIndex(const char* ManuIndexName="") const;
58 AliMUONSegmentIndex * FindIndex(const char* IndexName="") const;
60 AliMUONSegmentIndex * FindIndexFromPosition(Float_t x, Float_t y, Int_t cathode) const;
62 void Init(const char * DetectionElementType="slat220000N");
64 void ReadingSegmentationMappingFile(TString infile, Int_t cathode);
67 AliMUONSegmentationDetectionElement(const AliMUONSegmentationDetectionElement& rhs);
70 // static data members
71 static const TString fgkDefaultTop; // Top directory of $Alice_ROOT/MUON/mapping
72 static const TString fgkStationDir; // Directory for station station1, station2, station345
73 static const TString fgkBendingDir; //bending plane directory
74 static const TString fgkNonBendingDir; //non-bending plane directory
75 static const TString fgkFileExt; // File extention
76 static const TString fgkBendingExt; // bending file extention
77 static const TString fgkNonBendingExt; // bending file extention
80 TString fDetectionElementType; // Type of detection element St1Sector, slat220000N, etc ....
81 TString fSegmentationMappingFileBending; // Segmentation & mapping file for bending plane
82 TString fSegmentationMappingFileNonBending; // Segmentation & mapping file for non bending plane
83 TObjArray * fListOfIndexes; // TObject Array fo AliMUONSegmentIndex
84 TObjArray * fListOfManuIndexes; // TObject Array fo AliMUONSegmentManuIndex
85 TObjArray * fListOfPositions; // TObject Array fo AliMUONSegmentPositions
86 TMap * fMapManuIndexIndex; // Map with key ManuIndex and value = Index
87 TMap * fMapIndexManuIndex;// Map with key ManuIndexIndex and value = ManuIndex
88 TMap * fMapIndexPosition;// Map with key Index and value = Position
89 TMap * fMapPositionIndex;// Map with key Index and value = Position
92 ClassDef(AliMUONSegmentationDetectionElement,1) // Segmentation for MUON detection elements