X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSresponseSDD.h;h=1fb39ec6c0e1af4c34ee392f50ca5604598fcef2;hb=f84d7d19672f61965fe3e91a78f19b50d56819f2;hp=bf7a03d2a358d27ebb9ac792e054220012e96ff8;hpb=570196967eb5ade2dcd70974262db9ea5ab65aff;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSresponseSDD.h b/ITS/AliITSresponseSDD.h index bf7a03d2a35..1fb39ec6c0e 100644 --- a/ITS/AliITSresponseSDD.h +++ b/ITS/AliITSresponseSDD.h @@ -18,7 +18,8 @@ class AliITSresponseSDD : public TObject { public: - + enum {kVDCorr2Side = BIT(14),kVDCorrMult = BIT(15)}; // if bit set, the object contains separate corrections for 2 sides + // AliITSresponseSDD(); virtual ~AliITSresponseSDD(){}; @@ -45,27 +46,33 @@ class AliITSresponseSDD : public TObject { virtual void SetHalfLadderATimeZero(Int_t lay, Int_t lad, Float_t tzero); virtual void SetHalfLadderCTimeZero(Int_t lay, Int_t lad, Float_t tzero); virtual void SetModuleTimeZero(Int_t modIndex, Float_t tzero){ - if(modIndexkNSPDmods+kNSDDmods) AliError(Form("SDD module number %d out of range",modIndex)); + if(modIndex=kNSPDmods+kNSDDmods){ + AliError(Form("SDD module number %d out of range",modIndex)); + return; + } fTimeZero[modIndex-kNSPDmods]=tzero; } - virtual void SetDeltaVDrift(Int_t modIndex, Float_t dv){ - if(modIndexkNSPDmods+kNSDDmods) AliError(Form("SDD module number %d out of range",modIndex)); - fDeltaVDrift[modIndex-kNSPDmods]=dv; - } - virtual Float_t GetDeltaVDrift(Int_t modIndex) const { - if(modIndexkNSPDmods+kNSDDmods){ - AliError(Form("SDD module number %d out of range",modIndex)); - return 0.; - } - return fDeltaVDrift[modIndex-kNSPDmods]; + virtual void SetDeltaVDrift(Int_t modIndex, Float_t dv, Bool_t rightSide=kFALSE) { + int ind = GetVDIndex(modIndex,rightSide); + if (ind>=0) fDeltaVDrift[ind] = dv; } + virtual Float_t GetDeltaVDrift(Int_t modIndex,Bool_t rightSide=kFALSE) const { + int ind = GetVDIndex(modIndex,rightSide); + return ind<0 ? 0.:fDeltaVDrift[ind]; + } + // + Bool_t IsVDCorr2Side() const {return TestBit(kVDCorr2Side);} + Bool_t IsVDCorrMult() const {return TestBit(kVDCorrMult);} + void SetVDCorr2Side(Bool_t v=kTRUE) {SetBit(kVDCorr2Side,v);} + void SetVDCorrMult(Bool_t v=kTRUE) {SetBit(kVDCorrMult,v);} + // static Float_t DefaultTimeOffset() {return fgkTimeOffsetDefault;} virtual void SetTimeOffset(Float_t to){fTimeOffset = to;} virtual Float_t GetTimeOffset()const {return fTimeOffset;} virtual Float_t GetTimeZero(Int_t modIndex) const { - if(modIndexkNSPDmods+kNSDDmods){ + if(modIndex=kNSPDmods+kNSDDmods){ AliError(Form("SDD module number %d out of range",modIndex)); return 0.; } @@ -75,11 +82,14 @@ class AliITSresponseSDD : public TObject { virtual void SetADC2keV(Float_t conv){fADC2keV=conv;} virtual Float_t GetADC2keV()const {return fADC2keV;} virtual void SetADCtokeV(Int_t modIndex, Float_t conv){ - if(modIndexkNSPDmods+kNSDDmods) AliError(Form("SDD module number %d out of range",modIndex)); + if(modIndex=kNSPDmods+kNSDDmods){ + AliError(Form("SDD module number %d out of range",modIndex)); + return; + } fADCtokeV[modIndex-kNSPDmods]=conv; } virtual Float_t GetADCtokeV(Int_t modIndex) const { - if(modIndexkNSPDmods+kNSDDmods){ + if(modIndex=kNSPDmods+kNSDDmods){ AliError(Form("SDD module number %d out of range",modIndex)); return 0.; } @@ -93,7 +103,19 @@ class AliITSresponseSDD : public TObject { static Float_t DefaultChargevsTime() {return fgkChargevsTimeDefault;} static Float_t GetCarlosRXClockPeriod() {return fgkCarlosRXClockPeriod;} - + void PrintChargeCalibrationParams() const; + void PrintTimeZeroes() const; + void PrintVdriftCorerctions() const; + + + protected: + // + virtual Int_t GetVDIndex(Int_t modIndex, Bool_t rightSide=kFALSE) const { + int ind = modIndex - kNSPDmods; + if(ind<0 || ind>=kNSDDmods) {AliError(Form("SDD module number %d out of range",modIndex)); return -1;} + return (rightSide && IsVDCorr2Side()) ? ind + kNSDDmods : ind; + } + protected: @@ -111,7 +133,7 @@ class AliITSresponseSDD : public TObject { Float_t fTimeOffset; // Time offset due to electronic delays // --> obsolete, kept for backw. comp. Float_t fTimeZero[kNSDDmods]; // Time Zero for each module - Float_t fDeltaVDrift[kNSDDmods]; // Vdrift correction (um/ns) for each module + Float_t fDeltaVDrift[2*kNSDDmods]; // Vdrift correction (um/ns) for each module left (=kNSDDmods) sides Float_t fADC2keV; // Conversion factor from ADC to keV // --> obsolete, kept for backw. comp. Float_t fChargevsTime; // Correction for zero suppression effect @@ -122,7 +144,7 @@ class AliITSresponseSDD : public TObject { AliITSresponseSDD(const AliITSresponseSDD &ob); // copy constructor AliITSresponseSDD& operator=(const AliITSresponseSDD & /* source */); // ass. op. - ClassDef(AliITSresponseSDD,19) + ClassDef(AliITSresponseSDD,20) }; #endif