ROOT logo
//
// parameter to take from config file
//
const char * recoStorage="local:///cvmfs/alice.gsi.de/alice/data/2010/OCDB";
Int_t run=0;


void ModifyRecoParam(TObjArray* recoArray, Bool_t useIonTail, Double_t crossTalkCorrection){
  //
  // Modify reco param - and store it in the OCDB in local directory
  //
  AliCDBManager * man  =  AliCDBManager::Instance();
  for (Int_t i=0; i<4; i++){
    AliTPCRecoParam* p = ( AliTPCRecoParam*)recoArray->At(i);
    p->SetUseIonTailCorrection(useIonTail);
    p->SetCrosstalkCorrection(crossTalkCorrection);
  }
  TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDBsim";
  AliCDBStorage*pocdbStorage = AliCDBManager::Instance()->GetStorage(localStorage.Data());  
  AliCDBMetaData *metaData= new AliCDBMetaData();
  AliCDBId*   id1=new AliCDBId("TPC/Calib/RecoParam/", man->GetRun(), AliCDBRunRange::Infinity());
  pocdbStorage->Put(recoArray, (*id1), metaData);
  AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/RecoParam/",localStorage.Data());
}


void sim(Int_t nev, Bool_t useIonTail, Double_t crossTalkCorrection) {
  gSystem->Load("liblhapdf");
  gSystem->Load("libEGPythia6");
  gSystem->Load("libpythia6");
  gSystem->Load("libAliPythia6");
  gSystem->Load("libhijing");
  gSystem->Load("libTHijing");
  gSystem->Load("libgeant321");

  if (nev<0){
    AliCDBManager * man = AliCDBManager::Instance();
    man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
    man->SetSpecificStorage("TPC/Calib/RecoParam/",recoStorage);
    man->SetRun(run);
    AliCDBEntry* e = man->Get("TPC/Calib/RecoParam/",run); // get default
    // modify content
    TObjArray* recoArray = (TObjArray*)e->GetObject();
    ModifyRecoParam(recoArray, useIonTail, crossTalkCorrection);
    return;
  }

  if (gSystem->Getenv("EVENT")) nev = atoi(gSystem->Getenv("EVENT")) ;   
  
  AliSimulation simulator;
  simulator.SetMakeSDigits("ITS TPC TRD TOF PHOS HMPID EMCAL MUON FMD ZDC PMD T0");
  //simulator.SetMakeDigitsFromHits( "ITS TPC");
  simulator.SetWriteRawData("ALL","raw.root",kTRUE);

  simulator.SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  simulator.SetSpecificStorage("GRP/GRP/Data", Form("local://%s",gSystem->pwd()));
  TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDBsim";
  simulator.SetSpecificStorage("TPC/Calib/RecoParam/",localStorage.Data());
  
  simulator.SetRunQA(":") ; 
  
  TStopwatch timer;
  timer.Start();
  simulator.Run(nev);
  timer.Stop();
  timer.Print();
  //
  // Print the OCDB setup which we used
  //
  AliCDBManager * man = AliCDBManager::Instance();
  AliCDBEntry* ocdbEntry = man->Get("TPC/Calib/RecoParam/",run);
  TObjArray* recoArray = (TObjArray*)ocdbEntry->GetObject();
  for (Int_t i=0; i<4; i++){
    AliTPCRecoParam* recoParam = ( AliTPCRecoParam*)recoArray->At(i);
    printf("ipar=%d\t%d\t%f\n",i,recoParam->GetUseIonTailCorrection(), recoParam->GetCrosstalkCorrection());
  } 
  printf("End of the simulation\n");

   
}
 sim.C:1
 sim.C:2
 sim.C:3
 sim.C:4
 sim.C:5
 sim.C:6
 sim.C:7
 sim.C:8
 sim.C:9
 sim.C:10
 sim.C:11
 sim.C:12
 sim.C:13
 sim.C:14
 sim.C:15
 sim.C:16
 sim.C:17
 sim.C:18
 sim.C:19
 sim.C:20
 sim.C:21
 sim.C:22
 sim.C:23
 sim.C:24
 sim.C:25
 sim.C:26
 sim.C:27
 sim.C:28
 sim.C:29
 sim.C:30
 sim.C:31
 sim.C:32
 sim.C:33
 sim.C:34
 sim.C:35
 sim.C:36
 sim.C:37
 sim.C:38
 sim.C:39
 sim.C:40
 sim.C:41
 sim.C:42
 sim.C:43
 sim.C:44
 sim.C:45
 sim.C:46
 sim.C:47
 sim.C:48
 sim.C:49
 sim.C:50
 sim.C:51
 sim.C:52
 sim.C:53
 sim.C:54
 sim.C:55
 sim.C:56
 sim.C:57
 sim.C:58
 sim.C:59
 sim.C:60
 sim.C:61
 sim.C:62
 sim.C:63
 sim.C:64
 sim.C:65
 sim.C:66
 sim.C:67
 sim.C:68
 sim.C:69
 sim.C:70
 sim.C:71
 sim.C:72
 sim.C:73
 sim.C:74
 sim.C:75
 sim.C:76
 sim.C:77
 sim.C:78
 sim.C:79
 sim.C:80
 sim.C:81