void SetDebug(Int_t idebu) {fDebugOpt = idebu;};
// Getters
- Double_t GetFermi2p(Int_t key) {return fProbintp[key];}
- Double_t GetFermi2n(Int_t key) {return fProbintn[key];}
+ const Double_t GetFermi2p(Int_t key) {return fProbintp[key];}
+ const Double_t GetFermi2n(Int_t key) {return fProbintn[key];}
protected:
Int_t fIpart; // Particle to be generated
ClassImp(AliZDCCalibData)
//________________________________________________________________
-AliZDCCalibData::AliZDCCalibData()
+AliZDCCalibData::AliZDCCalibData():
+TNamed()
{
Reset();
}
//________________________________________________________________
-AliZDCCalibData::AliZDCCalibData(const char* name)
+AliZDCCalibData::AliZDCCalibData(const char* name):
+TNamed(),
+fZEMEndValue(0),
+fZEMCutFraction(0),
+fDZEMSup(0),
+fDZEMInf(0),
+fEZN1MaxValue(0),
+fEZP1MaxValue(0),
+fEZDC1MaxValue(0),
+fEZN2MaxValue(0),
+fEZP2MaxValue(0),
+fEZDC2MaxValue(0)
{
// Constructor
TString namst = "Calib_";
memset(fOOTPedestal,0,48*sizeof(Float_t));
memset(fOOTPedWidth,0,48*sizeof(Float_t));
memset(fEnCalibration,0,6*sizeof(Float_t));
+ memset(fZN1EqualCoeff,0,5*sizeof(Float_t));
+ memset(fZP1EqualCoeff,0,5*sizeof(Float_t));
+ memset(fZN2EqualCoeff,0,5*sizeof(Float_t));
+ memset(fZP2EqualCoeff,0,5*sizeof(Float_t));
}
void AliZDCCalibData::Print(Option_t *) const
{
// Printing of calibration object
- printf("\n ####### In-time pedestal values (mean value, sigma) ####### \n");
- for(int t=0; t<48; t++){
- if(t==0 || t==24) printf("\n-------- ZN1 HighRes -------- \n");
- else if(t==5 || t==29) printf("\n-------- ZN1 LowRes -------- \n");
- else if(t==10 || t==34) printf("\n-------- ZP1 HighRes -------- \n");
- else if(t==15 || t==39) printf("\n-------- ZP1 LowRes -------- \n");
- else if(t==20) printf("\n-------- ZEM1 HighRes -------- \n");
- else if(t==21) printf("\n-------- ZEM1 LowRes -------- \n");
- else if(t==22) printf("\n-------- ZEM2 HighRes -------- \n");
- else if(t==23) printf("\n-------- ZEM2 LowRes -------- \n");
- printf("ADC%d (%.1f, %.1f) ",t,fMeanPedestal[t],fMeanPedWidth[t]);
- }
+ printf("\n ####### In-time pedestal values (mean value, sigma) ####### \n");
+ for(int t=0; t<48; t++)
+ printf("\t ADC%d (%.1f, %.1f)\n",t,fMeanPedestal[t],fMeanPedWidth[t]);
//
- printf("\n\n ####### Out-of-time pedestal values (mean value, sigma) ####### \n");
- for(int t=0; t<48; t++){
- if(t==0 || t==24) printf("\n-------- ZN1 HighRes -------- \n");
- else if(t==5 || t==29) printf("\n-------- ZN1 LowRes -------- \n");
- else if(t==10 || t==34) printf("\n-------- ZP1 HighRes -------- \n");
- else if(t==15 || t==39) printf("\n-------- ZP1 LowRes -------- \n");
- else if(t==20) printf("\n-------- ZEM1 HighRes -------- \n");
- else if(t==21) printf("\n-------- ZEM1 LowRes -------- \n");
- else if(t==22) printf("\n-------- ZEM2 HighRes -------- \n");
- else if(t==23) printf("\n-------- ZEM2 LowRes -------- \n");
- printf("ADC%d (%.1f, %.1f) ",t,fOOTPedestal[t],fOOTPedWidth[t]);
- }
+ printf("\n\n ####### Out-of-time pedestal values (mean value, sigma) ####### \n");
+ for(int t=0; t<48; t++)
+ printf("\t ADC-OoT%d (%.1f, %.1f)\n",t,fOOTPedestal[t],fOOTPedWidth[t]);
- printf("\n\n ####### Energy calibration coefficients ####### \n");
+ printf("\n\n ####### Energy calibration coefficients ####### \n");
printf(" ZN1 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[0]);
printf(" ZP1 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[1]);
printf(" ZN2 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[2]);
printf(" ZEM1 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[4]);
printf(" ZEM2 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[5]);
- printf("\n\n ####### Equalization coefficients ####### \n");
+ printf("\n\n ####### Equalization coefficients ####### \n");
printf(" ZN1 -> %1.2f %1.2f %1.2f %1.2f %1.2f \n",
fZN1EqualCoeff[0],fZN1EqualCoeff[1],fZN1EqualCoeff[2],fZN1EqualCoeff[3],fZN1EqualCoeff[4]);
printf(" ZP1 -> %1.2f %1.2f %1.2f %1.2f %1.2f \n",
printf(" ZP2 -> %1.2f %1.2f %1.2f %1.2f %1.2f \n",
fZP2EqualCoeff[0],fZP2EqualCoeff[1],fZP2EqualCoeff[2],fZP2EqualCoeff[3],fZP2EqualCoeff[4]);
- printf("\n\n ####### Parameters from EZDC vs. ZEM correlation ####### \n");
+ printf("\n\n ####### Parameters from EZDC vs. ZEM correlation ####### \n");
printf(" ZEMEndPoint = %1.2f, ZEMCutFraction = %1.2f \n"
- " DZEMInf = %1.2f, DZEMSup = %1.2f\n",
+ " DZEMInf = %1.2f, DZEMSup = %1.2f\n",
fZEMEndValue, fZEMCutFraction, fDZEMInf, fDZEMSup);
- printf("\n\n ####### Parameters from EZDC vs. Nspec correlation ####### \n");
+ printf("\n\n ####### Parameters from EZDC vs. Nspec correlation ####### \n");
printf(" EZN1MaxValue = %1.2f, EZP1MaxValue = %1.2f, EZDC1MaxValue = %1.2f \n"
" EZN2MaxValue = %1.2f, EZP2MaxValue = %1.2f, EZDC2MaxValue = %1.2f \n\n",
fEZN1MaxValue, fEZP1MaxValue, fEZDC1MaxValue,
//
//
- if(j>=4) CreateGraph(j, aliasArr->GetEntries(), time, val); // fill graphs
+// if(j>=4) CreateGraph(j, aliasArr->GetEntries(), time, val); // fill graphs
//
delete[] val;
delete[] time;
gr->GetXaxis()->SetTimeDisplay(1);
gr->SetTitle(fAliasNames[i].Data());
- AliInfo(Form("Array entries: %d",fGraphs.GetEntriesFast()));
+// AliInfo(Form("Array entries: %d",fGraphs.GetEntriesFast()));
}
fADCModule = stream.GetADCModule();
fADCValue = stream.GetADCValue();
fADCGain = stream.GetADCGain();
- fIsADCDataWord = stream.IsADCDataWord();
-
+ fIsADCDataWord = stream.IsADCDataWord();
}
fADCModule++;
//printf(" \t AliZDCRawStream -> Header ADC %d -> ADC datum contains %d data words \n",fADCModule,((fRawADC & 0x3f00) >> 8));
}
- else if((fRawADC & 0x4000000)){//ADC EOB
+ else if(fRawADC & 0x4000000){//ADC EOB
//printf(" \t AliZDCRawStream -> ADC %d End Of Block - event number %d\n\n",fADCModule, (fRawADC & 0xffffff));
fSector[0] = fSector[1] = 99;
}
- else if((fRawADC & 0x6000000)){//Not valid datum
+ else if(fRawADC & 0x6000000){//Not valid datum
printf(" \t AliZDCRawStream -> Not valid datum in ADC module %d\n",fADCModule);
}
else{//ADC data word
Messages on stdout are exported to DAQ log system.
-DA for ZDC standalon pedestal runs
-contact: Chiara.Oppedisano@cern.ch
+Contact: Chiara.Oppedisano@to.infn.it
+Link: /afs/cern.ch/user/c/chiarao/public/RawEMD.date
+Run Type: STANDALONE_EMD_RUN
+DA Type: MON
+Number of events needed: at least ~10^3
+Input Files: ZDCPedestal.dat
+Output Files: ZDCEMDCalib.dat
+Trigger Types Used: Standalone Trigger
*/
printf("\t ERROR!!! You MUST have a ZDCPedestal.dat file!!!\n");
return -1;
}
- // 132 = 44 in-time + 44 out-of-time + 44 correlations
- Float_t readValues[2][132], MeanPed[44], MeanPedWidth[44],
+ // 144 = 48 in-time + 48 out-of-time + 48 correlations
+ Float_t readValues[2][144], MeanPed[44], MeanPedWidth[44],
MeanPedOOT[44], MeanPedWidthOOT[44],
CorrCoeff0[44], CorrCoeff1[44];
//
- for(int jj=0; jj<132; jj++){
+ for(int jj=0; jj<144; jj++){
for(int ii=0; ii<2; ii++){
fscanf(filePed,"%f",&readValues[ii][jj]);
}
- if(jj<44){
+ if(jj<48){
MeanPed[jj] = readValues[0][jj];
MeanPedWidth[jj] = readValues[1][jj];
}
- else if(jj>44 && jj<88){
- MeanPedOOT[jj-44] = readValues[0][jj];
- MeanPedWidthOOT[jj-44] = readValues[1][jj];
+ else if(jj>48 && jj<96){
+ MeanPedOOT[jj-48] = readValues[0][jj];
+ MeanPedWidthOOT[jj-48] = readValues[1][jj];
}
- else if(jj>88){
- CorrCoeff0[jj-88] = readValues[0][jj];
- CorrCoeff1[jj-88] = readValues[1][jj];;
+ else if(jj>144){
+ CorrCoeff0[jj-96] = readValues[0][jj];
+ CorrCoeff1[jj-96] = readValues[1][jj];;
}
}
//
AliRawReader *reader = new AliRawReaderDate((void*)event);
const AliRawDataHeader* header = reader->GetDataHeader();
if(header){
- UChar_t message = header->GetL1TriggerMessage();
- }
- else{
- printf("\t ATTENTION! No Raw Data Header found!!!\n");
- return -1;
+ UChar_t message = header->GetAttributes();
+ if(message & 0x70){ // DEDICATED EMD RUN
+ printf("\t STANDALONE_EMD_RUN raw data found\n");
+ continue;
+ }
+ else{
+ printf("\t NO STANDALONE_EMD_RUN raw data found\n");
+ return -1;
+ }
}
+ //Commented until we won't have true Raw Data Header...
+ //else{
+ // printf("\t ATTENTION! No Raw Data Header found!!!\n");
+ // return -1;
+ //}
//
AliZDCRawStream *rawStreamZDC = new AliZDCRawStream(reader);
//
//
while(rawStreamZDC->Next()){
if(rawStreamZDC->IsADCDataWord()){
- Int_t StartIndex[4] = {5,15,29,39};
- Int_t DetIndex;
- if(rawStreamZDC->GetSector(0) == 1 || rawStreamZDC->GetSector(0) == 2)
+ Int_t DetIndex=999, PedIndex=999;
+ if(rawStreamZDC->GetSector(0) == 1 || rawStreamZDC->GetSector(0) == 2){
DetIndex = rawStreamZDC->GetSector(0)-1;
- else if(rawStreamZDC->GetSector(0) == 4 || rawStreamZDC->GetSector(0) == 5)
+ PedIndex = (rawStreamZDC->GetSector(0)+1)+4*rawStreamZDC->GetSector(1);
+ }
+ else if(rawStreamZDC->GetSector(0) == 4 || rawStreamZDC->GetSector(0) == 5){
DetIndex = rawStreamZDC->GetSector(0)-2;
-
+ PedIndex = (rawStreamZDC->GetSector(0)-2)+4*rawStreamZDC->GetSector(1)+24;
+ }
+ //
if(rawStreamZDC->GetADCGain() == 1){ //EMD -> LR ADC
//
ZDCRawADC[DetIndex] += (Float_t) rawStreamZDC->GetADCValue();
- Int_t PedIndex = StartIndex[DetIndex]+rawStreamZDC->GetSector(1);
// Mean pedestal subtraction
Float_t Pedestal = MeanPed[PedIndex];
// Pedestal subtraction from correlation with out-of-time signals
- //Float_t Pedestal = ;
+ //Float_t Pedestal = CorrCoeff0[PedIndex]+CorrCoeff1[PedIndex]*MeanPedOOT[PedIndex];
//
ZDCCorrADC[DetIndex] = (rawStreamZDC->GetADCValue()) - Pedestal;
ZDCCorrADCSum[DetIndex] += ZDCCorrADC[DetIndex];
- }
+ //
+ /*printf("\t det %d quad %d res %d pedInd %d ADCCorr %d ZDCCorrADCSum[%d] = %d\n",
+ rawStreamZDC->GetSector(0),rawStreamZDC->GetSector(1),
+ rawStreamZDC->GetADCGain(),PedIndex,
+ (Int_t) (rawStreamZDC->GetADCValue() - Pedestal), DetIndex,
+ (Int_t) ZDCCorrADCSum[DetIndex]);
+ */
+ }
}//IsADCDataWord()
//
}
/* Analysis of the histograms */
//
FILE *fileShuttle;
- fileShuttle = fopen("ZDCEMD.dat","w");
+ fileShuttle = fopen("ZDCEMDCalib.dat","w");
//
Int_t BinMax[4];
Float_t YMax[4];
BinMax[k] = histoEMDCorr[k]->GetMaximumBin();
YMax[k] = (histoEMDCorr[k]->GetXaxis())->GetXmax();
NBinsx[k] = (histoEMDCorr[k]->GetXaxis())->GetNbins();
- //printf("\n\t Det%d -> BinMax = %d, ChXMax = %f\n", k+1, BinMax[k], BinMax[k]*YMax[k]/NBinsx[k]);
+// printf("\n\t Det%d -> BinMax = %d, ChXMax = %f\n", k+1, BinMax[k], BinMax[k]*YMax[k]/NBinsx[k]);
histoEMDCorr[k]->Fit("gaus","Q","",BinMax[k]*YMax[k]/NBinsx[k]*0.7,BinMax[k]*YMax[k]/NBinsx[k]*1.25);
fitfun[k] = histoEMDCorr[k]->GetFunction("gaus");
MeanFitVal[k] = (Float_t) (fitfun[k]->GetParameter(1));
- //printf("\n\t Mean Value from gaussian fit = %f\n", MeanFitVal[k]);
+ printf("\n\t Mean Value from gaussian fit = %f\n", MeanFitVal[k]);
}
//
Float_t CalibCoeff[6];
*/
// --- For the moment we have sim data only for ZN1!!!
for(Int_t j=0; j<6; j++){
- if(j==0 || j==1) CalibCoeff[j] = 2.76/MeanFitVal[j];
+ if(j==0) CalibCoeff[j] = 2.76/MeanFitVal[j];
else if(j>0 && j<4) CalibCoeff[j] = CalibCoeff[0];
else CalibCoeff[j] = 1.;
fprintf(fileShuttle,"\t%f\n",CalibCoeff[j]);
Messages on stdout are exported to DAQ log system.
DA for ZDC standalone pedestal runs
+
Contact: Chiara.Oppedisano@to.infn.it
Link: /afs/cern.ch/user/c/chiarao/public/RawPed.date
Run Type: STANDALONE_PEDESTAL_RUN
const AliRawDataHeader* header = reader->GetDataHeader();
if(header) {
UChar_t message = header->GetAttributes();
- if(message & 0x2000000){ // DEDICATED PEDESTAL RUN
+ if(message & 0x20){ // DEDICATED PEDESTAL RUN
printf("\t STANDALONE_PEDESTAL_RUN raw data found\n");
continue;
}
}
//Commented until we won't have true Raw Data Header...
//else{
- //printf("\t ERROR! No Raw Data Header found!!!\n");
- //return -1;
- //
+ // printf("\t ATTENTION! No Raw Data Header found!!!\n");
+ // return -1;
+ //}
//
AliZDCRawStream *rawStreamZDC = new AliZDCRawStream(reader);
//
MeanPed[i] = ADCfunchg[i]->GetParameter(1);
MeanPedWidth[i] = ADCfunchg[i]->GetParameter(2);
fprintf(fileShuttle,"\t%f\t%f\n",MeanPed[i],MeanPedWidth[i]);
- printf("\t MeanPed[%d] = %f\n",i, MeanPed[i]);
+ //printf("\t MeanPed[%d] = %f\n",i, MeanPed[i]);
}
TF1 *ADCfunclg[kNChannels];
for(Int_t i=0; i<kNChannels; i++){
MeanPed[i+kNChannels] = ADCfunclg[i]->GetParameter(1);
MeanPedWidth[i+kNChannels] = ADCfunclg[i]->GetParameter(2);
fprintf(fileShuttle,"\t%f\t%f\n",MeanPed[i+kNChannels],MeanPedWidth[i+kNChannels]);
- printf("\t MeanPed[%d] = %f\n",i+kNChannels, MeanPed[i+kNChannels]);
+ //printf("\t MeanPed[%d] = %f\n",i+kNChannels, MeanPed[i+kNChannels]);
}
// --- Out-of-time pedestals
TF1 *ADCootfunchg[kNChannels];
MeanPedOOT[i] = ADCootfunchg[i]->GetParameter(1);
MeanPedWidthOOT[i] = ADCootfunchg[i]->GetParameter(2);
fprintf(fileShuttle,"\t%f\t%f\n",MeanPedOOT[i],MeanPedWidthOOT[i]);
- printf("\t MeanPedOOT[%d] = %f\n",i, MeanPedOOT[i]);
+ //printf("\t MeanPedOOT[%d] = %f\n",i, MeanPedOOT[i]);
}
TF1 *ADCootfunclg[kNChannels];
for(Int_t i=0; i<kNChannels; i++){
MeanPedOOT[i+kNChannels] = ADCootfunclg[i]->GetParameter(1);
MeanPedWidthOOT[i+kNChannels] = ADCootfunclg[i]->GetParameter(2);
fprintf(fileShuttle,"\t%f\t%f\n",MeanPedOOT[i+kNChannels],MeanPedWidthOOT[i+kNChannels]);
- printf("\t MeanPedOOT[%d] = %f\n",i+kNChannels, MeanPedOOT[i+kNChannels]);
+ //printf("\t MeanPedOOT[%d] = %f\n",i+kNChannels, MeanPedOOT[i+kNChannels]);
}
//
// --- Correlations
CorrCoeff0[i] = ffunchg[i]->GetParameter(0);
CorrCoeff1[i] = ffunchg[i]->GetParameter(1);
fprintf(fileShuttle,"\t%f\t%f\n",CorrCoeff0[i],CorrCoeff1[i]);
- printf("\t CorrCoeff0[%d] = %f, CorrCoeff1[%d] = %f\n",i, CorrCoeff0[i], i, CorrCoeff1[i]);
+ //printf("\t CorrCoeff0[%d] = %f, CorrCoeff1[%d] = %f\n",i, CorrCoeff0[i], i, CorrCoeff1[i]);
}
for(int i=0;i<kNChannels;i++) {
sprintf(namhist4,"ADCLRvsOOT%d_Prof",i);
CorrCoeff0[i+kNChannels] = ffunclg[i]->GetParameter(0);
CorrCoeff1[i+kNChannels] = ffunclg[i]->GetParameter(1);
fprintf(fileShuttle,"\t%f\t%f\n",CorrCoeff0[i+kNChannels],CorrCoeff1[i+kNChannels]);
- printf("\t CorrCoeff0[%d] = %f, CorrCoeff1[%d] = %f\n",
- i+kNChannels, CorrCoeff0[i+kNChannels], i+kNChannels, CorrCoeff1[i+kNChannels]);
+ //printf("\t CorrCoeff0[%d] = %f, CorrCoeff1[%d] = %f\n",
+ // i+kNChannels, CorrCoeff0[i+kNChannels], i+kNChannels, CorrCoeff1[i+kNChannels]);
}
//
fclose(fileShuttle);