ROOT logo
// Author: Ionut-Cristian Arsene
// Contacts: iarsene@cern.ch
// Make QA pictures for the J/psi->ee analysis



// modified by sjena 
// -- to add it in automatic script
// -- changes Naming conventions
// -- saving objects instead of canvas


//______________________________________________________________________________
void processJpsi2eeQAplots(const Char_t* filename="jpsi_Default.root", 
			   TString suffix = "eps",
			   const Char_t* outfile="Jpsi2eeQAplots_output.root") {
  //
 
  //  
  TFile* file = TFile::Open(filename);
  
  // event wise histograms 
  TH1F* zDistrib = (TH1F*)GetHistogram(file, "default", "Event", "Z");
  
  // electron candidate histograms
  TH2F* tpcDedx = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_signal");
  tpcDedx->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_signal"));
  TH2F* tpcNsigmaEle = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_nSigma_Electrons");
  tpcNsigmaEle->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_nSigma_Electrons"));
  
  // pair candidate histograms
  TH1F* invmass_pp = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1+", "pM");
  TH1F* invmass_pm = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1-", "pM");
  TH1F* invmass_mm = (TH1F*)GetHistogram(file, "default", "Pair_ev1-_ev1-", "pM");
    
  // draw stuff
  TLatex* latex=new TLatex();
  latex->SetNDC();
  latex->SetTextSize(0.04);
  latex->SetTextFont(42);
  TCanvas* c1=new TCanvas("fig_dq_tpcDedx", "");
  if(tpcDedx) {
    tpcDedx->SetStats(kFALSE);
    tpcDedx->GetXaxis()->SetRangeUser(0.0,10.0);
    tpcDedx->GetYaxis()->SetRangeUser(40.0,120.0);
    tpcDedx->SetTitle("");
    tpcDedx->Draw("colz");
    latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
  }
  
  TCanvas* c2=new TCanvas("fig_dq_tpcNsigmaElectron", "");
  if(tpcNsigmaEle) {
    tpcNsigmaEle->SetStats(kFALSE);
    tpcNsigmaEle->GetYaxis()->SetRangeUser(-5.0,5.0);
    tpcNsigmaEle->GetXaxis()->SetRangeUser(0.0,10.0);
    tpcNsigmaEle->SetTitle("");
    tpcNsigmaEle->Draw("colz");
    latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
  }
  
  TCanvas* c3=new TCanvas("fig_dq_eeInvMass", "");
  if(invmass_pm) {
    invmass_pm->SetStats(kFALSE);
    invmass_pm->SetTitle("");
    invmass_pm->SetLineColor(1);
    invmass_pm->GetYaxis()->SetTitle(Form("Pairs per %.0f MeV/c^{2}", 1000.0*invmass_pm->GetXaxis()->GetBinWidth(1)));
    invmass_pm->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
    invmass_pm->Draw();
  }
  if(invmass_pp) {
    invmass_pp->SetLineColor(2);
    invmass_pp->Draw((invmass_pm ? "same" : ""));
  }
  if(invmass_mm) {
    invmass_mm->SetLineColor(4);
    invmass_mm->Draw((invmass_mm ? "same" : ""));
  }
  if(invmass_pm || invmass_mm || invmass_pp)
    latex->DrawLatex(0.12, 0.85, "J/#psi candidates");
  if(invmass_pm && zDistrib && zDistrib->Integral()>1.);
    latex->DrawLatex(0.12, 0.80, Form("candidates / event = %.3f", invmass_pm->Integral() / zDistrib->Integral()));
  TLegend* legend=new TLegend(0.7,0.7,0.89,0.89);
  legend->SetTextFont(42);
  legend->SetBorderSize(0);
  legend->SetFillColor(0);
  if(invmass_pm) legend->AddEntry(invmass_pm, "+- pairs", "l");
  if(invmass_pp) legend->AddEntry(invmass_pp, "++ pairs", "l");
  if(invmass_mm) legend->AddEntry(invmass_mm, "-- pairs", "l");
  if(invmass_mm || invmass_pm || invmass_pp) legend->Draw();
  
  c1->SaveAs(Form("fig_dq_tpcDedx.%s",suffix.Data()));
  c2->SaveAs(Form("fig_dq_tpcNsigmaElectron.%s",suffix.Data()));
  c3->SaveAs(Form("fig_dq_eeInvMass.%s",suffix.Data()));


  //  TFile* save=new TFile(outputName, "RECREATE");
  // c1->Write();
  // c2->Write();
  // c3->Write();
  // save->Close();


  // Added by jsatya

  TFile *fout = TFile::Open(outfile,"UPDATE");
  fout->ls();
  
  TDirectoryFile *cdd = NULL;
  cdd = (TDirectoryFile*)fout->Get("DQ");
  if(!cdd) {
    Printf("Warning: DQ <dir> doesn't exist, creating a new one");
    cdd = (TDirectoryFile*)fout->mkdir("DQ");
  }
  cdd->cd();
  cdd->ls();



  if (invmass_pp){
    invmass_pp->SetName(Form("fig_dq_%s_pp", invmass_pp->GetName()));
    invmass_pp->Write();
  }
  
  if (invmass_pm){
    invmass_pm->SetName(Form("fig_dq_%s_pm", invmass_pm->GetName()));
    invmass_pm->Write();
  }
  if (invmass_mm){
    invmass_mm->SetName(Form("fig_dq_%s_mm", invmass_mm->GetName()));
    invmass_mm->Write();
  }
  
  tpcNsigmaEle->SetName(Form("fig_dq_%s", tpcNsigmaEle->GetName()));
  tpcNsigmaEle->Write();
  
  tpcDedx->SetName(Form("fig_dq_%s", tpcDedx->GetName()));
  tpcDedx->Write();
  
  fout->cd();
  fout->Close();
  
}


