X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSOnlineSDDBase.h;h=a3158299a67c2998a4625dc452c21b0c1816773d;hb=b1a93215820d7e951a1c99ef34c21b2977f9c2ba;hp=cba105651d54e5c56e1248e435c2eec558037089;hpb=beb262b46d454caa0e8b39d8749533a46d34907f;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSOnlineSDDBase.h b/ITS/AliITSOnlineSDDBase.h index cba105651d5..a3158299a67 100644 --- a/ITS/AliITSOnlineSDDBase.h +++ b/ITS/AliITSOnlineSDDBase.h @@ -16,7 +16,7 @@ class AliITSOnlineSDDBase : public AliITSOnlineSDD { public: AliITSOnlineSDDBase(); - AliITSOnlineSDDBase(Int_t mod, Int_t sid); + AliITSOnlineSDDBase(Int_t nddl, Int_t ncarlos, Int_t sid); virtual ~AliITSOnlineSDDBase(); void Reset(); void AddEvent(TH2F* hrawd); @@ -24,32 +24,42 @@ class AliITSOnlineSDDBase : public AliITSOnlineSDD { void SetMinBaseline(Float_t bas=10.){fMinBaseline=bas;} void SetMaxBaseline(Float_t bas=150.){fMaxBaseline=bas;} - void SetMinRawNoise(Float_t ns=0.001){fMinRawNoise=ns;} + void SetMinRawNoise(Float_t ns=0.5){fMinRawNoise=ns;} void SetMaxRawNoise(Float_t ns=9.){fMaxRawNoise=ns;} void SetNSigmaNoise(Float_t ns=4.){fNSigmaNoise=ns;} + void SetGoldenBaselineValue(Float_t val=20.){fGoldenBaseline=val;} + void SetZeroSuppThresholds(Float_t vall=2.2,Float_t valh=4.){ + fLowThrFact=vall; + fHighThrFact=valh; + } Bool_t IsAnodeGood(Int_t iAnode)const{ return fGoodAnode[iAnode];} Float_t GetAnodeBaseline(Int_t iAnode) const{ if(fNEvents>0) return fSumBaseline[iAnode]/fNEvents; else return 0; } - Float_t GetAnodeRawNoise(Int_t iAnode) const{ - if(fNEvents>0) return TMath::Sqrt(fSumRawNoise[iAnode]/fNEvents-TMath::Power(GetAnodeBaseline(iAnode),2)); - - else return 0; - } + void GetMinAndMaxBaseline(Float_t &basMin, Float_t &basMax) const; + Float_t GetMinimumBaseline() const; + Float_t GetAnodeRawNoise(Int_t iAnode) const; + Int_t CountGoodAnodes() const{ + Int_t nGdAn=0; + for(Int_t ian=0;ian0) return fSumCMN[iAnode]/fNEvents; else return 0; } Int_t GetNEvents() const {return fNEvents;} - void WriteToFXS(); + void WriteToASCII(); protected: private: + static const Int_t fgkMaxCorr; // maximum baseline correction in AMBRA (=63) + Int_t fNEvents; // number of events Bool_t fGoodAnode[fgkNAnodes]; // anode quality: good(1) - bad (0) Float_t fSumBaseline[fgkNAnodes]; // baseline summed over events @@ -60,7 +70,19 @@ class AliITSOnlineSDDBase : public AliITSOnlineSDD { Float_t fMinRawNoise; // Cut value for minimum noise Float_t fMaxRawNoise; // Cut value for maximum noise Float_t fNSigmaNoise; // Cut value for noise (n*sigma) + Float_t fGoldenBaseline; // golden value for equalizing baselines + Float_t fLowThrFact; // factor for low threshold + Float_t fHighThrFact; // factor for high threshold - ClassDef(AliITSOnlineSDDBase,1); + ClassDef(AliITSOnlineSDDBase,2); }; + +inline Float_t AliITSOnlineSDDBase::GetAnodeRawNoise(Int_t iAnode) const{ + // compute raw noise for given anode + Float_t noise2=0.; + if(fNEvents>0) noise2=fSumRawNoise[iAnode]/fNEvents-fSumBaseline[iAnode]*fSumBaseline[iAnode]/fNEvents/fNEvents; + if(noise2>0.) return TMath::Sqrt(noise2); + else return 0; +} + #endif