]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updates in SDD DA in order to handle different data formats from DAQ cards (F. Prino)
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 17 Jun 2009 16:32:30 +0000 (16:32 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 17 Jun 2009 16:32:30 +0000 (16:32 +0000)
ITS/AliITSOnlineSDDBase.cxx
ITS/AliITSOnlineSDDBase.h
ITS/AliITSOnlineSDDCMN.cxx
ITS/AliITSOnlineSDDTP.cxx
ITS/AliITSRawStream.h
ITS/AnalyzeSDDGainAllMod.C
ITS/AnalyzeSDDInjectorsAllMod.C
ITS/AnalyzeSDDNoiseAllMod.C
ITS/ITSSDDBASda.cxx
ITS/ITSSDDGAINda.cxx
ITS/ITSSDDINJda.cxx

index f1fdd586bf32e2965152f0f1ba769b0fecd3a30f..9cb5c3948e185abbaeec5745895cae994dde474b 100644 (file)
@@ -93,8 +93,9 @@ void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
     sum[ian]=0.;
     Int_t cnt=0;
     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);
+      Float_t cbin=hrawd->GetBinContent(itb+1,ian+1);
+      sum[ian]+=cbin;
+      sumQ+=cbin*cbin;
       cnt++;
     }
     sum[ian]/=(Float_t)cnt;
@@ -102,7 +103,6 @@ void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
     fSumBaseline[ian]+=sum[ian];
     fSumRawNoise[ian]+=sumQ;
   }
-
   if(fNEvents==1) ValidateAnodes();
 
   Float_t *cmnEven = new Float_t[kTimeBins];
@@ -130,7 +130,7 @@ void AliITSOnlineSDDBase::AddEvent(TH2F* hrawd){
       Float_t cmnCoef=cmnOdd[itb];
       if(ian%2==0) cmnCoef=cmnEven[itb];
       num+=(hrawd->GetBinContent(itb+1,ian+1)-sum[ian])*cmnCoef;
-      den+=TMath::Power(cmnCoef,2);
+      den+=cmnCoef*cmnCoef;
     }
     if(den!=0) fSumCMN[ian]+=num/den;
   }
