/* $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 "AliSTARTCalibData.h" #include "AliSTARTAlignData.h" #include "AliCDBMetaData.h" #include "AliCDBId.h" #include "AliCDBEntry.h" #include "AliCDBManager.h" #include "AliCDBStorage.h" #endif void AliSTARTSetCDB() { TControlBar *menu = new TControlBar("vertical","START CDB"); menu->AddButton("Set Calib","SetCC()", "Set calibration coefficients"); menu->AddButton("Set Align","SetAC()", "Set alignment coefficients"); menu->AddButton("Read calibration CC","GetCC()", "Read calibration coefficients"); menu->AddButton("Read alignment CC","GetAC()", "Read face detector position "); menu->Show(); } //------------------------------------------------------------------------ void SetAC() { // Writing alignment coefficients into the Condition DB // Arguments: TString DBFolder; Int_t firstRun = 0; Int_t lastRun = 10; Int_t beamPeriod = 1; char* objFormat = ""; DBFolder ="local://Align"; firstRun = 0; lastRun = 10; objFormat = "START array Z positions"; AliSTARTAlignData *alignda=new AliSTARTAlignData("START"); alignda-> SetZposition (67.9,373); alignda->Print(); //Store calibration data into database AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT"); AliCDBManager::Instance()->SetSpecificStorage("START",DBFolder.Data()); AliCDBMetaData md; md.SetComment(objFormat); md.SetBeamPeriod(beamPeriod); md.SetResponsible("Alla"); TString fPath="START/Align/Positions"; // AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("START"); AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage(); if(storage) { AliCDBId id(fPath.Data(),firstRun,lastRun); storage->Put(alignda, id, &md); } } //------------------------------------------------------------------------ void SetCC() { // Writing calibration coefficients 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 = "START initial gain factors, time delay, slewnig"; AliSTARTCalibData *calibda=new AliSTARTCalibData("START"); Float_t fGain = 1; Float_t fTimeDelay = 200; TRandom rn; for(Int_t ipmt=0; ipmt<24; ipmt++) { calibda->SetGain (fGain,ipmt); calibda->SetTimeDelayCFD(fTimeDelay,ipmt); calibda->SetTimeDelayLED(fTimeDelay,ipmt); calibda->SetWalk(ipmt,"data/re.root"); calibda->SetSlewingLED(ipmt,"data/CFD-LED.txt"); calibda->SetSlewingRec(ipmt,"data/CFD-LED.txt"); Double_t value=calibda->GetSlewingLED(ipmt,300); Double_t rec= calibda->GetSlewingRec(ipmt, value); cout<<" in "<Print(); //Store calibration data into database AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT"); // AliCDBManager::Instance()->SetSpecificStorage("START",DBFolder.Data()); AliCDBMetaData md; md.SetComment(objFormat); md.SetBeamPeriod(beamPeriod); md.SetResponsible("Alla"); TString fPath="START/Calib/Gain_TimeDelay_Slewing_Walk"; // AliCDBStorage* storage = AliCDBManager::Instance()->GetSpecificStorage("START"); AliCDBStorage* storage = AliCDBManager::Instance()->GetDefaultStorage(); if(storage) { AliCDBId id(fPath.Data(),firstRun,lastRun); storage->Put(calibda, id, &md); } } //------------------------------------------------------------------------ void GetCC() { // Read calibration coefficients into the Calibration DB // Arguments: TString DBFolder; DBFolder ="local://Calib"; Int_t nRun=gAlice->GetRunNumber(); AliCDBManager *man = AliCDBManager::Instance(); AliCDBStorage *stor2 = man->GetStorage("local://Calib"); AliCDBEntry *entry; entry = stor2->Get("START/Calib/Gain_TimeDelay_Slewing_Walk"); AliSTARTCalibData *clb = (AliSTARTCalibData*)entry->GetObject(); clb->Print(); } //------------------------------------------------------------------------ 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("START/Align/Positions", nRun); AliSTARTAlignData *aln = (AliSTARTAlignData*)entry->GetObject(); aln->Print(); }