#ifndef ALIMUONPADSTATUSMAKER_H
#define ALIMUONPADSTATUSMAKER_H
#ifndef ROOT_TObject
# include "TObject.h"
#endif
#ifndef ROOT_TVector2
# include "TVector2.h"
#endif
class TExMap;
class AliMUONCalibrationData;
class AliMUONRecoParam;
class AliMUONVCalibParam;
class AliMUONVTrackerData;
class AliMUONVStore;
using std::ostream;
class AliMUONPadStatusMaker : public TObject
{
public:
AliMUONPadStatusMaker(const AliMUONCalibrationData& calibData);
virtual ~AliMUONPadStatusMaker();
const AliMUONCalibrationData& CalibrationData() const { return fkCalibrationData; }
AliMUONVStore* StatusStore() const { return fStatus; }
AliMUONVCalibParam* PadStatus(Int_t detElemId, Int_t manuId) const;
Int_t PadStatus(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
AliMUONVStore* NeighboursStore() const;
AliMUONVCalibParam* Neighbours(Int_t detElemId, Int_t manuId) const;
static TString AsString(Int_t status);
static TString AsCondition(Int_t status);
TVector2 GainA1Limits() const { return fGainA1Limits; }
TVector2 GainA2Limits() const { return fGainA2Limits; }
TVector2 GainThresLimits() const { return fGainThresLimits; }
Double_t HVLimit(Int_t chamberId) const;
TVector2 PedMeanLimits() const { return fPedMeanLimits; }
TVector2 PedSigmaLimits() const { return fPedSigmaLimits; }
void GainA1Limits(float low, float high) { fGainA1Limits.Set(low,high); }
void GainA2Limits(float low, float high) { fGainA2Limits.Set(low,high); }
void GainThresLimits(float low, float high) { fGainThresLimits.Set(low,high); }
void SetHVLimit(Int_t chamberId, Double_t hv);
void SetPedMeanLimits(float low, float high) { fPedMeanLimits.Set(low,high); }
void SetPedSigmaLimits(float low, float high) { fPedSigmaLimits.Set(low,high); }
void SetGainA1Limits(float low, float high) { fGainA1Limits.Set(low,high); }
void SetGainA2Limits(float low, float high) { fGainA2Limits.Set(low,high); }
void SetGainThresLimits(float low, float high) { fGainThresLimits.Set(low,high); }
void SetManuOccupancyLimits(float low, float high) { fManuOccupancyLimits.Set(low,high); }
TVector2 ManuOccupancyLimits() const { return fManuOccupancyLimits; }
void SetBuspatchOccupancyLimits(float low, float high) { fBuspatchOccupancyLimits.Set(low,high); }
TVector2 BuspatchOccupancyLimits() const { return fBuspatchOccupancyLimits; }
void SetDEOccupancyLimits(float low, float high) { fDEOccupancyLimits.Set(low,high); }
TVector2 DEOccupancyLimits() const { return fDEOccupancyLimits; }
void SetLimits(const AliMUONRecoParam& recoParams);
void Report(UInt_t mask);
static Float_t SwitchValue(const TObjArray& dcsArray);
Int_t HVStatus(Int_t detElemId, Int_t manuId) const;
Int_t OccupancyStatus(Int_t detElemId, Int_t manuId) const;
static void DecodeStatus(Int_t status, Int_t& pedStatus, Int_t& hvStatus,
Int_t& gainStatus, Int_t& otherStatus);
static Int_t BuildStatus(Int_t pedStatus, Int_t hvStatus,
Int_t gainStatus, Int_t otherStatus);
private:
AliMUONPadStatusMaker(const AliMUONPadStatusMaker&);
AliMUONPadStatusMaker& operator=(const AliMUONPadStatusMaker&);
AliMUONVCalibParam* ComputeStatus(Int_t detElemId, Int_t manuId) const;
Bool_t HVSt12Status(Int_t detElemId, Int_t sector,
Bool_t& hvChannelTooLow,
Bool_t& hvChannelTooHigh,
Bool_t& hvChannelON) const;
Bool_t HVSt345Status(Int_t detElemId, Int_t pcbIndex,
Bool_t& hvChannelTooLow,
Bool_t& hvChannelTooHigh,
Bool_t& hvChannelON,
Bool_t& hvSwitchON) const;
void SetHVStatus(Int_t detElemId, Int_t index, Int_t status) const;
private:
enum EGeneralStatus
{
kMissing = (1<<7)
};
enum EGainStatus
{
kGainOK = 0,
kGainA1TooLow = (1<<1),
kGainA1TooHigh = (1<<2),
kGainA2TooLow = (1<<3),
kGainA2TooHigh = (1<<4),
kGainThresTooLow = (1<<5),
kGainThresTooHigh = (1<<6),
kGainMissing = kMissing
};
enum EPedestalStatus
{
kPedOK = 0,
kPedMeanZero = (1<<1),
kPedMeanTooLow = (1<<2),
kPedMeanTooHigh = (1<<3),
kPedSigmaTooLow = (1<<4),
kPedSigmaTooHigh = (1<<5),
kPedMissing = kMissing
};
enum EHVError
{
kHVOK = 0,
kHVError = (1<<0),
kHVTooLow = (1<<1),
kHVTooHigh = (1<<2),
kHVChannelOFF = (1<<3),
kHVSwitchOFF = (1<<4),
kHVMissing = kMissing
};
enum EOccupancyStatus
{
kManuOccupancyTooLow = (1<<1),
kManuOccupancyTooHigh = (1<<2),
kBusPatchOccupancyTooLow = (1<<3),
kBusPatchOccupancyTooHigh = (1<<4),
kDEOccupancyTooLow = (1<<5),
kDEOccupancyTooHigh = (1<<6)
};
const AliMUONCalibrationData& fkCalibrationData;
TVector2 fGainA1Limits;
TVector2 fGainA2Limits;
TVector2 fGainThresLimits;
Double_t fHVLimit[10];
TVector2 fPedMeanLimits;
TVector2 fPedSigmaLimits;
TVector2 fManuOccupancyLimits;
TVector2 fBuspatchOccupancyLimits;
TVector2 fDEOccupancyLimits;
AliMUONVStore* fStatus;
mutable TExMap* fHV;
AliMUONVStore* fPedestals;
AliMUONVStore* fGains;
AliMUONVTrackerData* fTrackerData;
ClassDef(AliMUONPadStatusMaker,0)
};
#endif
AliMUONPadStatusMaker.h:1 AliMUONPadStatusMaker.h:2 AliMUONPadStatusMaker.h:3 AliMUONPadStatusMaker.h:4 AliMUONPadStatusMaker.h:5 AliMUONPadStatusMaker.h:6 AliMUONPadStatusMaker.h:7 AliMUONPadStatusMaker.h:8 AliMUONPadStatusMaker.h:9 AliMUONPadStatusMaker.h:10 AliMUONPadStatusMaker.h:11 AliMUONPadStatusMaker.h:12 AliMUONPadStatusMaker.h:13 AliMUONPadStatusMaker.h:14 AliMUONPadStatusMaker.h:15 AliMUONPadStatusMaker.h:16 AliMUONPadStatusMaker.h:17 AliMUONPadStatusMaker.h:18 AliMUONPadStatusMaker.h:19 AliMUONPadStatusMaker.h:20 AliMUONPadStatusMaker.h:21 AliMUONPadStatusMaker.h:22 AliMUONPadStatusMaker.h:23 AliMUONPadStatusMaker.h:24 AliMUONPadStatusMaker.h:25 AliMUONPadStatusMaker.h:26 AliMUONPadStatusMaker.h:27 AliMUONPadStatusMaker.h:28 AliMUONPadStatusMaker.h:29 AliMUONPadStatusMaker.h:30 AliMUONPadStatusMaker.h:31 AliMUONPadStatusMaker.h:32 AliMUONPadStatusMaker.h:33 AliMUONPadStatusMaker.h:34 AliMUONPadStatusMaker.h:35 AliMUONPadStatusMaker.h:36 AliMUONPadStatusMaker.h:37 AliMUONPadStatusMaker.h:38 AliMUONPadStatusMaker.h:39 AliMUONPadStatusMaker.h:40 AliMUONPadStatusMaker.h:41 AliMUONPadStatusMaker.h:42 AliMUONPadStatusMaker.h:43 AliMUONPadStatusMaker.h:44 AliMUONPadStatusMaker.h:45 AliMUONPadStatusMaker.h:46 AliMUONPadStatusMaker.h:47 AliMUONPadStatusMaker.h:48 AliMUONPadStatusMaker.h:49 AliMUONPadStatusMaker.h:50 AliMUONPadStatusMaker.h:51 AliMUONPadStatusMaker.h:52 AliMUONPadStatusMaker.h:53 AliMUONPadStatusMaker.h:54 AliMUONPadStatusMaker.h:55 AliMUONPadStatusMaker.h:56 AliMUONPadStatusMaker.h:57 AliMUONPadStatusMaker.h:58 AliMUONPadStatusMaker.h:59 AliMUONPadStatusMaker.h:60 AliMUONPadStatusMaker.h:61 AliMUONPadStatusMaker.h:62 AliMUONPadStatusMaker.h:63 AliMUONPadStatusMaker.h:64 AliMUONPadStatusMaker.h:65 AliMUONPadStatusMaker.h:66 AliMUONPadStatusMaker.h:67 AliMUONPadStatusMaker.h:68 AliMUONPadStatusMaker.h:69 AliMUONPadStatusMaker.h:70 AliMUONPadStatusMaker.h:71 AliMUONPadStatusMaker.h:72 AliMUONPadStatusMaker.h:73 AliMUONPadStatusMaker.h:74 AliMUONPadStatusMaker.h:75 AliMUONPadStatusMaker.h:76 AliMUONPadStatusMaker.h:77 AliMUONPadStatusMaker.h:78 AliMUONPadStatusMaker.h:79 AliMUONPadStatusMaker.h:80 AliMUONPadStatusMaker.h:81 AliMUONPadStatusMaker.h:82 AliMUONPadStatusMaker.h:83 AliMUONPadStatusMaker.h:84 AliMUONPadStatusMaker.h:85 AliMUONPadStatusMaker.h:86 AliMUONPadStatusMaker.h:87 AliMUONPadStatusMaker.h:88 AliMUONPadStatusMaker.h:89 AliMUONPadStatusMaker.h:90 AliMUONPadStatusMaker.h:91 AliMUONPadStatusMaker.h:92 AliMUONPadStatusMaker.h:93 AliMUONPadStatusMaker.h:94 AliMUONPadStatusMaker.h:95 AliMUONPadStatusMaker.h:96 AliMUONPadStatusMaker.h:97 AliMUONPadStatusMaker.h:98 AliMUONPadStatusMaker.h:99 AliMUONPadStatusMaker.h:100 AliMUONPadStatusMaker.h:101 AliMUONPadStatusMaker.h:102 AliMUONPadStatusMaker.h:103 AliMUONPadStatusMaker.h:104 AliMUONPadStatusMaker.h:105 AliMUONPadStatusMaker.h:106 AliMUONPadStatusMaker.h:107 AliMUONPadStatusMaker.h:108 AliMUONPadStatusMaker.h:109 AliMUONPadStatusMaker.h:110 AliMUONPadStatusMaker.h:111 AliMUONPadStatusMaker.h:112 AliMUONPadStatusMaker.h:113 AliMUONPadStatusMaker.h:114 AliMUONPadStatusMaker.h:115 AliMUONPadStatusMaker.h:116 AliMUONPadStatusMaker.h:117 AliMUONPadStatusMaker.h:118 AliMUONPadStatusMaker.h:119 AliMUONPadStatusMaker.h:120 AliMUONPadStatusMaker.h:121 AliMUONPadStatusMaker.h:122 AliMUONPadStatusMaker.h:123 AliMUONPadStatusMaker.h:124 AliMUONPadStatusMaker.h:125 AliMUONPadStatusMaker.h:126 AliMUONPadStatusMaker.h:127 AliMUONPadStatusMaker.h:128 AliMUONPadStatusMaker.h:129 AliMUONPadStatusMaker.h:130 AliMUONPadStatusMaker.h:131 AliMUONPadStatusMaker.h:132 AliMUONPadStatusMaker.h:133 AliMUONPadStatusMaker.h:134 AliMUONPadStatusMaker.h:135 AliMUONPadStatusMaker.h:136 AliMUONPadStatusMaker.h:137 AliMUONPadStatusMaker.h:138 AliMUONPadStatusMaker.h:139 AliMUONPadStatusMaker.h:140 AliMUONPadStatusMaker.h:141 AliMUONPadStatusMaker.h:142 AliMUONPadStatusMaker.h:143 AliMUONPadStatusMaker.h:144 AliMUONPadStatusMaker.h:145 AliMUONPadStatusMaker.h:146 AliMUONPadStatusMaker.h:147 AliMUONPadStatusMaker.h:148 AliMUONPadStatusMaker.h:149 AliMUONPadStatusMaker.h:150 AliMUONPadStatusMaker.h:151 AliMUONPadStatusMaker.h:152 AliMUONPadStatusMaker.h:153 AliMUONPadStatusMaker.h:154 AliMUONPadStatusMaker.h:155 AliMUONPadStatusMaker.h:156 AliMUONPadStatusMaker.h:157 AliMUONPadStatusMaker.h:158 AliMUONPadStatusMaker.h:159 AliMUONPadStatusMaker.h:160 AliMUONPadStatusMaker.h:161 AliMUONPadStatusMaker.h:162 AliMUONPadStatusMaker.h:163 AliMUONPadStatusMaker.h:164 AliMUONPadStatusMaker.h:165 AliMUONPadStatusMaker.h:166 AliMUONPadStatusMaker.h:167 AliMUONPadStatusMaker.h:168 AliMUONPadStatusMaker.h:169 AliMUONPadStatusMaker.h:170 AliMUONPadStatusMaker.h:171 AliMUONPadStatusMaker.h:172 AliMUONPadStatusMaker.h:173 AliMUONPadStatusMaker.h:174 AliMUONPadStatusMaker.h:175 AliMUONPadStatusMaker.h:176 AliMUONPadStatusMaker.h:177 AliMUONPadStatusMaker.h:178 AliMUONPadStatusMaker.h:179 AliMUONPadStatusMaker.h:180 AliMUONPadStatusMaker.h:181 AliMUONPadStatusMaker.h:182 AliMUONPadStatusMaker.h:183 AliMUONPadStatusMaker.h:184 AliMUONPadStatusMaker.h:185 AliMUONPadStatusMaker.h:186 AliMUONPadStatusMaker.h:187 AliMUONPadStatusMaker.h:188 AliMUONPadStatusMaker.h:189 AliMUONPadStatusMaker.h:190 AliMUONPadStatusMaker.h:191 AliMUONPadStatusMaker.h:192 AliMUONPadStatusMaker.h:193 AliMUONPadStatusMaker.h:194 AliMUONPadStatusMaker.h:195 AliMUONPadStatusMaker.h:196 AliMUONPadStatusMaker.h:197 AliMUONPadStatusMaker.h:198 AliMUONPadStatusMaker.h:199 AliMUONPadStatusMaker.h:200 AliMUONPadStatusMaker.h:201 AliMUONPadStatusMaker.h:202 AliMUONPadStatusMaker.h:203 AliMUONPadStatusMaker.h:204 AliMUONPadStatusMaker.h:205 AliMUONPadStatusMaker.h:206 AliMUONPadStatusMaker.h:207 AliMUONPadStatusMaker.h:208 AliMUONPadStatusMaker.h:209 AliMUONPadStatusMaker.h:210 AliMUONPadStatusMaker.h:211 AliMUONPadStatusMaker.h:212 AliMUONPadStatusMaker.h:213 AliMUONPadStatusMaker.h:214 AliMUONPadStatusMaker.h:215 AliMUONPadStatusMaker.h:216 AliMUONPadStatusMaker.h:217 AliMUONPadStatusMaker.h:218 AliMUONPadStatusMaker.h:219 AliMUONPadStatusMaker.h:220 AliMUONPadStatusMaker.h:221 AliMUONPadStatusMaker.h:222 AliMUONPadStatusMaker.h:223 AliMUONPadStatusMaker.h:224 AliMUONPadStatusMaker.h:225 AliMUONPadStatusMaker.h:226 AliMUONPadStatusMaker.h:227 AliMUONPadStatusMaker.h:228 AliMUONPadStatusMaker.h:229 AliMUONPadStatusMaker.h:230 AliMUONPadStatusMaker.h:231 AliMUONPadStatusMaker.h:232