Removal of another bug in DCS DP processing...
authorcoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Sep 2009 20:04:29 +0000 (20:04 +0000)
committercoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 10 Sep 2009 20:04:29 +0000 (20:04 +0000)
ZDC/AliZDCDataDCS.cxx
ZDC/AliZDCDataDCS.h
ZDC/AliZDCPreprocessor.cxx
ZDC/TestZDCPreprocessor.C

index 7621ba3..894fe7f 100644 (file)
@@ -27,14 +27,13 @@ AliZDCDataDCS::AliZDCDataDCS():
    fEndTime(0),
    fStartTimeDCSQuery(0),
    fEndTimeDCSQuery(0),
+//   fTimeStamp(0x0), 
+//   fHVData(0x0), 
    fIsProcessed(kFALSE)
 {
   // Default constructor
-  for(Int_t i=0; i<kNAliases; i++){   
-     fAliasNames[i] = "";
-     fCalibData[i] = 0.; 
-     fTimeStamp[i] = 0.; 
-  }
+  for(Int_t i=0; i<kNAliases; i++) fAliasNames[i] = "";
+  for(Int_t i=0; i<kNAlignDet; i++) fAlignData[i] = 0.;
 }
 
 //---------------------------------------------------------------
@@ -46,6 +45,8 @@ AliZDCDataDCS::AliZDCDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime,
    fEndTime(endTime),
    fStartTimeDCSQuery(startTimeDCSQuery),
    fEndTimeDCSQuery(endTimeDCSQuery),
+//   fTimeStamp(0x0), 
+//   fHVData(0x0), 
    fIsProcessed(kFALSE)
 {
    // Standard constructor
@@ -68,15 +69,15 @@ AliZDCDataDCS::AliZDCDataDCS(const AliZDCDataDCS & data):
   fEndTime(data.fEndTime),
   fStartTimeDCSQuery(data.fStartTimeDCSQuery),
   fEndTimeDCSQuery(data.fEndTimeDCSQuery),
+//  fTimeStamp(data.fTimeStamp), 
+//  fHVData(data.fHVData), 
   fIsProcessed(data.fIsProcessed)
 {
 
   // copy constructor
 
-  for(int i=0;i<kNAliases;i++) {
-    fAliasNames[i]=data.fAliasNames[i];
-  }
-  
+  for(int i=0;i<kNAliases;i++) fAliasNames[i] = data.fAliasNames[i];
+  for(int i=0;i<kNAlignDet;i++) fAlignData[i] = data.fAlignData[i];
     
 }
 
@@ -94,12 +95,12 @@ AliZDCDataDCS& AliZDCDataDCS:: operator=(const AliZDCDataDCS & data) {
   fEndTime = data.GetEndTime();
   fStartTimeDCSQuery = data.GetStartTimeDCSQuery();
   fEndTimeDCSQuery = data.GetEndTimeDCSQuery();
+//  fTimeStamp  = data.GetTimeStamp();
+//  fHVData  = data.GetHVData();
+  fIsProcessed = data.fIsProcessed; 
 
-  for(int i=0;i<kNAliases;i++) {
-    fAliasNames[i]=data.GetAliasName(i);
-    fCalibData[i]=data.GetCalibData(i);
-    fTimeStamp[i]=data.GetTimeStamp(i);
-  }
+  for(int i=0;i<kNAliases;i++) fAliasNames[i] = data.GetAliasName(i);
+  for(int i=0;i<kNAlignDet;i++) fAlignData[i] = data.GetAlignData(i);
 
   return *this;
 }
@@ -131,46 +132,61 @@ Bool_t AliZDCDataDCS::ProcessData(TMap& aliasMap)
    AliDCSValue *aValue;
   
    for(int j=0; j<kNAliases; j++){
-      aliasArr = dynamic_cast<TObjArray*> (aliasMap.GetValue(fAliasNames[j].Data()));
+      //printf(" Processing alias %d  aliasName %s \n", j, fAliasNames[j].Data());
+      
+      aliasArr = (TObjArray*) (aliasMap.GetValue(fAliasNames[j].Data()));
       if(!aliasArr){
        AliWarning(Form("Alias %s not found!", fAliasNames[j].Data()));
-       return kFALSE;
+       //printf(" AliZDCDataDCS: Alias %s not found!\n", fAliasNames[j].Data());
+       continue;
       }
+
       Introduce(j, aliasArr);
 
-      TIter iterarray(aliasArr);
       Int_t nentries = aliasArr->GetEntries();
       if(nentries<=2){
-       AliWarning(Form("Alias %s has just %d entries!",
-                       fAliasNames[j].Data(), nentries));
-       continue;
+        AliWarning(Form("Alias %s has just %d entries!", fAliasNames[j].Data(), nentries));
+//        continue;
       }
 
       Float_t *time = new Float_t[nentries];
       Float_t *val  = new Float_t[nentries];
 
+      TIter iterarray(aliasArr);
+      
       UInt_t ne=0;
-      while((aValue = (AliDCSValue*) iterarray.Next())) {
-       val[ne] = aValue->GetFloat();
-       time[ne] = (Float_t) (aValue->GetTimeStamp());
-       fCalibData[ne] = val[ne];
-       fTimeStamp[ne] = time[ne];
-       ne++;
+      Float_t sum=0.;
+      Int_t nMeasures=0;
+      while((aValue = (AliDCSValue*) iterarray.Next())){
+        val[ne] = aValue->GetFloat();
+        time[ne] = (Float_t) (aValue->GetTimeStamp());
+        if(j<4){
+         sum += val[ne];
+         nMeasures++;
+       }
+       else{
+         //fHVData[ne] = val[ne];
+          //fTimeStamp[ne] = time[ne];
+       }
+        ne++;
       }
+      //
+      if(j<4 && nMeasures!=0) fAlignData[j] = sum/nMeasures;
       
       delete[] val;
-      delete[] time;         
+      delete[] time;   
    }
-   //
+  
    fIsProcessed=kTRUE;
-   
    return kTRUE;
+   
 }
 
 //---------------------------------------------------------------
 void AliZDCDataDCS::Init()
 {
    // Initialization
+
    fAliasNames[0] = "ZDC_ZNA_POS.actual.position";
    fAliasNames[1] = "ZDC_ZPA_POS.actual.position";
    fAliasNames[2] = "ZDC_ZNC_POS.actual.position";
@@ -214,7 +230,7 @@ void AliZDCDataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)
    // Getting array of DCS aliases
    
    int entries = aliasArr->GetEntries();
-   AliDebug(2,Form("************ Alias: %s has  %d DP values collected\n",
-       fAliasNames[numAlias].Data(),entries));
+   printf("************ Alias: %s has  %d DP values collected\n",
+       fAliasNames[numAlias].Data(),entries);
 
 }