index 43fd45ed686f5f8866a10827b4a43e41bd5e647c..a66c8b4971ad61882e4701108db71ceb689037bb 100644 (file)
@@ -41,8 +41,9 @@ class AliITSOnlineSDDBase : public AliITSOnlineSDD {
   void GetMinAndMaxBaseline(Float_t &basMin, Float_t &basMax) const;
   Float_t GetMinimumBaseline() const;
   Float_t GetAnodeRawNoise(Int_t iAnode) const{
-    if(fNEvents>0) return TMath::Sqrt(fSumRawNoise[iAnode]/fNEvents-TMath::Power(GetAnodeBaseline(iAnode),2));
-    
+    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;
   }
 
index c1999bf9bc2ef1aaaa8696e25d9f657c7aa4f82d..ac14eaad465413c7390f6ca931a34c808a29f084 100644 (file)
@@ -144,7 +144,8 @@ void AliITSOnlineSDDCMN::AddEvent(TH2F* hrawd){
     Float_t sumQ=0.;
     Int_t cnt=0;
     for(Int_t itb=fFirstGoodTB;itb<=fLastGoodTB;itb++){
-      sumQ+=TMath::Power(hcorrd->GetBinContent(itb+1,ian+1)-fBaseline[ian],2); 
+      Float_t cntdiff=hcorrd->GetBinContent(itb+1,ian+1)-fBaseline[ian];
+      sumQ+=cntdiff*cntdiff;
       cnt++;    
     }
     fSumCorrNoise[ian]+=TMath::Sqrt(sumQ/(Float_t)cnt);
index d6a5816eb0c95df8b70a2960186e9b8d2da055af..b025311366db1a8cd23a6eb6845436c5a84168bf 100644 (file)
@@ -152,8 +152,9 @@ void AliITSOnlineSDDTP::StatGain(Float_t &mean, Float_t  &rms){
   for(Int_t ian=0;ian<fgkNAnodes;ian++){
     if(!fGoodAnode[ian]) continue;
     if(fNEvents[ian]==0) continue;
-    sum+=GetChannelGain(ian);
-    sumq+=TMath::Power(GetChannelGain(ian),2);
+    Float_t chgain=GetChannelGain(ian);
+    sum+=chgain;
+    sumq+=chgain*chgain;
     cnt++;
   }
   if(cnt>0){ 
index 369511ebdf05e11fb71d1ea92c21cbda6c9ba7f9..bf7bd52f7b08b176b503ddac7c01407cd6042105 100644 (file)
@@ -41,6 +41,11 @@ class AliITSRawStream: public TObject {
     virtual void     SetZeroSuppLowThreshold(Int_t /*iMod*/, Int_t /*iSid*/, Int_t /*th*/) {
       AliError("This method must be implemented in a derived class");
     };
+    virtual void     SetADCEncoded(Bool_t /*fl*/) {
+      AliError("This method must be implemented in a derived class");
+    };
+
+
     virtual Int_t     GetCarlosId() const {
       AliError("This method must be implemented in a derived class");
       return -1;
index c0f388fc529b62a30e5914ab9c6e4fa9d7858877..0b2be122067759dbe017bdacb1ccd9d34341451b 100644 (file)
@@ -13,6 +13,7 @@
 #include "AliITSOnlineSDDCMN.h"
 #include "AliITSOnlineSDDTP.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 #endif
 
 // Macro for the analysis of PULSER runs (equivalent to ITSSDDGAINda.cxx)
 // Origin: F. Prino (prino@to.infn.it)
 
 
-void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=10, Int_t lastEv=16, Float_t pascalDAC=100){
+void AnalyzeSDDGainAllMod(Char_t *datafil, 
+                         Int_t adcfreq=20, 
+                         Int_t nDDL=0, 
+                         Int_t firstEv=10, 
+                         Int_t lastEv=16, 
+                         Float_t pascalDAC=100, 
+                         Int_t dataformat=1){
 
   const Int_t kTotDDL=24;
   const Int_t kModPerDDL=12;
@@ -78,18 +85,25 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_t
        }
       }
     }
-    AliITSRawStreamSDD s(rd);
-    while(s.Next()){
+    AliITSRawStream* s;
+    if(dataformat==0){
+      s=new AliITSRawStreamSDD(rd);
+    }else{
+      s=new AliITSRawStreamSDDCompressed(rd);
+      if(dataformat==1) s->SetADCEncoded(kTRUE);
+    }
+    while(s->Next()){
       Int_t iDDL=rd->GetDDLID();
-      Int_t iCarlos=s.GetCarlosId();
-      if(s.IsCompletedModule()) continue;
-      if(s.IsCompletedDDL()) continue;
+      Int_t iCarlos=s->GetCarlosId();
+      if(s->IsCompletedModule()) continue;
+      if(s->IsCompletedDDL()) continue;
       if(iDDL>=0 && iDDL<kTotDDL){ 
-       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-       histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+       histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
        isFilled[index]=1;
       }
     }
+    delete s;
     iev++;
     for(Int_t iddl=0; iddl<kTotDDL;iddl++){
       for(Int_t imod=0; imod<kModPerDDL;imod++){
@@ -224,10 +238,17 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_t
 
 }
 
-void AnalyzeSDDGainAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD",Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=15, Int_t lastEv=20, Float_t pascalDAC=100){
+void AnalyzeSDDGainAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD",
+                         Int_t adcfreq=20, 
+                         Int_t nDDL=0, 
+                         Int_t firstEv=15, 
+                         Int_t lastEv=20, 
+                         Float_t pascalDAC=100, 
+                         Int_t dataformat=1){
+
   TGrid::Connect("alien:",0,0,"t");
   Char_t filnam[200];
   sprintf(filnam,"alien:///alice/data/2008/%s/%09d/raw/08%09d%03d.10.root",dir,nrun,nrun,n2);
   printf("Open file %s\n",filnam);
-  AnalyzeSDDGainAllMod(filnam,adcfreq,nDDL,firstEv,lastEv,pascalDAC);
+  AnalyzeSDDGainAllMod(filnam,adcfreq,nDDL,firstEv,lastEv,pascalDAC,dataformat);
 }
index fb67cf164d1fea43790d56afd19d86557036b72a..5ddacdd2538fec3f71769146f2d7415958c3ae81 100644 (file)
@@ -15,6 +15,7 @@
 #include "AliRawReaderRoot.h"
 #include "AliITSOnlineSDDInjectors.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 #include "AliITSDDLModuleMapSDD.h"
 #endif
 
 // Origin: F. Prino (prino@to.infn.it)
 
 
-void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=10, Int_t lastEv=15,Int_t jpad=16, Int_t statuscut=7){
+void AnalyzeSDDInjectorsAllMod(Char_t *datafil, 
+                              Int_t adcfreq=20, 
+                              Int_t nDDL=0, 
+                              Int_t firstEv=10, 
+                              Int_t lastEv=15,
+                              Int_t jpad=16, 
+                              Int_t statuscut=7, 
+                              Int_t dataformat=1){
 
   const Int_t kTotDDL=24;
   const Int_t kModPerDDL=12;
@@ -108,15 +116,21 @@ void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0,
       }
     }
 
-    AliITSRawStreamSDD s(rd);
-    while(s.Next()){
+    AliITSRawStream* s;
+    if(dataformat==0){
+      s=new AliITSRawStreamSDD(rd);
+    }else{
+      s=new AliITSRawStreamSDDCompressed(rd);
+      if(dataformat==1) s->SetADCEncoded(kTRUE);
+    }
+    while(s->Next()){
       Int_t iDDL=rd->GetDDLID();
-      Int_t iCarlos=s.GetCarlosId();
-      if(s.IsCompletedModule()) continue;
-      if(s.IsCompletedDDL()) continue;
+      Int_t iCarlos=s->GetCarlosId();
+      if(s->IsCompletedModule()) continue;
+      if(s->IsCompletedDDL()) continue;
       if(iDDL>=0 && iDDL<kTotDDL){ 
-       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-       histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+       histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
       }
     }
     
@@ -178,6 +192,7 @@ void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0,
        }
       }
     }
+    delete s;
     iev++;
     readEv++;
     printf(" --- OK\n");
@@ -243,7 +258,7 @@ void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0,
   gvvsmod0->SetMinimum(gvmin);
   gvvsmod0->SetMaximum(gvmax);
   gvvsmod0->GetXaxis()->SetTitle("Module Number");
-  Char_t title[25];
+  Char_t title[50];
   sprintf(title,"Vdrift at injector pad %d",jpad);
   gvvsmod0->GetYaxis()->SetTitle(title);  
   gvvsmod1->Draw("PSAME");
@@ -310,12 +325,20 @@ void AnalyzeSDDInjectorsAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0,
 
 }
 
-void AnalyzeSDDInjectorsAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD", Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=15, Int_t lastEv=15){
+void AnalyzeSDDInjectorsAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD", 
+                              Int_t adcfreq=20, 
+                              Int_t nDDL=0, 
+                              Int_t firstEv=15, 
+                              Int_t lastEv=15,
+                              Int_t jpad=16, 
+                              Int_t statuscut=7, 
+                              Int_t dataformat=1){
+
   TGrid::Connect("alien:",0,0,"t");
   Char_t filnam[200];
   sprintf(filnam,"alien:///alice/data/2008/%s/%09d/raw/08%09d%03d.10.root",dir,nrun,nrun,n2);
   printf("Open file %s\n",filnam);
-  AnalyzeSDDInjectorsAllMod(filnam,adcfreq,nDDL,firstEv,lastEv);
+  AnalyzeSDDInjectorsAllMod(filnam,adcfreq,nDDL,firstEv,lastEv,jpad,statuscut,dataformat);
 }
 
 
