7dc66217398ff461024a5fa67f31bbd88d08f3b8
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1Response.h
1 #ifndef ALI_MUON_ST1_RESPONSE_H
2 #define ALI_MUON_ST1_RESPONSE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 // Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
10 //
11 // Class AliMUONSt1Response
12 // ----------------------------
13 // Response class for station 1 including electronics and detector response. 
14 // Individual pedestals or noise levels can be controlled separately. 
15 // The current pulse height responses do not contain any physics
16
17 #include <string>
18 #include <map>
19 #include <TString.h>
20 #include <TList.h>
21 #include "AliMUONResponseV0.h"
22 #include "AliMUONSt1ElectronicElement.h"
23
24 using std::string;
25 using std::map;
26
27 class MPlane;
28 class MPlaneSegmentation;
29 class MZone;
30 class MSector;
31 class TArrayF;
32 class TObjArray;
33 class AliMUONSt1ResponseParameter;
34
35 class AliMUONSt1Response : public AliMUONResponseV0 
36 {
37 public:
38     AliMUONSt1Response(Int_t chamber=1);
39     virtual ~AliMUONSt1Response();
40     
41     //
42     // Configuration methods
43     //
44     void SetIniFileName(Int_t plane,const TString& fileName);
45
46     virtual Float_t  IntPH(Float_t eloss);
47
48     // Noise, zero-suppression, adc saturation
49     virtual Int_t DigitResponse(Int_t digit,AliMUONTransientDigit* where);
50     void PrintStatistics() const;
51
52
53  protected:
54
55    //private types
56     typedef map<string,AliMUONSt1ResponseParameter*> TParamsMap;
57     typedef map<string,TList*> TListMap;
58     static const Int_t fgkNofZones=4;
59     static const TString fgkConfigBaseName;
60     static const TString fgkStandardIniFileName;
61
62     // static names
63     static const TString fgkBaseName ;
64     static const TString fgkIncludeName ;
65     static const TString fgkParameterName ;
66     static const TString fgkRegionName ;
67     static const TString fgkRuleName ;
68     static const TString fgkNameName ;
69     static const TString fgkPedestalName ;
70     static const TString fgkNoiseName ;
71     static const TString fgkStateName ;
72     static const TString fgkMName ;
73     static const TString fgkMGName ;
74     static const TString fgkMGCName ;
75     static const TString fgkIJName ;
76     static const TString fgkXYName ;
77     static const TString fgkZoneName ;
78     static const TString fgkStickyOnName ;
79     static const TString fgkStickyOffName ;
80     static const TString fgkFileName ;
81     static const TString fgkValueName ;
82     static const TString fgkGausName ;
83     static const TString fgkNotName ;
84     static const TString fgkNofSigmaName ;
85
86     //protected methods
87     MZone* FindZone(MSector* sector,Int_t posId); // to be moved in MSector::
88     void ReadFiles();
89     void ReadIniFile(Int_t plane,const TString& fileName,Bool_t rdParam,Bool_t rdRegion,Bool_t rdRule);
90     void ReadIniFile(Int_t plane);
91     void ReadCouplesOfIntRanges(const string& value,TList* list,AliMUONSt1ElectronicElement::TDescription descr);
92     void ReadCouplesOfFloatRanges(const string& value,TList* list);
93     void SetPairToParam(const string& name,const string& value,AliMUONSt1ResponseParameter* param) const;
94     void SetPairToListElem(const string& name,const string& value,TList* list);
95
96
97     //data members
98     MPlane* fPlane[2];       // !The mapping planes
99     MPlaneSegmentation* fPlaneSegmentation[2]; // !The mapping plane segmentation
100     TString fIniFileName[2];// file names for initialisation of each cathode
101
102     AliMUONSt1ResponseParameter* fDefaultParameters[2][fgkNofZones]; // !Response for each zone
103     TList fRulesList[2]; //! list of special rules
104
105     Int_t fCountNofCalls;    // number of calls to DigitResponse()
106     Int_t fCountUnknownZone; // ntimes the DigitResponse was called in an unknown zone
107     Int_t fCountUnknownIndices; // ntimes the DigitResponse was called with unknown indices
108
109     Int_t fChamber;                // The chamber number
110
111     TParamsMap fParams;  //! internal parameter list
112     TListMap   fRegions; //! internal list of regions
113     TList      fTrashList; //!internal trash list 
114
115   ClassDef(AliMUONSt1Response,1) // Overall detector response
116 };
117
118 #endif //ALI_MUON_ST1_RESPONSE_H