+TCanvas * AliTPCCalPad::MakeReportPadSector2D(TTree *chain, const char* varName, const char*varTitle, const char *axisTitle, Float_t min, Float_t max, const char *cutUser){
+ //
+ // Make a report - cal pads per sector
+ // 2D view
+ // Input tree should be created using AliPreprocesorOnline before
+ //
+ TH1* his=0;
+ TCanvas *canvas = new TCanvas(Form("%s2D",varTitle),Form("%s2D",varTitle),1500,1100);
+ canvas->Divide(2);
+ //
+ TString strDraw=varName;
+ strDraw+=":gy.fElements:gx.fElements>>his(250,-250,250,250,-250,250)";
+ //
+ TVirtualPad * pad=0;
+ pad=canvas->cd(1);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+ TCut cut=cutUser;
+ chain->Draw(strDraw.Data(),"sector%36<18"+cut,"profgoffcolz2");
+ his=(TH1*)chain->GetHistogram()->Clone();
+ delete chain->GetHistogram();
+ his->SetMaximum(max);
+ his->SetMinimum(min);
+ his->GetXaxis()->SetTitle("x (cm)");
+ his->GetYaxis()->SetTitle("y (cm)");
+ his->GetZaxis()->SetTitle(axisTitle);
+ his->SetTitle(Form("%s A side",varTitle));
+ his->SetName(Form("%s A side",varTitle));
+ his->Draw("colz2");
+ //
+ pad=canvas->cd(2);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+
+ chain->Draw(strDraw.Data(),"sector%36>=18"+cut,"profgoffcolz2");
+ his=(TH1*)chain->GetHistogram()->Clone();
+ delete chain->GetHistogram();
+ his->SetMaximum(max);
+ his->SetMinimum(min);
+ his->GetXaxis()->SetTitle("x (cm)");
+ his->GetYaxis()->SetTitle("y (cm)");
+ his->GetZaxis()->SetTitle(axisTitle);
+ his->SetTitle(Form("%s C side",varTitle));
+ his->SetName(Form("%s C side",varTitle));
+ his->Draw("colz2");
+ //
+ //
+ return canvas;
+}
+
+void AliTPCCalPad::Draw(Option_t* option){
+ //
+ // Draw function - standard 2D view
+ //
+ TH1* his=0;
+ TCanvas *canvas = new TCanvas(Form("%s2D",GetTitle()),Form("%s2D",GetTitle()),900,900);
+ canvas->Divide(2,2);
+ //
+ //
+ TVirtualPad * pad=0;
+ pad=canvas->cd(1);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+ his=MakeHisto2D(0);
+ his->GetXaxis()->SetTitle("x (cm)");
+ his->GetYaxis()->SetTitle("y (cm)");
+ his->GetZaxis()->SetTitle(GetTitle());
+ his->SetTitle(Form("%s A side",GetTitle()));
+ his->SetName(Form("%s A side",GetTitle()));
+ his->Draw(option);
+ //
+ pad=canvas->cd(2);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+ his=MakeHisto2D(1);
+ his->GetXaxis()->SetTitle("x (cm)");
+ his->GetYaxis()->SetTitle("y (cm)");
+ his->GetZaxis()->SetTitle(GetTitle());
+ his->SetTitle(Form("%s C side",GetTitle()));
+ his->SetName(Form("%s C side",GetTitle()));
+ his->Draw(option);
+ //
+ pad=canvas->cd(3);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+ his=MakeHisto1D(-8,8,0,1);
+ his->GetXaxis()->SetTitle(GetTitle());
+ his->SetTitle(Form("%s A side",GetTitle()));
+ his->SetName(Form("%s A side",GetTitle()));
+ his->Draw("err");
+ //
+ pad=canvas->cd(4);
+ pad->SetMargin(0.15,0.15,0.15,0.15);
+ his=MakeHisto1D(-8,8,0,-1);
+ his->GetXaxis()->SetTitle(GetTitle());
+ his->SetTitle(Form("%s C side",GetTitle()));
+ his->SetName(Form("%s C side",GetTitle()));
+ his->Draw("err");
+
+
+}
+
+
+AliTPCCalPad * AliTPCCalPad::MakeCalPadFromHistoRPHI(TH2 * hisA, TH2* hisC){
+ //
+ // Make cal pad from r-phi histograms
+ //
+ AliTPCROC *proc= AliTPCROC::Instance();
+ AliTPCCalPad *calPad = new AliTPCCalPad("his","his");
+ Float_t globalPos[3];
+ for (Int_t isec=0; isec<72; isec++){
+ AliTPCCalROC* calRoc = calPad->GetCalROC(isec);
+ TH2 * his = ((isec%36<18) ? hisA:hisC);
+ for (UInt_t irow=0; irow<calRoc->GetNrows(); irow+=1){
+ Int_t jrow=irow;
+ if (isec>=36) jrow+=63;
+ for (UInt_t ipad=0;ipad<proc->GetNPads(isec,irow);ipad+=1){
+ proc->GetPositionGlobal(isec,irow,ipad, globalPos);
+ Double_t phi=TMath::ATan2(globalPos[1],globalPos[0]);
+ //if (phi<0) phi+=TMath::Pi()*2;
+ Int_t bin=his->FindBin(phi,jrow);
+ Float_t value= his->GetBinContent(bin);
+ calRoc->SetValue(irow,ipad,value);
+ }
+ }
+ }
+ return calPad;
+}