}
//______________________________________________________________________
void AliITSOnlineSDDBase::Reset(){
+ //
fNEvents=0;
for(Int_t i=0;i<fgkNAnodes;i++){
fGoodAnode[i]=1;
}
//______________________________________________________________________
void AliITSOnlineSDDBase::ValidateAnodes(){
+ //
for(Int_t ian=0;ian<fgkNAnodes;ian++){
fGoodAnode[ian]=1;
if(GetAnodeBaseline(ian)>fMaxBaseline || GetAnodeBaseline(ian)<fMinBaseline) fGoodAnode[ian]=0;
void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
//
fNEvents++;
- Float_t tbmax=(Float_t)hrawd->GetNbinsX();
+ const Int_t nTimeBins=fLastGoodTB-fFirstGoodTB+1;
Float_t sum[fgkNAnodes];
for(Int_t ian=0;ian<fgkNAnodes;ian++){
Float_t sumQ=0.;
sum[ian]=0.;
- for(Int_t itb=0;itb<tbmax;itb++){
+ for(Int_t itb=fFirstGoodTB;itb<=fLastGoodTB;itb++){
sum[ian]+=hrawd->GetBinContent(itb+1,ian+1);
sumQ+=TMath::Power(hrawd->GetBinContent(itb+1,ian+1),2);
}
- sum[ian]/=tbmax;
- sumQ/=tbmax;
+ sum[ian]/=(Float_t)nTimeBins;
+ sumQ/=(Float_t)nTimeBins;
fSumBaseline[ian]+=sum[ian];
fSumRawNoise[ian]+=sumQ;
if(fNEvents==1) ValidateAnodes();
}
- const Int_t itbmax=int(tbmax);
- Float_t *cmnEven = new Float_t[itbmax];
- Float_t *cmnOdd = new Float_t[itbmax];
- for(Int_t itb=0;itb<tbmax;itb++){
+ Float_t *cmnEven = new Float_t[nTimeBins];
+ Float_t *cmnOdd = new Float_t[nTimeBins];
+ 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){
sumOdd+=hrawd->GetBinContent(itb+1,ian+1)-sum[ian];
countOdd++;
}
- cmnEven[itb]=sumEven/countEven;
- cmnOdd[itb]=sumOdd/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=0;itb<tbmax;itb++){
+ 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;
delete [] cmnOdd;
}
//______________________________________________________________________
-Float_t AliITSOnlineSDDBase::CalcMeanRawNoise(){
+Float_t AliITSOnlineSDDBase::CalcMeanRawNoise() const{
//
Float_t meanns=0.;
Int_t cnt=0;
return meanns;
}
//______________________________________________________________________
-void AliITSOnlineSDDBase::WriteToFXS(){
+void AliITSOnlineSDDBase::WriteToASCII(){
//
Char_t outfilnam[100];
sprintf(outfilnam,"SDDbase_step1_mod%03d_sid%d.data",fModuleId,fSide);
FILE* outf=fopen(outfilnam,"w");
Float_t corrnoise=2.;
for(Int_t ian=0;ian<fgkNAnodes;ian++){
- fprintf(outf,"%d %d %8.3f %8.3f %8.3f %8.3f\n",ian,IsAnodeGood(ian),GetAnodeBaseline(ian),GetAnodeRawNoise(ian),GetAnodeCommonMode(ian),corrnoise);
+ fprintf(outf,"%d %d %11.6f %11.6f %11.6f %11.6f\n",ian,IsAnodeGood(ian),GetAnodeBaseline(ian),GetAnodeRawNoise(ian),GetAnodeCommonMode(ian),corrnoise);
}
fclose(outf);
}