]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZEROPreprocessor.cxx
nvartrk=7 in ESE task
[u/mrichter/AliRoot.git] / VZERO / AliVZEROPreprocessor.cxx
index 23fbcf339799c5428a166f6637f95b567731f863..9177210ca9d2caef0c3636b30a981943f8b4c946 100644 (file)
@@ -13,6 +13,7 @@
 #include <TTimeStamp.h>
 #include <TObjString.h>
 #include <TSystem.h>
+#include <TH1F.h>
 
 
 class Tlist;
@@ -72,8 +73,10 @@ void AliVZEROPreprocessor::Initialize(Int_t run, UInt_t startTime,
    fEndTime   = GetEndTimeDCSQuery ();
    time_t daqStart = (time_t) (((TString)GetRunParameter("DAQ_time_start")).Atoi());
    time_t daqEnd   = (time_t) (((TString)GetRunParameter("DAQ_time_end")).Atoi());
+   time_t ctpStart = (time_t) (((TString)GetRunParameter("TRGTimeStart")).Atoi());
+   time_t ctpEnd   = (time_t) (((TString)GetRunParameter("TRGTimeEnd")).Atoi());
    
-       fData      = new AliVZERODataDCS(fRun, fStartTime, fEndTime,(UInt_t)daqStart, (UInt_t)daqEnd);
+       fData      = new AliVZERODataDCS(fRun, fStartTime, fEndTime,(UInt_t)daqStart, (UInt_t)daqEnd,(UInt_t)ctpStart, (UInt_t)ctpEnd);
        fFEEData   = new AliVZERODataFEE(fRun, fStartTime, fEndTime);           
    
 }
@@ -99,7 +102,7 @@ UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
   if(!dcsAliasMap) return 1;
 
        // The Processing of the DCS input data is forwarded to AliVZERODataDCS
-       fData->ProcessData(*dcsAliasMap);
+  if (!fData->ProcessData(*dcsAliasMap)) return 1;
 
        // Writes VZERO PMs HV values into VZERO calibration object and Timing resolution parameters
        calibData->FillDCSData(fData);
@@ -127,8 +130,11 @@ UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
                                   Log(Form("Cannot open file %s",fileName.Data()));
                                   return 1;}
                Float_t pedMean[128], pedSigma[128], adcMean[128], adcSigma[128] ;
-               for(Int_t j=0; j<128; j++)fscanf(file,"%f %f %f %f",
-                                         &pedMean[j], &pedSigma[j], &adcMean[j], &adcSigma[j]);
+               for(Int_t j=0; j<128; j++) {
+                 Int_t resScan = fscanf(file,"%f %f %f %f",
+                                        &pedMean[j], &pedSigma[j], &adcMean[j], &adcSigma[j]);
+                 if (resScan != 4) Log(Form("Bad data in file %s !",fileName.Data()));
+               }
                fclose(file);
                
                calibData->SetPedestal(pedMean);
@@ -182,7 +188,6 @@ UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
        
        resECal=kTRUE;
        
-       result = 0;
        metaData.SetBeamPeriod(0);
        metaData.SetResponsible("Brigitte Cheynis");
        metaData.SetComment("This preprocessor fills an AliVZEROTriggerData object");
@@ -190,6 +195,68 @@ UInt_t AliVZEROPreprocessor::Process(TMap* dcsAliasMap)
        resECal = Store("Trigger", "Data", triggerData, &metaData, 0, kTRUE);
        if(resECal==kFALSE ) result = 1;
        
+
+   // *************** From DAQ DA - Equalization factors ******************
+  
+  TH1F *eqFactors = new TH1F("VZEROEqualizationFactors","VZERO Equalization Factors for Pb-Pb",64,-0.5,63.5);
+  sourcesId = "V00DAEqualFactors";
+
+  TList* sourceList2 = GetFileSources(kDAQ, sourcesId.Data());
+  if (!sourceList2)  {
+    Log(Form("No sources found for id %s", sourcesId.Data()));                 
+    return 1; }
+  Log(Form("The following sources produced files with the id %s",sourcesId.Data()));
+  sourceList2->Print();
+
+  TIter iter2(sourceList2);
+  TObjString *source2;
+               
+  while((source2=dynamic_cast<TObjString*> (iter2.Next()))){
+    fileName = GetFile(kDAQ, sourcesId.Data(), source2->GetName());
+    if (fileName.Length() > 0)
+      Log(Form("Got the file %s, now we can extract some values.", fileName.Data()));
+    FILE *file2;
+    if((file2 = fopen(fileName.Data(),"r")) == NULL){
+      Log(Form("Cannot open file %s",fileName.Data()));
+      return 1;}
+
+    Double_t alpha[66];
+    alpha[0] = alpha[65] = 0;
+    Int_t tempCh;
+    Float_t tempAlpha;
+    for(Int_t j=0; j<64; ++j) {
+      Int_t resScan = fscanf(file2,"%d %f", &tempCh, &tempAlpha);
+      if (resScan != 2) Log(Form("Bad data in file %s !",fileName.Data()));
+      alpha[tempCh+1] = tempAlpha;
+    }
+    fclose(file2);
+
+    // Check that everything was properly transmitted
+    printf("Equalization factors (0->64): ");
+    for(Int_t j=0; j<64; ++j) printf("%.5f ",alpha[j+1]);
+    printf("\n");
+
+    eqFactors->SetContent(alpha);
+  }
+
+  delete source2;      
+  
+  // Now we store the VZERO Equalization Factors Object into OCDB
+
+  resECal=kTRUE;
+  
+  AliCDBMetaData metaData2;
+  metaData2.SetBeamPeriod(0);
+  metaData2.SetResponsible("Brigitte Cheynis");
+  metaData2.SetComment("VZERO Equalization Factors object filled by VZERO preprocessor");
+
+  resECal = Store("Calib", "EqualizationFactors", eqFactors, &metaData2, 0, kTRUE);
+
+  if(resECal==kFALSE ) result = 1;
+
+  delete eqFactors;
+  delete sourceList2; 
+
        
   return result;
 }