1 #if !defined(__CINT__) || defined(__MAKECINT__)
6 #include <TGraphErrors.h>
11 #include <TGridResult.h>
16 #include <AliCDBEntry.h>
17 #include <AliITSresponseSDD.h>
21 // Inputs: Output of MakeSDDCalib.C + AliITSresponseSDD Object used to produce the cpass1 (default Run192772_192779_v0_s0.root)
22 // Outputs: new ADCtoKeV and ADCvsDriftTimeHistos
23 // Launch as: aliroot MakeCorrectionFromOutputCalib.C+
25 void MakeOCDBCorrectionFromOutputADCCalib(TString fname=".",TString OCDBname="Run192772_192779_v0_s0")
27 Printf("Opening file CalibResults.root in %s/",fname.Data());
28 TFile *fin = new TFile(Form("%s/SDDADCCalibResults.root",fname.Data()));
30 TH1F *hmpvModpar0=(TH1F*)fin->Get("hmpvModpar0");
31 TH1F *hmpvModpar1=(TH1F*)fin->Get("hmpvModpar1");
32 Float_t s=0.0101;//Default ADC vs drift time
34 TFile* fr=TFile::Open(Form("%s.root",OCDBname.Data()));
35 AliCDBEntry* e=(AliCDBEntry*)fr->Get("AliCDBEntry");
36 AliITSresponseSDD* r=(AliITSresponseSDD*)e->GetObject();
37 TH1F* hADCtokeV=new TH1F("hADCtokeV","",260,239.5,499.5);
38 TH1F* hADCvsDriftTime=new TH1F("hADCvsDriftTime","",260,239.5,499.5);
41 for(Int_t iMod=240; iMod<500; iMod++){
42 Float_t ak=r->GetADCtokeV(iMod);
43 Float_t adcdrtime=r->GetADCvsDriftTime(iMod);
44 printf("mod %d\nadc->keV=%f ",iMod,ak);
45 hADCtokeV->SetBinContent(iMod-240+1,ak);
46 hADCvsDriftTime->SetBinContent(iMod-240+1,adcdrtime);
47 //calculate new ADC2KeV
48 Double_t kprim=hmpvModpar0->GetBinContent(hmpvModpar0->FindBin(iMod));
50 if(iMod==376)kprim=84;
51 Double_t Corr=kprim*ak/84;
52 printf("mpv=%f | Corr(adc->keV*mpv/84)=%f\n",kprim,Corr);
53 hmpvModpar0->SetBinContent(hmpvModpar0->FindBin(iMod),Corr);
54 //Calculate new ADCvsDrTime
55 Double_t sprim=hmpvModpar1->GetBinContent(hmpvModpar1->FindBin(iMod));
59 Double_t Corr2=adcdrtime-(sprim*ak/2);
60 hmpvModpar1->SetBinContent(hmpvModpar1->FindBin(iMod),Corr2);
61 printf("ADCvsDriftTime=%f | Corr(ADCvsDriftTime_old-(ADCvsDriftTime_new*adc->keV/2))=%f\n",adcdrtime,Corr2);
64 hmpvModpar0->GetYaxis()->SetTitle("K^{*}=KK'/84");
65 hmpvModpar1->GetYaxis()->SetTitle("S^{*}=S-S'K/2");
66 hmpvModpar0->SetTitle("hADCtokeV - New");
67 hmpvModpar0->SetName("hADCtokeV");
68 hADCtokeV->SetTitle("hADCtokeV - Run166530_999999999_v4_s0");
69 hADCtokeV->SetLineColor(2);
70 TCanvas *c0=new TCanvas("c0","c0");
72 hmpvModpar0->DrawClone("HIST");
73 hADCtokeV->DrawClone("HISTSAME");
77 hmpvModpar1->SetTitle("hADCvsDriftTime - New");
78 hmpvModpar1->SetName("hADCvsDriftTime");
79 hADCvsDriftTime->SetTitle("hADCvsDriftTime - Run166530_999999999_v4_s0");
80 hADCvsDriftTime->SetLineColor(2);
81 TCanvas *c1=new TCanvas("c1","c1");
82 hmpvModpar1->DrawClone("HIST");
83 hADCvsDriftTime->DrawClone("HISTSAME");
85 TFile *out=new TFile(Form("%s/CorrectiondEdxSDD_%s_%s.root",fname.Data(),fname.Data(),OCDBname.Data()),"recreate");