Calibration class and Preprocessor updated
authorcoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jul 2006 14:44:53 +0000 (14:44 +0000)
committercoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jul 2006 14:44:53 +0000 (14:44 +0000)
ZDC/AliZDCCalibData.cxx
ZDC/AliZDCCalibData.h
ZDC/AliZDCDataDCS.cxx
ZDC/AliZDCDataDCS.h
ZDC/AliZDCDigitizer.cxx
ZDC/AliZDCPreprocessor.cxx
ZDC/AliZDCRawStream.cxx

index 0af2b02..b52d840 100644 (file)
@@ -130,35 +130,47 @@ void  AliZDCCalibData::Print(Option_t *) const
    // Printing of calibration object
    printf("\n  ####### Mean pedestal values    ####### \n");
    for(int t=0; t<47; t++){
-     if(t==0 || t==24) printf("\n\t -------- ZN HighRes -------- \n");
-     else if(t==5 || t==29) printf("\n\t -------- ZN LowRes -------- \n");
-     else if(t==10 || t==34) printf("\n\t -------- ZP HighRes -------- \n");
-     else if(t==15 || t==39) printf("\n\t -------- ZP LowRes -------- \n");
-     else if(t==20) printf("\n\t -------- ZEM1 HighRes -------- ");
-     else if(t==21) printf("\n\t -------- ZEM1 LowRes -------- ");
-     else if(t==22) printf("\n\t -------- ZEM2 HighRes -------- ");
-     else if(t==23) printf("\n\t -------- ZEM2 LowRes -------- ");
+     if(t==0 || t==24) printf("\n\t  ZN HighRes -------- \n");
+     else if(t==5 || t==29) printf("\n\t  ZN LowRes -------- \n");
+     else if(t==10 || t==34) printf("\n\t  ZP HighRes -------- \n");
+     else if(t==15 || t==39) printf("\n\t  ZP LowRes -------- \n");
+     else if(t==20) printf("\n\t  ZEM1 HighRes -------- ");
+     else if(t==21) printf("\n\t  ZEM1 LowRes -------- ");
+     else if(t==22) printf("\n\t  ZEM2 HighRes -------- ");
+     else if(t==23) printf("\n\t  ZEM2 LowRes -------- ");
      printf("   MeanPed[ADC%d] = %.1f   ",t,fMeanPedestal[t]);
    }
+   printf("\n\n\n      ####### Pedestal width values   ####### \n");
+   for(int t=0; t<47; t++){
+     if(t==0 || t==24) printf("\n\t  ZN HighRes -------- \n");
+     else if(t==5 || t==29) printf("\n\t  ZN LowRes -------- \n");
+     else if(t==10 || t==34) printf("\n\t  ZP HighRes -------- \n");
+     else if(t==15 || t==39) printf("\n\t  ZP LowRes -------- \n");
+     else if(t==20) printf("\n\t  ZEM1 HighRes -------- ");
+     else if(t==21) printf("\n\t  ZEM1 LowRes -------- ");
+     else if(t==22) printf("\n\t  ZEM2 HighRes -------- ");
+     else if(t==23) printf("\n\t  ZEM2 LowRes -------- ");
+     printf("   MeanPed[ADC%d] = %.1f   ",t,fMeanPedWidth[t]);
+   }
    
    printf("\n\n\n      ####### Out Of Time pedestal values     ####### \n");
    for(int t=0; t<44; t++){
-     if(t==0 || t==24) printf("\n\t -------- ZN HighRes -------- \n");
-     else if(t==5 || t==29) printf("\n\t -------- ZN LowRes -------- \n");
-     else if(t==10 || t==34) printf("\n\t -------- ZP HighRes -------- \n");
-     else if(t==15 || t==39) printf("\n\t -------- ZP LowRes -------- \n");
-     else if(t==20) printf("\n\t -------- ZEM1 HighRes -------- ");
-     else if(t==21) printf("\n\t -------- ZEM1 LowRes -------- ");
-     else if(t==22) printf("\n\t -------- ZEM2 HighRes -------- ");
-     else if(t==23) printf("\n\t -------- ZEM2 LowRes -------- ");
+     if(t==0 || t==24) printf("\n\t  ZN HighRes -------- \n");
+     else if(t==5 || t==29) printf("\n\t  ZN LowRes -------- \n");
+     else if(t==10 || t==34) printf("\n\t  ZP HighRes -------- \n");
+     else if(t==15 || t==39) printf("\n\t  ZP LowRes -------- \n");
+     else if(t==20) printf("\n\t  ZEM1 HighRes -------- ");
+     else if(t==21) printf("\n\t  ZEM1 LowRes -------- ");
+     else if(t==22) printf("\n\t  ZEM2 HighRes -------- ");
+     else if(t==23) printf("\n\t  ZEM2 LowRes -------- ");
      printf("   OOTPed[ADC%d] = %.1f   ",t,fOOTPedestal[t]);
    }
  
    printf("\n\n\n      ####### Energy calibration coefficients ####### \n");
