ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "AliCDBManager.h"
#include "AliITSCalibrationSDD.h"
#include "AliITSresponseSDD.h"
#include "AliITSDriftSpeedSDD.h"
#include "AliITSDriftSpeedArraySDD.h"
#include "AliCDBMetaData.h"
#include "AliCDBStorage.h"
#include "AliCDBId.h"
#include "AliCDBPath.h"
#include "AliCDBEntry.h"
#include <TObjArray.h>
#include <TRandom3.h>
#endif

void StoreDriftSpeedSDD(Int_t firstRun=0,Int_t lastRun=AliCDBRunRange::Infinity()){
  ///////////////////////////////////////////////////////////////////////
  // Macro to generate and store the drift speed files for SDD         //
  // Generates:                                                        //
  //  1 file with 520 AliITSDriftSpeedArraySDD objects with            //
  ///////////////////////////////////////////////////////////////////////
  
  if(!AliCDBManager::Instance()->IsDefaultStorageSet()) {
    AliCDBManager::Instance()->SetDefaultStorage("local://OCDB");
  }
  

  AliCDBMetaData *md1= new AliCDBMetaData(); // metaData describing the object
  md1->SetObjectClassName("TObjArray");
  md1->SetResponsible("Francesco Prino");
  md1->SetBeamPeriod(0);
  md1->SetComment("Simulated data");

  AliCDBId drSpeed("ITS/Calib/DriftSpeedSDD",firstRun, lastRun);
  TObjArray vdrift(520);
  vdrift.SetOwner(kFALSE);



  Double_t drVelParam[4]={6.533,0.001285,-0.000005,0};
  Double_t edrVelParam[4]={0.1,0,0,0};
  Double_t drVel[4];
  TRandom3 *gran = new TRandom3();
  
  for(Int_t mod=0;mod<260;mod++){
    AliITSDriftSpeedArraySDD *arr0 = new AliITSDriftSpeedArraySDD(5);
    AliITSDriftSpeedArraySDD *arr1 = new AliITSDriftSpeedArraySDD(5);
    for(Int_t iev=0; iev<5;iev++){
      for(Int_t ic=0;ic<4;ic++) drVel[ic]=gran->Gaus(drVelParam[ic],edrVelParam[ic]);
      AliITSDriftSpeedSDD *v0=new AliITSDriftSpeedSDD(iev*20,iev+1000,3,drVel);
      arr0->AddDriftSpeed(v0);
      for(Int_t ic=0;ic<4;ic++) drVel[ic]=gran->Gaus(drVelParam[ic],edrVelParam[ic]);
      AliITSDriftSpeedSDD *v1=new AliITSDriftSpeedSDD(iev*20,iev+1000,3,drVel);
      arr1->AddDriftSpeed(v1);
    }
    vdrift.Add(arr0);
    vdrift.Add(arr1);
    printf("Added module %d\n",mod);
  }
    
  AliCDBManager::Instance()->GetDefaultStorage()->Put(&vdrift, drSpeed, md1);   
}
 StoreDriftSpeedSDD.C:1
 StoreDriftSpeedSDD.C:2
 StoreDriftSpeedSDD.C:3
 StoreDriftSpeedSDD.C:4
 StoreDriftSpeedSDD.C:5
 StoreDriftSpeedSDD.C:6
 StoreDriftSpeedSDD.C:7
 StoreDriftSpeedSDD.C:8
 StoreDriftSpeedSDD.C:9
 StoreDriftSpeedSDD.C:10
 StoreDriftSpeedSDD.C:11
 StoreDriftSpeedSDD.C:12
 StoreDriftSpeedSDD.C:13
 StoreDriftSpeedSDD.C:14
 StoreDriftSpeedSDD.C:15
 StoreDriftSpeedSDD.C:16
 StoreDriftSpeedSDD.C:17
 StoreDriftSpeedSDD.C:18
 StoreDriftSpeedSDD.C:19
 StoreDriftSpeedSDD.C:20
 StoreDriftSpeedSDD.C:21
 StoreDriftSpeedSDD.C:22
 StoreDriftSpeedSDD.C:23
 StoreDriftSpeedSDD.C:24
 StoreDriftSpeedSDD.C:25
 StoreDriftSpeedSDD.C:26
 StoreDriftSpeedSDD.C:27
 StoreDriftSpeedSDD.C:28
 StoreDriftSpeedSDD.C:29
 StoreDriftSpeedSDD.C:30
 StoreDriftSpeedSDD.C:31
 StoreDriftSpeedSDD.C:32
 StoreDriftSpeedSDD.C:33
 StoreDriftSpeedSDD.C:34
 StoreDriftSpeedSDD.C:35
 StoreDriftSpeedSDD.C:36
 StoreDriftSpeedSDD.C:37
 StoreDriftSpeedSDD.C:38
 StoreDriftSpeedSDD.C:39
 StoreDriftSpeedSDD.C:40
 StoreDriftSpeedSDD.C:41
 StoreDriftSpeedSDD.C:42
 StoreDriftSpeedSDD.C:43
 StoreDriftSpeedSDD.C:44
 StoreDriftSpeedSDD.C:45
 StoreDriftSpeedSDD.C:46
 StoreDriftSpeedSDD.C:47
 StoreDriftSpeedSDD.C:48
 StoreDriftSpeedSDD.C:49
 StoreDriftSpeedSDD.C:50
 StoreDriftSpeedSDD.C:51
 StoreDriftSpeedSDD.C:52
 StoreDriftSpeedSDD.C:53
 StoreDriftSpeedSDD.C:54
 StoreDriftSpeedSDD.C:55
 StoreDriftSpeedSDD.C:56
 StoreDriftSpeedSDD.C:57
 StoreDriftSpeedSDD.C:58
 StoreDriftSpeedSDD.C:59
 StoreDriftSpeedSDD.C:60
 StoreDriftSpeedSDD.C:61
 StoreDriftSpeedSDD.C:62
 StoreDriftSpeedSDD.C:63