X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=ITS%2FAliITSOnlineSDDTP.cxx;h=a4efc2766b5bdf37b9f949215237c05fb3e7dfe3;hp=54d4d35a5dc93b5bf6be9cc845b30b0aa90255c2;hb=b0e25852769a15330f327ed7af0c652a80fdb908;hpb=e44f571cdb6cd7116369f3bb6ef61bde0cf60db9 diff --git a/ITS/AliITSOnlineSDDTP.cxx b/ITS/AliITSOnlineSDDTP.cxx index 54d4d35a5dc..a4efc2766b5 100644 --- a/ITS/AliITSOnlineSDDTP.cxx +++ b/ITS/AliITSOnlineSDDTP.cxx @@ -12,6 +12,7 @@ * about the suitability of this software for any purpose. It is * * provided "as is" without express or implied warranty. * **************************************************************************/ +#include #include "AliITSOnlineSDDTP.h" #include "AliLog.h" #include @@ -29,18 +30,20 @@ ClassImp(AliITSOnlineSDDTP) //______________________________________________________________________ -AliITSOnlineSDDTP::AliITSOnlineSDDTP():AliITSOnlineSDD(),fNEvents(0),fDAC(0.),fNSigmaGain(0.) +AliITSOnlineSDDTP::AliITSOnlineSDDTP():AliITSOnlineSDD(),fDAC(0.),fLowThreshold(0),fHighThreshold(0),fNSigmaGain(0.),fNSigmaNoise(0.) { // default constructor Reset(); SetNSigmaGain(); + SetNSigmaNoise(); } //______________________________________________________________________ -AliITSOnlineSDDTP::AliITSOnlineSDDTP(Int_t mod, Int_t sid, Float_t xDAC):AliITSOnlineSDD(mod,sid),fNEvents(0),fDAC(xDAC),fNSigmaGain(0.) +AliITSOnlineSDDTP::AliITSOnlineSDDTP(Int_t nddl, Int_t ncarlos, Int_t sid, Float_t xDAC):AliITSOnlineSDD(nddl,ncarlos,sid),fDAC(xDAC),fLowThreshold(0),fHighThreshold(0),fNSigmaGain(0.),fNSigmaNoise(0.) { // standard constructor Reset(); SetNSigmaGain(); + SetNSigmaNoise(); } //______________________________________________________________________ AliITSOnlineSDDTP::~AliITSOnlineSDDTP(){ @@ -49,10 +52,13 @@ AliITSOnlineSDDTP::~AliITSOnlineSDDTP(){ //______________________________________________________________________ void AliITSOnlineSDDTP::Reset(){ // - fNEvents=0; for(Int_t i=0;iGetNbinsX(); for(Int_t ian=0;ianGetBinContent(itb+1,ian+1); if(cnt>auxmax){ auxmax=cnt; auxtb=itb; } } - fSumTPPeak[ian]+=auxmax-fBaseline[ian]; - fTPPos[ian]+=auxtb; + if(auxmax>fBaseline[ian]+fNSigmaNoise*fRawNoise[ian]){ + fSumTPPeak[ian]+=auxmax-fBaseline[ian]; + fTPPos[ian]+=auxtb; + fNEvents[ian]++; + } } } //______________________________________________________________________ void AliITSOnlineSDDTP::ReadBaselines(){ // assume baselines and good anodes are taken from previous run Char_t basfilnam[100]; - sprintf(basfilnam,"SDDbase_step2_mod%03d_sid%d.data",fModuleId,fSide); + sprintf(basfilnam,"SDDbase_step2_ddl%02dc%02d_sid%d.data",fDDL,fCarlos,fSide); FILE* basf=fopen(basfilnam,"r"); if(basf==0){ - AliWarning("Baselinefile not present, Set all baselines to 50\n"); + AliWarning(Form("Baseline file not present (ddl %d carlos %d side %d, Set all baselines to 20",fDDL,fCarlos,fSide)); for(Int_t ian=0;ian0){ mean=sum/(Float_t)cnt; - rms=TMath::Sqrt(sumq/(Float_t)cnt-mean*mean); + Float_t variance=sumq/(Float_t)cnt-mean*mean; + if(variance>0.) rms=TMath::Sqrt(variance); + else rms = 0; }else{ mean=0.; rms=0.; @@ -142,29 +172,122 @@ void AliITSOnlineSDDTP::StatGain(Float_t &mean, Float_t &rms){ //______________________________________________________________________ void AliITSOnlineSDDTP::WriteToASCII(){ // - Char_t basfilnam[100]; - sprintf(basfilnam,"SDDbase_step2_mod%03d_sid%d.data",fModuleId,fSide); - FILE* basf=fopen(basfilnam,"r"); - if(basf==0){ - AliWarning("Baseline file not present, launch baseline analysis first\n"); - return; - } - Int_t n,ok; - Float_t base,rms,cmn,corrnoi; - Float_t noise[fgkNAnodes],cmncoef[fgkNAnodes],corrnoise[fgkNAnodes]; - for(Int_t ian=0;ianSetBinContent(ian+1,GetAnodeBaseline(ian)); + } + return h; +} +//______________________________________________________________________ +TH1F* AliITSOnlineSDDTP::GetRawNoiseAnodeHisto() const { + // + Char_t hisnam[20]; + sprintf(hisnam,"hnois%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F* h=new TH1F(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ianSetBinContent(ian+1,GetAnodeRawNoise(ian)); + } + return h; +} +//______________________________________________________________________ +TH1F* AliITSOnlineSDDTP::GetCorrNoiseAnodeHisto() const { + // + Char_t hisnam[20]; + sprintf(hisnam,"hcorn%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F* h=new TH1F(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ianSetBinContent(ian+1,GetAnodeCorrNoise(ian)); + } + return h; +} +//______________________________________________________________________ +TH1F* AliITSOnlineSDDTP::GetCMNCoefAnodeHisto() const { +// + Char_t hisnam[20]; + sprintf(hisnam,"hcmn%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F* h=new TH1F(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ianSetBinContent(ian+1,GetAnodeCommonMode(ian)); + } + return h; +} +//______________________________________________________________________ +TH1F* AliITSOnlineSDDTP::GetStatusAnodeHisto() const { +// + Char_t hisnam[20]; + sprintf(hisnam,"hgood%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F* h=new TH1F(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ianSetBinContent(ian+1,float(IsAnodeGood(ian))); + } + return h; +} +//______________________________________________________________________ +TH1F* AliITSOnlineSDDTP::GetGainAnodeHisto() const { +// + Char_t hisnam[20]; + sprintf(hisnam,"hgain%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F* h=new TH1F(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ianSetBinContent(ian+1,GetChannelGain(ian)); + } + return h; +} +//______________________________________________________________________ +Bool_t AliITSOnlineSDDTP::WriteToROOT(TFile *fil){ + // + if(fil==0){ + AliWarning("Invalid pointer to ROOT file"); + return kFALSE; + } + Char_t hisnam[20]; + fil->cd(); + sprintf(hisnam,"hgood%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hgood(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"hbase%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hbase(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"hnois%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hnois(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"hcmn%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hcmn(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"hcorn%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hcorn(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"hgain%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F hgain(hisnam,"",256,-0.5,255.5); + sprintf(hisnam,"htptb%02dc%02ds%d",fDDL,fCarlos,fSide); + TH1F htptb(hisnam,"",256,-0.5,255.5); + for(Int_t ian=0;ian