#include "AliITSOnlineSDDBase.h"
#include <TH2F.h>
#include <TMath.h>
const Int_t AliITSOnlineSDDBase::fgkMaxCorr=63;
ClassImp(AliITSOnlineSDDBase)
AliITSOnlineSDDBase::AliITSOnlineSDDBase():AliITSOnlineSDD(),fNEvents(0),fMinBaseline(0.),fMaxBaseline(0.),fMinRawNoise(0.),fMaxRawNoise(0.),fNSigmaNoise(0.),fGoldenBaseline(0.),fLowThrFact(0.),fHighThrFact(0.)
{
Reset();
SetMinBaseline();
SetMaxBaseline();
SetMinRawNoise();
SetMaxRawNoise();
SetNSigmaNoise();
SetGoldenBaselineValue();
SetZeroSuppThresholds();
}
AliITSOnlineSDDBase::AliITSOnlineSDDBase(Int_t nddl, Int_t ncarlos, Int_t sid):AliITSOnlineSDD(nddl,ncarlos,sid),fNEvents(0),fMinBaseline(0.),fMaxBaseline(0.),fMinRawNoise(0.),fMaxRawNoise(0.),fNSigmaNoise(0.),fGoldenBaseline(0.),fLowThrFact(0.),fHighThrFact(0.)
{
Reset();
SetMinBaseline();
SetMaxBaseline();
SetMinRawNoise();
SetMaxRawNoise();
SetNSigmaNoise();
SetGoldenBaselineValue();
SetZeroSuppThresholds();
}
AliITSOnlineSDDBase::~AliITSOnlineSDDBase(){
}
void AliITSOnlineSDDBase::Reset(){
fNEvents=0;
for(Int_t i=0;i<fgkNAnodes;i++){
fGoodAnode[i]=1;
fSumBaseline[i]=0.;
fSumRawNoise[i]=0.;
fSumCMN[i]=0.;
}
}
void AliITSOnlineSDDBase::ValidateAnodes(){
for(Int_t ian=0;ian<fgkNAnodes;ian++){
fGoodAnode[ian]=1;
Float_t basel=GetAnodeBaseline(ian);
Float_t rawn=GetAnodeRawNoise(ian);
Float_t ratio=0.;
if(rawn>0) ratio=basel/rawn;
if(basel>fMaxBaseline || basel<fMinBaseline) fGoodAnode[ian]=0;
else if(rawn>fMaxRawNoise || rawn<fMinRawNoise) fGoodAnode[ian]=0;
else if(rawn>fNSigmaNoise*CalcMeanRawNoise()) fGoodAnode[ian]=0;
else if(ratio<3.) fGoodAnode[ian]=0;
}
}
void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
fNEvents++;
const Int_t kTimeBins=fLastGoodTB+1;
Float_t sum[fgkNAnodes];
for(Int_t ian=0;ian<fgkNAnodes;ian++){
Float_t sumQ=0.;
sum[ian]=0.;
Int_t cnt=0;
for(Int_t itb=fFirstGoodTB;itb<=fLastGoodTB;itb++){
Float_t cbin=hrawd->GetBinContent(itb+1,ian+1);
sum[ian]+=cbin;
sumQ+=cbin*cbin;
cnt++;
}
if(cnt != 0){
sum[ian]/=(Float_t)cnt;
sumQ/=(Float_t)cnt;
}
fSumBaseline[ian]+=sum[ian];
fSumRawNoise[ian]+=sumQ;
}
if(fNEvents==1) ValidateAnodes();
Float_t *cmnEven = new Float_t[kTimeBins];
Float_t *cmnOdd = new Float_t[kTimeBins];
for(Int_t itb=fFirstGoodTB;itb<=fLastGoodTB;itb++){
Float_t sumEven=0., sumOdd=0.;
Int_t countEven=0,countOdd=0;
for(Int_t ian=0;ian<fgkNAnodes;ian+=2){
if(!fGoodAnode[ian]) continue;
sumEven+=hrawd->GetBinContent(itb+1,ian+1)-sum[ian];
countEven++;
}
for(Int_t ian=1;ian<fgkNAnodes;ian+=2){
if(!fGoodAnode[ian]) continue;
sumOdd+=hrawd->GetBinContent(itb+1,ian+1)-sum[ian];
countOdd++;
}
if(countEven>0) cmnEven[itb]=sumEven/countEven;
if(countOdd>0) cmnOdd[itb]=sumOdd/countOdd;
}
for(Int_t ian=0;ian<fgkNAnodes;ian++){
Float_t num=0.,den=0.;
if(!fGoodAnode[ian]) continue;
for(Int_t itb=fFirstGoodTB;itb<=fLastGoodTB;itb++){
Float_t cmnCoef=cmnOdd[itb];
if(ian%2==0) cmnCoef=cmnEven[itb];
num+=(hrawd->GetBinContent(itb+1,ian+1)-sum[ian])*cmnCoef;
den+=cmnCoef*cmnCoef;
}
if(den!=0) fSumCMN[ian]+=num/den;
}
delete [] cmnEven;
delete [] cmnOdd;
}
void AliITSOnlineSDDBase::GetMinAndMaxBaseline(Float_t &basMin, Float_t &basMax) const {
basMin=1008.;
basMax=0.;
for(Int_t ian=0;ian<fgkNAnodes;ian++){
if(!fGoodAnode[ian]) continue;
Float_t bas=GetAnodeBaseline(ian);
if(bas>0 && bas < basMin) basMin=bas;
if(bas>0 && bas > basMax) basMax=bas;
}
}
Float_t AliITSOnlineSDDBase::GetMinimumBaseline() const {
Float_t basMin=1008.;
for(Int_t ian=0;ian<fgkNAnodes;ian++){
if(!fGoodAnode[ian]) continue;
Float_t bas=GetAnodeBaseline(ian);
if(bas>0 && bas < basMin) basMin=bas;
}
return basMin;
}
Float_t AliITSOnlineSDDBase::CalcMeanRawNoise() const{
Float_t meanns=0.;
Int_t cnt=0;
for(Int_t ian=0;ian<fgkNAnodes;ian++){
if(!fGoodAnode[ian]) continue;
meanns+=GetAnodeRawNoise(ian);
cnt++;
}
if(cnt>0) meanns/=(Float_t)cnt;
return meanns;
}
void AliITSOnlineSDDBase::WriteToASCII(){
TString outfilnam;
Float_t basMin,basMax;
GetMinAndMaxBaseline(basMin,basMax);
Float_t finalVal=basMin;
if(basMin>fGoldenBaseline && basMax<fGoldenBaseline+fgkMaxCorr) finalVal=fGoldenBaseline;
if(basMax<basMin+fgkMaxCorr && basMax>fGoldenBaseline+fgkMaxCorr) finalVal=basMax-fgkMaxCorr;
Float_t avNoise=CalcMeanRawNoise();
Int_t thrL=(Int_t)(finalVal+fLowThrFact*avNoise+0.5);
Int_t thrH=(Int_t)(finalVal+fHighThrFact*avNoise+0.5);
if(CountGoodAnodes()==0) thrH=255;
outfilnam.Form("SDDbase_step1_ddl%02dc%02d_sid%d.data",fDDL,fCarlos,fSide);
FILE* outf=fopen(outfilnam.Data(),"w");
fprintf(outf,"%d\n",thrH);
fprintf(outf,"%d\n",thrL);
Float_t corrnoise=2.;
for(Int_t ian=0;ian<fgkNAnodes;ian++){
Float_t bas=GetAnodeBaseline(ian);
Int_t corr=(Int_t)(bas-finalVal+0.5);
if(corr>fgkMaxCorr) corr=fgkMaxCorr;
if(corr<0) corr=0;
fprintf(outf,"%d %d %11.6f %d %d %11.6f %11.6f %11.6f\n",ian,IsAnodeGood(ian),GetAnodeBaseline(ian),(Int_t)finalVal,corr,GetAnodeRawNoise(ian),GetAnodeCommonMode(ian),corrnoise);
}
fclose(outf);
}
AliITSOnlineSDDBase.cxx:1 AliITSOnlineSDDBase.cxx:2 AliITSOnlineSDDBase.cxx:3 AliITSOnlineSDDBase.cxx:4 AliITSOnlineSDDBase.cxx:5 AliITSOnlineSDDBase.cxx:6 AliITSOnlineSDDBase.cxx:7 AliITSOnlineSDDBase.cxx:8 AliITSOnlineSDDBase.cxx:9 AliITSOnlineSDDBase.cxx:10 AliITSOnlineSDDBase.cxx:11 AliITSOnlineSDDBase.cxx:12 AliITSOnlineSDDBase.cxx:13 AliITSOnlineSDDBase.cxx:14 AliITSOnlineSDDBase.cxx:15 AliITSOnlineSDDBase.cxx:16 AliITSOnlineSDDBase.cxx:17 AliITSOnlineSDDBase.cxx:18 AliITSOnlineSDDBase.cxx:19 AliITSOnlineSDDBase.cxx:20 AliITSOnlineSDDBase.cxx:21 AliITSOnlineSDDBase.cxx:22 AliITSOnlineSDDBase.cxx:23 AliITSOnlineSDDBase.cxx:24 AliITSOnlineSDDBase.cxx:25 AliITSOnlineSDDBase.cxx:26 AliITSOnlineSDDBase.cxx:27 AliITSOnlineSDDBase.cxx:28 AliITSOnlineSDDBase.cxx:29 AliITSOnlineSDDBase.cxx:30 AliITSOnlineSDDBase.cxx:31 AliITSOnlineSDDBase.cxx:32 AliITSOnlineSDDBase.cxx:33 AliITSOnlineSDDBase.cxx:34 AliITSOnlineSDDBase.cxx:35 AliITSOnlineSDDBase.cxx:36 AliITSOnlineSDDBase.cxx:37 AliITSOnlineSDDBase.cxx:38 AliITSOnlineSDDBase.cxx:39 AliITSOnlineSDDBase.cxx:40 AliITSOnlineSDDBase.cxx:41 AliITSOnlineSDDBase.cxx:42 AliITSOnlineSDDBase.cxx:43 AliITSOnlineSDDBase.cxx:44 AliITSOnlineSDDBase.cxx:45 AliITSOnlineSDDBase.cxx:46 AliITSOnlineSDDBase.cxx:47 AliITSOnlineSDDBase.cxx:48 AliITSOnlineSDDBase.cxx:49 AliITSOnlineSDDBase.cxx:50 AliITSOnlineSDDBase.cxx:51 AliITSOnlineSDDBase.cxx:52 AliITSOnlineSDDBase.cxx:53 AliITSOnlineSDDBase.cxx:54 AliITSOnlineSDDBase.cxx:55 AliITSOnlineSDDBase.cxx:56 AliITSOnlineSDDBase.cxx:57 AliITSOnlineSDDBase.cxx:58 AliITSOnlineSDDBase.cxx:59 AliITSOnlineSDDBase.cxx:60 AliITSOnlineSDDBase.cxx:61 AliITSOnlineSDDBase.cxx:62 AliITSOnlineSDDBase.cxx:63 AliITSOnlineSDDBase.cxx:64 AliITSOnlineSDDBase.cxx:65 AliITSOnlineSDDBase.cxx:66 AliITSOnlineSDDBase.cxx:67 AliITSOnlineSDDBase.cxx:68 AliITSOnlineSDDBase.cxx:69 AliITSOnlineSDDBase.cxx:70 AliITSOnlineSDDBase.cxx:71 AliITSOnlineSDDBase.cxx:72 AliITSOnlineSDDBase.cxx:73 AliITSOnlineSDDBase.cxx:74 AliITSOnlineSDDBase.cxx:75 AliITSOnlineSDDBase.cxx:76 AliITSOnlineSDDBase.cxx:77 AliITSOnlineSDDBase.cxx:78 AliITSOnlineSDDBase.cxx:79 AliITSOnlineSDDBase.cxx:80 AliITSOnlineSDDBase.cxx:81 AliITSOnlineSDDBase.cxx:82 AliITSOnlineSDDBase.cxx:83 AliITSOnlineSDDBase.cxx:84 AliITSOnlineSDDBase.cxx:85 AliITSOnlineSDDBase.cxx:86 AliITSOnlineSDDBase.cxx:87 AliITSOnlineSDDBase.cxx:88 AliITSOnlineSDDBase.cxx:89 AliITSOnlineSDDBase.cxx:90 AliITSOnlineSDDBase.cxx:91 AliITSOnlineSDDBase.cxx:92 AliITSOnlineSDDBase.cxx:93 AliITSOnlineSDDBase.cxx:94 AliITSOnlineSDDBase.cxx:95 AliITSOnlineSDDBase.cxx:96 AliITSOnlineSDDBase.cxx:97 AliITSOnlineSDDBase.cxx:98 AliITSOnlineSDDBase.cxx:99 AliITSOnlineSDDBase.cxx:100 AliITSOnlineSDDBase.cxx:101 AliITSOnlineSDDBase.cxx:102 AliITSOnlineSDDBase.cxx:103 AliITSOnlineSDDBase.cxx:104 AliITSOnlineSDDBase.cxx:105 AliITSOnlineSDDBase.cxx:106 AliITSOnlineSDDBase.cxx:107 AliITSOnlineSDDBase.cxx:108 AliITSOnlineSDDBase.cxx:109 AliITSOnlineSDDBase.cxx:110 AliITSOnlineSDDBase.cxx:111 AliITSOnlineSDDBase.cxx:112 AliITSOnlineSDDBase.cxx:113 AliITSOnlineSDDBase.cxx:114 AliITSOnlineSDDBase.cxx:115 AliITSOnlineSDDBase.cxx:116 AliITSOnlineSDDBase.cxx:117 AliITSOnlineSDDBase.cxx:118 AliITSOnlineSDDBase.cxx:119 AliITSOnlineSDDBase.cxx:120 AliITSOnlineSDDBase.cxx:121 AliITSOnlineSDDBase.cxx:122 AliITSOnlineSDDBase.cxx:123 AliITSOnlineSDDBase.cxx:124 AliITSOnlineSDDBase.cxx:125 AliITSOnlineSDDBase.cxx:126 AliITSOnlineSDDBase.cxx:127 AliITSOnlineSDDBase.cxx:128 AliITSOnlineSDDBase.cxx:129 AliITSOnlineSDDBase.cxx:130 AliITSOnlineSDDBase.cxx:131 AliITSOnlineSDDBase.cxx:132 AliITSOnlineSDDBase.cxx:133 AliITSOnlineSDDBase.cxx:134 AliITSOnlineSDDBase.cxx:135 AliITSOnlineSDDBase.cxx:136 AliITSOnlineSDDBase.cxx:137 AliITSOnlineSDDBase.cxx:138 AliITSOnlineSDDBase.cxx:139 AliITSOnlineSDDBase.cxx:140 AliITSOnlineSDDBase.cxx:141 AliITSOnlineSDDBase.cxx:142 AliITSOnlineSDDBase.cxx:143 AliITSOnlineSDDBase.cxx:144 AliITSOnlineSDDBase.cxx:145 AliITSOnlineSDDBase.cxx:146 AliITSOnlineSDDBase.cxx:147 AliITSOnlineSDDBase.cxx:148 AliITSOnlineSDDBase.cxx:149 AliITSOnlineSDDBase.cxx:150 AliITSOnlineSDDBase.cxx:151 AliITSOnlineSDDBase.cxx:152 AliITSOnlineSDDBase.cxx:153 AliITSOnlineSDDBase.cxx:154 AliITSOnlineSDDBase.cxx:155 AliITSOnlineSDDBase.cxx:156 AliITSOnlineSDDBase.cxx:157 AliITSOnlineSDDBase.cxx:158 AliITSOnlineSDDBase.cxx:159 AliITSOnlineSDDBase.cxx:160 AliITSOnlineSDDBase.cxx:161 AliITSOnlineSDDBase.cxx:162 AliITSOnlineSDDBase.cxx:163 AliITSOnlineSDDBase.cxx:164 AliITSOnlineSDDBase.cxx:165 AliITSOnlineSDDBase.cxx:166 AliITSOnlineSDDBase.cxx:167 AliITSOnlineSDDBase.cxx:168 AliITSOnlineSDDBase.cxx:169 AliITSOnlineSDDBase.cxx:170 AliITSOnlineSDDBase.cxx:171 AliITSOnlineSDDBase.cxx:172 AliITSOnlineSDDBase.cxx:173 AliITSOnlineSDDBase.cxx:174 AliITSOnlineSDDBase.cxx:175 AliITSOnlineSDDBase.cxx:176 AliITSOnlineSDDBase.cxx:177 AliITSOnlineSDDBase.cxx:178 AliITSOnlineSDDBase.cxx:179 AliITSOnlineSDDBase.cxx:180 AliITSOnlineSDDBase.cxx:181 AliITSOnlineSDDBase.cxx:182 AliITSOnlineSDDBase.cxx:183 AliITSOnlineSDDBase.cxx:184 AliITSOnlineSDDBase.cxx:185 AliITSOnlineSDDBase.cxx:186 AliITSOnlineSDDBase.cxx:187 AliITSOnlineSDDBase.cxx:188 AliITSOnlineSDDBase.cxx:189 AliITSOnlineSDDBase.cxx:190 AliITSOnlineSDDBase.cxx:191 AliITSOnlineSDDBase.cxx:192 AliITSOnlineSDDBase.cxx:193 AliITSOnlineSDDBase.cxx:194 AliITSOnlineSDDBase.cxx:195 AliITSOnlineSDDBase.cxx:196 AliITSOnlineSDDBase.cxx:197 AliITSOnlineSDDBase.cxx:198 AliITSOnlineSDDBase.cxx:199 AliITSOnlineSDDBase.cxx:200 AliITSOnlineSDDBase.cxx:201 AliITSOnlineSDDBase.cxx:202 AliITSOnlineSDDBase.cxx:203 AliITSOnlineSDDBase.cxx:204 AliITSOnlineSDDBase.cxx:205 AliITSOnlineSDDBase.cxx:206 AliITSOnlineSDDBase.cxx:207 AliITSOnlineSDDBase.cxx:208 AliITSOnlineSDDBase.cxx:209 AliITSOnlineSDDBase.cxx:210 AliITSOnlineSDDBase.cxx:211 AliITSOnlineSDDBase.cxx:212 AliITSOnlineSDDBase.cxx:213 AliITSOnlineSDDBase.cxx:214 AliITSOnlineSDDBase.cxx:215 AliITSOnlineSDDBase.cxx:216