#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];
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;
}
}
}
- 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++){
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);
}
-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);
}