#ifndef ALIITSCALIBRATIONSDD_H
#define ALIITSCALIBRATIONSDD_H
#include "AliITSCalibration.h"
#include "AliITSsegmentationSDD.h"
#include "TArrayI.h"
class AliITSCorrMapSDD;
class AliITSDriftSpeedArraySDD;
class AliITSCalibrationSDD : public AliITSCalibration {
public:
AliITSCalibrationSDD();
AliITSCalibrationSDD(const char *dataType);
virtual ~AliITSCalibrationSDD();
virtual Float_t GetBaseline(Int_t anode) const {return fBaseline[anode];}
virtual void SetBaseline(Int_t anode,Double_t bas) {fBaseline[anode]=bas;}
virtual Float_t GetNoise(Int_t anode) const {return fNoise[anode];}
virtual void SetNoise(Int_t anode, Double_t noise) {fNoise[anode]=noise;}
virtual void GiveCompressParam(Int_t *x) const;
void SetZSLowThreshold(Int_t iWing, Int_t thr=25){fZSTL[iWing]=thr;}
void SetZSHighThreshold(Int_t iWing, Int_t thr=29){fZSTH[iWing]=thr;}
Int_t GetZSLowThreshold(Int_t iWing) const {return fZSTL[iWing];}
Int_t GetZSHighThreshold(Int_t iWing) const {return fZSTH[iWing];}
void SetNoiseAfterElectronics(Int_t anode,Double_t n=2.38){
fNoiseAfterEl[anode]=n;}
Float_t GetNoiseAfterElectronics(Int_t anode) const {
return fNoiseAfterEl[anode];}
void SetDeadChannels(Int_t ndead=0){fDeadChannels=ndead; fBadChannels.Set(ndead);}
Int_t GetDeadChips() const { return fDeadChips; }
Int_t GetDeadChannels() const { return fDeadChannels; }
Float_t GetChannelGain(Int_t anode) const {return fGain[anode];}
virtual void SetGain(Int_t anode,Double_t g){fGain[anode]=g;}
Int_t GetWing(Int_t anode) const{
if(anode>=fgkChips*fgkChannels) return 1;
else return 0;
}
Int_t GetChipChannel(Int_t anode) const {return anode%fgkChannels;}
Int_t GetChip(Int_t anode) const {return anode/fgkChannels;}
Int_t GetAnodeNumber(Int_t iwing, Int_t ichip03, Int_t ichan) const {
if(iwing>=2 || ichip03>=4 || ichan>=64) return -1;
else return iwing*fgkChips*fgkChannels+ichip03*fgkChannels+ichan;
}
Int_t GetAnodeNumber(Int_t ichip07, Int_t ichan) const {
if(ichip07>=8 || ichan>=64) return -1;
else return ichip07*fgkChannels+ichan;
}
void PrintGains() const;
void Print();
virtual void Print(ostream *os) const {AliITSCalibrationSDD::Print(os);}
virtual void Print(Option_t *option="") const {AliITSCalibrationSDD::Print(option);}
virtual void SetDetParam(Double_t *)
{NotImplemented("SetDetParam");}
virtual void GetDetParam(Double_t *) const
{NotImplemented("GetDetParam");}
virtual void SetNDetParam(Int_t )
{NotImplemented("SetNDetParam");}
virtual Int_t NDetParam() const
{NotImplemented("NDetParam"); return 0;}
virtual void SetSigmaSpread(Double_t, Double_t)
{NotImplemented("SetSigmaSpread");}
virtual void SigmaSpread(Double_t & ,Double_t & ) const
{NotImplemented("SigmaSpread");}
void SetBad() {
fIsBad = kTRUE;
for(Int_t i=0;i<fgkChips*fgkWings;i++) fIsChipBad[i]=kTRUE;
}
virtual Bool_t IsBad() const { return fIsBad; }
void SetChipBad(Int_t nChip) {
fIsChipBad[nChip] = kTRUE;
}
virtual Bool_t IsChipBad(Int_t nChip) const {
return fIsChipBad[nChip];
}
virtual Bool_t IsWingBad(Int_t nwing) const
{
if(nwing<0 || nwing>1) return kFALSE;
if(IsChipBad(nwing*4) && IsChipBad(nwing*4+1) && IsChipBad(nwing*4+2) && IsChipBad(nwing*4+3)) return kTRUE;
return kFALSE;
}
Int_t Wings()const{return fgkWings;}
Int_t Chips() const{return fgkChips;}
Int_t Channels() const{ return fgkChannels;}
Int_t NOfAnodes() const {return fgkChannels*fgkChips*fgkWings;}
virtual void SetBadChannel(Int_t i,Int_t anode);
Int_t GetBadChannel(Int_t i) const {return fBadChannels[i];}
Bool_t IsBadChannel(Int_t anode) const{
if(GetChannelGain(anode)==0) return kTRUE;
else return kFALSE;
}
Float_t GetMapACell(Int_t i,Int_t j) const {
if(i<256) return fMapAW0->GetCellContent(i,j);
else return fMapAW1->GetCellContent(i-256,j);
}
virtual void SetMapA(Int_t wing,AliITSCorrMapSDD* mapA) {
if(wing==0) fMapAW0=mapA;
else fMapAW1=mapA;
}
Float_t GetMapTCell(Int_t i,Int_t j) const {
if(i<256) return fMapTW0->GetCellContent(i,j);
else return fMapTW1->GetCellContent(i-256,j);
}
virtual void SetMapT(Int_t wing,AliITSCorrMapSDD* mapT) {
if(wing==0) fMapTW0=mapT;
else fMapTW1=mapT;
}
virtual void SetDriftSpeed(Int_t wing, AliITSDriftSpeedArraySDD* arr){
if(wing==0) fDrSpeed0=arr;
else fDrSpeed1=arr;
}
virtual Float_t GetDriftSpeedAtAnode(Float_t nAnode) const{
if(fDrSpeed0==0 || fDrSpeed1==0) AliFatal("Drift speed not set\n");
if(nAnode<256) return fDrSpeed0->GetDriftSpeed(0,nAnode);
else return fDrSpeed1->GetDriftSpeed(0,nAnode-256);
}
virtual void SetZeroSupp(Bool_t opt=kTRUE) {fZeroSupp=opt;}
virtual Bool_t GetZeroSupp() const {return fZeroSupp;}
virtual void SetAMAt40MHz() {fAMAt20MHz=kFALSE;}
virtual void SetAMAt20MHz() {fAMAt20MHz=kTRUE;}
virtual Bool_t IsAMAt20MHz() const {return fAMAt20MHz;}
void GetCorrections(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg);
void GetShiftsForSimulation(Float_t z, Float_t x, Float_t &devz, Float_t &devx, AliITSsegmentationSDD* seg);
virtual Float_t GetThresholdAnode(Int_t anode, Double_t nsigma=2.2) const {
return nsigma*fNoiseAfterEl[anode];}
protected:
static const Int_t fgkWings = 2;
static const Int_t fgkChips = 4;
static const Int_t fgkChannels = 64;
static const Float_t fgkTemperatureDefault;
static const Float_t fgkNoiseDefault;
static const Float_t fgkBaselineDefault;
static const Float_t fgkGainDefault;
Bool_t fZeroSupp;
Bool_t fAMAt20MHz;
Int_t fDeadChips;
Int_t fDeadChannels;
Float_t fGain[fgkWings*fgkChips*fgkChannels];
Float_t fNoise[fgkWings*fgkChips*fgkChannels];
Float_t fBaseline[fgkWings*fgkChips*fgkChannels];
Float_t fNoiseAfterEl[fgkWings*fgkChips*fgkChannels];
Int_t fZSTL[2];
Int_t fZSTH[2];
Bool_t fIsBad;
Bool_t fIsChipBad[fgkWings*fgkChips];
TArrayI fBadChannels;
AliITSCorrMapSDD* fMapAW0;
AliITSCorrMapSDD* fMapAW1;
AliITSCorrMapSDD* fMapTW0;
AliITSCorrMapSDD* fMapTW1;
AliITSDriftSpeedArraySDD* fDrSpeed0;
AliITSDriftSpeedArraySDD* fDrSpeed1;
private:
AliITSCalibrationSDD(const AliITSCalibrationSDD &ob);
AliITSCalibrationSDD& operator=(const AliITSCalibrationSDD & );
ClassDef(AliITSCalibrationSDD,17)
};
#endif
AliITSCalibrationSDD.h:10 AliITSCalibrationSDD.h:11 AliITSCalibrationSDD.h:12 AliITSCalibrationSDD.h:13 AliITSCalibrationSDD.h:14 AliITSCalibrationSDD.h:15 AliITSCalibrationSDD.h:16 AliITSCalibrationSDD.h:17 AliITSCalibrationSDD.h:18 AliITSCalibrationSDD.h:19 AliITSCalibrationSDD.h:20 AliITSCalibrationSDD.h:21 AliITSCalibrationSDD.h:22 AliITSCalibrationSDD.h:23 AliITSCalibrationSDD.h:24 AliITSCalibrationSDD.h:25 AliITSCalibrationSDD.h:26 AliITSCalibrationSDD.h:27 AliITSCalibrationSDD.h:28 AliITSCalibrationSDD.h:29 AliITSCalibrationSDD.h:30 AliITSCalibrationSDD.h:31 AliITSCalibrationSDD.h:32 AliITSCalibrationSDD.h:33 AliITSCalibrationSDD.h:34 AliITSCalibrationSDD.h:35 AliITSCalibrationSDD.h:36 AliITSCalibrationSDD.h:37 AliITSCalibrationSDD.h:38 AliITSCalibrationSDD.h:39 AliITSCalibrationSDD.h:40 AliITSCalibrationSDD.h:41 AliITSCalibrationSDD.h:42 AliITSCalibrationSDD.h:43 AliITSCalibrationSDD.h:44 AliITSCalibrationSDD.h:45 AliITSCalibrationSDD.h:46 AliITSCalibrationSDD.h:47 AliITSCalibrationSDD.h:48 AliITSCalibrationSDD.h:49 AliITSCalibrationSDD.h:50 AliITSCalibrationSDD.h:51 AliITSCalibrationSDD.h:52 AliITSCalibrationSDD.h:53 AliITSCalibrationSDD.h:54 AliITSCalibrationSDD.h:55 AliITSCalibrationSDD.h:56 AliITSCalibrationSDD.h:57 AliITSCalibrationSDD.h:58 AliITSCalibrationSDD.h:59 AliITSCalibrationSDD.h:60 AliITSCalibrationSDD.h:61 AliITSCalibrationSDD.h:62 AliITSCalibrationSDD.h:63 AliITSCalibrationSDD.h:64 AliITSCalibrationSDD.h:65 AliITSCalibrationSDD.h:66 AliITSCalibrationSDD.h:67 AliITSCalibrationSDD.h:68 AliITSCalibrationSDD.h:69 AliITSCalibrationSDD.h:70 AliITSCalibrationSDD.h:71 AliITSCalibrationSDD.h:72 AliITSCalibrationSDD.h:73 AliITSCalibrationSDD.h:74 AliITSCalibrationSDD.h:75 AliITSCalibrationSDD.h:76 AliITSCalibrationSDD.h:77 AliITSCalibrationSDD.h:78 AliITSCalibrationSDD.h:79 AliITSCalibrationSDD.h:80 AliITSCalibrationSDD.h:81 AliITSCalibrationSDD.h:82 AliITSCalibrationSDD.h:83 AliITSCalibrationSDD.h:84 AliITSCalibrationSDD.h:85 AliITSCalibrationSDD.h:86 AliITSCalibrationSDD.h:87 AliITSCalibrationSDD.h:88 AliITSCalibrationSDD.h:89 AliITSCalibrationSDD.h:90 AliITSCalibrationSDD.h:91 AliITSCalibrationSDD.h:92 AliITSCalibrationSDD.h:93 AliITSCalibrationSDD.h:94 AliITSCalibrationSDD.h:95 AliITSCalibrationSDD.h:96 AliITSCalibrationSDD.h:97 AliITSCalibrationSDD.h:98 AliITSCalibrationSDD.h:99 AliITSCalibrationSDD.h:100 AliITSCalibrationSDD.h:101 AliITSCalibrationSDD.h:102 AliITSCalibrationSDD.h:103 AliITSCalibrationSDD.h:104 AliITSCalibrationSDD.h:105 AliITSCalibrationSDD.h:106 AliITSCalibrationSDD.h:107 AliITSCalibrationSDD.h:108 AliITSCalibrationSDD.h:109 AliITSCalibrationSDD.h:110 AliITSCalibrationSDD.h:111 AliITSCalibrationSDD.h:112 AliITSCalibrationSDD.h:113 AliITSCalibrationSDD.h:114 AliITSCalibrationSDD.h:115 AliITSCalibrationSDD.h:116 AliITSCalibrationSDD.h:117 AliITSCalibrationSDD.h:118 AliITSCalibrationSDD.h:119 AliITSCalibrationSDD.h:120 AliITSCalibrationSDD.h:121 AliITSCalibrationSDD.h:122 AliITSCalibrationSDD.h:123 AliITSCalibrationSDD.h:124 AliITSCalibrationSDD.h:125 AliITSCalibrationSDD.h:126 AliITSCalibrationSDD.h:127 AliITSCalibrationSDD.h:128 AliITSCalibrationSDD.h:129 AliITSCalibrationSDD.h:130 AliITSCalibrationSDD.h:131 AliITSCalibrationSDD.h:132 AliITSCalibrationSDD.h:133 AliITSCalibrationSDD.h:134 AliITSCalibrationSDD.h:135 AliITSCalibrationSDD.h:136 AliITSCalibrationSDD.h:137 AliITSCalibrationSDD.h:138 AliITSCalibrationSDD.h:139 AliITSCalibrationSDD.h:140 AliITSCalibrationSDD.h:141 AliITSCalibrationSDD.h:142 AliITSCalibrationSDD.h:143 AliITSCalibrationSDD.h:144 AliITSCalibrationSDD.h:145 AliITSCalibrationSDD.h:146 AliITSCalibrationSDD.h:147 AliITSCalibrationSDD.h:148 AliITSCalibrationSDD.h:149 AliITSCalibrationSDD.h:150 AliITSCalibrationSDD.h:151 AliITSCalibrationSDD.h:152 AliITSCalibrationSDD.h:153 AliITSCalibrationSDD.h:154 AliITSCalibrationSDD.h:155 AliITSCalibrationSDD.h:156 AliITSCalibrationSDD.h:157 AliITSCalibrationSDD.h:158 AliITSCalibrationSDD.h:159 AliITSCalibrationSDD.h:160 AliITSCalibrationSDD.h:161 AliITSCalibrationSDD.h:162 AliITSCalibrationSDD.h:163 AliITSCalibrationSDD.h:164 AliITSCalibrationSDD.h:165 AliITSCalibrationSDD.h:166 AliITSCalibrationSDD.h:167 AliITSCalibrationSDD.h:168 AliITSCalibrationSDD.h:169 AliITSCalibrationSDD.h:170 AliITSCalibrationSDD.h:171 AliITSCalibrationSDD.h:172 AliITSCalibrationSDD.h:173 AliITSCalibrationSDD.h:174 AliITSCalibrationSDD.h:175 AliITSCalibrationSDD.h:176 AliITSCalibrationSDD.h:177 AliITSCalibrationSDD.h:178 AliITSCalibrationSDD.h:179 AliITSCalibrationSDD.h:180 AliITSCalibrationSDD.h:181 AliITSCalibrationSDD.h:182 AliITSCalibrationSDD.h:183 AliITSCalibrationSDD.h:184 AliITSCalibrationSDD.h:185 AliITSCalibrationSDD.h:186 AliITSCalibrationSDD.h:187 AliITSCalibrationSDD.h:188 AliITSCalibrationSDD.h:189 AliITSCalibrationSDD.h:190 AliITSCalibrationSDD.h:191 AliITSCalibrationSDD.h:192 AliITSCalibrationSDD.h:193 AliITSCalibrationSDD.h:194 AliITSCalibrationSDD.h:195 AliITSCalibrationSDD.h:196 AliITSCalibrationSDD.h:197 AliITSCalibrationSDD.h:198 AliITSCalibrationSDD.h:199 AliITSCalibrationSDD.h:200 AliITSCalibrationSDD.h:201 AliITSCalibrationSDD.h:202 AliITSCalibrationSDD.h:203 AliITSCalibrationSDD.h:204