index 4f90c18..08c2237 100644 (file)
@@ -10,7 +10,7 @@
 
 class AliZDCDataDCS : public TObject {
 public:
-    enum {kNAliases=28};
+    enum {kNAliases=28, kNAlignDet=4, kNHVChannels=24};
 
     AliZDCDataDCS();
     AliZDCDataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, 
@@ -24,18 +24,15 @@ public:
     void SetEndTime(Int_t endTime) {fEndTime = endTime;}
     void SetStartTimeDCSQuery(Int_t startTimeDCSQuery) {fStartTimeDCSQuery = startTimeDCSQuery;}
     void SetEndTimeDCSQuery(Int_t endTimeDCSQuery) {fEndTimeDCSQuery = endTimeDCSQuery;}
-    void SetCalibData(Float_t *val) {for(Int_t i=0; i<kNAliases; i++) fCalibData[i] = val[i];}
-    void SetCalibData(Int_t i, Float_t val) {fCalibData[i] = val;} 
     //
     Int_t GetRun() const {return fRun;}
     Int_t GetStartTime() const {return fStartTime;}
     Int_t GetEndTime() const {return fEndTime;}
     Int_t GetStartTimeDCSQuery() const {return fStartTimeDCSQuery;}
     Int_t GetEndTimeDCSQuery() const {return fEndTimeDCSQuery;}
-    Float_t GetCalibData() const {return *fCalibData;}
-    Float_t GetCalibData(Int_t i) const {return fCalibData[i];}
-    Float_t GetTimeStamp() const {return *fTimeStamp;}
-    Float_t GetTimeStamp(Int_t i) const {return fTimeStamp[i];}
+    Float_t GetAlignData(Int_t i) const {return fAlignData[i];}
+//    Float_t* GetTimeStamp() const {return (float*)fTimeStamp;}
+//    Float_t* GetHVData() const {return (float*)fHVData;}
 
     Bool_t ProcessData(TMap& aliasMap);
 
@@ -52,13 +49,14 @@ private:
     Int_t  fStartTimeDCSQuery; // start time DCSQuery
     Int_t  fEndTimeDCSQuery;   // end time DCSQuery
 
-    TString  fAliasNames[kNAliases];// Name of the aliases provided by the DCS
-    Double_t fCalibData[kNAliases]; // Array containing calibration data
-    Float_t  fTimeStamp[kNAliases]; // Array containing time stamps
+    TString fAliasNames[kNAliases]; // Name of the aliases provided by the DCS
+    Float_t fAlignData[kNAlignDet]; // Array containing alignment data
+//    Float_t *fTimeStamp;         // Array containing time stamps
+//    Float_t *fHVData;            // Array containing HV values
 
     Bool_t fIsProcessed;           // Flag set when data are processed
 
-    ClassDef(AliZDCDataDCS, 5);
+    ClassDef(AliZDCDataDCS, 6);
 };
 
 #endif
