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;
fSumBaseline[ian]+=sum[ian];
fSumRawNoise[ian]+=sumQ;
}
-
if(fNEvents==1) ValidateAnodes();
Float_t *cmnEven = new Float_t[kTimeBins];
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;
}
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;
}
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);
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){
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;
#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;
}
}
}
- 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++){
}
-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);
}
#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;
}
}
- 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++;
readEv++;
printf(" --- OK\n");
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");
}
-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);
}
#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;
}
}
}
- 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++){
}
}
- 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++){
}
-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);
}
#include "AliITSOnlineSDDBase.h"
#include "AliITSOnlineSDDCMN.h"
#include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
/* Main routine
Arguments: list of DATE raw data files
*/
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");
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];
}
}
}
- 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++){
#include "AliRawReaderDate.h"
#include "AliITSOnlineSDDTP.h"
#include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
/* Main routine
Arguments: list of DATE raw data files
*/
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");
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];
}
}
}
- 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;
}
}
#include "AliRawReaderDate.h"
#include "AliITSOnlineSDDInjectors.h"
#include "AliITSRawStreamSDD.h"
+#include "AliITSRawStreamSDDCompressed.h"
/* Main routine
Arguments: list of DATE raw data files
*/
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");
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");
}
}
}
- 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;
}
}