]>
Commit | Line | Data |
---|---|---|
2c780493 | 1 | #ifndef ALIMUONPADSTATUSMAKER_H |
2 | #define ALIMUONPADSTATUSMAKER_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 | ||
1ed747b4 | 9 | /// \ingroup rec |
2c780493 | 10 | /// \class AliMUONPadStatusMaker |
11 | /// \brief Make a 2DStore of pad statuses, using different sources of information | |
12 | /// | |
78649106 | 13 | // Author Laurent Aphecetche |
2c780493 | 14 | |
15 | #ifndef ROOT_TObject | |
16 | # include "TObject.h" | |
17 | #endif | |
18 | #ifndef ROOT_TVector2 | |
19 | # include "TVector2.h" | |
20 | #endif | |
21 | ||
22 | class AliMUONCalibrationData; | |
8d8e920c | 23 | class AliMUONVStore; |
2c780493 | 24 | class TMap; |
25 | ||
26 | class AliMUONPadStatusMaker : public TObject | |
27 | { | |
28 | public: | |
29 | AliMUONPadStatusMaker(const AliMUONCalibrationData& calibData); | |
30 | virtual ~AliMUONPadStatusMaker(); | |
31 | ||
8d8e920c | 32 | AliMUONVStore* MakeGainStatus(const AliMUONVStore& gainValues) const; |
2c780493 | 33 | |
8d8e920c | 34 | AliMUONVStore* MakeHVStatus(const TMap& hvMap) const; |
2c780493 | 35 | |
8d8e920c | 36 | AliMUONVStore* MakePedestalStatus(const AliMUONVStore& pedValues) const; |
2c780493 | 37 | |
96199305 | 38 | /// Produces a status store. Should not return 0x0. |
8d8e920c | 39 | AliMUONVStore* MakeStatus() const; |
2c780493 | 40 | |
8d8e920c | 41 | static AliMUONVStore* GeneratePadStatus(Int_t value); |
96199305 | 42 | |
71a2d3aa | 43 | /// Return Low and High threshold for St12 HV |
2c780493 | 44 | TVector2 HVSt12Limits() const { return fHVSt12Limits; } |
71a2d3aa | 45 | /// Return Low and High threshold for St345 HV |
2c780493 | 46 | TVector2 HVSt345Limits() const { return fHVSt345Limits; } |
47 | ||
71a2d3aa | 48 | /// Return Low and High threshold for pedestal mean |
2c780493 | 49 | TVector2 PedMeanLimits() const { return fPedMeanLimits; } |
71a2d3aa | 50 | /// Return Low and High threshold for pedestal sigma |
2c780493 | 51 | TVector2 PedSigmaLimits() const { return fPedSigmaLimits; } |
52 | ||
71a2d3aa | 53 | /// Set Low and High threshold for St12 HV |
2c780493 | 54 | void SetHVSt12Limits(float low, float high) { fHVSt12Limits.Set(low,high); } |
71a2d3aa | 55 | /// Set Low and High threshold for St345 HV |
2c780493 | 56 | void SetHVSt345Limits(float low, float high) { fHVSt345Limits.Set(low,high); } |
57 | ||
71a2d3aa | 58 | /// Set Low and High threshold for pedestal mean |
2c780493 | 59 | void SetPedMeanLimits(float low, float high) { fPedMeanLimits.Set(low,high); } |
71a2d3aa | 60 | /// Set Low and High threshold for pedestal sigma |
2c780493 | 61 | void SetPedSigmaLimits(float low, float high) { fPedSigmaLimits.Set(low,high); } |
62 | ||
63 | private: | |
71a2d3aa | 64 | /// Not implemented |
2c780493 | 65 | AliMUONPadStatusMaker(const AliMUONPadStatusMaker&); |
71a2d3aa | 66 | /// Not implemented |
2c780493 | 67 | AliMUONPadStatusMaker& operator=(const AliMUONPadStatusMaker&); |
68 | ||
69 | private: | |
70 | ||
8d8e920c | 71 | AliMUONVStore* Combine(const AliMUONVStore& store1, |
72 | const AliMUONVStore& store2, | |
2c780493 | 73 | Int_t binShift) const; |
74 | ||
75 | Bool_t GetSt12Status(const TMap& hvMap, Int_t detElemId, Int_t sector, | |
76 | Bool_t& hvChannelTooLow, | |
77 | Bool_t& hvChannelTooHigh, | |
78 | Bool_t& hvChannelON) const; | |
79 | ||
80 | ||
81 | Bool_t GetSt345Status(const TMap& hvMap, Int_t detElemId, Int_t pcbIndex, | |
82 | Bool_t& hvChannelTooLow, | |
83 | Bool_t& hvChannelTooHigh, | |
84 | Bool_t& hvChannelON, | |
85 | Bool_t& hvSwitchON) const; | |
86 | ||
8d8e920c | 87 | void SetStatusSt12(AliMUONVStore& hvStatus, |
2c780493 | 88 | Int_t detElemId, Int_t sector, Int_t status) const; |
89 | ||
8d8e920c | 90 | void SetStatusSt345(AliMUONVStore& hvStatus, |
2c780493 | 91 | Int_t detElemId, Int_t pcbIndex, Int_t status) const; |
92 | ||
93 | ||
94 | private: | |
71a2d3aa | 95 | /// General status |
96199305 | 96 | enum EGeneralStatus |
97 | { | |
98 | kMissing = (1<<7) | |
99 | }; | |
100 | ||
71a2d3aa | 101 | /// Pedestal status |
2c780493 | 102 | enum EPedestalStatus |
103 | { | |
104 | kPedOK = 0, | |
105 | kPedMeanZero = (1<<1), | |
106 | kPedMeanTooLow = (1<<2), | |
107 | kPedMeanTooHigh = (1<<3), | |
108 | kPedSigmaTooLow = (1<<4), | |
96199305 | 109 | kPedSigmaTooHigh = (1<<5), |
110 | ||
111 | kPedMissing = kMissing // please always use last bit for meaning "missing" | |
2c780493 | 112 | }; |
113 | ||
71a2d3aa | 114 | /// HV Error |
2c780493 | 115 | enum EHVError |
116 | { | |
117 | kHVOK = 0, | |
118 | kHVError = (1<<0), | |
119 | kHVTooLow = (1<<1), | |
120 | kHVTooHigh = (1<<2), | |
121 | kHVChannelOFF = (1<<3), | |
96199305 | 122 | kHVSwitchOFF = (1<<4), |
123 | ||
124 | kHVMissing = kMissing // please always use last bit for meaning "missing" | |
2c780493 | 125 | }; |
126 | ||
127 | const AliMUONCalibrationData& fCalibrationData; //!< helper class to get data access (not owner) | |
128 | TVector2 fPedMeanLimits; //!< Low and High threshold for pedestal mean | |
129 | TVector2 fPedSigmaLimits; //!< Low and High threshold for pedestal sigma | |
130 | ||
131 | TVector2 fHVSt12Limits; //!< Low and High threshold for St12 HV | |
132 | TVector2 fHVSt345Limits; //!< Low and High threshold for St345 HV | |
133 | ||
134 | ClassDef(AliMUONPadStatusMaker,0) // Creates pad statuses from ped,gain,hv | |
135 | }; | |
136 | ||
137 | #endif |