index 6b021ab..6164b5a 100644 (file)
@@ -86,7 +86,7 @@ void AliZDCPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
 
   AliPreprocessor::Initialize(run, startTime, endTime);
 
-  AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", run,
+  AliDebug(2,Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s \n\tStartTime DCS Query %s \n\tEndTime DCS Query %s", run,
                TTimeStamp(startTime).AsString(),
                TTimeStamp(endTime).AsString(), ((TTimeStamp)GetStartTimeDCSQuery()).AsString(), ((TTimeStamp)GetEndTimeDCSQuery()).AsString()));
 
@@ -119,6 +119,10 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap)
   // Fills data into a AliZDCDataDCS object
   if(!dcsAliasMap){
     Log(" No DCS map found: ZDC exiting from Shuttle");
+    if(fData){
+      delete fData;
+      fData = 0;
+    }
     return 1;
   }
 
@@ -130,14 +134,14 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap)
   if(resDCSProcess==kFALSE){
     Log(" Problems in processing DCS DP");
     return 1;
-  }
+  }  
   
-  // Store DCS data for reference
+  // Store DCS data as reference
   AliCDBMetaData metadata;
   metadata.SetResponsible("Chiara Oppedisano");
-  metadata.SetComment("DCS data for ZDC");
+  metadata.SetComment("DCS DP TMap for ZDC");
   Bool_t resDCSRef = kTRUE;
-  resDCSRef = StoreReferenceData("DCS","Data",fData,&metadata);
+  resDCSRef = StoreReferenceData("DCS","Data", dcsAliasMap, &metadata);
   
   if(resDCSRef==kFALSE) return 2;
 
@@ -147,10 +151,10 @@ UInt_t AliZDCPreprocessor::ProcessDCSData(TMap* dcsAliasMap)
   AliAlignObjParams a;
   Double_t dx=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
   // Vertical table position in mm from DCS
-  Double_t dyZN1 = (Double_t) (fData->GetCalibData(0)/10.);
-  Double_t dyZP1 = (Double_t) (fData->GetCalibData(1)/10.);
-  Double_t dyZN2 = (Double_t) (fData->GetCalibData(2)/10.);
-  Double_t dyZP2 = (Double_t) (fData->GetCalibData(3)/10.);
+  Double_t dyZN1 = (Double_t) (fData->GetAlignData(0)/10.);
+  Double_t dyZP1 = (Double_t) (fData->GetAlignData(1)/10.);
+  Double_t dyZN2 = (Double_t) (fData->GetAlignData(2)/10.);
+  Double_t dyZP2 = (Double_t) (fData->GetAlignData(3)/10.);
   //
   const char *n1ZDC="ZDC/NeutronZDC_C";  
   const char *p1ZDC="ZDC/ProtonZDC_C";
