6fd58dce0f7a899a9c5004fffe4ca058a4d4f6e6
[u/mrichter/AliRoot.git] / test / testdEdx / sim.C
1 //
2 // parameter to take from config file
3 //
4 const char * recoStorage="local:///cvmfs/alice.gsi.de/alice/data/2010/OCDB";
5 Int_t run=0;
6
7
8 void ModifyRecoParam(TObjArray* recoArray, Bool_t useIonTail, Double_t crossTalkCorrection){
9   //
10   // Modify reco param - and store it in the OCDB in local directory
11   //
12   AliCDBManager * man  =  AliCDBManager::Instance();
13   for (Int_t i=0; i<4; i++){
14     AliTPCRecoParam* p = ( AliTPCRecoParam*)recoArray->At(i);
15     p->SetUseIonTailCorrection(useIonTail);
16     p->SetCrosstalkCorrection(crossTalkCorrection);
17   }
18   TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDBsim";
19   AliCDBStorage*pocdbStorage = AliCDBManager::Instance()->GetStorage(localStorage.Data());  
20   AliCDBMetaData *metaData= new AliCDBMetaData();
21   AliCDBId*   id1=new AliCDBId("TPC/Calib/RecoParam/", man->GetRun(), AliCDBRunRange::Infinity());
22   pocdbStorage->Put(recoArray, (*id1), metaData);
23   AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/RecoParam/",localStorage.Data());
24 }
25
26
27 void sim(Int_t nev, Bool_t useIonTail, Double_t crossTalkCorrection) {
28   gSystem->Load("liblhapdf");
29   gSystem->Load("libEGPythia6");
30   gSystem->Load("libpythia6");
31   gSystem->Load("libAliPythia6");
32   gSystem->Load("libhijing");
33   gSystem->Load("libTHijing");
34   gSystem->Load("libgeant321");
35
36   if (nev<0){
37     AliCDBManager * man = AliCDBManager::Instance();
38     man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
39     man->SetSpecificStorage("TPC/Calib/RecoParam/",recoStorage);
40     man->SetRun(run);
41     AliCDBEntry* e = man->Get("TPC/Calib/RecoParam/",run); // get default
42     // modify content
43     TObjArray* recoArray = (TObjArray*)e->GetObject();
44     ModifyRecoParam(recoArray, useIonTail, crossTalkCorrection);
45     return;
46   }
47
48   if (gSystem->Getenv("EVENT")) nev = atoi(gSystem->Getenv("EVENT")) ;   
49   
50   AliSimulation simulator;
51   simulator.SetMakeSDigits("ITS TPC TRD TOF PHOS HMPID EMCAL MUON FMD ZDC PMD T0");
52   //simulator.SetMakeDigitsFromHits( "ITS TPC");
53   simulator.SetWriteRawData("ALL","raw.root",kTRUE);
54
55   simulator.SetDefaultStorage("local://$ALICE_ROOT/OCDB");
56   simulator.SetSpecificStorage("GRP/GRP/Data", Form("local://%s",gSystem->pwd()));
57   TString localStorage = "local://"+gSystem->GetFromPipe("pwd")+"/OCDBsim";
58   simulator.SetSpecificStorage("TPC/Calib/RecoParam/",localStorage.Data());
59   
60   simulator.SetRunQA(":") ; 
61   
62   TStopwatch timer;
63   timer.Start();
64   simulator.Run(nev);
65   timer.Stop();
66   timer.Print();
67   //
68   // Print the OCDB setup which we used
69   //
70   AliCDBManager * man = AliCDBManager::Instance();
71   AliCDBEntry* ocdbEntry = man->Get("TPC/Calib/RecoParam/",run);
72   TObjArray* recoArray = (TObjArray*)ocdbEntry->GetObject();
73   for (Int_t i=0; i<4; i++){
74     AliTPCRecoParam* recoParam = ( AliTPCRecoParam*)recoArray->At(i);
75     printf("ipar=%d\t%d\t%f\n",i,recoParam->GetUseIonTailCorrection(), recoParam->GetCrosstalkCorrection());
76   } 
77   printf("End of the simulation\n");
78
79    
80 }