Coding violations corrected
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationDetectionElement.h
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                               */
5
6 /* $Id$ */
7
8 //===========================================================
9 //  Segmentation classes for MUON Detection Elements      
10 //        Gines MARTINEZ, SUBATECH July 04                
11 //  This class interfaces with the mapping and segmentation
12 //  files MUON.
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>
23
24
25 #include <TObject.h>
26 #include <TString.h>
27 #include <TArrayF.h>
28
29 class TClonesArray;
30 class TMap;
31
32 class AliMUONSegmentManuIndex;
33 class AliMUONSegmentPosition;
34 class AliMUONSegmentIndex;
35
36 class AliMUONSegmentationDetectionElement : public TObject {
37  public:
38   AliMUONSegmentationDetectionElement();
39   //AliMUONSegmentationDetectionElement(const char* ElementType="");
40   virtual ~AliMUONSegmentationDetectionElement();
41
42   // User functions
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 ;
47
48   
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;}
56  
57   AliMUONSegmentManuIndex * FindManuIndex(const char* ManuIndexName="") const;
58   AliMUONSegmentIndex * FindIndex(const char* IndexName="") const;
59
60   AliMUONSegmentIndex * FindIndexFromPosition(Float_t x, Float_t y, Int_t cathode) const;
61   
62   void     Init(const char * DetectionElementType="slat220000N");
63
64   void     ReadingSegmentationMappingFile(TString infile, Int_t cathode);
65   
66  protected:
67   AliMUONSegmentationDetectionElement(const AliMUONSegmentationDetectionElement& rhs);
68   
69  private:
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
78
79   // data members
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
90   
91
92   ClassDef(AliMUONSegmentationDetectionElement,1) // Segmentation for MUON detection elements
93     
94     };
95 #endif
96
97
98
99
100
101