ROOT logo
/* $Id$ */

// Script to create calibration parameters and store them into CDB
// Two sets of calibration parameters can be created:
// 1) equal parameters
// 2) randomly distributed parameters for decalibrated detector silumations

#if !defined(__CINT__)
#include "TControlBar.h"
#include "TString.h"
#include "TRandom.h"
#include "TH1F.h"
#include "TF1.h"
#include "TCanvas.h"

#include "AliRun.h"
#include "AliT0CalibData.h"
//#include "AliT0AlignData.h"
#include "AliT0Align.h"
#include "AliCDBMetaData.h"
#include "AliCDBId.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliCDBStorage.h"
#endif


void AliT0SetCDB()
{
  TControlBar *menu = new TControlBar("vertical","T0 CDB");
  menu->AddButton("Set time delay","SetTimeDelay()",
		  "Set time delay");
  menu->AddButton("Set walk","SetWalk()",
		  "Set slewing coorection");
  menu->AddButton("Set Align","SetAC()",
		  "Set alignment coefficients");
  menu->AddButton("Set LookUpTable","SetLookUp()",
                  "Set LookUp table");
  menu->AddButton("Read time delay","GetTimeDelay()",
		  "Read time delay");
  menu->AddButton("Read walk","GetWalk()",
		  "Read amplitude-time correction");
  menu->AddButton("Read alignment CC","GetAC()",
		  "Read face detector position ");
  menu->AddButton("Read Lookup","GetLookUp()",
		  "Read Lookup table ");
  menu->Show();
}


//------------------------------------------------------------------------
void SetAC()
{
  // Writing alignment coefficients into the Condition DB
  // Arguments:
  
  TString DBFolder;
  Int_t firstRun   =  0;
  Int_t lastRun    = 99999;
  Int_t beamPeriod =  1;
  char* objFormat  = "";

  DBFolder  ="local://Align";
  firstRun  =  0;
  lastRun   =  99999;
  objFormat = "T0 array  positions";

  AliT0Align *al = new AliT0Align(1,835615);
  al->Run();

   /* 
  AliT0AlignData *alignda=new AliT0AlignData("T0");
  alignda-> SetZposition (67.9,373);
  alignda->Print();
  
  //Store calibration data into database
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
   AliCDBManager::Instance()->SetSpecificStorage("T0",DBFolder.Data());
  
  AliCDBMetaData md;
  md.SetComment(objFormat);
  md.SetBeamPeriod(beamPeriod);
  md.SetResponsible("Alla");
  TString fPath="T0/Align/Positions";


  //  AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("T0");
  AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
  if(storage) {
   AliCDBId id(fPath.Data(),firstRun,lastRun);

   storage->Put(alignda, id, &md);
 }
   */
}
//------------------------------------------------------------------------
void SetTimeDelay()
{
  // Writing calibration coefficients into the Calibration DB
  // Arguments:

  TString DBFolder;
  Int_t firstRun   =  0;
  Int_t lastRun    = 99999;
  Int_t beamPeriod =  1;
  char* objFormat  = "";

  DBFolder  ="local://Calib";
  firstRun  =  0;
  lastRun   =  999999;
  objFormat = "T0 initial time delay";

  AliT0CalibTimeEq *calibda=new AliT0CalibTimeEq("T0");
  
   Float_t fTimeDelay  = 1000;
 for(Int_t ipmt=0; ipmt<24; ipmt++) {
   calibda->SetTimeEq(ipmt,fTimeDelay+ipmt*100);
 
  }
 
  calibda->Print();
  //Store calibration data into database
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");

  //  AliCDBManager::Instance()->SetSpecificStorage("T0",DBFolder.Data());
  
  AliCDBMetaData md;
  md.SetComment(objFormat);
  md.SetBeamPeriod(beamPeriod);
  md.SetResponsible("Alla");
  TString fPath="T0/Calib/TimeDelay";


  // AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("T0");
  AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
  if(storage) {
    AliCDBId id(fPath.Data(),firstRun,lastRun);
    storage->Put(calibda, id, &md);
  }
}

