--- /dev/null
+/*
+ Make default plotsfrom AliTPCdataQA components:
+
+ aliroot -b -q $ALICE_ROOT/TPC/CalibMacros/CalibQA.C\(121694\);
+
+ .L $ALICE_ROOT/TPC/CalibMacros/CalibQA.C
+ Int_t run=121694;
+ CalibQA(run);
+*/
+
+TCut cutNoise="PadNoise.fElements<1.5&&abs(PadNoise.fElements/PadNoise_Median-1)<0.5";
+TCut cutTime="abs(TimePosition.fElements-TimePosition_Median)<100";
+TCut cutOccu="abs(NoThreshold.fElements/NoThreshold_Median-1)<0.9";
+TCut cutAmp="abs(MaxCharge.fElements/MaxCharge_Median-1)<0.99";
+TCut cutIROC="sector<36";
+TCut cutOROC="sector>=36";
+
+
+void CalibQA(Int_t run){
+ InitOCDB(run);
+ MakeTree();
+ TCanvas *canvas=0;
+ //
+ TPostScript *ps = new TPostScript("rawQA.ps", 112);
+ ps->NewPage();
+ canvas=DrawOccupancy();
+ ps->NewPage();
+ canvas->Update();
+ ps->Close();
+ delete ps;
+
+}
+
+void InitOCDB(Int_t run){
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libTPCcalib");
+ gROOT->LoadMacro("$ALICE_ROOT/TPC/scripts/OCDBscan/ConfigOCDBLustre.C");
+ //gROOT->LoadMacro("$ALICE_ROOT/TPC/scripts/OCDBscan/ConfigOCDB.C");
+ gROOT->Macro("$ALICE_ROOT/TPC/scripts/OCDBscan/NimStyle.C");
+ ConfigOCDB(run);
+}
+
+void MakeTree(){
+ //
+ // make summary tree
+ //
+ AliTPCcalibDB::Instance()->UpdateNonRec();
+ AliTPCdataQA* dataQA = AliTPCcalibDB::Instance()->GetDataQA();
+ AliTPCCalPad* gain = AliTPCcalibDB::Instance()->GetDedxGainFactor();
+ AliTPCCalPad * padNoise = AliTPCcalibDB::Instance()->GetPadNoise();
+ AliTPCPreprocessorOnline preprocesor;
+ gain->SetName("krGain");
+ preprocesor.AddComponent(gain);
+ preprocesor.AddComponent(dataQA->GetNPads());
+ preprocesor.AddComponent(dataQA->GetNTimeBins());
+ preprocesor.AddComponent(dataQA->GetMaxCharge());
+ preprocesor.AddComponent(dataQA->GetNoThreshold());
+ preprocesor.AddComponent(dataQA->GetNLocalMaxima());
+ preprocesor.AddComponent(dataQA->GetTimePosition());
+ preprocesor.AddComponent(padNoise);
+ preprocesor.DumpToFile("QA.root");
+}
+
+
+TCanvas * DrawOccupancy(){
+ TH1::AddDirectory(0);
+ gStyle->SetOptStat(0);
+ TFile f("QA.root");
+ TTree * tree = (TTree*)f.Get("calPads");
+ TLegend *legend=0;
+ TProfile * phoccGainIROC=0;
+ TProfile * phoccGainOROC=0;
+ //
+ TCanvas * canvas = new TCanvas("occupancy","occupancy",700,700);
+ canvas->Divide(2,2);
+ canvas->cd(1);
+ tree->Draw("NoThreshold.fElements:gy.fElements:gx.fElements>>hisOccuA(250,-250,250,250,-250,250)",cutNoise+cutTime+cutOccu+"sector%36<18","profcolz");
+ canvas->cd(2);
+ tree->Draw("NoThreshold.fElements:gy.fElements:gx.fElements>>hisOccuC(250,-250,250,250,-250,250)",cutNoise+cutTime+cutOccu+"sector%36>=18","profcolz");
+
+ canvas->cd(3);
+ tree->Draw("NoThreshold.fElements:krGain.fElements>>hoccGainIROC(20,0.7,1.2)",cutNoise+cutTime+cutOccu+cutIROC,"prof");
+ legend = new TLegend(0.45,0.15,0.85,0.35, "Raw cluster occupancy");
+ phoccGainIROC = (TProfile*)(gROOT->FindObject("hoccGainIROC")->Clone());
+ phoccGainIROC->Draw();
+ phoccGainIROC->SetTitle("IROC");
+ phoccGainIROC->SetName("IROC");
+ phoccGainIROC->GetXaxis()->SetTitle("Krypton Amp (a.u.)");
+ legend->AddEntry(phoccGainIROC);
+ legend->Draw();
+
+ canvas->cd(4);
+ tree->Draw("NoThreshold.fElements:krGain.fElements>>hoccGainOROC(20,0.8,1.2)",cutNoise+cutTime+cutOccu+cutOROC+"lx.fElements<200","prof");
+ phoccGainOROC = (TProfile*)(gROOT->FindObject("hoccGainOROC")->Clone());
+ phoccGainOROC->Draw();
+ phoccGainOROC->SetTitle("OROC");
+ phoccGainOROC->SetName("OROC");
+ phoccGainOROC->GetXaxis()->SetTitle("Krypton Amp (a.u.)");
+ legend = new TLegend(0.45,0.15,0.85,0.35, "Raw cluster occupancy");
+ legend->AddEntry(phoccGainOROC);
+ legend->Draw();
+ return canvas;
+}
+
+TCanvas * DrawGain(){
+ //
+ // Compare the amplitude with krypton gain amplitude
+ // Similar filtering as in occupancy plot
+ //
+ return 0;
+}