X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSresponseSDD.h;h=49ba761f40924638e8d0a9d6504d195ad5835467;hb=1d62be3795605ae89972d27e0cf3084585eb6711;hp=b9d2f4e3349da051f77d21401cff15d19ec5e9de;hpb=69b8214354acbd2f7d51532bc3f5fe4dd8db524c;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSresponseSDD.h b/ITS/AliITSresponseSDD.h index b9d2f4e3349..49ba761f409 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(){}; @@ -49,35 +50,66 @@ class AliITSresponseSDD : public TObject { 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){ + virtual Float_t GetTimeZero(Int_t modIndex) const { if(modIndexkNSPDmods+kNSDDmods){ AliError(Form("SDD module number %d out of range",modIndex)); return 0.; } return fTimeZero[modIndex-kNSPDmods]; } - virtual Float_t GetDeltaVDrift(Int_t modIndex){ + + 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)); + fADCtokeV[modIndex-kNSPDmods]=conv; + } + virtual Float_t GetADCtokeV(Int_t modIndex) const { if(modIndexkNSPDmods+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 Float_t GetADC2keV()const {return fADC2keV;} - static Float_t DefaulttADC2keV() {return fgkADC2keVDefault;} + virtual void SetChargevsTime(Float_t slope){fChargevsTime=slope;} + 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: @@ -89,20 +121,24 @@ class AliITSresponseSDD : public TObject { static const Float_t fgkTimeOffsetDefault; // default for fTimeOffset static const Float_t fgkADC2keVDefault; // default for fADC2keV + static const Float_t fgkChargevsTimeDefault; // default for fChargevsTime static const Float_t fgkCarlosRXClockPeriod; // clock period for CarlosRX 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,17) + ClassDef(AliITSresponseSDD,20) }; #endif