]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegmentationDetectionElement.h
- Modified comment lines to be compatible with Doxygen
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationDetectionElement.h
CommitLineData
74f8c8e3 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
692de412 8/// \ingroup base
9/// \class AliMUONSegmentationDetectionElement
10/// \brief Segmentation class for detection element
11
74f8c8e3 12//===========================================================
13// Segmentation classes for MUON Detection Elements
14// Gines MARTINEZ, SUBATECH July 04
15// This class interfaces with the mapping and segmentation
16// files MUON.
17// This files are placed by default in
18// $ALICE_ROOT/MUON/mapping/data/Stationxxx/yyy_plane/
19// There are in tracking 23 types of detection elements
20// 8 SectorSt1, 8 SectorSt2, 2 122000SR1, 2 122000NR1, 4 112200SR2, 4 112200NR2
21// 4 122200S, 4 122200N, 8 222000N,8 220000N, 8 330000N, 4 122300N, 8 112230NR3
22// 8 112230N, 8 222330N, 8 223300N, 16 333000N, 4 122330N, 8 112233NR3, 8 112233N
23// 8 222333N, 8 223330N, 8 333300N
24// Detailed information in Alice Technical Note xxxxxxxx (2004)
25//===========================================================
26#include <Riostream.h>
27
74f8c8e3 28#include <TString.h>
6b74910d 29
30#include "AliSegmentation.h"
74f8c8e3 31
32class TClonesArray;
33class TMap;
34
35class AliMUONSegmentManuIndex;
36class AliMUONSegmentPosition;
37class AliMUONSegmentIndex;
38
39class AliMUONSegmentationDetectionElement : public TObject {
40 public:
41 AliMUONSegmentationDetectionElement();
42 //AliMUONSegmentationDetectionElement(const char* ElementType="");
43 virtual ~AliMUONSegmentationDetectionElement();
212bb69d 44
6b74910d 45 // User common functions
46
47 AliMUONSegmentIndex * FindIndexFromPosition(Float_t x, Float_t y, Int_t cathode);
212bb69d 48 AliMUONSegmentIndex * GetIndex(Int_t manu, Int_t channel) const;
6b74910d 49 AliMUONSegmentIndex * GetIndexFromPosition(Float_t x, Float_t y, Int_t cathode) const;
212bb69d 50 AliMUONSegmentManuIndex * GetManuIndex( Int_t padx, Int_t pady, Int_t cathode) const ;
51 AliMUONSegmentPosition * GetPosition(Int_t padx, Int_t pady, Int_t cathode) const ;
6b74910d 52 TObjArray * ListOfIndexes() {return fListOfIndexes;}
53 TObjArray * ListOfManuIndexes() {return fListOfManuIndexes;}
54 TObjArray * ListOfPositions() {return fListOfPositions;}
74f8c8e3 55
6b74910d 56 void Init(const char * DetectionElementType="slat220000N");
57 void ReadingSegmentationMappingFile(TString infile, Int_t cathode);
58
59 // virtual functions from AliSegmentation. In future this class should derive from AliSegmentation
60 Float_t GetAnod(Float_t xhit) const; // Anod wire coordinate closest to xhit
61 void SetDAnod(Float_t D) {fWireD = D;}; // Wire Pitch
62 void GetPadI(Float_t x, Float_t y , Int_t cathode, Int_t &padx, Int_t &pady); // Transform from Position to closest Index
63 void GetPadC(Int_t ix, Int_t iy, Int_t cathode, Float_t &x, Float_t &y ); // Transform from Index to Position
64/* void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);// Initialiser */
65/* void NextPad(); // Stepper */
66/* Int_t MorePads(); // Condition */
67/* void Neighbours(Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]); // Get next neighbours */
68
69 protected:
212bb69d 70 AliMUONSegmentIndex * GetIndex( const char * SegmentManuIndexName)const;
71 AliMUONSegmentIndex * GetIndexFromPosition( const char * PositionName)const;
72 AliMUONSegmentManuIndex * GetManuIndex( const char * SegmentIndexName) const;
73 AliMUONSegmentPosition * GetPosition( const char * SegmentIndexName) const;
212bb69d 74 AliMUONSegmentManuIndex * FindManuIndex(const char* ManuIndexName="") const;
6b74910d 75 AliMUONSegmentIndex * FindIndex(const char* IndexName="") const;
212bb69d 76
74f8c8e3 77 AliMUONSegmentationDetectionElement(const AliMUONSegmentationDetectionElement& rhs);
78
79 private:
80 // static data members
212bb69d 81 static const TString fgkDefaultTop; // Top directory of $Alice_ROOT/MUON/mapping
82 static const TString fgkStationDir; // Directory for station station1, station2, station345
74f8c8e3 83 static const TString fgkBendingDir; //bending plane directory
84 static const TString fgkNonBendingDir; //non-bending plane directory
85 static const TString fgkFileExt; // File extention
86 static const TString fgkBendingExt; // bending file extention
87 static const TString fgkNonBendingExt; // bending file extention
88
89 // data members
6b74910d 90 Float_t fWireD; // Wire pitch in cm
91 Float_t fWireX0; // Initial X0 position in local coordinates of the first wire
92 Int_t fCurrentSegment;// Index of the current segment
93 TString fDetectionElementType; // Type of detection element St1Sector, slat220000N, etc ....
94 TString fSegmentationMappingFileBending; // Segmentation & mapping file for bending plane
95 TString fSegmentationMappingFileNonBending; // Segmentation & mapping file for non bending plane
212bb69d 96 TObjArray * fListOfIndexes; // TObject Array fo AliMUONSegmentIndex
97 TObjArray * fListOfManuIndexes; // TObject Array fo AliMUONSegmentManuIndex
98 TObjArray * fListOfPositions; // TObject Array fo AliMUONSegmentPositions
6b74910d 99 TMap * fMapManuIndexIndex; // Map with key ManuIndex and value = Index
100 TMap * fMapIndexManuIndex;// Map with key ManuIndexIndex and value = ManuIndex
101 TMap * fMapIndexPosition;// Map with key Index and value = Position
102 TMap * fMapPositionIndex;// Map with key Index and value = Position
74f8c8e3 103
104 ClassDef(AliMUONSegmentationDetectionElement,1) // Segmentation for MUON detection elements
105
106 };
107#endif
108
109
110
111
112
113