#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TH1F.h>
#include <TH2F.h>
#include <TF1.h>
#include <TPad.h>
#include <TGraphErrors.h>
#include <TROOT.h>
#include <TFile.h>
#include <TTree.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <TMath.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TLatex.h>
#include <AliCDBEntry.h>
#include <AliITSresponseSDD.h>
#endif
// Inputs: Output of MakeSDDCalib.C + AliITSresponseSDD Object used to produce the cpass1 (default Run192772_192779_v0_s0.root)
// Outputs: new ADCtoKeV and ADCvsDriftTimeHistos
// Launch as: aliroot MakeCorrectionFromOutputCalib.C+
void MakeOCDBCorrectionFromOutputADCCalib(TString fname=".",TString OCDBname="Run192772_192779_v0_s0")
{
Printf("Opening file CalibResults.root in %s/",fname.Data());
TFile *fin = new TFile(Form("%s/SDDADCCalibResults.root",fname.Data()));
TH1F *hmpvModpar0=(TH1F*)fin->Get("hmpvModpar0");
TH1F *hmpvModpar1=(TH1F*)fin->Get("hmpvModpar1");
Float_t s=0.0101;//Default ADC vs drift time
// getting ADC2keV
TFile* fr=TFile::Open(Form("%s.root",OCDBname.Data()));
AliCDBEntry* e=(AliCDBEntry*)fr->Get("AliCDBEntry");
AliITSresponseSDD* r=(AliITSresponseSDD*)e->GetObject();
TH1F* hADCtokeV=new TH1F("hADCtokeV","",260,239.5,499.5);
TH1F* hADCvsDriftTime=new TH1F("hADCvsDriftTime","",260,239.5,499.5);
r->ls();
for(Int_t iMod=240; iMod<500; iMod++){
Float_t ak=r->GetADCtokeV(iMod);
Float_t adcdrtime=r->GetADCvsDriftTime(iMod);
printf("mod %d\nadc->keV=%f ",iMod,ak);
hADCtokeV->SetBinContent(iMod-240+1,ak);
hADCvsDriftTime->SetBinContent(iMod-240+1,adcdrtime);
//calculate new ADC2KeV
Double_t kprim=hmpvModpar0->GetBinContent(hmpvModpar0->FindBin(iMod));
if(kprim==0)kprim=84;
if(iMod==376)kprim=84;
Double_t Corr=kprim*ak/84;
printf("mpv=%f | Corr(adc->keV*mpv/84)=%f\n",kprim,Corr);
hmpvModpar0->SetBinContent(hmpvModpar0->FindBin(iMod),Corr);
//Calculate new ADCvsDrTime
Double_t sprim=hmpvModpar1->GetBinContent(hmpvModpar1->FindBin(iMod));
if(iMod==376){
sprim=0;
}
Double_t Corr2=adcdrtime-(sprim*ak/2);
hmpvModpar1->SetBinContent(hmpvModpar1->FindBin(iMod),Corr2);
printf("ADCvsDriftTime=%f | Corr(ADCvsDriftTime_old-(ADCvsDriftTime_new*adc->keV/2))=%f\n",adcdrtime,Corr2);
}
hmpvModpar0->GetYaxis()->SetTitle("K^{*}=KK'/84");
hmpvModpar1->GetYaxis()->SetTitle("S^{*}=S-S'K/2");
hmpvModpar0->SetTitle("hADCtokeV - New");
hmpvModpar0->SetName("hADCtokeV");
hADCtokeV->SetTitle("hADCtokeV - Run166530_999999999_v4_s0");
hADCtokeV->SetLineColor(2);
TCanvas *c0=new TCanvas("c0","c0");
c0->cd(1);
hmpvModpar0->DrawClone("HIST");
hADCtokeV->DrawClone("HISTSAME");
gPad->BuildLegend();
hmpvModpar1->SetTitle("hADCvsDriftTime - New");
hmpvModpar1->SetName("hADCvsDriftTime");
hADCvsDriftTime->SetTitle("hADCvsDriftTime - Run166530_999999999_v4_s0");
hADCvsDriftTime->SetLineColor(2);
TCanvas *c1=new TCanvas("c1","c1");
hmpvModpar1->DrawClone("HIST");
hADCvsDriftTime->DrawClone("HISTSAME");
c1->BuildLegend();
TFile *out=new TFile(Form("%s/CorrectiondEdxSDD_%s_%s.root",fname.Data(),fname.Data(),OCDBname.Data()),"recreate");
hmpvModpar0->Write();
hmpvModpar1->Write();
out->Close();
delete out;
} //end main
MakeOCDBCorrectionFromOutputADCCalib.C:1 MakeOCDBCorrectionFromOutputADCCalib.C:2 MakeOCDBCorrectionFromOutputADCCalib.C:3 MakeOCDBCorrectionFromOutputADCCalib.C:4 MakeOCDBCorrectionFromOutputADCCalib.C:5 MakeOCDBCorrectionFromOutputADCCalib.C:6 MakeOCDBCorrectionFromOutputADCCalib.C:7 MakeOCDBCorrectionFromOutputADCCalib.C:8 MakeOCDBCorrectionFromOutputADCCalib.C:9 MakeOCDBCorrectionFromOutputADCCalib.C:10 MakeOCDBCorrectionFromOutputADCCalib.C:11 MakeOCDBCorrectionFromOutputADCCalib.C:12 MakeOCDBCorrectionFromOutputADCCalib.C:13 MakeOCDBCorrectionFromOutputADCCalib.C:14 MakeOCDBCorrectionFromOutputADCCalib.C:15 MakeOCDBCorrectionFromOutputADCCalib.C:16 MakeOCDBCorrectionFromOutputADCCalib.C:17 MakeOCDBCorrectionFromOutputADCCalib.C:18 MakeOCDBCorrectionFromOutputADCCalib.C:19 MakeOCDBCorrectionFromOutputADCCalib.C:20 MakeOCDBCorrectionFromOutputADCCalib.C:21 MakeOCDBCorrectionFromOutputADCCalib.C:22 MakeOCDBCorrectionFromOutputADCCalib.C:23 MakeOCDBCorrectionFromOutputADCCalib.C:24 MakeOCDBCorrectionFromOutputADCCalib.C:25 MakeOCDBCorrectionFromOutputADCCalib.C:26 MakeOCDBCorrectionFromOutputADCCalib.C:27 MakeOCDBCorrectionFromOutputADCCalib.C:28 MakeOCDBCorrectionFromOutputADCCalib.C:29 MakeOCDBCorrectionFromOutputADCCalib.C:30 MakeOCDBCorrectionFromOutputADCCalib.C:31 MakeOCDBCorrectionFromOutputADCCalib.C:32 MakeOCDBCorrectionFromOutputADCCalib.C:33 MakeOCDBCorrectionFromOutputADCCalib.C:34 MakeOCDBCorrectionFromOutputADCCalib.C:35 MakeOCDBCorrectionFromOutputADCCalib.C:36 MakeOCDBCorrectionFromOutputADCCalib.C:37 MakeOCDBCorrectionFromOutputADCCalib.C:38 MakeOCDBCorrectionFromOutputADCCalib.C:39 MakeOCDBCorrectionFromOutputADCCalib.C:40 MakeOCDBCorrectionFromOutputADCCalib.C:41 MakeOCDBCorrectionFromOutputADCCalib.C:42 MakeOCDBCorrectionFromOutputADCCalib.C:43 MakeOCDBCorrectionFromOutputADCCalib.C:44 MakeOCDBCorrectionFromOutputADCCalib.C:45 MakeOCDBCorrectionFromOutputADCCalib.C:46 MakeOCDBCorrectionFromOutputADCCalib.C:47 MakeOCDBCorrectionFromOutputADCCalib.C:48 MakeOCDBCorrectionFromOutputADCCalib.C:49 MakeOCDBCorrectionFromOutputADCCalib.C:50 MakeOCDBCorrectionFromOutputADCCalib.C:51 MakeOCDBCorrectionFromOutputADCCalib.C:52 MakeOCDBCorrectionFromOutputADCCalib.C:53 MakeOCDBCorrectionFromOutputADCCalib.C:54 MakeOCDBCorrectionFromOutputADCCalib.C:55 MakeOCDBCorrectionFromOutputADCCalib.C:56 MakeOCDBCorrectionFromOutputADCCalib.C:57 MakeOCDBCorrectionFromOutputADCCalib.C:58 MakeOCDBCorrectionFromOutputADCCalib.C:59 MakeOCDBCorrectionFromOutputADCCalib.C:60 MakeOCDBCorrectionFromOutputADCCalib.C:61 MakeOCDBCorrectionFromOutputADCCalib.C:62 MakeOCDBCorrectionFromOutputADCCalib.C:63 MakeOCDBCorrectionFromOutputADCCalib.C:64 MakeOCDBCorrectionFromOutputADCCalib.C:65 MakeOCDBCorrectionFromOutputADCCalib.C:66 MakeOCDBCorrectionFromOutputADCCalib.C:67 MakeOCDBCorrectionFromOutputADCCalib.C:68 MakeOCDBCorrectionFromOutputADCCalib.C:69 MakeOCDBCorrectionFromOutputADCCalib.C:70 MakeOCDBCorrectionFromOutputADCCalib.C:71 MakeOCDBCorrectionFromOutputADCCalib.C:72 MakeOCDBCorrectionFromOutputADCCalib.C:73 MakeOCDBCorrectionFromOutputADCCalib.C:74 MakeOCDBCorrectionFromOutputADCCalib.C:75 MakeOCDBCorrectionFromOutputADCCalib.C:76 MakeOCDBCorrectionFromOutputADCCalib.C:77 MakeOCDBCorrectionFromOutputADCCalib.C:78 MakeOCDBCorrectionFromOutputADCCalib.C:79 MakeOCDBCorrectionFromOutputADCCalib.C:80 MakeOCDBCorrectionFromOutputADCCalib.C:81 MakeOCDBCorrectionFromOutputADCCalib.C:82 MakeOCDBCorrectionFromOutputADCCalib.C:83 MakeOCDBCorrectionFromOutputADCCalib.C:84 MakeOCDBCorrectionFromOutputADCCalib.C:85 MakeOCDBCorrectionFromOutputADCCalib.C:86 MakeOCDBCorrectionFromOutputADCCalib.C:87 MakeOCDBCorrectionFromOutputADCCalib.C:88 MakeOCDBCorrectionFromOutputADCCalib.C:89 MakeOCDBCorrectionFromOutputADCCalib.C:90 MakeOCDBCorrectionFromOutputADCCalib.C:91 MakeOCDBCorrectionFromOutputADCCalib.C:92 MakeOCDBCorrectionFromOutputADCCalib.C:93