//______________________________________________________________________________
TObject* GetHistogram(TFile* file, 
		      const Char_t* cutClass, 
		      const Char_t* histList, 
		      const Char_t* histName) {
  //
  // get a histogram from the J/psi output
  //
  TKey* qaKey = (TKey*)file->GetListOfKeys()->At(0);
  TList* qaList = (TList*)qaKey->ReadObj();
  
  THashList* qaCutClass = (THashList*)qaList->FindObject(cutClass);
  THashList* qaHistList = (THashList*)qaCutClass->FindObject(histList);
  return qaHistList->FindObject(histName);
}
 processJpsi2eeQAplots.C:1
 processJpsi2eeQAplots.C:2
 processJpsi2eeQAplots.C:3
 processJpsi2eeQAplots.C:4
 processJpsi2eeQAplots.C:5
 processJpsi2eeQAplots.C:6
 processJpsi2eeQAplots.C:7
 processJpsi2eeQAplots.C:8
 processJpsi2eeQAplots.C:9
 processJpsi2eeQAplots.C:10
 processJpsi2eeQAplots.C:11
 processJpsi2eeQAplots.C:12
 processJpsi2eeQAplots.C:13
 processJpsi2eeQAplots.C:14
 processJpsi2eeQAplots.C:15
 processJpsi2eeQAplots.C:16
 processJpsi2eeQAplots.C:17
 processJpsi2eeQAplots.C:18
 processJpsi2eeQAplots.C:19
 processJpsi2eeQAplots.C:20
 processJpsi2eeQAplots.C:21
 processJpsi2eeQAplots.C:22
 processJpsi2eeQAplots.C:23
 processJpsi2eeQAplots.C:24
 processJpsi2eeQAplots.C:25
 processJpsi2eeQAplots.C:26
 processJpsi2eeQAplots.C:27
 processJpsi2eeQAplots.C:28
 processJpsi2eeQAplots.C:29
 processJpsi2eeQAplots.C:30
 processJpsi2eeQAplots.C:31
 processJpsi2eeQAplots.C:32
 processJpsi2eeQAplots.C:33
 processJpsi2eeQAplots.C:34
 processJpsi2eeQAplots.C:35
 processJpsi2eeQAplots.C:36
 processJpsi2eeQAplots.C:37
 processJpsi2eeQAplots.C:38
 processJpsi2eeQAplots.C:39
 processJpsi2eeQAplots.C:40
 processJpsi2eeQAplots.C:41
 processJpsi2eeQAplots.C:42
 processJpsi2eeQAplots.C:43
 processJpsi2eeQAplots.C:44
 processJpsi2eeQAplots.C:45
 processJpsi2eeQAplots.C:46
 processJpsi2eeQAplots.C:47
 processJpsi2eeQAplots.C:48
 processJpsi2eeQAplots.C:49
 processJpsi2eeQAplots.C:50
 processJpsi2eeQAplots.C:51
 processJpsi2eeQAplots.C:52
 processJpsi2eeQAplots.C:53
 processJpsi2eeQAplots.C:54
 processJpsi2eeQAplots.C:55
 processJpsi2eeQAplots.C:56
 processJpsi2eeQAplots.C:57
 processJpsi2eeQAplots.C:58
 processJpsi2eeQAplots.C:59
 processJpsi2eeQAplots.C:60
 processJpsi2eeQAplots.C:61
 processJpsi2eeQAplots.C:62
 processJpsi2eeQAplots.C:63
 processJpsi2eeQAplots.C:64
 processJpsi2eeQAplots.C:65
 processJpsi2eeQAplots.C:66
 processJpsi2eeQAplots.C:67
 processJpsi2eeQAplots.C:68
 processJpsi2eeQAplots.C:69
 processJpsi2eeQAplots.C:70
 processJpsi2eeQAplots.C:71
 processJpsi2eeQAplots.C:72
 processJpsi2eeQAplots.C:73
 processJpsi2eeQAplots.C:74
 processJpsi2eeQAplots.C:75
 processJpsi2eeQAplots.C:76
 processJpsi2eeQAplots.C:77
 processJpsi2eeQAplots.C:78
 processJpsi2eeQAplots.C:79
 processJpsi2eeQAplots.C:80
 processJpsi2eeQAplots.C:81
 processJpsi2eeQAplots.C:82
 processJpsi2eeQAplots.C:83
 processJpsi2eeQAplots.C:84
 processJpsi2eeQAplots.C:85
 processJpsi2eeQAplots.C:86
 processJpsi2eeQAplots.C:87
 processJpsi2eeQAplots.C:88
 processJpsi2eeQAplots.C:89
 processJpsi2eeQAplots.C:90
 processJpsi2eeQAplots.C:91
 processJpsi2eeQAplots.C:92
 processJpsi2eeQAplots.C:93
 processJpsi2eeQAplots.C:94
 processJpsi2eeQAplots.C:95
 processJpsi2eeQAplots.C:96
 processJpsi2eeQAplots.C:97
 processJpsi2eeQAplots.C:98
 processJpsi2eeQAplots.C:99
 processJpsi2eeQAplots.C:100
 processJpsi2eeQAplots.C:101
 processJpsi2eeQAplots.C:102
 processJpsi2eeQAplots.C:103
 processJpsi2eeQAplots.C:104
 processJpsi2eeQAplots.C:105
 processJpsi2eeQAplots.C:106
 processJpsi2eeQAplots.C:107
 processJpsi2eeQAplots.C:108
 processJpsi2eeQAplots.C:109
 processJpsi2eeQAplots.C:110
 processJpsi2eeQAplots.C:111
 processJpsi2eeQAplots.C:112
 processJpsi2eeQAplots.C:113
 processJpsi2eeQAplots.C:114
 processJpsi2eeQAplots.C:115
 processJpsi2eeQAplots.C:116
 processJpsi2eeQAplots.C:117
 processJpsi2eeQAplots.C:118
 processJpsi2eeQAplots.C:119
 processJpsi2eeQAplots.C:120
 processJpsi2eeQAplots.C:121
 processJpsi2eeQAplots.C:122
 processJpsi2eeQAplots.C:123
 processJpsi2eeQAplots.C:124
 processJpsi2eeQAplots.C:125
 processJpsi2eeQAplots.C:126
 processJpsi2eeQAplots.C:127
 processJpsi2eeQAplots.C:128
 processJpsi2eeQAplots.C:129
 processJpsi2eeQAplots.C:130
 processJpsi2eeQAplots.C:131
 processJpsi2eeQAplots.C:132
 processJpsi2eeQAplots.C:133
 processJpsi2eeQAplots.C:134
 processJpsi2eeQAplots.C:135
 processJpsi2eeQAplots.C:136
 processJpsi2eeQAplots.C:137
 processJpsi2eeQAplots.C:138
 processJpsi2eeQAplots.C:139
 processJpsi2eeQAplots.C:140
 processJpsi2eeQAplots.C:141
 processJpsi2eeQAplots.C:142
 processJpsi2eeQAplots.C:143
 processJpsi2eeQAplots.C:144
 processJpsi2eeQAplots.C:145
 processJpsi2eeQAplots.C:146
 processJpsi2eeQAplots.C:147
 processJpsi2eeQAplots.C:148
 processJpsi2eeQAplots.C:149
 processJpsi2eeQAplots.C:150
 processJpsi2eeQAplots.C:151
 processJpsi2eeQAplots.C:152
 processJpsi2eeQAplots.C:153
 processJpsi2eeQAplots.C:154
 processJpsi2eeQAplots.C:155
 processJpsi2eeQAplots.C:156
 processJpsi2eeQAplots.C:157
 processJpsi2eeQAplots.C:158
 processJpsi2eeQAplots.C:159
 processJpsi2eeQAplots.C:160