//------------------------------------------------------------------------
void SetWalk()
{
  // Writing calibration coefficients into the Calibration DB
  // Arguments:

  TString DBFolder;
  Int_t firstRun   =  0;
  Int_t lastRun    = 999999;
  Int_t beamPeriod =  1;
  char* objFormat  = "";

  DBFolder  ="local://Calib";
  firstRun  =  0;
  lastRun   =  999999;
  objFormat = "T0 initial slewnig correction";

  AliT0CalibWalk *calibda=new AliT0CalibWalk("T0");
  
   
  TRandom rn;
  
  for(Int_t ipmt=0; ipmt<24; ipmt++) {
    calibda->SetWalk(ipmt);
    calibda->SetAmpLEDRec(ipmt);
  }
  //Store calibration data into database
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");

  //  AliCDBManager::Instance()->SetSpecificStorage("T0",DBFolder.Data());
  
  AliCDBMetaData md;
  md.SetComment(objFormat);
  md.SetBeamPeriod(beamPeriod);
  md.SetResponsible("Alla");
  TString fPath="T0/Calib/Slewing_Walk";


  // AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("T0");
  AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
  if(storage) {
    AliCDBId id(fPath.Data(),firstRun,lastRun);
    storage->Put(calibda, id, &md);
  }
}

