]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AnalyzeSDDGainAllMod.C
Fixing segfault
[u/mrichter/AliRoot.git] / ITS / AnalyzeSDDGainAllMod.C
index aac4f9ddaf7b261e06e952268f3ffe36e0810b61..f6f8a6a44a46c9908a9003bc540d33b4cddfe42c 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 nDDL, 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=18, 
+                         Int_t lastEv=22, 
+                         Float_t pascalDAC=100){
 
   const Int_t kTotDDL=24;
   const Int_t kModPerDDL=12;
   const Int_t kSides=2;
+  Bool_t writtenoutput=kFALSE;
 
 
   TH2F** histo = new TH2F*[kTotDDL*kModPerDDL*kSides];
@@ -40,6 +47,8 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t l
       for(Int_t isid=0;isid<kSides;isid++){
        Int_t index=kSides*(kModPerDDL*iddl+imod)+isid;
        anal[index]=new AliITSOnlineSDDTP(iddl,imod,isid,pascalDAC);
+       if(adcfreq==40) anal[index]->SetLastGoodTB(254);
+       else anal[index]->SetLastGoodTB(126);
        sprintf(hisnam,"h%02dc%02ds%d",iddl,imod,isid);
        histo[index]=new TH2F(hisnam,"",256,-0.5,255.5,256,-0.5,255.5);
        isFilled[index]=0;
@@ -76,16 +85,26 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t l
        }
       }
     }
-    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(iDDL>=0 && iDDL<kTotDDL && s.IsCompletedModule()==kFALSE){ 
-       Int_t index=kSides*(kModPerDDL*iDDL+iCarlos)+s.GetChannel(); 
-       histo[index]->Fill(s.GetCoord2(),s.GetCoord1(),s.GetSignal());
+      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());
        isFilled[index]=1;
       }
     }
+    delete s;
     iev++;
     for(Int_t iddl=0; iddl<kTotDDL;iddl++){
       for(Int_t imod=0; imod<kModPerDDL;imod++){
@@ -106,7 +125,7 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t l
     printf(" --- OK\n");
   }while(rd->NextEvent()&&iev<=lastEv);
 
-  TH1F *htotgain=new TH1F("htotgain","",100,0.,5.);
+  TH1F *htotgain=new TH1F("htotgain","",100,0.2,4.2);
   TH1F *htotpeakpos=new TH1F("htotpeakpos","",256,-0.5,255.5);
   TH1F *hstatus=new TH1F("hstatus","",2,-0.5,1.5);
 
@@ -220,10 +239,17 @@ void AnalyzeSDDGainAllMod(Char_t *datafil, Int_t nDDL, Int_t firstEv=10, Int_t l
 
 }
 
-void AnalyzeSDDGainAllMod(Int_t nrun, Int_t n2, Int_t nDDL=0, Int_t firstEv=10, Int_t lastEv=18, Float_t pascalDAC=100){
+void AnalyzeSDDGainAllMod(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=22, 
+                         Float_t pascalDAC=100){
+
+
   TGrid::Connect("alien:",0,0,"t");
   Char_t filnam[200];
-  sprintf(filnam,"alien:///alice/data/2008/LHC08c_SDD/%09d/raw/08%09d%03d.10.root",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);
-  AnalyzeSDDGainAllMod(filnam,nDDL,firstEv,lastEv,pascalDAC);
+  AnalyzeSDDGainAllMod(filnam,adcfreq,nDDL,firstEv,lastEv,pascalDAC);
 }