-   printf("    ZN1 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[0]);
-   printf("    ZP1 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[1]);
-   printf("    ZN2 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[2]);
-   printf("    ZP2 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[3]);
+   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("    ZP2 = %.4f (E[TeV]/ADCch.) \n",fEnCalibration[3]);
    printf("    ZEM1 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[4]);
    printf("    ZEM2 = %.2f (E[TeV]/ADCch.) \n",fEnCalibration[5]);
 } 
@@ -191,24 +203,77 @@ void AliZDCCalibData::SetOOTPedWidth(Float_t* OOTPedWidth)
 }
 
 //________________________________________________________________
-void AliZDCCalibData:: SetPedCorrCoeff(Float_t* PedCorrCoeff0, 
-       Float_t* PedCorrCoeff1)
+void AliZDCCalibData:: SetPedCorrCoeff(Float_t* PedCorrCoeff)
+{
+  // Set coefficients for pedestal correlations
+  if(PedCorrCoeff){
+    for(Int_t j=0; j<2; j++){
+     for(int t=0; t<44; t++)
+       fPedCorrCoeff[j][t] = PedCorrCoeff[t];
+    }
+  }
+  else{
+    for(Int_t j=0; j<2; j++){
+     for(int t=0; t<44; t++)
+       fPedCorrCoeff[j][t] = 0.;
+    }
+  }
+}
+
+//________________________________________________________________
+void AliZDCCalibData:: SetPedCorrCoeff(Float_t* PedCorrCoeff0, Float_t* PedCorrCoeff1)
 {
   // Set coefficients for pedestal correlations
-  if(PedCorrCoeff0 && PedCorrCoeff1) for(int t=0; t<44; t++){
-    fPedCorrCoeff[0][t] = PedCorrCoeff0[t];
-    fPedCorrCoeff[1][t] = PedCorrCoeff1[t];
+  if(PedCorrCoeff0 && PedCorrCoeff1){
+    for(int t=0; t<44; t++){
+       fPedCorrCoeff[0][t] = PedCorrCoeff0[t];
+       fPedCorrCoeff[0][t] = PedCorrCoeff1[t];
+    }
   }
-  else for(int t=0; t<44; t++){
-    fPedCorrCoeff[0][t] = 0.;
-    fPedCorrCoeff[1][t] = 0.;
+  else{
+     for(int t=0; t<44; t++){
+       fPedCorrCoeff[0][t] = 0.;
+       fPedCorrCoeff[1][t] = 0.;
+    }
   }
 }
 
 //________________________________________________________________
 void AliZDCCalibData::SetEnCalib(Float_t* EnCalib) 
 {
+  // Set energy calibration coefficients
   if(EnCalib) for(int t=0; t<6; t++) fEnCalibration[t] = EnCalib[t];
   else for(int t=0; t<6; t++) fEnCalibration[t] = 0.;
 }
 
+//________________________________________________________________
+void AliZDCCalibData::SetPMTHVVal(Float_t* HVVal)
+{
+  // Set PMTs HV values
+  if(HVVal) for(int t=0; t<22; t++) fPMTHVVal[t] = HVVal[t];
+  else for(int t=0; t<22; t++) fPMTHVVal[t] = 0.;
+}
+//________________________________________________________________
+void AliZDCCalibData::SetZDCTablePos(Float_t* ZDCTablePos)
+{
+  // Set ZDC table vertical positions
+  if(ZDCTablePos) for(int t=0; t<4; t++) fZDCTablePos[t] = ZDCTablePos[t];
+  else for(int t=0; t<4; t++) fZDCTablePos[t] = 0.;
+}
+
+//________________________________________________________________
+void  AliZDCCalibData::SetDCSCalibData(Float_t* DCSData)
+{
+  // Set all DCS data simultaneously
+  if(DCSData){
+    for(int t=0; t<4; t++) fZDCTablePos[t] = DCSData[t];
+    for(int t=4; t<26; t++) fPMTHVVal[t] = DCSData[t]; 
+  }
+  else{
+    for(int t=0; t<4; t++) fZDCTablePos[t] = 0.;
+    for(int t=4; t<26; t++) fPMTHVVal[t] = 0.; 
+  }
+}
index e95d6e0..2048d1e 100644 (file)
@@ -40,6 +40,13 @@ class AliZDCCalibData: public TNamed {
   Float_t  GetEnCalib(Int_t channel)   const {return fEnCalibration[channel];}
   Float_t* GetEnCalib()                const {return (float*)fEnCalibration;}
   //
+  Float_t  GetPMTHVVal(Int_t channel)   const {return fPMTHVVal[channel];}
+  Float_t* GetPMTHVVal()                 const {return (float*)fPMTHVVal;}
+   //
+  Float_t  GetZDCTablePos(Int_t channel) const {return fZDCTablePos[channel];}
+  Float_t* GetZDCTablePos()             const {return (float*)fZDCTablePos;}
+  //
   void  SetMeanPed(Int_t channel, Float_t val) {fMeanPedestal[channel]=val;}
   void  SetMeanPed(Float_t* MeanPed);
   void  SetMeanPedWidth(Int_t channel, Float_t val) {fMeanPedWidth[channel]=val;}
@@ -50,14 +57,19 @@ class AliZDCCalibData: public TNamed {
   void  SetOOTPedWidth(Float_t* OOTPedWidth);
   void  SetPedCorrCoeff(Int_t channel, Float_t valCoeff0, Float_t valCoeff1)
        {fPedCorrCoeff[0][channel]=valCoeff0; fPedCorrCoeff[1][channel]=valCoeff1;}
+  void  SetPedCorrCoeff(Float_t* PedCorrCoeff);
   void  SetPedCorrCoeff(Float_t* PedCorrCoeff0, Float_t* PedCorrCoeff1);
   //
   void         SetEnCalib(Int_t channel, Float_t val) {fEnCalibration[channel]=val;}
   void         SetEnCalib(Float_t* EnCalib);
   //
-//  void     PrepHistos();
-//  TH1F*    GetHistMeanPed() const {return fHistMeanPed;}
-//  void     CleanHistos();
+  void         SetPMTHVVal(Int_t channel, Float_t val) {fPMTHVVal[channel]=val;}
+  void         SetPMTHVVal(Float_t* HVVal);
+  //
+  void         SetZDCTablePos(Int_t channel, Float_t val) {fZDCTablePos[channel]=val;}
+  void         SetZDCTablePos(Float_t* ZDCTablePos);
+  //
+  void  SetDCSCalibData(Float_t* DCSData);
 
  protected:
   // --- Pedestals
@@ -68,9 +80,12 @@ class AliZDCCalibData: public TNamed {
   Float_t  fPedCorrCoeff[2][44]; // Fit of correlation in-time vs. out-of-time
   // --- E calibration
   Float_t  fEnCalibration[6];   // Coeff. for energy calibration
-  //TH1F*    fHistMeanPed;        //! histos for drawing mean pedestals
+  // --- PMTs HV values
+  Float_t  fPMTHVVal[22];       // PMTs HV values
+  // --- Values for alignement
+  Float_t  fZDCTablePos[4];     // Vertical value for ZDC tables
   //
-  ClassDef(AliZDCCalibData,3)    // ZDC  Calibration data
+  ClassDef(AliZDCCalibData,4)    // ZDC  Calibration data
 };
 
 #endif
index 10cf7ca..74a6a8e 100644 (file)
@@ -47,43 +47,45 @@ AliZDCDataDCS::~AliZDCDataDCS() {
 }
 
 //---------------------------------------------------------------
-void AliZDCDataDCS::ProcessData(TMap& aliasMap){
+void AliZDCDataDCS::ProcessData(TMap& aliasMap, Float_t *fCalibData){
 
        TObjArray *aliasArr;
        AliDCSValue* aValue;
-       for(int j=4; j<kNAliases; j++){
-               aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
-               if(!aliasArr){
-                       AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
-                       continue;
-               }
-               Introduce(j, aliasArr);
-
-               if(aliasArr->GetEntries()<2){
-                       AliError(Form("Alias %s has just %d entries!",
-                                       fAliasNames[j].Data(),aliasArr->GetEntries()));
-                       continue;
-               }
-
-               TIter iterarray(aliasArr);
-
-               Double_t *time = new Double_t[aliasArr->GetEntries()];
-               Double_t *val = new Double_t[aliasArr->GetEntries()];
-
-               UInt_t ne=0;
-               while((aValue = (AliDCSValue*) iterarray.Next())) {
-                 val[ne] = aValue->GetFloat();
-                 time[ne] = (Double_t) (aValue->GetTimeStamp());
-                 ne++;
-               }
-
-               // fill graphs 
-               CreateGraph(j, aliasArr->GetEntries(), time, val);
-               delete[] val;
-               delete[] time;
+       for(int j=0; j<kNAliases; j++){
+          aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[j].Data());
+          if(!aliasArr){
+            AliError(Form("Alias %s not found!", fAliasNames[j].Data()));
+            continue;
+          }
+          Introduce(j, aliasArr);
+
+          if(aliasArr->GetEntries()<2){
+            AliError(Form("Alias %s has just %d entries!",
+                            fAliasNames[j].Data(),aliasArr->GetEntries()));
+            continue;
+          }
+
+          TIter iterarray(aliasArr);
+
+          Double_t *time = new Double_t[aliasArr->GetEntries()];
+          Double_t *val = new Double_t[aliasArr->GetEntries()];
+
+          UInt_t ne=0;
+          while((aValue = (AliDCSValue*) iterarray.Next())) {
+            val[ne] = aValue->GetFloat();
+            time[ne] = (Double_t) (aValue->GetTimeStamp());
+            fCalibData[ne] = val[ne];
+            ne++;
+          }
+          //
+          
+          //
+          if(j>=4) CreateGraph(j, aliasArr->GetEntries(), time, val); // fill graphs 
+          //
+          delete[] val;
+          delete[] time;          
        }
-
-
+       //
        fIsProcessed=kTRUE;
 
 
@@ -105,8 +107,6 @@ void AliZDCDataDCS::Init(){
                  fAliasNames[i] = "ZDC.HVValue";
                  fAliasNames[i] += i-4;
                }
-               /*fAliasNames[i] = "DCSAlias";
-               fAliasNames[i] += i;*/
        }
 
 }
index 477c7c4..2fe4479 100644 (file)
@@ -20,7 +20,7 @@ public:
        Int_t GetStartTime() {return fStartTime;}
        Int_t GetEndTime() {return fEndTime;}
 
-       void ProcessData(TMap& aliasMap);
+       void ProcessData(TMap& aliasMap, Float_t *CalibData);
 
        const char* GetAliasName(UInt_t pos)
                        {return pos<kNAliases ? fAliasNames[pos].Data() : 0;}
@@ -45,10 +45,12 @@ private:
 
        TString fAliasNames[kNAliases];
        TClonesArray fGraphs;
+       
+       Float_t fCalibData[kNAliases];
 
        Bool_t fIsProcessed;
 
-       ClassDef(AliZDCDataDCS, 1);
+       ClassDef(AliZDCDataDCS, 2);
 };
 
 #endif
index 8b1905a..c34706a 100644 (file)
@@ -63,6 +63,7 @@ AliZDCDigitizer::AliZDCDigitizer(AliRunDigitizer* manager):
   fIsCalibration=0; //By default the simulation doesn't create calib. data
   // Get calibration data
   fCalibData = GetCalibData(); 
+  if(fIsCalibration!=0) printf("\t **** AliZDCDigitizer -> Creating calibration data (pedestals)\n");
 
 }
 
@@ -203,7 +204,6 @@ void AliZDCDigitizer::Exec(Option_t* /*option*/)
   treeD->Branch("ZDC", "AliZDCDigit", &pdigit, kBufferSize);
 
   // Create digits
-  if(fIsCalibration!=0) printf("\t **** AliZDCDigitizer -> Creating calibration data (pedestals)\n");
   Int_t sector[2], sectorL[2];
   Int_t digi[2], digiL[2];
   for(sector[0]=1; sector[0]<=3; sector[0]++){
index 2b7a850..3c489bb 100644 (file)
@@ -1,11 +1,15 @@
-#include "AliZDCPreprocessor.h"
+// --- ROOT system
+#include <TFile.h>
+#include <TTimeStamp.h>
 
+#include "AliZDCPreprocessor.h"
+#include "AliCDBManager.h"
+#include "AliCDBEntry.h"
 #include "AliCDBMetaData.h"
 #include "AliDCSValue.h"
 #include "AliLog.h"
 #include "AliZDCDataDCS.h"
-
-#include <TTimeStamp.h>
+#include "AliZDCCalibData.h"
 
 //
 // This class is an example for a simple preprocessor.
@@ -48,36 +52,52 @@ void AliZDCPreprocessor::Initialize(Int_t run, UInt_t startTime,
 UInt_t AliZDCPreprocessor::Process(TMap* dcsAliasMap)
 {
   // Fills data into a AliZDCDataDCS object
-
-  if (!dcsAliasMap)
-    return 0;
+  if(!dcsAliasMap) return 0;
 
   // The processing of the DCS input data is forwarded to AliZDCDataDCS
-       fData->ProcessData(*dcsAliasMap);
+  Float_t DCSValues[26];
+  fData->ProcessData(*dcsAliasMap, DCSValues);
+  dcsAliasMap->Print("");
+  //
+  AliZDCCalibData *calibdata;
+  calibdata->SetDCSCalibData(DCSValues);
 
   const char* PedfileName = GetFile(kDAQ, "PEDESTALS", "LDC0");
   if(PedfileName){
-    AliInfo(Form("Got the file %s, now we can extract some values.", PedfileName));
-    //TODO here the file could be opened, some values extracted and  written to e.g. fData
+    AliInfo(Form("File %s connected to analyze pedestal events", PedfileName));
+    //TFile *file = TFile::Open(PedfileName);
+    AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Calib/Data/");
+    AliZDCCalibData *calibpeddata = (AliZDCCalibData*) entry->GetObject();
+    calibpeddata->Print("");
+    calibdata->SetMeanPed(calibpeddata->GetMeanPed());
+    calibdata->SetMeanPedWidth(calibpeddata->GetMeanPedWidth());
+    calibdata->SetOOTPed(calibpeddata->GetOOTPed());
+    calibdata->SetOOTPedWidth(calibpeddata->GetOOTPedWidth());
+    calibdata->SetPedCorrCoeff(calibpeddata->GetPedCorrCoeff());
   }
   else AliInfo(Form("File %s not found", PedfileName));
 
-  const char* EMDfileName = GetFile(kDAQ, "MUTUALEMD", "GDC");
+  const char* EMDfileName = GetFile(kDAQ, "MUTUALEMD", "LDC0");
   if(EMDfileName){
-    AliInfo(Form("Got the file %s, now we can extract some values.", EMDfileName));
-    //TODO here the file could be opened, some values extracted and  written to e.g. fData
+    AliInfo(Form("File %s connected to analyze EM dissociation events", EMDfileName));
+    //TFile *file = TFile::Open(EMDfileName);
+    AliCDBEntry *entry = AliCDBManager::Instance()->Get("ZDC/Calib/Data/");
+    AliZDCCalibData *calibEMDdata = (AliZDCCalibData*) entry->GetObject();
+    calibdata->SetEnCalib(calibEMDdata->GetEnCalib());
   }
   else AliInfo(Form("File %s not found", EMDfileName));
-
+   
+  calibdata->Print("");
+  
   //Now we have to store the final CDB file
   AliCDBMetaData metaData;
-       metaData.SetBeamPeriod(0);
-       metaData.SetResponsible("Chiara");
-       metaData.SetComment("This preprocessor fills an AliZDCDataDCS object.");
+  metaData.SetBeamPeriod(0);
+  metaData.SetResponsible("Chiara");
+  metaData.SetComment("This preprocessor fills an AliZDCDataDCS object.");
 
-       UInt_t result = Store(fData, &metaData);
-       delete fData;
-       fData = 0;
+  UInt_t result = Store(fData, &metaData);
+  delete fData;
+  fData = 0;
 
   return result;
 }
index bee8607..3e84f79 100644 (file)
@@ -98,8 +98,8 @@ Bool_t AliZDCRawStream::Next()
   //ADC Data Words
   else{
     //printf("This is an ADC Data Word -> channel %d range %d\n",(fRawADC & 0x1e0000) >> 17, (fRawADC & 0x10000) >> 16);
-    if(fRawADC & 0x1000) printf("Data overflow\n");
-    if(fRawADC & 0x2000) printf("Data underflow\n");
+    if(fRawADC & 0x1000) printf("ZDCRawStream -> ADC overflow\n");
+    if(fRawADC & 0x2000) printf("ZDCRawStream -> ADC underflow\n");
     //
     fADCGain = (fRawADC & 0x10000) >> 16;
     fADCValue = (fRawADC & 0xfff);