//------------------------------------------------------------------------
void GetTimeDelay()
{
  // Read calibration coefficients into the Calibration DB
  // Arguments:
  
  TString DBFolder;
  
  DBFolder  ="local://Calib";
  Int_t nRun=gAlice->GetRunNumber();
  
  AliCDBStorage *stor =AliCDBManager::Instance()->GetStorage("local://$ALICE_ROOT/OCDB");
  AliCDBEntry* entry = stor->Get("T0/Calib/TimeDelay",0);
  
  AliT0CalibTimeEq *clb = (AliT0CalibTimeEq*)entry->GetObject();
  clb->Print();
  for (Int_t i=0; i<24; i++) {
   cout<<clb->GetTimeEq(i)<<endl;
   //  cout<<" equalizing CFD "<<(clb->GetTimeDelayCFD(i)-clb->GetTimeDelayCFD(0))<<endl;
 
  }
  
}
//------------------------------------------------------------------------
void GetWalk()
{
  // Read calibration coefficients into the Calibration DB
  // Arguments:
  
  TString DBFolder;
  
  DBFolder  ="local://Calib";
  Int_t nRun=gAlice->GetRunNumber();
  
   AliCDBStorage *stor =AliCDBManager::Instance()->GetStorage("local://$ALICE_ROOT/OCDB");
   AliCDBEntry* entry = stor->Get("T0/Calib/Slewing_Walk",0);
   
   AliT0CalibWalk *clb = (AliT0CalibWalk*)entry->GetObject();
   Int_t ipmt=0;
   //  cin>>" enter channel number">>ipmt;
   TGraph *gr = clb->GetAmpLEDRec(ipmt); 
   gr->Draw("AP");
}
//------------------------------------------------------------------------
void GetAC()
{
  // Read align coefficients into the Calibration DB
  // Arguments:
  
  TString DBFolder;
  
  DBFolder  ="local://Align";
  Int_t nRun=gAlice->GetRunNumber();
  
  AliCDBManager *man = AliCDBManager::Instance();
  AliCDBStorage *stor2 = man->GetStorage("local://Align");
  AliCDBEntry *entry;
  entry = stor2->Get("T0/Align/Positions", nRun);
   
  AliT0AlignData *aln = (AliT0AlignData*)entry->GetObject();
  aln->Print();
}
//------------------------------------------------------------------------
void SetLookUp()
{
  // Writing Lookup table into the Calibration DB
  // Arguments:

  TString DBFolder;
  Int_t firstRun   =  0;
  Int_t lastRun    = 10;
  Int_t beamPeriod =  1;
  char* objFormat  = "";

  DBFolder  ="local://Calib";
  firstRun  =  0;
  lastRun   =  10;
  objFormat = "T0 Lookup Table";

  AliT0CalibData *calibda=new AliT0CalibData("T0");

//  calibda->ReadAsciiLookup("lookUpTable.txt");
  calibda->ReadAsciiLookup("lookUpTable_tanay.txt");

  //Store calibration data into database
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");

  //  AliCDBManager::Instance()->SetSpecificStorage("T0",DBFolder.Data());

  AliCDBMetaData md;
  md.SetComment(objFormat);
  md.SetBeamPeriod(beamPeriod);
  md.SetResponsible("Alla");
  TString fPath="T0/Calib/LookUp_Table";


  // AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("T0");
  AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage();
  if(storage) {
    AliCDBId id(fPath.Data(),firstRun,lastRun);
    storage->Put(calibda, id, &md);
  }
}
//------------------------------------------------------------------------
void GetLookUp()
{
  // Read calibration coefficients into the Calibration DB
  // Arguments:

  TString DBFolder;

  //  DBFolder  ="local://Calib";
  //   Int_t nRun=gAlice->GetRunNumber();
  AliCDBManager* cdb      = AliCDBManager::Instance();
  AliCDBStorage *stor = cdb->GetStorage("local://$ALICE_ROOT/OCDB");
  // cout<<" GetLookUp :: "<<stor<<endl;
  AliCDBEntry *entry;
  //entry = stor->Get("T0/Calib/LookUp_Table",2,0,0);
  entry = stor->Get("T0/Calib/LookUp_Table",1);
  //cout<<"entry="<<entry<<endl;
   cout<<" AliT0CalibData ::GetLookUp :: "<<entry<<endl;
  AliT0CalibData *clb = (AliT0CalibData*)entry->GetObject();
  cout<<" AliT0CalibData *clb "<<clb <<endl;
  //cout<<"clb->a="<<clb->GetA()<<endl;
  //  clb->Dump();
  for (Int_t i=0; i<20; i++) 
    clb->PrintLookupNames("all",i);

}
 AliT0SetCDB.C:1
 AliT0SetCDB.C:2
 AliT0SetCDB.C:3
 AliT0SetCDB.C:4
 AliT0SetCDB.C:5
 AliT0SetCDB.C:6
 AliT0SetCDB.C:7
 AliT0SetCDB.C:8
 AliT0SetCDB.C:9
 AliT0SetCDB.C:10
 AliT0SetCDB.C:11
 AliT0SetCDB.C:12
 AliT0SetCDB.C:13
 AliT0SetCDB.C:14
 AliT0SetCDB.C:15
 AliT0SetCDB.C:16
 AliT0SetCDB.C:17
 AliT0SetCDB.C:18
 AliT0SetCDB.C:19
 AliT0SetCDB.C:20
 AliT0SetCDB.C:21
 AliT0SetCDB.C:22
 AliT0SetCDB.C:23
 AliT0SetCDB.C:24
 AliT0SetCDB.C:25
 AliT0SetCDB.C:26
 AliT0SetCDB.C:27
 AliT0SetCDB.C:28
 AliT0SetCDB.C:29
 AliT0SetCDB.C:30
 AliT0SetCDB.C:31
 AliT0SetCDB.C:32
 AliT0SetCDB.C:33
 AliT0SetCDB.C:34
 AliT0SetCDB.C:35
 AliT0SetCDB.C:36
 AliT0SetCDB.C:37
 AliT0SetCDB.C:38
 AliT0SetCDB.C:39
 AliT0SetCDB.C:40
 AliT0SetCDB.C:41
 AliT0SetCDB.C:42
 AliT0SetCDB.C:43
 AliT0SetCDB.C:44
 AliT0SetCDB.C:45
 AliT0SetCDB.C:46
 AliT0SetCDB.C:47
 AliT0SetCDB.C:48
 AliT0SetCDB.C:49
 AliT0SetCDB.C:50
 AliT0SetCDB.C:51
 AliT0SetCDB.C:52
 AliT0SetCDB.C:53
 AliT0SetCDB.C:54
 AliT0SetCDB.C:55
 AliT0SetCDB.C:56
 AliT0SetCDB.C:57
 AliT0SetCDB.C:58
 AliT0SetCDB.C:59
 AliT0SetCDB.C:60
 AliT0SetCDB.C:61
 AliT0SetCDB.C:62
 AliT0SetCDB.C:63
 AliT0SetCDB.C:64
 AliT0SetCDB.C:65
 AliT0SetCDB.C:66
 AliT0SetCDB.C:67
 AliT0SetCDB.C:68
 AliT0SetCDB.C:69
 AliT0SetCDB.C:70
 AliT0SetCDB.C:71
 AliT0SetCDB.C:72
 AliT0SetCDB.C:73
 AliT0SetCDB.C:74
 AliT0SetCDB.C:75
 AliT0SetCDB.C:76
 AliT0SetCDB.C:77
 AliT0SetCDB.C:78
 AliT0SetCDB.C:79
 AliT0SetCDB.C:80
 AliT0SetCDB.C:81
 AliT0SetCDB.C:82
 AliT0SetCDB.C:83
 AliT0SetCDB.C:84
 AliT0SetCDB.C:85
 AliT0SetCDB.C:86
 AliT0SetCDB.C:87
 AliT0SetCDB.C:88
 AliT0SetCDB.C:89
 AliT0SetCDB.C:90
 AliT0SetCDB.C:91
 AliT0SetCDB.C:92
 AliT0SetCDB.C:93
 AliT0SetCDB.C:94
 AliT0SetCDB.C:95
 AliT0SetCDB.C:96
 AliT0SetCDB.C:97
 AliT0SetCDB.C:98
 AliT0SetCDB.C:99
 AliT0SetCDB.C:100
 AliT0SetCDB.C:101
 AliT0SetCDB.C:102
 AliT0SetCDB.C:103
 AliT0SetCDB.C:104
 AliT0SetCDB.C:105
 AliT0SetCDB.C:106
 AliT0SetCDB.C:107
 AliT0SetCDB.C:108
 AliT0SetCDB.C:109
 AliT0SetCDB.C:110
 AliT0SetCDB.C:111
 AliT0SetCDB.C:112
 AliT0SetCDB.C:113
 AliT0SetCDB.C:114
 AliT0SetCDB.C:115
 AliT0SetCDB.C:116
 AliT0SetCDB.C:117
 AliT0SetCDB.C:118
 AliT0SetCDB.C:119
 AliT0SetCDB.C:120
 AliT0SetCDB.C:121
 AliT0SetCDB.C:122
 AliT0SetCDB.C:123
 AliT0SetCDB.C:124
 AliT0SetCDB.C:125
 AliT0SetCDB.C:126
 AliT0SetCDB.C:127
 AliT0SetCDB.C:128
 AliT0SetCDB.C:129
 AliT0SetCDB.C:130
 AliT0SetCDB.C:131
 AliT0SetCDB.C:132
 AliT0SetCDB.C:133
 AliT0SetCDB.C:134
 AliT0SetCDB.C:135
 AliT0SetCDB.C:136
 AliT0SetCDB.C:137
 AliT0SetCDB.C:138
 AliT0SetCDB.C:139
 AliT0SetCDB.C:140
 AliT0SetCDB.C:141
 AliT0SetCDB.C:142
 AliT0SetCDB.C:143
 AliT0SetCDB.C:144
 AliT0SetCDB.C:145
 AliT0SetCDB.C:146
 AliT0SetCDB.C:147
 AliT0SetCDB.C:148
 AliT0SetCDB.C:149
 AliT0SetCDB.C:150
 AliT0SetCDB.C:151
 AliT0SetCDB.C:152
 AliT0SetCDB.C:153
 AliT0SetCDB.C:154
 AliT0SetCDB.C:155
 AliT0SetCDB.C:156
 AliT0SetCDB.C:157
 AliT0SetCDB.C:158
 AliT0SetCDB.C:159
 AliT0SetCDB.C:160
 AliT0SetCDB.C:161
 AliT0SetCDB.C:162
 AliT0SetCDB.C:163
 AliT0SetCDB.C:164
 AliT0SetCDB.C:165
 AliT0SetCDB.C:166
 AliT0SetCDB.C:167
 AliT0SetCDB.C:168
 AliT0SetCDB.C:169
 AliT0SetCDB.C:170
 AliT0SetCDB.C:171
 AliT0SetCDB.C:172
 AliT0SetCDB.C:173
 AliT0SetCDB.C:174
 AliT0SetCDB.C:175
 AliT0SetCDB.C:176
 AliT0SetCDB.C:177
 AliT0SetCDB.C:178
 AliT0SetCDB.C:179
 AliT0SetCDB.C:180
 AliT0SetCDB.C:181
 AliT0SetCDB.C:182
 AliT0SetCDB.C:183
 AliT0SetCDB.C:184
 AliT0SetCDB.C:185
 AliT0SetCDB.C:186
 AliT0SetCDB.C:187
 AliT0SetCDB.C:188
 AliT0SetCDB.C:189
 AliT0SetCDB.C:190
 AliT0SetCDB.C:191
 AliT0SetCDB.C:192
 AliT0SetCDB.C:193
 AliT0SetCDB.C:194
 AliT0SetCDB.C:195
 AliT0SetCDB.C:196
 AliT0SetCDB.C:197
 AliT0SetCDB.C:198
 AliT0SetCDB.C:199
 AliT0SetCDB.C:200
 AliT0SetCDB.C:201
 AliT0SetCDB.C:202
 AliT0SetCDB.C:203
 AliT0SetCDB.C:204
 AliT0SetCDB.C:205
 AliT0SetCDB.C:206
 AliT0SetCDB.C:207
 AliT0SetCDB.C:208
 AliT0SetCDB.C:209
 AliT0SetCDB.C:210
 AliT0SetCDB.C:211
 AliT0SetCDB.C:212
 AliT0SetCDB.C:213
 AliT0SetCDB.C:214
 AliT0SetCDB.C:215
 AliT0SetCDB.C:216
 AliT0SetCDB.C:217
 AliT0SetCDB.C:218
 AliT0SetCDB.C:219
 AliT0SetCDB.C:220
 AliT0SetCDB.C:221
 AliT0SetCDB.C:222
 AliT0SetCDB.C:223
 AliT0SetCDB.C:224
 AliT0SetCDB.C:225
 AliT0SetCDB.C:226
 AliT0SetCDB.C:227
 AliT0SetCDB.C:228
 AliT0SetCDB.C:229
 AliT0SetCDB.C:230
 AliT0SetCDB.C:231
 AliT0SetCDB.C:232
 AliT0SetCDB.C:233
 AliT0SetCDB.C:234
 AliT0SetCDB.C:235
 AliT0SetCDB.C:236
 AliT0SetCDB.C:237
 AliT0SetCDB.C:238
 AliT0SetCDB.C:239
 AliT0SetCDB.C:240
 AliT0SetCDB.C:241
 AliT0SetCDB.C:242
 AliT0SetCDB.C:243
 AliT0SetCDB.C:244
 AliT0SetCDB.C:245
 AliT0SetCDB.C:246
 AliT0SetCDB.C:247
 AliT0SetCDB.C:248
 AliT0SetCDB.C:249
 AliT0SetCDB.C:250
 AliT0SetCDB.C:251
 AliT0SetCDB.C:252
 AliT0SetCDB.C:253
 AliT0SetCDB.C:254
 AliT0SetCDB.C:255
 AliT0SetCDB.C:256
 AliT0SetCDB.C:257
 AliT0SetCDB.C:258
 AliT0SetCDB.C:259
 AliT0SetCDB.C:260
 AliT0SetCDB.C:261
 AliT0SetCDB.C:262
 AliT0SetCDB.C:263
 AliT0SetCDB.C:264
 AliT0SetCDB.C:265
 AliT0SetCDB.C:266
 AliT0SetCDB.C:267
 AliT0SetCDB.C:268
 AliT0SetCDB.C:269
 AliT0SetCDB.C:270
 AliT0SetCDB.C:271
 AliT0SetCDB.C:272
 AliT0SetCDB.C:273
 AliT0SetCDB.C:274
 AliT0SetCDB.C:275
 AliT0SetCDB.C:276
 AliT0SetCDB.C:277
 AliT0SetCDB.C:278
 AliT0SetCDB.C:279
 AliT0SetCDB.C:280
 AliT0SetCDB.C:281
 AliT0SetCDB.C:282
 AliT0SetCDB.C:283
 AliT0SetCDB.C:284
 AliT0SetCDB.C:285
 AliT0SetCDB.C:286
 AliT0SetCDB.C:287
 AliT0SetCDB.C:288
 AliT0SetCDB.C:289
 AliT0SetCDB.C:290
 AliT0SetCDB.C:291
 AliT0SetCDB.C:292
 AliT0SetCDB.C:293
 AliT0SetCDB.C:294
 AliT0SetCDB.C:295
 AliT0SetCDB.C:296
 AliT0SetCDB.C:297
 AliT0SetCDB.C:298
 AliT0SetCDB.C:299
 AliT0SetCDB.C:300
 AliT0SetCDB.C:301
 AliT0SetCDB.C:302
 AliT0SetCDB.C:303
 AliT0SetCDB.C:304
 AliT0SetCDB.C:305
 AliT0SetCDB.C:306
 AliT0SetCDB.C:307
 AliT0SetCDB.C:308
 AliT0SetCDB.C:309
 AliT0SetCDB.C:310
 AliT0SetCDB.C:311
 AliT0SetCDB.C:312
 AliT0SetCDB.C:313
 AliT0SetCDB.C:314
 AliT0SetCDB.C:315
 AliT0SetCDB.C:316
 AliT0SetCDB.C:317