Messages on stdout are exported to DAQ log system.
-DA for ZDC standalon pedestal runs
-contact: Chiara.Oppedisano@cern.ch
+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
+DA Type: MON
+Number of events needed: no constraint (tipically ~10^3)
+Input Files:
+Output Files: ZDCPedestal.dat
+Trigger Types Used: Standalone Trigger
*/
TH1F::AddDirectory(0);
// --- Histograms for ADC pedestals
- // [22 signal channels x 2 gain chains + 2 reference PTMs]
+ // [22 signal channels + 2 reference PTMs] x 2 gain chains
//
- TH1F *hPed[44], *hPedOutOfTime[44];
- TH2F *hPedCorr[44];
+ int const kNChannels = 24;
+ TH1F *hPedhg[kNChannels], *hPedOutOfTimehg[kNChannels];
+ TH2F *hPedCorrhg[kNChannels];
+ TH1F *hPedlg[kNChannels], *hPedOutOfTimelg[kNChannels];
+ TH2F *hPedCorrlg[kNChannels];
//
- char namhist1[50], namhist2[50], namhist3[50];
- for(Int_t j=0; j<44; j++){
- if(j<10){
- sprintf(namhist1,"PedZN1_%d",j);
- sprintf(namhist2,"PedZN1OutOfTime_%d",j);
- sprintf(namhist3,"PedCorrZN1_%d",j);
+ char namhist1hg[50], namhist2hg[50], namhist3hg[50];
+ char namhist1lg[50], namhist2lg[50], namhist3lg[50];
+ for(Int_t j=0; j<kNChannels; j++){
+ if(j<5){ // ZN1
+ sprintf(namhist1hg,"PedZN1hg_%d",j);
+ sprintf(namhist2hg,"PedZN1hgOutOfTime_%d",j);
+ sprintf(namhist3hg,"PedCorrZN1hg_%d",j);
+ //
+ sprintf(namhist1lg,"PedZN1lg_%d",j);
+ sprintf(namhist2lg,"PedZN1lgOutOfTime_%d",j);
+ sprintf(namhist3lg,"PedCorrZN1lg_%d",j);
+ }
+ else if(j>=5 && j<10){ // ZP1
+ sprintf(namhist1hg,"PedZP1hg_%d",j-5);
+ sprintf(namhist2hg,"PedZP1hgOutOfTime_%d",j-5);
+ sprintf(namhist3hg,"PedCorrZP1hg_%d",j-5);
+ //
+ sprintf(namhist1lg,"PedZP1lg_%d",j-5);
+ sprintf(namhist2lg,"PedZP1lgOutOfTime_%d",j-5);
+ sprintf(namhist3lg,"PedCorrZP1lg_%d",j-5);
}
- else if(j>=10 && j<20){
- sprintf(namhist1,"PedZP1_%d",j-10);
- sprintf(namhist2,"PedZP1OutOfTime_%d",j-10);
- sprintf(namhist3,"PedCorrZP1_%d",j-10);
+ else if(j>=10 && j<12){ // ZEM
+ sprintf(namhist1hg,"PedZEMhg_%d",j-10);
+ sprintf(namhist2hg,"PedZEMhgOutOfTime_%d",j-10);
+ sprintf(namhist3hg,"PedCorrZEMhg_%d",j-10);
+ //
+ sprintf(namhist1lg,"PedZEMlg_%d",j-10);
+ sprintf(namhist2lg,"PedZEMlgOutOfTime_%d",j-10);
+ sprintf(namhist3lg,"PedCorrZEMlg_%d",j-10);
}
- else if(j>=20 && j<24){
- sprintf(namhist1,"PedZEM_%d",j-20);
- sprintf(namhist2,"PedZEMOutOfTime_%d",j-20);
- sprintf(namhist3,"PedCorrZEM_%d",j-20);
+ else if(j>=12 && j<17){ // ZN2
+ sprintf(namhist1hg,"PedZN2hg_%d",j-12);
+ sprintf(namhist2hg,"PedZN2hgOutOfTime_%d",j-12);
+ sprintf(namhist3hg,"PedCorrZN2hg_%d",j-12);
+ //
+ sprintf(namhist1lg,"PedZN2lg_%d",j-12);
+ sprintf(namhist2lg,"PedZN2lgOutOfTime_%d",j-12);
+ sprintf(namhist3lg,"PedCorrZN2lg_%d",j-12);
}
- else if(j>=24 && j<33){
- sprintf(namhist1,"PedZN2_%d",j-24);
- sprintf(namhist2,"PedZN2OutOfTime_%d",j-24);
- sprintf(namhist3,"PedCorrZN2_%d",j-24);
+ else if(j>=17 && j<22){ // ZP2
+ sprintf(namhist1hg,"PedZP2hg_%d",j-17);
+ sprintf(namhist2hg,"PedZP2hgOutOfTime_%d",j-17);
+ sprintf(namhist3hg,"PedCorrZP2hg_%d",j-17);
+ //
+ sprintf(namhist1lg,"PedZP2lg_%d",j-17);
+ sprintf(namhist2lg,"PedZP2lgOutOfTime_%d",j-17);
+ sprintf(namhist3lg,"PedCorrZP2lg_%d",j-17);
}
- else if(j>=33 && j<43){
- sprintf(namhist1,"PedZP2_%d",j-33);
- sprintf(namhist2,"PedZP2OutOfTime_%d",j-33);
- sprintf(namhist3,"PedCorrZP2_%d",j-33);
+ else if(j>=22 && j<24){ //Reference PMs
+ sprintf(namhist1hg,"PedRefhg_%d",j-22);
+ sprintf(namhist2hg,"PedRefhgOutOfTime_%d",j-22);
+ sprintf(namhist3hg,"PedCorrRefhg_%d",j-22);
+ //
+ sprintf(namhist1lg,"PedReflg_%d",j-22);
+ sprintf(namhist2lg,"PedReflgOutOfTime_%d",j-22);
+ sprintf(namhist3lg,"PedCorrReflg_%d",j-22);
}
- hPed[j] = new TH1F(namhist1, namhist1, 100,0., 200.);
- hPedOutOfTime[j] = new TH1F(namhist2, namhist2, 100,0., 200.);
- hPedCorr[j] = new TH2F(namhist3,namhist3,100,0.,200.,100,0.,200.);
+ // --- High gain chain histos
+ hPedhg[j] = new TH1F(namhist1hg, namhist1hg, 100,0., 200.);
+ hPedOutOfTimehg[j] = new TH1F(namhist2hg, namhist2hg, 100,0., 200.);
+ hPedCorrhg[j] = new TH2F(namhist3hg,namhist3hg,100,0.,200.,100,0.,200.);
+ // --- Low gain chain histos
+ hPedlg[j] = new TH1F(namhist1lg, namhist1lg, 100,0., 600.);
+ hPedOutOfTimelg[j] = new TH1F(namhist2lg, namhist2lg, 100,0., 600.);
+ hPedCorrlg[j] = new TH2F(namhist3lg,namhist3lg,100,0.,600.,100,0.,600.);
}
int status;
AliRawReader *reader = new AliRawReaderDate((void*)event);
const AliRawDataHeader* header = reader->GetDataHeader();
if(header) {
- UChar_t message = header->GetL1TriggerMessage();
- if(message & 0x40000){ // DEDICATED PEDESTAL RUN
- printf("\t L1 message -> PEDESTAL raw data\n");
+ UChar_t message = header->GetAttributes();
+ if(message & 0x2000000){ // DEDICATED PEDESTAL RUN
+ printf("\t STANDALONE_PEDESTAL_RUN raw data found\n");
continue;
}
else{
- printf("\t L1 message -> NO PEDESTAL raw data found\n");
+ printf("\t NO STANDALONE_PEDESTAL_RUN raw data found\n");
return -1;
}
}
- //Commented until we won't have Raw Data Header...
- /*else{
+ //Commented until we won't have true Raw Data Header...
+ //else{
//printf("\t ERROR! No Raw Data Header found!!!\n");
//return -1;
- }*/
//
-
+ //
AliZDCRawStream *rawStreamZDC = new AliZDCRawStream(reader);
//
if (!rawStreamZDC->Next()) printf(" \t No raw data found!! \n");
Int_t counter=0;
- Int_t RawADC[44], RawADCoot[44];
- for(Int_t j=0; j<44; j++){
- RawADC[j]=0;
- RawADCoot[j]=0;
+ Int_t RawADChg[kNChannels], RawADCoothg[kNChannels];
+ Int_t RawADClg[kNChannels], RawADCootlg[kNChannels];
+ for(Int_t j=0; j<kNChannels; j++){
+ RawADChg[j]=0; RawADCoothg[j]=0;
+ RawADClg[j]=0; RawADCootlg[j]=0;
}
while(rawStreamZDC->Next()){
Int_t index=-1;
if(rawStreamZDC->IsADCDataWord()){
- if(rawStreamZDC->GetSector(0)==1 || rawStreamZDC->GetSector(0)==2){ // *** ZN1, ZP1
- index = 10*(rawStreamZDC->GetSector(0)-1)+rawStreamZDC->GetSector(1)+5*rawStreamZDC->GetADCGain();
- }
- else if(rawStreamZDC->GetSector(0)==3){ // *** ZEM
- index = 10*(rawStreamZDC->GetSector(0)-1)+(rawStreamZDC->GetSector(1)-1)+2*rawStreamZDC->GetADCGain();
+ if(rawStreamZDC->GetSector(1)!=5){ // Physics signals
+ if(rawStreamZDC->GetSector(0)==1) index = rawStreamZDC->GetSector(1); // *** ZN1
+ else if(rawStreamZDC->GetSector(0)==2) index = rawStreamZDC->GetSector(1)+5; // *** ZP1
+ else if(rawStreamZDC->GetSector(0)==3) index = rawStreamZDC->GetSector(1)+9; // *** ZEM
+ else if(rawStreamZDC->GetSector(0)==4) index = rawStreamZDC->GetSector(1)+12; // *** ZN2
+ else if(rawStreamZDC->GetSector(0)==5) index = rawStreamZDC->GetSector(1)+17; // *** ZP2
}
- else if(rawStreamZDC->GetSector(0)==4 || rawStreamZDC->GetSector(0)==5){ // *** ZN2, ZP2
- index = 10*(rawStreamZDC->GetSector(0)-2)+rawStreamZDC->GetSector(1)+5*rawStreamZDC->GetADCGain()+4;
+ else{ // Reference PMs
+ index = (rawStreamZDC->GetSector(0)-1)/3+22;
}
- if(counter<44){
- hPed[index]->Fill(rawStreamZDC->GetADCValue());
- RawADC[counter] = rawStreamZDC->GetADCValue();
+ //
+ /*printf("\t counter %d index %d det %d quad %d res %d ADC %d\n", counter, index,
+ rawStreamZDC->GetSector(0), rawStreamZDC->GetSector(1),
+ rawStreamZDC->GetADCGain(), rawStreamZDC->GetADCValue());
+ */
+ //
+ if(counter<2*kNChannels){ // --- In-time pedestals (1st 48 raw data)
+ if(rawStreamZDC->GetADCGain()==0){
+ hPedhg[index]->Fill(rawStreamZDC->GetADCValue());
+ RawADChg[index] = rawStreamZDC->GetADCValue();
+ }
+ else{
+ hPedlg[index]->Fill(rawStreamZDC->GetADCValue());
+ RawADClg[index] = rawStreamZDC->GetADCValue();
+ }
}
- else{
- hPedOutOfTime[index]->Fill(rawStreamZDC->GetADCValue());
- RawADCoot[counter-44] = rawStreamZDC->GetADCValue();
+ else{ // --- Out-of-time pedestals
+ if(rawStreamZDC->GetADCGain()==0){
+ hPedOutOfTimehg[index]->Fill(rawStreamZDC->GetADCValue());
+ RawADCoothg[index] = rawStreamZDC->GetADCValue();
+ }
+ else{
+ hPedOutOfTimelg[index]->Fill(rawStreamZDC->GetADCValue());
+ RawADCootlg[index] = rawStreamZDC->GetADCValue();
+ }
}
counter++;
}//IsADCDataWord()
//
- if(counter == 88){ // Last ADC channel
- for(Int_t k=0; k<44; k++){
- hPedCorr[k]->Fill(RawADCoot[k], RawADC[k]);
+ if(counter == 4*kNChannels){ // Last ADC channel -> Filling correlation histos
+ for(Int_t k=0; k<kNChannels; k++){
+ hPedCorrhg[k]->Fill(RawADCoothg[k], RawADChg[k]);
+ hPedCorrlg[k]->Fill(RawADCootlg[k], RawADClg[k]);
}
}
}
FILE *fileShuttle;
fileShuttle = fopen("ZDCPedestal.dat","w");
//
- Float_t MeanPed[44], MeanPedWidth[44],
- MeanPedOOT[44], MeanPedWidthOOT[44],
- CorrCoeff0[44], CorrCoeff1[44];
- // --- Out-of-time pedestals
- TF1 *ADCfunc[44];
- for(Int_t i=0; i<44; i++){
- hPed[i]->Fit("gaus","Q");
- ADCfunc[i] = hPed[i]->GetFunction("gaus");
- MeanPed[i] = ADCfunc[i]->GetParameter(1);
- MeanPedWidth[i] = ADCfunc[i]->GetParameter(2);
+ Float_t MeanPed[2*kNChannels], MeanPedWidth[2*kNChannels],
+ MeanPedOOT[2*kNChannels], MeanPedWidthOOT[2*kNChannels],
+ CorrCoeff0[2*kNChannels], CorrCoeff1[2*kNChannels];
+ // --- In-time pedestals
+ TF1 *ADCfunchg[kNChannels];
+ for(Int_t i=0; i<kNChannels; i++){
+ hPedhg[i]->Fit("gaus","Q");
+ ADCfunchg[i] = hPedhg[i]->GetFunction("gaus");
+ 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++){
+ hPedlg[i]->Fit("gaus","Q");
+ ADCfunclg[i] = hPedlg[i]->GetFunction("gaus");
+ 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]);
}
// --- Out-of-time pedestals
- TF1 *ADCootfunc[44];
- for(Int_t i=0; i<44; i++){
- hPedOutOfTime[i]->Fit("gaus","Q");
- ADCootfunc[i] = hPedOutOfTime[i]->GetFunction("gaus");
- MeanPedOOT[i] = ADCootfunc[i]->GetParameter(1);
- MeanPedWidthOOT[i] = ADCootfunc[i]->GetParameter(2);
+ TF1 *ADCootfunchg[kNChannels];
+ for(Int_t i=0; i<kNChannels; i++){
+ hPedOutOfTimehg[i]->Fit("gaus","Q");
+ ADCootfunchg[i] = hPedOutOfTimehg[i]->GetFunction("gaus");
+ 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++){
+ hPedOutOfTimelg[i]->Fit("gaus","Q");
+ ADCootfunclg[i] = hPedOutOfTimelg[i]->GetFunction("gaus");
+ 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]);
}
//
- // --- Fit of correlations
- TProfile* hPedCorrProf[44];
- TF1 *ffunc[44];
+ // --- Correlations
+ TProfile *hPedCorrProfhg[kNChannels], *hPedCorrProflg[kNChannels];
+ TF1 *ffunchg[kNChannels], *ffunclg[kNChannels];
char namhist4[50];
- for(int i=0;i<44;i++) {
- sprintf(namhist4,"ADCvsOOT%d_Prof",i);
- hPedCorrProf[i] = hPedCorr[i]->ProfileX(namhist4,-1,-1,"S");
- hPedCorrProf[i]->SetName(namhist4);
- hPedCorrProf[i]->Fit("pol1","Q");
- ffunc[i] = hPedCorrProf[i]->GetFunction("pol1");
- CorrCoeff0[i] = ffunc[i]->GetParameter(0);
- CorrCoeff1[i] = ffunc[i]->GetParameter(1);
+ for(int i=0;i<kNChannels;i++) {
+ sprintf(namhist4,"ADCHRvsOOT%d_Prof",i);
+ hPedCorrProfhg[i] = hPedCorrhg[i]->ProfileX(namhist4,-1,-1,"S");
+ hPedCorrProfhg[i]->SetName(namhist4);
+ hPedCorrProfhg[i]->Fit("pol1","Q");
+ ffunchg[i] = hPedCorrProfhg[i]->GetFunction("pol1");
+ 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);
+ hPedCorrProflg[i] = hPedCorrlg[i]->ProfileX(namhist4,-1,-1,"S");
+ hPedCorrProflg[i]->SetName(namhist4);
+ hPedCorrProflg[i]->Fit("pol1","Q");
+ ffunclg[i] = hPedCorrProflg[i]->GetFunction("pol1");
+ 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]);
}
//
fclose(fileShuttle);
+ //
/* write report */