#ifndef ALICALOCALIBPEDESTAL_H
#define ALICALOCALIBPEDESTAL_H
#include "TProfile.h"
#include "TProfile2D.h"
#include "TH2.h"
#include "TObjArray.h"
#include "AliEMCALGeoParams.h"
class AliCaloRawStreamV3;
class AliCaloAltroMapping;
class AliRawReader;
class AliCaloCalibPedestal : public TObject {
public:
enum kDetType {kPhos, kEmCal, kNone};
enum kDeadMapEntry{kAlive = 0, kDead, kHot, kWarning, kResurrected, kRecentlyDeceased, kNumDeadMapStates};
AliCaloCalibPedestal(kDetType detectorType = kPhos);
virtual ~AliCaloCalibPedestal();
AliCaloCalibPedestal(AliCaloCalibPedestal &ped);
AliCaloCalibPedestal& operator = (AliCaloCalibPedestal &source);
Bool_t ProcessEvent(AliRawReader *rawReader);
Bool_t ProcessEvent(AliCaloRawStreamV3 *in);
AliCaloAltroMapping **GetAltroMapping() const { return fMapping; };
void SetAltroMapping(AliCaloAltroMapping **mapp) { fMapping = mapp; };
void SetParametersFromFile(const char *parameterFile);
void WriteParametersToFile(const char *parameterFile);
TProfile2D * GetPedProfileLowGain(int i) {ValidateProfiles(); return (TProfile2D*)fPedestalLowGain[i];};
TProfile2D * GetPedProfileHighGain(int i) {ValidateProfiles(); return (TProfile2D*)fPedestalHighGain[i];};
TProfile * GetPedLEDRefProfileLowGain(int i) {ValidateProfiles(); return (TProfile*)fPedestalLEDRefLowGain[i];};
TProfile * GetPedLEDRefProfileHighGain(int i) {ValidateProfiles(); return (TProfile*)fPedestalLEDRefHighGain[i];};
TProfile2D * GetPeakProfileLowGain(int i) {ValidateProfiles(); return (TProfile2D*)fPeakMinusPedLowGain[i];};
TProfile2D * GetPeakProfileHighGain(int i) {ValidateProfiles(); return (TProfile2D*)fPeakMinusPedHighGain[i];};
TProfile2D * GetPedProfileLowGainDiff(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPedestalLowGainDiff[i];};
TProfile2D * GetPedProfileHighGainDiff(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPedestalHighGainDiff[i];};
TProfile * GetPedLEDRefProfileLowGainDiff(int i) {ValidateComparisonProfiles(); return (TProfile*)fPedestalLEDRefLowGainDiff[i];};
TProfile * GetPedLEDRefProfileHighGainDiff(int i) {ValidateComparisonProfiles(); return (TProfile*)fPedestalLEDRefHighGainDiff[i];};
TProfile2D * GetPeakProfileLowGainDiff(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPeakMinusPedLowGainDiff[i];};
TProfile2D * GetPeakProfileHighGainDiff(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPeakMinusPedHighGainDiff[i];};
TProfile2D * GetPedProfileLowGainRatio(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPedestalLowGainRatio[i];};
TProfile2D * GetPedProfileHighGainRatio(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPedestalHighGainRatio[i];};
TProfile * GetPedLEDRefProfileLowGainRatio(int i) {ValidateComparisonProfiles(); return (TProfile*)fPedestalLEDRefLowGainRatio[i];};
TProfile * GetPedLEDRefProfileHighGainRatio(int i) {ValidateComparisonProfiles(); return (TProfile*)fPedestalLEDRefHighGainRatio[i];};
TProfile2D * GetPeakProfileLowGainRatio(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPeakMinusPedLowGainRatio[i];};
TProfile2D * GetPeakProfileHighGainRatio(int i){ValidateComparisonProfiles(); return (TProfile2D*)fPeakMinusPedHighGainRatio[i];};
TH2F * GetPeakHighGainHisto(int i) {ValidateProfiles(); return (TH2F*)fPeakMinusPedHighGainHisto[i];};
TH2D * GetDeadMap(int i) {ValidateProfiles(); return (TH2D*)fDeadMap[i];}
Bool_t IsBadChannel(int imod, int icol, int irow) const;
void SetChannelStatus(int imod, int icol, int irow, int status);
Int_t GetChannelStatus(int imod, int icol, int irow) const { return (Int_t)((TH2D*)fDeadMap[imod])->GetBinContent(icol, irow); }
TObjArray GetDeadMap() {ValidateProfiles(); return fDeadMap;}
void SetDeadMap(TObjArray map) {fDeadMap = map;}
kDetType GetDetectorType() const {return fDetType;};
TString GetCaloString() const {return fCaloString;};
int GetColumns() const {return fColumns;};
int GetRows() const {return fRows;};
int GetLEDRefs() const {return fLEDRefs;};
int GetModules() const {return fModules;};
int GetRowMin() const {return fRowMin;};
int GetRowMax() const {return fRowMax;};
int GetRowMultiplier() const {return fRowMultiplier;};
void SetRunNumber(int runNo) {fRunNumber = runNo;};
int GetRunNumber() const {return fRunNumber;};
int GetRefRunNumber() const {if (fReference) return fReference->GetRunNumber(); else return -1;};
void SetSelectPedestalSamples(Bool_t flag = kFALSE) {fSelectPedestalSamples = flag;}
Bool_t GetSelectPedestalSamples() const {return fSelectPedestalSamples;}
void SetFirstPedestalSample(int i) {fFirstPedestalSample = i;}
void SetLastPedestalSample(int i) {fLastPedestalSample = i;}
int GetFirstPedestalSample() const {return fFirstPedestalSample;};
int GetLastPedestalSample() const {return fLastPedestalSample;};
void SetDeadThreshold(int i) {fDeadThreshold = i;}
void SetWarningThreshold(int i) {fWarningThreshold = i;}
void SetWarningFraction(double d) {fWarningFraction = d;}
int GetDeadThreshold() const {return fDeadThreshold;};
int GetWarningThreshold() const {return fWarningThreshold;};
double GetWarningFraction() const {return fWarningFraction;};
void SetHotSigma(double d) {fHotSigma = d;}
double GetHotSigma() const {return fHotSigma;};
int GetNEvents() const {return fNEvents;};
int GetNChanFills() const {return fNChanFills;};
void SetDeadTowerCount(Int_t dead) {fDeadTowers = dead;};
int GetDeadTowerCount() const {return fDeadTowers;};
double GetDeadTowerRatio() const {return fDeadTowers/(double)(fRows*fColumns);};
int GetDeadTowerNew() const {return fNewDeadTowers;};
int GetDeadTowerResurrected() const {return fResurrectedTowers;};
void Reset();
Bool_t AddInfo(AliCaloCalibPedestal *ped);
Bool_t LoadReferenceCalib(TString fileName, TString objectName);
void ComputeDiffAndRatio();
AliCaloCalibPedestal * GetReference() const {return fReference;};
Bool_t SetReference(AliCaloCalibPedestal *ref);
void ComputeDeadTowers(const char * deadMapFile = 0);
void ComputeHotAndWarningTowers(const char * hotMapFile = 0);
Bool_t SaveHistograms(TString fileName, Bool_t saveEmptyHistos = kFALSE);
void Init() { ValidateProfiles(); }
private:
void ValidateProfiles();
void CompressAndSetOwner();
void ValidateComparisonProfiles();
TObjArray fPedestalLowGain;
TObjArray fPedestalHighGain;
TObjArray fPedestalLEDRefLowGain;
TObjArray fPedestalLEDRefHighGain;
TObjArray fPeakMinusPedLowGain;
TObjArray fPeakMinusPedHighGain;
TObjArray fPeakMinusPedHighGainHisto;
TObjArray fPedestalLowGainDiff;
TObjArray fPedestalHighGainDiff;
TObjArray fPedestalLEDRefLowGainDiff;
TObjArray fPedestalLEDRefHighGainDiff;
TObjArray fPeakMinusPedLowGainDiff;
TObjArray fPeakMinusPedHighGainDiff;
TObjArray fPedestalLowGainRatio;
TObjArray fPedestalHighGainRatio;
TObjArray fPedestalLEDRefLowGainRatio;
TObjArray fPedestalLEDRefHighGainRatio;
TObjArray fPeakMinusPedLowGainRatio;
TObjArray fPeakMinusPedHighGainRatio;
TObjArray fDeadMap;
int fNEvents;
int fNChanFills;
int fDeadTowers;
int fNewDeadTowers;
int fResurrectedTowers;
AliCaloCalibPedestal * fReference;
kDetType fDetType;
int fColumns;
int fRows;
int fLEDRefs;
int fModules;
int fRowMin;
int fRowMax;
int fRowMultiplier;
TString fCaloString;
AliCaloAltroMapping **fMapping;
int fRunNumber;
Bool_t fSelectPedestalSamples;
int fFirstPedestalSample;
int fLastPedestalSample;
int fDeadThreshold;
int fWarningThreshold;
double fWarningFraction;
double fHotSigma;
static const int fgkPhosRows = 64;
static const int fgkPhosCols = 56;
static const int fgkPhosLEDRefs = 1;
static const int fgkPhosModules = 5;
ClassDef(AliCaloCalibPedestal, 8)
};
#endif
AliCaloCalibPedestal.h:10 AliCaloCalibPedestal.h:11 AliCaloCalibPedestal.h:12 AliCaloCalibPedestal.h:13 AliCaloCalibPedestal.h:14 AliCaloCalibPedestal.h:15 AliCaloCalibPedestal.h:16 AliCaloCalibPedestal.h:17 AliCaloCalibPedestal.h:18 AliCaloCalibPedestal.h:19 AliCaloCalibPedestal.h:20 AliCaloCalibPedestal.h:21 AliCaloCalibPedestal.h:22 AliCaloCalibPedestal.h:23 AliCaloCalibPedestal.h:24 AliCaloCalibPedestal.h:25 AliCaloCalibPedestal.h:26 AliCaloCalibPedestal.h:27 AliCaloCalibPedestal.h:28 AliCaloCalibPedestal.h:29 AliCaloCalibPedestal.h:30 AliCaloCalibPedestal.h:31 AliCaloCalibPedestal.h:32 AliCaloCalibPedestal.h:33 AliCaloCalibPedestal.h:34 AliCaloCalibPedestal.h:35 AliCaloCalibPedestal.h:36 AliCaloCalibPedestal.h:37 AliCaloCalibPedestal.h:38 AliCaloCalibPedestal.h:39 AliCaloCalibPedestal.h:40 AliCaloCalibPedestal.h:41 AliCaloCalibPedestal.h:42 AliCaloCalibPedestal.h:43 AliCaloCalibPedestal.h:44 AliCaloCalibPedestal.h:45 AliCaloCalibPedestal.h:46 AliCaloCalibPedestal.h:47 AliCaloCalibPedestal.h:48 AliCaloCalibPedestal.h:49 AliCaloCalibPedestal.h:50 AliCaloCalibPedestal.h:51 AliCaloCalibPedestal.h:52 AliCaloCalibPedestal.h:53 AliCaloCalibPedestal.h:54 AliCaloCalibPedestal.h:55 AliCaloCalibPedestal.h:56 AliCaloCalibPedestal.h:57 AliCaloCalibPedestal.h:58 AliCaloCalibPedestal.h:59 AliCaloCalibPedestal.h:60 AliCaloCalibPedestal.h:61 AliCaloCalibPedestal.h:62 AliCaloCalibPedestal.h:63 AliCaloCalibPedestal.h:64 AliCaloCalibPedestal.h:65 AliCaloCalibPedestal.h:66 AliCaloCalibPedestal.h:67 AliCaloCalibPedestal.h:68 AliCaloCalibPedestal.h:69 AliCaloCalibPedestal.h:70 AliCaloCalibPedestal.h:71 AliCaloCalibPedestal.h:72 AliCaloCalibPedestal.h:73 AliCaloCalibPedestal.h:74 AliCaloCalibPedestal.h:75 AliCaloCalibPedestal.h:76 AliCaloCalibPedestal.h:77 AliCaloCalibPedestal.h:78 AliCaloCalibPedestal.h:79 AliCaloCalibPedestal.h:80 AliCaloCalibPedestal.h:81 AliCaloCalibPedestal.h:82 AliCaloCalibPedestal.h:83 AliCaloCalibPedestal.h:84 AliCaloCalibPedestal.h:85 AliCaloCalibPedestal.h:86 AliCaloCalibPedestal.h:87 AliCaloCalibPedestal.h:88 AliCaloCalibPedestal.h:89 AliCaloCalibPedestal.h:90 AliCaloCalibPedestal.h:91 AliCaloCalibPedestal.h:92 AliCaloCalibPedestal.h:93 AliCaloCalibPedestal.h:94 AliCaloCalibPedestal.h:95 AliCaloCalibPedestal.h:96 AliCaloCalibPedestal.h:97 AliCaloCalibPedestal.h:98 AliCaloCalibPedestal.h:99 AliCaloCalibPedestal.h:100 AliCaloCalibPedestal.h:101 AliCaloCalibPedestal.h:102 AliCaloCalibPedestal.h:103 AliCaloCalibPedestal.h:104 AliCaloCalibPedestal.h:105 AliCaloCalibPedestal.h:106 AliCaloCalibPedestal.h:107 AliCaloCalibPedestal.h:108 AliCaloCalibPedestal.h:109 AliCaloCalibPedestal.h:110 AliCaloCalibPedestal.h:111 AliCaloCalibPedestal.h:112 AliCaloCalibPedestal.h:113 AliCaloCalibPedestal.h:114 AliCaloCalibPedestal.h:115 AliCaloCalibPedestal.h:116 AliCaloCalibPedestal.h:117 AliCaloCalibPedestal.h:118 AliCaloCalibPedestal.h:119 AliCaloCalibPedestal.h:120 AliCaloCalibPedestal.h:121 AliCaloCalibPedestal.h:122 AliCaloCalibPedestal.h:123 AliCaloCalibPedestal.h:124 AliCaloCalibPedestal.h:125 AliCaloCalibPedestal.h:126 AliCaloCalibPedestal.h:127 AliCaloCalibPedestal.h:128 AliCaloCalibPedestal.h:129 AliCaloCalibPedestal.h:130 AliCaloCalibPedestal.h:131 AliCaloCalibPedestal.h:132 AliCaloCalibPedestal.h:133 AliCaloCalibPedestal.h:134 AliCaloCalibPedestal.h:135 AliCaloCalibPedestal.h:136 AliCaloCalibPedestal.h:137 AliCaloCalibPedestal.h:138 AliCaloCalibPedestal.h:139 AliCaloCalibPedestal.h:140 AliCaloCalibPedestal.h:141 AliCaloCalibPedestal.h:142 AliCaloCalibPedestal.h:143 AliCaloCalibPedestal.h:144 AliCaloCalibPedestal.h:145 AliCaloCalibPedestal.h:146 AliCaloCalibPedestal.h:147 AliCaloCalibPedestal.h:148 AliCaloCalibPedestal.h:149 AliCaloCalibPedestal.h:150 AliCaloCalibPedestal.h:151 AliCaloCalibPedestal.h:152 AliCaloCalibPedestal.h:153 AliCaloCalibPedestal.h:154 AliCaloCalibPedestal.h:155 AliCaloCalibPedestal.h:156 AliCaloCalibPedestal.h:157 AliCaloCalibPedestal.h:158 AliCaloCalibPedestal.h:159 AliCaloCalibPedestal.h:160 AliCaloCalibPedestal.h:161 AliCaloCalibPedestal.h:162 AliCaloCalibPedestal.h:163 AliCaloCalibPedestal.h:164 AliCaloCalibPedestal.h:165 AliCaloCalibPedestal.h:166 AliCaloCalibPedestal.h:167 AliCaloCalibPedestal.h:168 AliCaloCalibPedestal.h:169 AliCaloCalibPedestal.h:170 AliCaloCalibPedestal.h:171 AliCaloCalibPedestal.h:172 AliCaloCalibPedestal.h:173 AliCaloCalibPedestal.h:174 AliCaloCalibPedestal.h:175 AliCaloCalibPedestal.h:176 AliCaloCalibPedestal.h:177 AliCaloCalibPedestal.h:178 AliCaloCalibPedestal.h:179 AliCaloCalibPedestal.h:180 AliCaloCalibPedestal.h:181 AliCaloCalibPedestal.h:182 AliCaloCalibPedestal.h:183 AliCaloCalibPedestal.h:184 AliCaloCalibPedestal.h:185 AliCaloCalibPedestal.h:186 AliCaloCalibPedestal.h:187 AliCaloCalibPedestal.h:188 AliCaloCalibPedestal.h:189 AliCaloCalibPedestal.h:190 AliCaloCalibPedestal.h:191 AliCaloCalibPedestal.h:192 AliCaloCalibPedestal.h:193 AliCaloCalibPedestal.h:194 AliCaloCalibPedestal.h:195 AliCaloCalibPedestal.h:196 AliCaloCalibPedestal.h:197 AliCaloCalibPedestal.h:198 AliCaloCalibPedestal.h:199 AliCaloCalibPedestal.h:200 AliCaloCalibPedestal.h:201 AliCaloCalibPedestal.h:202 AliCaloCalibPedestal.h:203 AliCaloCalibPedestal.h:204 AliCaloCalibPedestal.h:205 AliCaloCalibPedestal.h:206 AliCaloCalibPedestal.h:207 AliCaloCalibPedestal.h:208 AliCaloCalibPedestal.h:209 AliCaloCalibPedestal.h:210 AliCaloCalibPedestal.h:211 AliCaloCalibPedestal.h:212 AliCaloCalibPedestal.h:213 AliCaloCalibPedestal.h:214 AliCaloCalibPedestal.h:215 AliCaloCalibPedestal.h:216 AliCaloCalibPedestal.h:217 AliCaloCalibPedestal.h:218 AliCaloCalibPedestal.h:219 AliCaloCalibPedestal.h:220 AliCaloCalibPedestal.h:221 AliCaloCalibPedestal.h:222 AliCaloCalibPedestal.h:223 AliCaloCalibPedestal.h:224 AliCaloCalibPedestal.h:225 AliCaloCalibPedestal.h:226 AliCaloCalibPedestal.h:227 AliCaloCalibPedestal.h:228 AliCaloCalibPedestal.h:229 AliCaloCalibPedestal.h:230 AliCaloCalibPedestal.h:231 AliCaloCalibPedestal.h:232 AliCaloCalibPedestal.h:233 AliCaloCalibPedestal.h:234 AliCaloCalibPedestal.h:235 AliCaloCalibPedestal.h:236 AliCaloCalibPedestal.h:237 AliCaloCalibPedestal.h:238 AliCaloCalibPedestal.h:239 AliCaloCalibPedestal.h:240 AliCaloCalibPedestal.h:241 AliCaloCalibPedestal.h:242 AliCaloCalibPedestal.h:243