ROOT logo
#include "ARVersion.h"
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#include "AliCDBId.h"
#include "AliCDBMetaData.h"
#include "AliESDVertex.h"
#include <TROOT.h>
#include "AliRun.h"
#include <TString.h>
#include "AliLog.h"
#endif

void UpdateCDBVertexDiamond(const char* objName, Double_t xmed, Double_t ymed, Double_t zmed, Double_t sigx, Double_t sigy, Double_t sigz) {
  // produce the mean vertex with the current AliRoot and store it in the
  // CDB
  // andrea.dainese@pd.infn.it
  
  AliCDBManager* man = AliCDBManager::Instance();
  if(!gSystem->Getenv("STORAGE")){
      man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  }else{
      man->SetDefaultStorage(gSystem->Getenv("STORAGE"));
  }

  Int_t firstRun=0;
  if(gSystem->Getenv("FIRSTRUN")) firstRun=TString(gSystem->Getenv("FIRSTRUN")).Atoi();
  Int_t lastRun=AliCDBRunRange::Infinity();
  if(gSystem->Getenv("LASTRUN")) lastRun=TString(gSystem->Getenv("LASTRUN")).Atoi();
  TString objFullName="GRP/Calib/";

  if(objName=="MeanVertex" || objName=="MeanVertexSPD" || objName=="MeanVertexTPC"){
      objFullName += objName;
  }else{
     Printf("\"%s\" is not a valid calibration object. Exiting!",objName);
     return;
  }
  AliCDBId id(objFullName.Data(),firstRun,lastRun);
  AliCDBMetaData *metadata= new AliCDBMetaData();

  // Get root and AliRoot versions
  const char* rootv = gROOT->GetVersion();
  TString av(ALIROOT_BRANCH);
  TString revnum(ALIROOT_REVISION);

  metadata->SetResponsible("prino@to.infn.it");
  metadata->SetComment("Default mean vertex position");
  metadata->SetAliRootVersion(av.Data());
  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %s",rootv,av.Data(),revnum));
  

  Printf(Form("Storing in CDB the default mean vertex produced with root version %s and"
			  "AliRoot version %s, revision number %s", rootv, av.Data(), revnum));

  Double_t sigma[3],position[3];
  position[0]=xmed;
  position[1]=ymed;
  position[2]=zmed;
  sigma[0]=sigx;
  sigma[1]=sigy;
  sigma[2]=sigz;

  AliESDVertex *vertex = new AliESDVertex(position,sigma,"vtxmean");
  vertex->PrintStatus();

  man->Put(vertex,id,metadata);

}


