X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSresponseSDD.h;h=1fb39ec6c0e1af4c34ee392f50ca5604598fcef2;hb=f84d7d19672f61965fe3e91a78f19b50d56819f2;hp=0aba552e455e130831d474ff145309446cd9520d;hpb=d644eb2d4d1a20501fb4cd7cb4ee387ee1ebf56b;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSresponseSDD.h b/ITS/AliITSresponseSDD.h index 0aba552e455..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,43 +46,76 @@ 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 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){ - if(modIndexkNSPDmods+kNSDDmods){ + virtual Float_t GetTimeZero(Int_t modIndex) const { + if(modIndex=kNSPDmods+kNSDDmods){ AliError(Form("SDD module number %d out of range",modIndex)); return 0.; } return fTimeZero[modIndex-kNSPDmods]; } - virtual Float_t GetDeltaVDrift(Int_t modIndex){ - if(modIndexkNSPDmods+kNSDDmods){ + + 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(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(modIndex=kNSPDmods+kNSDDmods){ AliError(Form("SDD module number %d out of range",modIndex)); return 0.; } - return fDeltaVDrift[modIndex-kNSPDmods]; + return fADCtokeV[modIndex-kNSPDmods]; } - static Float_t DefaultTimeOffset() {return fgkTimeOffsetDefault;} - virtual void SetADC2keV(Float_t conv){fADC2keV=conv;} virtual void SetChargevsTime(Float_t slope){fChargevsTime=slope;} - virtual Float_t GetADC2keV()const {return fADC2keV;} virtual Float_t GetChargevsTime()const {return fChargevsTime;} static Float_t DefaultADC2keV() {return fgkADC2keVDefault;} 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: @@ -99,16 +133,18 @@ 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 - + Float_t fADCtokeV[kNSDDmods]; // ADC to keV conversion for each module + private: AliITSresponseSDD(const AliITSresponseSDD &ob); // copy constructor AliITSresponseSDD& operator=(const AliITSresponseSDD & /* source */); // ass. op. - ClassDef(AliITSresponseSDD,18) + ClassDef(AliITSresponseSDD,20) }; #endif