+//___________
+void MCQA()
+{
+ // Basic calorimeter QA histograms
+
+ TH2F* h2ClusterPho = (TH2F*) GetHisto("QA_hRecoMCE_Photon_Match0"); // not track-matched
+ TH2F* h2ClusterPi0 = (TH2F*) GetHisto("QA_hRecoMCE_Pi0_Match0"); // not track-matched
+ TH2F* h2ClusterEta = (TH2F*) GetHisto("QA_hRecoMCE_Eta_Match0"); // not track-matched
+ TH2F* h2ClusterEle = (TH2F*) GetHisto("QA_hRecoMCE_Electron_Match1"); // Track-matched
+
+ if(!h2ClusterPho) return;
+
+
+ TH1F* hPrimPho = (TH1F*) GetHisto("QA_hGenMCAccE_Photon");
+ TH1F* hPrimPi0 = (TH1F*) GetHisto("QA_hGenMCAccE_Pi0");
+ TH1F* hPrimEta = (TH1F*) GetHisto("QA_hGenMCAccE_Eta");
+
+ TCanvas * cmc = new TCanvas(Form("MCHisto_%s",histoTag.Data()),"",1000,1000);
+ cmc->Divide(2,2);
+
+ cmc->cd(1);
+ gPad->SetLogy();
+
+ TH1F* hClusterPho = (TH1F*) h2ClusterPho->ProjectionX("ClusterPho",0,1000);
+ TH1F* hClusterPi0 = (TH1F*) h2ClusterPi0->ProjectionX("ClusterPi0",0,1000);
+ TH1F* hClusterEta = (TH1F*) h2ClusterEta->ProjectionX("ClusterEta",0,1000);
+
+ hClusterPho->SetTitle("Cluster origin spectra, primary spectra in Calo acceptance");
+ hClusterPho->Sumw2();
+ hClusterPho->SetMarkerColor(1);
+ hClusterPho->SetMarkerStyle(20);
+ hClusterPho->SetAxisRange(0.,50.,"X");
+ hClusterPho->SetXTitle("E_{rec,gen} (GeV)");
+ hClusterPho->Draw("");
+
+ hClusterPi0->Sumw2();
+ hClusterPi0->SetMarkerColor(4);
+ hClusterPi0->SetMarkerStyle(21);
+ hClusterPi0->Draw("same");
+
+ hClusterEta->Sumw2();
+ hClusterEta->SetMarkerColor(2);
+ hClusterEta->SetMarkerStyle(22);
+ hClusterEta->Draw("same");
+
+ hPrimPho->Sumw2();
+ hPrimPho->SetMarkerColor(1);
+ hPrimPho->SetMarkerStyle(24);
+ hPrimPho->Draw("same");
+
+ hPrimPi0->Sumw2();
+ hPrimPi0->SetMarkerColor(4);
+ hPrimPi0->SetMarkerStyle(25);
+ hPrimPi0->Draw("same");
+
+ hPrimEta->Sumw2();
+ hPrimEta->SetMarkerColor(2);
+ hPrimEta->SetMarkerStyle(26);
+ hPrimEta->Draw("same");
+
+ TLegend l(0.45,0.6,0.83,0.89);
+ l.SetTextSize(0.04);
+ l.AddEntry(hClusterPho,"#gamma cluster","P");
+ l.AddEntry(hClusterPi0,"#pi^{0} (merged) cluster","P");
+ l.AddEntry(hClusterEta,"#eta (merged) cluster","P");
+ l.AddEntry(hPrimPho,"#gamma generated","P");
+ l.AddEntry(hPrimPi0,"#pi^{0} generated","P");
+ l.AddEntry(hPrimEta,"#eta generated","P");
+ l.SetBorderSize(0);
+ l.SetFillColor(0);
+ l.Draw();
+
+
+ cmc->cd(2);
+ gPad->SetLogy();
+ TH1F* hRatPho = (TH1F*) hClusterPho->Clone("hGenRecoPho");
+ TH1F* hRatPi0 = (TH1F*) hClusterPi0->Clone("hGenRecoPi0");
+ TH1F* hRatEta = (TH1F*) hClusterEta->Clone("hGenRecoEta");
+
+ hRatPho->Divide(hPrimPho);
+ hRatPi0->Divide(hPrimPi0);
+ hRatEta->Divide(hPrimEta);
+
+ hRatPho->SetTitle("Reconstructed cluster / Generated particle in Calo acc.");
+ hRatPho->SetYTitle("Ratio");
+ hRatPho->SetXTitle("E(GeV)");
+ hRatPho->SetMinimum(1e-3);
+ hRatPho->SetMaximum(10);
+ hRatPho->Draw("");
+ hRatPi0->Draw("same");
+ hRatEta->Draw("same");
+
+ TLegend l2(0.15,0.7,0.3,0.85);
+ l2.SetTextSize(0.04);
+ l2.AddEntry(hRatPho,"#gamma","P");
+ l2.AddEntry(hRatPi0,"#pi^{0}","P");
+ l2.AddEntry(hRatEta,"#eta","P");
+ l2.SetBorderSize(0);
+ l2.SetFillColor(0);
+ l2.Draw();
+
+ cmc->cd(3);
+ //gPad->SetLogy();
+
+ TH2F* h2PrimPhoPhi = (TH2F*) GetHisto("AnaPhoton_hPhiPrim_MCPhoton");
+ TH2F* h2PrimPi0Phi = (TH2F*) GetHisto("AnaPi0_hPrimPi0Phi");
+ TH2F* h2PrimEtaPhi = (TH2F*) GetHisto("AnaPi0_hPrimEtaPhi");
+
+ Int_t binMin = hPrimPho->FindBin(3);
+
+ TH1F* hPrimPhoPhi = (TH1F*) h2PrimPhoPhi->ProjectionY("PrimPhoPhi",binMin,1000);
+ TH1F* hPrimPi0Phi = (TH1F*) h2PrimPi0Phi->ProjectionY("PrimPi0Phi",binMin,1000);
+ TH1F* hPrimEtaPhi = (TH1F*) h2PrimEtaPhi->ProjectionY("PrimEtaPhi",binMin,1000);
+
+ hPrimPhoPhi->Scale(1./hPrimPhoPhi->Integral(0,1000));
+ hPrimPi0Phi->Scale(1./hPrimPi0Phi->Integral(0,1000));
+ hPrimEtaPhi->Scale(1./hPrimEtaPhi->Integral(0,1000));
+
+ Float_t maxPhi = hPrimPhoPhi->GetMaximum();
+ if(maxPhi < hPrimPi0Phi->GetMaximum()) maxPhi = hPrimPi0Phi->GetMaximum();
+ if(maxPhi < hPrimEtaPhi->GetMaximum()) maxPhi = hPrimEtaPhi->GetMaximum();
+
+ Float_t minPhi = hPrimPhoPhi->GetMinimum();
+ if(minPhi > hPrimPi0Phi->GetMinimum()) minPhi = hPrimPi0Phi->GetMinimum();
+ if(minPhi > hPrimEtaPhi->GetMinimum()) minPhi = hPrimEtaPhi->GetMinimum();
+
+ hPrimPi0Phi->SetMaximum(maxPhi*1.1);
+ hPrimPi0Phi->SetMinimum(minPhi);
+ TGaxis::SetMaxDigits(3);
+
+ hPrimPi0Phi->SetYTitle("1/total entries dN/d#phi");
+ hPrimPi0Phi->SetTitle("Generated particles #phi for E > 3 GeV");
+ hPrimPi0Phi->SetTitleOffset(1.6,"Y");
+ hPrimPi0Phi->Sumw2();
+ hPrimPi0Phi->SetMarkerColor(4);
+ hPrimPi0Phi->SetMarkerStyle(21);
+ hPrimPi0Phi->Draw("");
+
+ hPrimPhoPhi->Sumw2();
+ hPrimPhoPhi->SetMarkerColor(1);
+ hPrimPhoPhi->SetMarkerStyle(20);
+ Float_t scale = TMath::RadToDeg();
+ ScaleXaxis(hPrimPhoPhi, TMath::RadToDeg());
+ hPrimPhoPhi->Draw("same");
+
+
+ hPrimEtaPhi->Sumw2();
+ hPrimEtaPhi->SetMarkerColor(2);
+ hPrimEtaPhi->SetMarkerStyle(22);
+ hPrimEtaPhi->Draw("same");
+
+ cmc->cd(4);
+ //gPad->SetLogy();
+
+ TH2F* h2PrimPhoEta = (TH2F*) GetHisto("AnaPhoton_hEtaPrim_MCPhoton");
+ TH2F* h2PrimPi0Eta = (TH2F*) GetHisto("AnaPi0_hPrimPi0Rapidity");
+ TH2F* h2PrimEtaEta = (TH2F*) GetHisto("AnaPi0_hPrimEtaRapidity");
+
+ Int_t binMin = hPrimPho->FindBin(3);
+
+ TH1F* hPrimPhoEta = (TH1F*) h2PrimPhoEta->ProjectionY("PrimPhoEta",binMin,1000);
+ TH1F* hPrimPi0Eta = (TH1F*) h2PrimPi0Eta->ProjectionY("PrimPi0Eta",binMin,1000);
+ TH1F* hPrimEtaEta = (TH1F*) h2PrimEtaEta->ProjectionY("PrimEtaEta",binMin,1000);
+
+ hPrimPhoEta->Scale(1./hPrimPhoEta->Integral(0,1000));
+ hPrimPi0Eta->Scale(1./hPrimPi0Eta->Integral(0,1000));
+ hPrimEtaEta->Scale(1./hPrimEtaEta->Integral(0,1000));
+
+ Float_t maxEta = hPrimPhoEta->GetMaximum();
+ if(maxEta < hPrimPi0Eta->GetMaximum()) maxEta = hPrimPi0Eta->GetMaximum();
+ if(maxEta < hPrimEtaEta->GetMaximum()) maxEta = hPrimEtaEta->GetMaximum();
+
+ Float_t minEta = hPrimPhoEta->GetMinimum();
+ if(minEta > hPrimPi0Eta->GetMinimum()) minEta = hPrimPi0Eta->GetMinimum();
+ if(minEta > hPrimEtaEta->GetMinimum()) minEta = hPrimEtaEta->GetMinimum();
+
+ hPrimPi0Eta->SetMaximum(maxEta*1.1);
+ hPrimPi0Eta->SetMinimum(minEta);
+ TGaxis::SetMaxDigits(3);
+
+ hPrimPi0Eta->SetYTitle("1/total entries dN/d#eta");
+ hPrimPi0Eta->SetTitle("Generated particles #eta for E > 3 GeV");
+ hPrimPi0Eta->SetTitleOffset(1.6,"Y");
+ hPrimPi0Eta->Sumw2();
+ hPrimPi0Eta->SetMarkerColor(4);
+ hPrimPi0Eta->SetMarkerStyle(21);
+ hPrimPi0Eta->Draw("");
+
+ hPrimPhoEta->Sumw2();
+ hPrimPhoEta->SetMarkerColor(1);
+ hPrimPhoEta->SetMarkerStyle(20);
+ Float_t scale = TMath::RadToDeg();
+ hPrimPhoEta->Draw("same");
+
+ hPrimEtaEta->Sumw2();
+ hPrimEtaEta->SetMarkerColor(2);
+ hPrimEtaEta->SetMarkerStyle(22);
+ hPrimEtaEta->Draw("same");
+
+ cmc->Print(Form("%s_MCHisto.eps",histoTag.Data()));
+
+
+
+
+ }
+