]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AnalyzeSDDNoiseAllMod.C
Use constant char array instead of TString (Theo)
[u/mrichter/AliRoot.git] / ITS / AnalyzeSDDNoiseAllMod.C
index 7ea1aac1751e0b727d332d648b18393bbca8fb54..32e09ff25179f8dbe2651283628354f930240e54 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 nDDL, Int_t firstEv=10, Int_t lastEv=12){
+void AnalyzeSDDNoiseAllMod(Char_t *datafil, 
+                          Int_t adcfreq=20, 
+                          Int_t nDDL=0, 
+                          Int_t firstEv=18, 
+                          Int_t lastEv=20){ 
+
 
   const Int_t kTotDDL=24;
   const Int_t kModPerDDL=12;
   const Int_t kSides=2;
+  Bool_t writtenoutput=kFALSE;
 
   AliITSOnlineSDDBase **base=new AliITSOnlineSDDBase*[kTotDDL*kModPerDDL*kSides];
   TH2F **histo=new TH2F*[kTotDDL*kModPerDDL*kSides];
@@ -37,9 +44,11 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t
     for(Int_t imod=0; imod<kModPerDDL;imod++){
       for(Int_t isid=0;isid<kSides;isid++){
        Int_t index=kSides*(kModPerDDL*iddl+imod)+isid;
-       base[index]=new AliITSOnlineSDDBase(iddl,imod,isid);
+       base[index]=new AliITSOnlineSDDBase(iddl,imod,isid);    
+       if(adcfreq==40) base[index]->SetLastGoodTB(254);
+       else base[index]->SetLastGoodTB(126);
        sprintf(hisnam,"h%02dc%02ds%d",iddl,imod,isid);
-       histo[index]=new TH2F(hisnam,"",128,-0.5,127.5,256,-0.5,255.5);
+       histo[index]=new TH2F(hisnam,"",256,-0.5,255.5,256,-0.5,255.5);
       }
     }
   }
@@ -74,17 +83,26 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t
        }
       }
     }
-    AliITSRawStreamSDD s(rd);
-    while(s.Next()){
+
+    UChar_t cdhAttr=AliITSRawStreamSDD::ReadBlockAttributes(rd);
+    UInt_t amSamplFreq=AliITSRawStreamSDD::ReadAMSamplFreqFromCDH(cdhAttr);
+    AliITSRawStream* s=AliITSRawStreamSDD::CreateRawStreamSDD(rd,cdhAttr);
+    if(!writtenoutput){
+      printf("Use %s raw stream, sampling frequency %d MHz\n",s->ClassName(),amSamplFreq);
+      writtenoutput=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++){
@@ -127,6 +145,8 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t
       for(Int_t isid=0;isid<kSides;isid++){
        Int_t index=kSides*(kModPerDDL*iddl+imod)+isid;
        corr[index]=new AliITSOnlineSDDCMN(iddl,imod,isid);
+       if(adcfreq==40) corr[index]->SetLastGoodTB(254);
+       else corr[index]->SetLastGoodTB(126);
        isFilled[index]=0;
       }
     }
@@ -153,18 +173,25 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t
       }
     }
     
-    AliITSRawStreamSDD s(rd2);
-    while(s.Next()){
+    UChar_t cdhAttr=AliITSRawStreamSDD::ReadBlockAttributes(rd2);
+    UInt_t amSamplFreq=AliITSRawStreamSDD::ReadAMSamplFreqFromCDH(cdhAttr);
+    AliITSRawStream* s=AliITSRawStreamSDD::CreateRawStreamSDD(rd2,cdhAttr);
+    if(!writtenoutput){
+      printf("Use %s raw stream, sampling frequency %d MHz\n",s->ClassName(),amSamplFreq);
+      writtenoutput=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++){
@@ -369,10 +396,15 @@ void AnalyzeSDDNoiseAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t
 
 }
 
-void AnalyzeSDDNoiseAllMod(Int_t nrun, Int_t n2, Char_t* dir="LHC08d_SDD",Int_t nDDL=0, Int_t firstEv=15, Int_t lastEv=18){
+void AnalyzeSDDNoiseAllMod(Int_t nrun, Int_t n2, Int_t year=2009, Char_t* dir="LHC09b_SDD",
+                          Int_t adcfreq=20, 
+                          Int_t nDDL=0, 
+                          Int_t firstEv=18, 
+                          Int_t lastEv=20){
+
   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);
+  sprintf(filnam,"alien:///alice/data/%d/%s/%09d/raw/%02d%09d%03d.10.root",year,dir,nrun,year-2000,nrun,n2);
   printf("Open file %s\n",filnam);
-  AnalyzeSDDNoiseAllMod(filnam,nDDL,firstEv,lastEv);
+  AnalyzeSDDNoiseAllMod(filnam,adcfreq,nDDL,firstEv,lastEv);
 }