void UpdateCDBVertexDiamondOld(Double_t xmed = 0., Double_t ymed = 0., Double_t sigx = 0.0060, Double_t sigy = 0.0060, Double_t sigz = 3.8) {
  // produce the mean vertex with the current AliRoot and store it in the
  // CDB
  
  AliCDBManager* man = AliCDBManager::Instance();
  man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  man->SetRun(0);
  AliCDBId id("GRP/Calib/MeanVertex",0,AliCDBRunRange::Infinity());
  AliCDBId idTPC("GRP/Calib/MeanVertexTPC",0,AliCDBRunRange::Infinity());
  AliCDBId idSPD("GRP/Calib/MeanVertexSPD",0,AliCDBRunRange::Infinity());
  AliCDBMetaData *metadata= new AliCDBMetaData();

  // Get root and AliRoot versions
  const char* rootv = gROOT->GetVersion();
  TString av(ALIROOT_BRANCH);
  TString revnum(ALIROOT_REVISION);

  metadata->SetResponsible("prino@to.infn.it");
  metadata->SetComment("Default mean vertex position");
  metadata->SetAliRootVersion(av.Data());
  metadata->SetComment(Form("Default mean vertex produced with root version %s and AliRoot %s, revision number %s",rootv,av.Data(),revnum));
  

  Printf(Form("Storing in CDB the default mean vertex produced with root version %s and"
			  "AliRoot version %s, revision number %s", rootv, av.Data(), revnum));

  Double_t resolx=5./10000.; // this is error on the weighted mean (5 micron) 
  Double_t resoly=5./10000.; // this is error on the weighted mean (5 micron)
  Double_t sigma[3],position[3];
  position[0]=xmed;
  position[1]=ymed;
  position[2]=0.;
  sigma[0]=TMath::Sqrt(sigx*sigx+resolx*resolx);
  sigma[1]=TMath::Sqrt(sigy*sigy+resoly*resoly);
  sigma[2]=sigz;

  AliESDVertex *vertex = new AliESDVertex(position,sigma,"vtxmean");
  vertex->PrintStatus();

  man->Put(vertex,id,metadata);

  position[0]=xmed;
  position[1]=ymed;
  position[2]=0.;
  sigma[0]=TMath::Sqrt(sigx*sigx+resolx*resolx);
  sigma[1]=TMath::Sqrt(sigy*sigy+resoly*resoly);
  sigma[2]=sigz;

  AliESDVertex *vertexTPC = new AliESDVertex(position,sigma,"vtxmean");
  vertexTPC->PrintStatus();

  man->Put(vertexTPC,idTPC,metadata);

  position[0]=xmed;
  position[1]=ymed;
  position[2]=0.;
  sigma[0]=TMath::Sqrt(sigx*sigx+resolx*resolx);
  sigma[1]=TMath::Sqrt(sigy*sigy+resoly*resoly);
  sigma[2]=sigz;

  AliESDVertex *vertexSPD = new AliESDVertex(position,sigma,"vtxmean");
  vertexSPD->PrintStatus();

  man->Put(vertexSPD,idSPD,metadata);



}



 UpdateCDBVertexDiamond.C:1
 UpdateCDBVertexDiamond.C:2
 UpdateCDBVertexDiamond.C:3
 UpdateCDBVertexDiamond.C:4
 UpdateCDBVertexDiamond.C:5
 UpdateCDBVertexDiamond.C:6
 UpdateCDBVertexDiamond.C:7
 UpdateCDBVertexDiamond.C:8
 UpdateCDBVertexDiamond.C:9
 UpdateCDBVertexDiamond.C:10
 UpdateCDBVertexDiamond.C:11
 UpdateCDBVertexDiamond.C:12
 UpdateCDBVertexDiamond.C:13
 UpdateCDBVertexDiamond.C:14
 UpdateCDBVertexDiamond.C:15
 UpdateCDBVertexDiamond.C:16
 UpdateCDBVertexDiamond.C:17
 UpdateCDBVertexDiamond.C:18
 UpdateCDBVertexDiamond.C:19
 UpdateCDBVertexDiamond.C:20
 UpdateCDBVertexDiamond.C:21
 UpdateCDBVertexDiamond.C:22
 UpdateCDBVertexDiamond.C:23
 UpdateCDBVertexDiamond.C:24
 UpdateCDBVertexDiamond.C:25
 UpdateCDBVertexDiamond.C:26
 UpdateCDBVertexDiamond.C:27
 UpdateCDBVertexDiamond.C:28
 UpdateCDBVertexDiamond.C:29
 UpdateCDBVertexDiamond.C:30
 UpdateCDBVertexDiamond.C:31
 UpdateCDBVertexDiamond.C:32
 UpdateCDBVertexDiamond.C:33
 UpdateCDBVertexDiamond.C:34
 UpdateCDBVertexDiamond.C:35
 UpdateCDBVertexDiamond.C:36
 UpdateCDBVertexDiamond.C:37
 UpdateCDBVertexDiamond.C:38
 UpdateCDBVertexDiamond.C:39
 UpdateCDBVertexDiamond.C:40
 UpdateCDBVertexDiamond.C:41
 UpdateCDBVertexDiamond.C:42
 UpdateCDBVertexDiamond.C:43
 UpdateCDBVertexDiamond.C:44
 UpdateCDBVertexDiamond.C:45
 UpdateCDBVertexDiamond.C:46
 UpdateCDBVertexDiamond.C:47
 UpdateCDBVertexDiamond.C:48
 UpdateCDBVertexDiamond.C:49
 UpdateCDBVertexDiamond.C:50
 UpdateCDBVertexDiamond.C:51
 UpdateCDBVertexDiamond.C:52
 UpdateCDBVertexDiamond.C:53
 UpdateCDBVertexDiamond.C:54
 UpdateCDBVertexDiamond.C:55
 UpdateCDBVertexDiamond.C:56
 UpdateCDBVertexDiamond.C:57
 UpdateCDBVertexDiamond.C:58
 UpdateCDBVertexDiamond.C:59
 UpdateCDBVertexDiamond.C:60
 UpdateCDBVertexDiamond.C:61
 UpdateCDBVertexDiamond.C:62
 UpdateCDBVertexDiamond.C:63
 UpdateCDBVertexDiamond.C:64
 UpdateCDBVertexDiamond.C:65
 UpdateCDBVertexDiamond.C:66
 UpdateCDBVertexDiamond.C:67
 UpdateCDBVertexDiamond.C:68
 UpdateCDBVertexDiamond.C:69
 UpdateCDBVertexDiamond.C:70
 UpdateCDBVertexDiamond.C:71
 UpdateCDBVertexDiamond.C:72
 UpdateCDBVertexDiamond.C:73
 UpdateCDBVertexDiamond.C:74
 UpdateCDBVertexDiamond.C:75
 UpdateCDBVertexDiamond.C:76
 UpdateCDBVertexDiamond.C:77
 UpdateCDBVertexDiamond.C:78
 UpdateCDBVertexDiamond.C:79
 UpdateCDBVertexDiamond.C:80
 UpdateCDBVertexDiamond.C:81
 UpdateCDBVertexDiamond.C:82
 UpdateCDBVertexDiamond.C:83
 UpdateCDBVertexDiamond.C:84
 UpdateCDBVertexDiamond.C:85
 UpdateCDBVertexDiamond.C:86
 UpdateCDBVertexDiamond.C:87
 UpdateCDBVertexDiamond.C:88
 UpdateCDBVertexDiamond.C:89
 UpdateCDBVertexDiamond.C:90
 UpdateCDBVertexDiamond.C:91
 UpdateCDBVertexDiamond.C:92
 UpdateCDBVertexDiamond.C:93
 UpdateCDBVertexDiamond.C:94
 UpdateCDBVertexDiamond.C:95
 UpdateCDBVertexDiamond.C:96
 UpdateCDBVertexDiamond.C:97
 UpdateCDBVertexDiamond.C:98
 UpdateCDBVertexDiamond.C:99
 UpdateCDBVertexDiamond.C:100
 UpdateCDBVertexDiamond.C:101
 UpdateCDBVertexDiamond.C:102
 UpdateCDBVertexDiamond.C:103
 UpdateCDBVertexDiamond.C:104
 UpdateCDBVertexDiamond.C:105
 UpdateCDBVertexDiamond.C:106
 UpdateCDBVertexDiamond.C:107
 UpdateCDBVertexDiamond.C:108
 UpdateCDBVertexDiamond.C:109
 UpdateCDBVertexDiamond.C:110
 UpdateCDBVertexDiamond.C:111
 UpdateCDBVertexDiamond.C:112
 UpdateCDBVertexDiamond.C:113
 UpdateCDBVertexDiamond.C:114
 UpdateCDBVertexDiamond.C:115
 UpdateCDBVertexDiamond.C:116
 UpdateCDBVertexDiamond.C:117
 UpdateCDBVertexDiamond.C:118
 UpdateCDBVertexDiamond.C:119
 UpdateCDBVertexDiamond.C:120
 UpdateCDBVertexDiamond.C:121
 UpdateCDBVertexDiamond.C:122
 UpdateCDBVertexDiamond.C:123
 UpdateCDBVertexDiamond.C:124
 UpdateCDBVertexDiamond.C:125
 UpdateCDBVertexDiamond.C:126
 UpdateCDBVertexDiamond.C:127
 UpdateCDBVertexDiamond.C:128
 UpdateCDBVertexDiamond.C:129
 UpdateCDBVertexDiamond.C:130
 UpdateCDBVertexDiamond.C:131
 UpdateCDBVertexDiamond.C:132
 UpdateCDBVertexDiamond.C:133
 UpdateCDBVertexDiamond.C:134
 UpdateCDBVertexDiamond.C:135
 UpdateCDBVertexDiamond.C:136
 UpdateCDBVertexDiamond.C:137
 UpdateCDBVertexDiamond.C:138
 UpdateCDBVertexDiamond.C:139
 UpdateCDBVertexDiamond.C:140
 UpdateCDBVertexDiamond.C:141
 UpdateCDBVertexDiamond.C:142