]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GRP/UpdateCDBIdealGeom.C
Macro to generate the CDB entry with the ideal geometry (Raffaele)
[u/mrichter/AliRoot.git] / GRP / UpdateCDBIdealGeom.C
diff --git a/GRP/UpdateCDBIdealGeom.C b/GRP/UpdateCDBIdealGeom.C
new file mode 100644 (file)
index 0000000..159cfe1
--- /dev/null
@@ -0,0 +1,43 @@
+void UpdateCDBIdealGeom(){
+  // produce the ideal geometry with the current AliRoot and store it in the
+  // CDB
+
+  AliCDBManager* man = AliCDBManager::Instance();
+  man->SetDefaultStorage("local://$ALICE_ROOT");
+  man->SetRun(0);
+  AliCDBId id("GRP/Geometry/Data",0,AliCDBRunRange::Infinity());
+  AliCDBMetaData *md= new AliCDBMetaData();
+
+  // Get root version
+  const char* rootv = gROOT->GetVersion();
+
+  // Get AliRoot version from file to set it in the metadata of the entry
+  TFile *fv= TFile::Open("$ALICE_ROOT/CVS/Repository?filetype=raw","READ");
+  Int_t size = fv->GetSize();
+  char *buf = new Char_t[size];
+  memset(buf, '\0', size);
+  fv->Seek(0);
+  char* alirootv;
+  if ( fv->ReadBuffer(buf, size) ) {
+    Printf("Error reading AliRoot version from file to buffer!");
+    alirootv = "";
+  }
+  if(buf=="AliRoot"){
+    alirootv="HEAD";
+  }else{
+    alirootv = buf;
+    md->SetAliRootVersion(alirootv);
+    md->SetComment(Form("Geometry produced with root version %s and AliRoot version %s",rootv,alirootv));
+  }
+  
+  gAlice->Init();
+  
+  if(!gGeoManager){
+    Printf("Unable to produce a valid geometry to be put in the CDB!");
+    return;
+  }
+  
+  Printf("Storing in CDB geometry produced with root version %s and AliRoot version %s",rootv,alirootv);
+  man->Put(gGeoManager,id,md);
+
+}