]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSOnlineSDDBase.cxx
SDD DA: possibility of excluding first and last time bin
[u/mrichter/AliRoot.git] / ITS / AliITSOnlineSDDBase.cxx
index c317890ec98bffc53f0dad795c807ff53828acfb..b046ff585a405cf5f0204b8ef21c2317b95191e9 100644 (file)
@@ -55,6 +55,7 @@ AliITSOnlineSDDBase::~AliITSOnlineSDDBase(){
 }
 //______________________________________________________________________
 void AliITSOnlineSDDBase::Reset(){
+  //
   fNEvents=0;
   for(Int_t i=0;i<fgkNAnodes;i++){
     fGoodAnode[i]=1;
@@ -65,6 +66,7 @@ void AliITSOnlineSDDBase::Reset(){
 }
 //______________________________________________________________________
 void  AliITSOnlineSDDBase::ValidateAnodes(){
+  //
   for(Int_t ian=0;ian<fgkNAnodes;ian++){
     fGoodAnode[ian]=1;
     if(GetAnodeBaseline(ian)>fMaxBaseline || GetAnodeBaseline(ian)<fMinBaseline) fGoodAnode[ian]=0;
@@ -77,27 +79,26 @@ void  AliITSOnlineSDDBase::ValidateAnodes(){
 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){
@@ -110,13 +111,13 @@ void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
       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;
@@ -129,7 +130,7 @@ void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
   delete [] cmnOdd;
 }
 //______________________________________________________________________
-Float_t AliITSOnlineSDDBase::CalcMeanRawNoise(){
+Float_t AliITSOnlineSDDBase::CalcMeanRawNoise() const{
   //
   Float_t meanns=0.;
   Int_t cnt=0;
@@ -142,14 +143,14 @@ Float_t AliITSOnlineSDDBase::CalcMeanRawNoise(){
   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);  
 }