index 933f2fa..c6ed70e 100644 (file)
@@ -37,12 +37,12 @@ void TestZDCPreprocessor(const char* runType="PHYSICS")
   //     To use it uncomment the following line:
   //
   TMap* dcsAliasMap = ReadDCSAliasMap();
-  //dcsAliasMap->Print("");
   //
   // (b) generated in this macro: Use CreateDCSAliasMap() and its documentation
   //     To use it uncomment the following line:
   //
   //TMap* dcsAliasMap = CreateDCSAliasMap();
+  //dcsAliasMap->Print("");
   //WriteDCSAliasMap();
 
   // now give the alias map to the shuttle
@@ -185,8 +185,7 @@ TMap* CreateDCSAliasMap()
   aliasNames[2] = "ZDC_ZNC_POS.actual.position";
   aliasNames[3] = "ZDC_ZPC_POS.actual.position";
   //
-  for(int nAlias=0; nAlias<4; nAlias++)
-  {
+  for(int nAlias=0; nAlias<4; nAlias++){
     TObjArray* valueSet = new TObjArray;
     valueSet->SetOwner(1);
 
@@ -194,8 +193,8 @@ TMap* CreateDCSAliasMap()
     //printf("\n\n alias: %s\n\n",aliasName.Data());
 
     Float_t simVal = (Float_t) (random.Rndm()*0.025+random.Rndm()*0.1);
-    int timeStamp1[3] = {0,500,1000};
-    for(int i=0;i<3;i++){
+    int timeStamp1[5] = {0,500,1000,1500,2000};
+    for(int i=0;i<5;i++){
       AliDCSValue* dcsVal = new AliDCSValue(simVal, timeStamp1[i]);
       //printf("%s\n",dcsVal->ToString());
       valueSet->Add(dcsVal);
@@ -233,22 +232,22 @@ TMap* CreateDCSAliasMap()
   aliasNames[26]  = "ZDC_REFA_HV.actual.vMon";
   aliasNames[27]  = "ZDC_REFC_HV.actual.vMon";
   //
-  for(int nAlias=4;nAlias<28;nAlias++)
-  {
-    TObjArray* valueSet = new TObjArray;
-    valueSet->SetOwner(1);
+  for(int nAlias=4;nAlias<28;nAlias++){
+   if(nAlias<14 || nAlias>18){
+     TObjArray* valueSet = new TObjArray;
+     valueSet->SetOwner(1);
    
-    TString aliasName = aliasNames[nAlias];
-    //printf("\n\n alias: %s\n\n",aliasName.Data());
-
-    for(int timeStamp=0;timeStamp<=1000;timeStamp+=500)
-    {
-      Float_t simVal = (Float_t) (random.Gaus()*600.+1800.);
-      AliDCSValue* dcsVal = new AliDCSValue(simVal, timeStamp);
-      //printf("%s\n",dcsVal->ToString());
-      valueSet->Add(dcsVal);
-    }
-    aliasMap->Add(new TObjString(aliasName), valueSet);
+     TString aliasName = aliasNames[nAlias];
+     printf("\n\n alias: %s\n\n",aliasName.Data());
+
+     for(int timeStamp=0;timeStamp<=2000;timeStamp+=500){
+       Float_t simVal = (Float_t) (random.Gaus()*600.+1800.);
+       AliDCSValue* dcsVal = new AliDCSValue(simVal, timeStamp);
+       //printf("%s\n",dcsVal->ToString());
+       valueSet->Add(dcsVal);
+     }
+     aliasMap->Add(new TObjString(aliasName), valueSet);
+   }
   }
 
   return aliasMap;
@@ -265,7 +264,7 @@ TMap* ReadDCSAliasMap()
   AliCDBManager *manager = AliCDBManager::Instance();
   AliCDBStorage *sto = manager->GetStorage("local://$ALICE_ROOT/SHUTTLE/TestShuttle/TestCDB/");
   AliCDBId id("ZDC/DCS/Data",0,999999999);
-  AliCDBEntry *entry = sto->Get("ZDC/DCS/Data", 0, 0, 0);
+  AliCDBEntry *entry = sto->Get("ZDC/DCS/Data", 0);
   if(!entry) printf("TestZDCPreprocessor.C -> ERROR! No entry found as DCS Map! \n");
   return dynamic_cast<TMap*> (entry->GetObject());
 }