index b480d2047cfcb1c50a43fea317490849257ec69e..6d3dfe317d2b9000cc386703ba358691b106b4d7 100644 (file)
@@ -13,6 +13,7 @@
 #include "AliITSOnlineSDDBase.h"
 #include "AliITSOnlineSDDCMN.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 #include "TPaveStats.h"
 #endif
 
 // All DDLs are analyzed, the argument nDDL selects the DDL to be plotted
 // Origin: F. Prino (prino@to.infn.it)
 
-void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=10, Int_t lastEv=12){
+void AnalyzeSDDNoiseAllMod(Char_t *datafil, 
+                          Int_t adcfreq=20, 
+                          Int_t nDDL=0, 
+                          Int_t firstEv=10, 
+                          Int_t lastEv=12, 
+                          Int_t dataformat=1){
+
 
   const Int_t kTotDDL=24;
   const Int_t kModPerDDL=12;
@@ -76,17 +83,24 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_
        }
       }
     }
-    AliITSRawStreamSDD s(rd);
-    while(s.Next()){
+    AliITSRawStream* s;
+    if(dataformat==0){
+      s=new AliITSRawStreamSDD(rd);
+    }else{
+      s=new AliITSRawStreamSDDCompressed(rd);
+      if(dataformat==1) s->SetADCEncoded(kTRUE);
+    }
+    while(s->Next()){
       Int_t iDDL=rd->GetDDLID();
-      Int_t iCarlos=s.GetCarlosId();
-      if(s.IsCompletedModule()) continue;
-      if(s.IsCompletedDDL()) continue;
+      Int_t iCarlos=s->GetCarlosId();
+      if(s->IsCompletedModule()) continue;
+      if(s->IsCompletedDDL()) continue;
       if(iDDL>=0 && iDDL<kTotDDL){ 
-       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-       histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+       histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
       }
     }
+    delete s;
     iev++;
     for(Int_t iddl=0; iddl<kTotDDL;iddl++){
       for(Int_t imod=0; imod<kModPerDDL;imod++){
@@ -157,18 +171,25 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_
       }
     }
     
-    AliITSRawStreamSDD s(rd2);
-    while(s.Next()){
+    AliITSRawStream* s;
+    if(dataformat==0){
+      s=new AliITSRawStreamSDD(rd2);
+    }else{
+      s=new AliITSRawStreamSDDCompressed(rd2);
+      if(dataformat==1) s->SetADCEncoded(kTRUE);
+    }
+    while(s->Next()){
       Int_t iDDL=rd2->GetDDLID();
-      Int_t iCarlos=s.GetCarlosId();
-      if(s.IsCompletedModule()) continue;
-      if(s.IsCompletedDDL()) continue;
+      Int_t iCarlos=s->GetCarlosId();
+      if(s->IsCompletedModule()) continue;
+      if(s->IsCompletedDDL()) continue;
       if(iDDL>=0 && iDDL<kTotDDL){ 
-       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-       histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+       histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
        isFilled[index]=1;
       }
     }
+    delete s;
     iev++;
     for(Int_t iddl=0; iddl<kTotDDL;iddl++){
       for(Int_t imod=0; imod<kModPerDDL;imod++){
@@ -373,10 +394,16 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t adcfreq=20, Int_t nDDL=0, Int_
 
 }
 
-void AnalyzeSDDNoiseAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD",Int_t adcfreq=20, Int_t nDDL=0, Int_t firstEv=15, Int_t lastEv=18){
+void AnalyzeSDDNoiseAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD",
+                          Int_t adcfreq=20, 
+                          Int_t nDDL=0, 
+                          Int_t firstEv=15, 
+                          Int_t lastEv=18, 
+                          Int_t dataformat=1){
+
   TGrid::Connect("alien:",0,0,"t");
   Char_t filnam[200];
   sprintf(filnam,"alien:///alice/data/2008/%s/%09d/raw/08%09d%03d.10.root",dir,nrun,nrun,n2);
   printf("Open file %s\n",filnam);
-  AnalyzeSDDNoiseAllMod(filnam,adcfreq,nDDL,firstEv,lastEv);
+  AnalyzeSDDNoiseAllMod(filnam,adcfreq,nDDL,firstEv,lastEv,dataformat);
 }
index 1cc0c9d30242891313f73d8a3bf76ed2662e9ee4..9837847426dbceb77a8a9249d506695f593e0bc0 100644 (file)
@@ -51,6 +51,7 @@ extern "C" {
 #include "AliITSOnlineSDDBase.h"
 #include "AliITSOnlineSDDCMN.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 /* Main routine
       Arguments: list of DATE raw data files
 */
@@ -82,6 +83,7 @@ int main(int argc, char **argv) {
   const Int_t kSides=2;
   Int_t adcSamplFreq=40;
   Bool_t readfeeconf=kFALSE;
+  Int_t dataformat=1;
   gSystem->Exec("rm -f SDDbase_*.data");
   if(gSystem->Getenv("DAQ_DETDB_LOCAL")!=NULL){
     const char* dir=gSystem->Getenv("DAQ_DETDB_LOCAL");    
@@ -89,12 +91,13 @@ int main(int argc, char **argv) {
     FILE* feefil=fopen(filnam.Data(),"r"); 
     if(feefil){
       fscanf(feefil,"%d \n",&adcSamplFreq);
+      fscanf(feefil,"%d \n",&dataformat);
       fclose(feefil);
       readfeeconf=kTRUE;
-      printf("ADC sampling frequency = %d MHz\n",adcSamplFreq);
+      printf("ADC sampling frequency = %d MHz dataformat code =%d \n",adcSamplFreq,dataformat);
     }
   }
-  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz\n");
+  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz and data format to 1\n");
   
   AliITSOnlineSDDBase **base=new AliITSOnlineSDDBase*[kTotDDL*kModPerDDL*kSides];
   AliITSOnlineSDDCMN **corr=new AliITSOnlineSDDCMN*[kTotDDL*kModPerDDL*kSides];
@@ -209,18 +212,25 @@ int main(int argc, char **argv) {
              }
            }
          }
-         AliITSRawStreamSDD s(rawReader);
+         AliITSRawStream* s;
+         if(dataformat==0){
+           s=new AliITSRawStreamSDD(rawReader);
+         }else{
+           s=new AliITSRawStreamSDDCompressed(rawReader);
+           if(dataformat==1) s->SetADCEncoded(kTRUE);
+         }
 
-         while(s.Next()){
+         while(s->Next()){
            Int_t iDDL=rawReader->GetDDLID();
-           Int_t iCarlos=s.GetCarlosId();
-           if(s.IsCompletedModule()) continue;
-           if(s.IsCompletedDDL()) continue;
+           Int_t iCarlos=s->GetCarlosId();
+           if(s->IsCompletedModule()) continue;
+           if(s->IsCompletedDDL()) continue;
            if(iDDL>=0 && iDDL<kTotDDL){ 
-             Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-             histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+             Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+             histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
            }
          }
+         delete s;
          delete rawReader;
          for(Int_t iddl=0; iddl<kTotDDL;iddl++){
            for(Int_t imod=0; imod<kModPerDDL;imod++){
index 5d53122116051e60963f47a6e6cb81ed5f3b70f5..36cb008136abd84f20292d99d103d6d2d2179af3 100644 (file)
@@ -49,6 +49,7 @@ extern "C" {
 #include "AliRawReaderDate.h"
 #include "AliITSOnlineSDDTP.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 /* Main routine
       Arguments: list of DATE raw data files
 */
@@ -80,6 +81,7 @@ int main(int argc, char **argv) {
   const Int_t kSides=2;
   Int_t adcSamplFreq=40;
   Bool_t readfeeconf=kFALSE;
+  Int_t dataformat=1;
   gSystem->Exec("rm -f  SDDbase_LDC.tar");
    if(gSystem->Getenv("DAQ_DETDB_LOCAL")!=NULL){
     const char* dir=gSystem->Getenv("DAQ_DETDB_LOCAL");    
@@ -87,14 +89,15 @@ int main(int argc, char **argv) {
     FILE* feefil=fopen(filnam.Data(),"r"); 
     if(feefil){
       fscanf(feefil,"%d \n",&adcSamplFreq);
+      fscanf(feefil,"%d \n",&dataformat);
+      fclose(feefil);
       TString shcomm=Form("tar -rf SDDbase_LDC.tar -C %s fee.conf",dir); 
       gSystem->Exec(shcomm.Data());
-      fclose(feefil);
       readfeeconf=kTRUE;
-      printf("ADC sampling frequency = %d MHz\n",adcSamplFreq);
+      printf("ADC sampling frequency = %d MHz dataformat code =%d \n",adcSamplFreq,dataformat);
     }
   }
-  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz\n");
+  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz and data format to 1\n");
 
   AliITSOnlineSDDTP **tpan=new AliITSOnlineSDDTP*[kTotDDL*kModPerDDL*kSides];
   TH2F **histo=new TH2F*[kTotDDL*kModPerDDL*kSides];
@@ -189,16 +192,22 @@ int main(int argc, char **argv) {
            }
          }
        }
-       AliITSRawStreamSDD s(rawReader);
+       AliITSRawStream* s;
+       if(dataformat==0){
+         s=new AliITSRawStreamSDD(rawReader);
+       }else{
+         s=new AliITSRawStreamSDDCompressed(rawReader);
+         if(dataformat==1) s->SetADCEncoded(kTRUE);
+       }
        
-       while(s.Next()){
+       while(s->Next()){
          Int_t iDDL=rawReader->GetDDLID();
-         Int_t iCarlos=s.GetCarlosId();
-         if(s.IsCompletedModule()) continue;
-         if(s.IsCompletedDDL()) continue;
+         Int_t iCarlos=s->GetCarlosId();
+         if(s->IsCompletedModule()) continue;
+         if(s->IsCompletedDDL()) continue;
          if(iDDL>=0 && iDDL<kTotDDL){ 
-           Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-           histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+           Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+           histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
            isFilled[index]=1;
          }
        }
index 786fecf615a3f29a0431cc4b0b8ca7ef76121b9f..7e100dc47ab3cc778042ce949d52c4f3bc7b5e57 100644 (file)
@@ -48,6 +48,7 @@ extern "C" {
 #include "AliRawReaderDate.h"
 #include "AliITSOnlineSDDInjectors.h"
 #include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
 /* Main routine
       Arguments: list of DATE raw data files
 */
@@ -80,6 +81,7 @@ int main(int argc, char **argv) {
   const Int_t kSides=2;
   Int_t adcSamplFreq=40;
   Bool_t readfeeconf=kFALSE;
+  Int_t dataformat=1;
   gSystem->Exec("rm -f SDDinj_ddl*.data");
   if(gSystem->Getenv("DAQ_DETDB_LOCAL")!=NULL){
     const char* dir=gSystem->Getenv("DAQ_DETDB_LOCAL");    
@@ -87,12 +89,13 @@ int main(int argc, char **argv) {
     FILE* feefil=fopen(filnam.Data(),"r"); 
     if(feefil){
       fscanf(feefil,"%d \n",&adcSamplFreq);
+      fscanf(feefil,"%d \n",&dataformat);
       fclose(feefil);
       readfeeconf=kTRUE;
-      printf("ADC sampling frequency = %d MHz\n",adcSamplFreq);
+      printf("ADC sampling frequency = %d MHz dataformat code =%d \n",adcSamplFreq,dataformat);
     }
   }
-  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz\n");
+  if(!readfeeconf) printf("File fee.conf not found, sampling frequency set to 40 MHz and data format to 1\n");
 
 
 
@@ -194,16 +197,22 @@ int main(int argc, char **argv) {
            }
          }
        }
-       AliITSRawStreamSDD s(rawReader);
+       AliITSRawStream* s;
+       if(dataformat==0){
+         s=new AliITSRawStreamSDD(rawReader);
+       }else{
+         s=new AliITSRawStreamSDDCompressed(rawReader);
+         if(dataformat==1) s->SetADCEncoded(kTRUE);
+       }
        
-       while(s.Next()){
+       while(s->Next()){
          Int_t iDDL=rawReader->GetDDLID();
-         Int_t iCarlos=s.GetCarlosId();
-         if(s.IsCompletedModule()) continue;
-         if(s.IsCompletedDDL()) continue;
+         Int_t iCarlos=s->GetCarlosId();
+         if(s->IsCompletedModule()) continue;
+         if(s->IsCompletedDDL()) continue;
          if(iDDL>=0 && iDDL<kTotDDL){ 
-           Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-           histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+           Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s->GetChannel(); 
+           histo[index]->Fill(s->GetCoord2(),s->GetCoord1(),s->GetSignal());
            isFilled[index]=1;
          }
        }