Add macro for DCS datapoint OCDB entries
authorcblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 May 2010 11:37:41 +0000 (11:37 +0000)
committercblume <cblume@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 12 May 2010 11:37:41 +0000 (11:37 +0000)
TRD/Cal/AliTRDCreateDummyCDB_DP.C [new file with mode: 0644]

diff --git a/TRD/Cal/AliTRDCreateDummyCDB_DP.C b/TRD/Cal/AliTRDCreateDummyCDB_DP.C
new file mode 100644 (file)
index 0000000..6b5375e
--- /dev/null
@@ -0,0 +1,149 @@
+#if !defined( __CINT__) || defined(__MAKECINT__)
+
+#include <iostream>
+
+#include <AliCDBManager.h>
+#include <AliCDBStorage.h>
+#include <AliCDBEntry.h>
+#include <AliCDBMetaData.h>
+
+#include "AliTRDgeometry.h"
+
+#include "AliTRDCalDCS.h"
+#include "AliTRDCalDCSFEE.h"
+
+#endif
+
+// ===================================================
+// Modified version of the macro AliTRDCreateDummyCDB 
+// to create the default CDB object for the DCS
+// data points
+// Modifications done by Frederick Kramer 2010-05-11
+// ===================================================
+
+
+
+// Run numbers for the dummy file
+const Int_t    gkDummyRunBeg = 0;
+const Int_t    gkDummyRunEnd = 999999999;
+AliCDBStorage *gStorLoc      = 0;
+
+
+//_____________________________________________________________________________
+TMap* CreateDCSAliasMap(Int_t entries) {
+  // Creates a DCS structure
+  // The structure is the following:
+  //   TMap (key --> value)
+  //     <DCSAlias> --> <valueList>
+  //     <DCSAlias> is a string
+  //     <valueList> is a TObjArray of AliDCSValue
+  //     An AliDCSValue consists of timestamp and a value in form of a AliSimpleValue
+
+  // Each contains 1000 values randomly generated by TRandom::Gaus + 5*nAlias
+
+  TMap* aliasMap = new TMap;
+  aliasMap->SetOwner(1);
+
+  TRandom random;
+
+  for(int nAlias=0;nAlias<entries;nAlias++)
+  {
+    TObjArray* valueSet = new TObjArray;
+    valueSet->SetOwner(1);
+
+    TString aliasName="DCSAlias";
+    aliasName += nAlias;
+    //printf("\n\n alias: %s\n\n",aliasName.Data());
+
+    for (int timeStamp=0;timeStamp<1000;timeStamp+=10)
+    {
+      AliDCSValue* dcsVal = new AliDCSValue((Float_t) (random.Gaus()+5*nAlias), timeStamp);
+      //printf("%s\n",dcsVal->ToString().Data());
+      valueSet->Add(dcsVal);
+    }
+    aliasMap->Add(new TObjString(aliasName), valueSet);
+  }
+
+  return aliasMap;
+}
+
+
+//_____________________________________________________________________________
+AliCDBMetaData *CreateMetaObject(const char *objectClassName)
+{
+
+  AliCDBMetaData *md1= new AliCDBMetaData(); 
+  md1->SetObjectClassName(objectClassName);
+  md1->SetResponsible("Frederick Kramer");
+  md1->SetBeamPeriod(1);
+  md1->SetAliRootVersion("05-26-00b"); //root version
+  md1->SetComment("Ideal DCS DP CDB object");
+  
+  return md1;
+
+}
+
+//_____________________________________________________________________________
+void StoreObject(const char* cdbPath, AliTRDSensorArray* object, AliCDBMetaData* metaData)
+{
+
+  AliCDBId id1(cdbPath,gkDummyRunBeg,gkDummyRunEnd); 
+  gStorLoc->Put(object,id1,metaData); 
+
+}
+    
+
+//_____________________________________________________________________________
+void AliTRDCreateDummyCDB_DP()
+{
+
+  cout << endl 
+       << "TRD :: Creating dummy CDB for the runs " 
+       << gkDummyRunBeg
+       << " -- " 
+       << gkDummyRunEnd
+       << endl;
+  
+  AliCDBManager *man = AliCDBManager::Instance();
+  gStorLoc = man->GetStorage("local://$ALICE_ROOT/OCDB");
+  if (!gStorLoc) {
+    return;
+  }
+
+  AliCDBMetaData *metaData = 0;
+  TObjArray* list = AliTRDSensorArray::GetList();
+
+  if (list == 0x0) {
+    printf("Error during AliTRDSensorArray::GetList\n");
+    printf("DCS will not be processing\n");
+  }
+
+  Int_t nEntries = list->GetEntries();
+  printf("%d alias loaded\n", nEntries);
+
+  Bool_t* results = new Bool_t [nEntries];
+  Int_t*  nGraph  = new Int_t [nEntries];
+  TMap* dcsAliasMap = CreateDCSAliasMap(nEntries);
+
+  for (Int_t iAlias = 0; iAlias < nEntries; iAlias++) {
+
+    AliTRDSensorArray * oneTRDDCS = (AliTRDSensorArray *)list->At(iAlias);
+
+    oneTRDDCS->SetStartTime(TTimeStamp (1000000000));
+    oneTRDDCS->SetEndTime(TTimeStamp (2000000000));
+    printf("Processing DCS : \"%s\"\n", oneTRDDCS->GetStoreName().Data());
+
+    TMap * map;
+    map = oneTRDDCS->ExtractDCS(dcsAliasMap);
+    nGraph[iAlias] = map->GetEntries();
+    oneTRDDCS->SetGraph(map);
+
+    char ocdbpath[256];
+    sprintf(ocdbpath, "TRD/Calib/%s", oneTRDDCS->GetStoreName().Data());
+    metaData = CreateMetaObject(oneTRDDCS->GetStoreName().Data());
+
+    StoreObject(ocdbpath, oneTRDDCS, metaData);
+  }
+  
+}
+