ROOT logo
/************************************************************
     -- provided by Gamma Conversion Group, PWG4,
     -- Kathrin Koch, kkoch@physi.uni-heidelberg.de
     -- Friederike Bock, friederike.bock@cern.ch   
                                                          
 ************************************************************

 == This macro can be used to display the Photon 
     Characteristics of the conversion method in ALICE, 
     it can be operated  *****

 == on the output of the GammaConversionTask. It can take 
     2 input files, the second one should be MC, if this 
     is not    *****

 == the case all histograms including MC need to be 
     commented out otherwise the running will crash.  *****
 *************************************************************/

/*----------------------------------------------
A small Modificaiton is done by sjena to:
 -- impliment the unique name of each object
 -- output files for comparision purpose
 ----------------------------------------------*/



#include <Riostream.h>
#include <fstream>
#include "TMath.h"
#include <stdlib.h>
#include <fstream>
#include <math.h>
#include <TROOT.h>
#include <TApplication.h>
#include <TPaveLabel.h>
#include <TSystem.h>
#include <TFrame.h>
#include <TStyle.h>
#include <TString.h>
#include "TGaxis.h"
#include "TFile.h"
#include "TH1F.h"
#include "TH1D.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TF1.h"
#include "TVirtualFitter.h"
#include "TObject.h"
#include "TCanvas.h"
#include "TMultiGraph.h"
#include "TLegend.h"
#include "TDatabasePDG.h"
#include "TMinuit.h"
#include "TLatex.h"
#include "TASImage.h"
#include "TPostScript.h"
#include "TGraphErrors.h"
#include "TArrow.h"
#include "TMarker.h"
#include "TGraphAsymmErrors.h" 

TString textGenerator;
TString collisionSystem;
TString textPeriod;
TString textDate;

void SetStyleTLatex( TLatex* text, Size_t textSize, Width_t lineWidth, Color_t textColor = 1, Bool_t kNDC = kTRUE){
   if (kNDC) {text->SetNDC();}
   text->SetTextColor(textColor);
   text->SetTextSize(textSize);
   text->SetLineWidth(lineWidth);
}


/* DrawAutoGammaHisto is function used for styling a histograma of the gamma conversion group with standart settings
* histo1 - first histogram (Data)
* Title - histogram title
* XTitle - X-axis title
* YTitle - Y-axis title
* YRangeMax    = kTRUE will scale by Maximum and Minimum Range in Y
*YMaxFactor - will MaximumY by this factor if YRangeMay = kTRUE 
*YMinimum - this will be used if YRangeMax is set
*YRange     = kTRUE will Cut y-axis by YMin and YMax 
- will be set to kFAlSE if YRangeMax is set
*YMin - minimum Y
*YMax - maximum Y
*XRange  = kTRUE will Cut x-axis by XMin and XMax
*XMin - minimum Y
*XMax - maximum Y
*/ 
void DrawAutoGammaHisto( TH1* histo1, 
               TString Title, TString XTitle, TString YTitle,
               Bool_t YRangeMax, Float_t YMaxFactor, Float_t YMinimum,
               Bool_t YRange, Float_t YMin ,Float_t YMax,  
               Bool_t XRange, Float_t XMin, Float_t XMax) {
   if (YRangeMax && !XRange){
      YRange = kFALSE;
      Double_t maxRangeR = histo1->GetMaximum();
      Double_t minRangeR = histo1->GetMinimum();      
      if(YMinimum > minRangeR){minRangeR = YMinimum;}
      histo1->GetYaxis()->SetRangeUser(minRangeR, maxRangeR*YMaxFactor);   
   }
   if (YRangeMax && XRange){
      YRange = kFALSE;
      Double_t maxRangeR = histo1->GetMaximum();
      Double_t minRangeR = histo1->GetMinimum();      
      if(YMinimum > minRangeR){minRangeR = YMinimum;}
      histo1->GetYaxis()->SetRangeUser(minRangeR, maxRangeR*YMaxFactor);   
      histo1->GetXaxis()->SetRangeUser(XMin, XMax);   
   }
   if (YRange && XRange){
      histo1->GetYaxis()->SetRangeUser(YMin, YMax);   
      histo1->GetXaxis()->SetRangeUser(XMin, XMax);   
   }
   if (!YRangeMax && !YRange && XRange){
      histo1->GetXaxis()->SetRangeUser(XMin, XMax);   
   }
   
   if (YRange && !XRange){
      histo1->GetYaxis()->SetRangeUser(YMin, YMax);
   }
   
   histo1->SetTitle(Title.Data());
   
   if(XTitle.CompareTo("") != 0){
      histo1->SetXTitle(XTitle.Data());
   }
   if(YTitle.CompareTo("") != 0){
      histo1->SetYTitle(YTitle.Data());
   }
   histo1->GetYaxis()->SetLabelSize(0.03);
   histo1->GetYaxis()->SetTitleSize(0.035);  
   histo1->GetYaxis()->SetDecimals();
   histo1->GetYaxis()->SetTitleOffset(1.8);
   histo1->GetXaxis()->SetTitleSize(0.035);
   histo1->GetXaxis()->SetLabelSize(0.03);   
   histo1->SetLineColor(kBlue+2);
   histo1->SetMarkerColor(kBlue+2);
   histo1->SetMarkerStyle(kFullCircle);
   histo1->SetMarkerSize(1.5);
   histo1->DrawCopy("e,p");
}


void DrawLabelsEvents(Float_t startX, Float_t startY, Float_t textHeight, Float_t decrease,  TString collisionSystemDummy, TString textGeneratorDummy, TString textPeriodDummy){
   
   Float_t aliceStartY = startY - textHeight * 1.15;  
   TLatex *pp7 = NULL;
   if( collisionSystemDummy.CompareTo("PbPb @ #sqrt{s_{NN}} = 2.76 TeV") == 0){
      pp7 = new TLatex((startX-2*decrease),(aliceStartY),collisionSystemDummy.Data()); // Bo: this was modified
   } else {
      pp7 = new TLatex((startX+2*decrease),(aliceStartY),collisionSystemDummy.Data()); // Bo: this was modified
   }
   pp7->SetNDC();
   pp7->SetTextColor(1);
   pp7->SetTextFont(62);   
   pp7->SetTextSize(textHeight);
   pp7->SetLineWidth(2);
   pp7->Draw("same");
   if (textGeneratorDummy.CompareTo("")!=0 && textPeriodDummy.CompareTo("")!=0){
      TLatex *generator = new TLatex((startX+decrease),(aliceStartY-1*textHeight*1.15),Form("%s   %s",textGeneratorDummy.Data(),textPeriodDummy.Data())); // Bo: this was modified
      generator->SetNDC();
      generator->SetTextColor(1);
      generator->SetTextFont(62);
      generator->SetTextSize(textHeight);
      generator->SetLineWidth(2);
      generator->Draw("same");   
   } else if (textGeneratorDummy.CompareTo("")!=0) {
      TLatex *generator = new TLatex((startX+decrease),(aliceStartY-1*textHeight*1.15),Form("%s",textGeneratorDummy.Data())); // Bo: this was modified
      generator->SetNDC();
      generator->SetTextColor(1);
      generator->SetTextFont(62);
      generator->SetTextSize(textHeight);
      generator->SetLineWidth(2);
      generator->Draw("same");   
   }
}

/*DrawAutoGammaHisto2D is a function for drawing a 2D-histogram of the gamma conversion group
* histo - histogramm which need to be drawn
* Title - histogram title
* XTitle - X- axis-title
* YTitle - Y-axis-title
* Input - Legend 
* YRange - if kTRUE will scale by YMin and YMay
* YMin  - Y minimum
* YMax - Y maximum
* XRange - if kTRUE will scale by XMin and XMax
* XMin - X minimum
* XMax - X maximum
*/
void DrawAutoGammaHisto2D( TH2 *histo,  
                  TString Title, TString XTitle, TString YTitle, TString Input,
                  Bool_t YRange, Float_t YMin ,Float_t YMax, 
                  Bool_t XRange, Float_t XMin, Float_t XMax,Float_t titleOffsetX=1.4, Float_t titleOffsetY=1.2) {
   
   
   if (YRange && XRange){
      histo->GetYaxis()->SetRangeUser(YMin, YMax); 
      histo->GetXaxis()->SetRangeUser(XMin, XMax); 
   }
   if ( !YRange && XRange){
      histo->GetXaxis()->SetRangeUser(XMin, XMax); 
   }
   
   if (YRange && !XRange){
      histo->GetYaxis()->SetRangeUser(YMin, YMax);
   }
   
//    if(Title.CompareTo("") != 0){
      histo->SetTitle(Title.Data());
//    }
   if(XTitle.CompareTo("") != 0){
      histo->SetXTitle(XTitle.Data());
   }
   if(YTitle.CompareTo("") != 0){
      histo->SetYTitle(YTitle.Data());
   }
   histo->GetYaxis()->SetTitleSize(0.043);   
   histo->GetYaxis()->SetLabelSize(0.035);
   histo->GetXaxis()->SetLabelSize(0.035);
   histo->GetYaxis()->SetDecimals();
   histo->GetYaxis()->SetTitleOffset(titleOffsetY);
   histo->GetXaxis()->SetTitleOffset(titleOffsetX);
   histo->GetXaxis()->SetTitleSize(0.043);   
   histo->DrawCopy("colz");
   if(Input.CompareTo("") != 0){
      TLegend* leg2 = new TLegend(0.6,0.82,0.83,0.9);
      leg2->SetTextSize(0.04);         
      leg2->SetFillColor(0);
      leg2->AddEntry(histo,(Input.Data()));
      leg2->Draw("same");
   }
}

void PlotStandard2D( TH2* histo2D, TString nameOutput, TString title, TString xTitle, TString yTitle, Bool_t kRangeY, Double_t startY, Double_t endY, Bool_t kRangeX, Double_t startX, Double_t endX, Int_t logX, Int_t logY, Int_t logZ, Float_t* floatLogo, Int_t canvasSizeX = 500, Int_t canvasSizeY = 500, TString generator ="" , TString period =""){
   TCanvas * canvasStandard = new TCanvas("canvasStandard","",10,10,canvasSizeX,canvasSizeY);  // gives the page size      
   canvasStandard->SetLogx(logX);
   canvasStandard->SetLogy(logY);
   canvasStandard->SetLogz(logZ);
   canvasStandard->SetRightMargin(0.12);     
   canvasStandard->SetLeftMargin(0.12);      
   canvasStandard->SetBottomMargin(0.1);     
   canvasStandard->SetTopMargin(0.04);       
   canvasStandard->cd();
   histo2D->SetTitle("");
   DrawAutoGammaHisto2D(   histo2D,
                           title.Data(), xTitle.Data(), yTitle.Data(),"",kRangeY, startY, endY, kRangeX, startX, endX);
   histo2D->GetXaxis()->SetTitleOffset(1.05);
//    cout << histo2D->GetYaxis()->GetTitleOffset() << endl;
   histo2D->GetYaxis()->SetTitleOffset(1.35);
   if (logX==1){
//       cout << histo2D->GetXaxis()->GetLabelOffset() << endl;
      histo2D->GetXaxis()->SetLabelOffset(0.);
   }   
      
   histo2D->Draw("colz");
   DrawLabelsEvents(floatLogo[0],floatLogo[1],floatLogo[2], 0.00, collisionSystem, generator, period);
   
   canvasStandard->Update();
   canvasStandard->SaveAs(nameOutput.Data());
   delete canvasStandard;
}

TString GetCentralityString(TString cutNumber){
   TString centralityCutNumberStart = cutNumber(1,1);
   TString centralityCutNumberEnd = cutNumber(2,1);
   TString ppCutNumber = cutNumber(0,1);
   if (ppCutNumber.CompareTo("0") ==0){
           return "pp"; 
   } else if ( ppCutNumber.CompareTo("1") ==0 || ppCutNumber.CompareTo("2") ==0 || ppCutNumber.CompareTo("5") ==0 || ppCutNumber.CompareTo("8") ==0 || ppCutNumber.CompareTo("9") ==0){       
      if (centralityCutNumberStart.CompareTo("0") == 0 && centralityCutNumberEnd.CompareTo("0") == 0  ){
          return "0-100%"; 
      } else {
          return Form("%i-%i%s", centralityCutNumberStart.Atoi()*10,centralityCutNumberEnd.Atoi()*10,"%");
      }
   } else if (ppCutNumber.CompareTo("3") ==0 || ppCutNumber.CompareTo("6") ==0){
      if (centralityCutNumberStart.CompareTo("0") == 0 && centralityCutNumberEnd.CompareTo("0") == 0  ){
          return "0-45%"; 
      } else {
          return Form("%i-%i%s", centralityCutNumberStart.Atoi()*5,centralityCutNumberEnd.Atoi()*5,"%");
      }
   } else if (ppCutNumber.CompareTo("4") ==0 || ppCutNumber.CompareTo("7") ==0){
      if (centralityCutNumberStart.CompareTo("0") == 0 && centralityCutNumberEnd.CompareTo("0") == 0  ){
          return "45-95%"; 
      } else {
          return Form("%i-%i%s",45+centralityCutNumberStart.Atoi()*5,45+centralityCutNumberEnd.Atoi()*5,"%");
      }
   } else return ""; 
}  

TString ReturnFullCollisionsSystem(TString fEnergyFlagOpt){ 
   if(fEnergyFlagOpt.CompareTo("7TeV") == 0){
      return  "pp, #sqrt{s} = 7 TeV";
   } else if( fEnergyFlagOpt.CompareTo("900GeV") == 0) {
      return  "pp, #sqrt{s} = 900 GeV";
   } else if( fEnergyFlagOpt.CompareTo("2.76TeV") == 0) {
      return  "pp, #sqrt{s} = 2.76 TeV";
   } else if( (fEnergyFlagOpt.CompareTo("PbPb_2.76TeV") == 0) || (fEnergyFlagOpt.CompareTo("HI") == 0) ) {
      return "Pb-Pb, #sqrt{s_{NN}} = 2.76 TeV";
   } else if( fEnergyFlagOpt.CompareTo("pPb_5.023TeV") == 0) {
      return "p-Pb, #sqrt{s_{NN}} = 5.023 TeV";
   } else {
      cout << "No correct collision system specification, has been given" << endl;
      return "";
   }
}

/* StyleSettingsThesis will make some standard settings for gStyle 
*/
void StyleSettingsThesis(){
   gStyle->SetOptDate(0);   //show day and time
   gStyle->SetOptStat(0);  //show statistic
   gStyle->SetPalette(1,0);
   gStyle->SetFrameBorderMode(0);
   gStyle->SetFrameFillColor(0);
   gStyle->SetTitleFillColor(0);
   gStyle->SetTextSize(0.5);
   gStyle->SetLabelSize(0.03,"xyz");
   gStyle->SetLabelOffset(0.002,"xyz");
   gStyle->SetTitleFontSize(0.04);
   gStyle->SetTitleOffset(1,"y");
   gStyle->SetTitleOffset(0.7,"x");    
   gStyle->SetCanvasColor(0);
   gStyle->SetPadTickX(1);
   gStyle->SetPadTickY(1);
   //gStyle->SetLineWidth(0.01);
   
   gStyle->SetPadTopMargin(0.03);
   gStyle->SetPadBottomMargin(0.09);
   gStyle->SetPadRightMargin(0.03);
   gStyle->SetPadLeftMargin(0.13);
   
   
   TGaxis::SetMaxDigits(5);
   gErrorIgnoreLevel=kError;
}


void SetPlotStyle() {
   const Int_t nRGBs = 5;
   const Int_t nCont = 255;
   
   Double_t stops[nRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
   Double_t red[nRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
   Double_t green[nRGBs] = { 0.31, 0.81, 1.00, 0.20, 0.00 };
   Double_t blue[nRGBs]  = { 0.51, 1., 0.12, 0.00, 0.00};

   TColor::CreateGradientColorTable(nRGBs, stops, red, green, blue, nCont);
   gStyle->SetNumberContours(nCont);
}

               
void processProduceFastQA(TString fileNameInput = "myOutput", 
			  TString cutSelection = "5080001022092970023220000000", 
			  TString suffix = "eps", 
			  TString optEnergy="", 
			  TString optMCGenerator="", 
			  TString optPeriod="", 
			  const char* outfile="ProduceFastQA_output.root"){   
   
   gROOT->Reset();   
   gSystem->Load("libCore.so");
   gSystem->Load("libTree.so");
   gSystem->Load("libGeom.so");
   gSystem->Load("libVMC.so");
   gSystem->Load("libPhysics.so");
   gSystem->Load("libSTEERBase");
   gSystem->Load("libESD");
   gSystem->Load("libAOD");
   gSystem->Load("libANALYSIS");
   gSystem->Load("libANALYSISalice");
   gSystem->Load("libCORRFW.so");
   gROOT->SetStyle("Plain");
   
   StyleSettingsThesis();   
   SetPlotStyle();
   
   collisionSystem = ReturnFullCollisionsSystem(optEnergy);
   if (collisionSystem.CompareTo("") == 0){
      cout << "No correct collision system specification, has been given" << endl;
      return;
   }
   TString centralityCutNumber = cutSelection(0,3);
   TString centralityString = GetCentralityString(centralityCutNumber);
   cout<< centralityCutNumber.Data() << "\t" << centralityString.Data() << endl;
   if (centralityString.CompareTo("pp") !=0){
      collisionSystem = Form("%s %s", centralityString.Data(), collisionSystem.Data());
   }

   TString textGenerator;

   if(optMCGenerator.CompareTo("") ==0){
      textGenerator = "";
   } else {
      textGenerator = optMCGenerator;
   }
   
   TFile*  fileInput = new TFile(fileNameInput.Data());
fileInput->ls();

   TDirectory* directoryQA = (TDirectory*)fileInput->Get(Form("GammaConvV1_QA_%s",cutSelection.Data())); 
directoryQA->ls();
   TList* listQA = (TList*)directoryQA->Get(Form("GammaConv_V1QA_%s",cutSelection.Data()));
listQA->ls();
   TList* listQAESD = (TList*)listQA->FindObject("ESD QA");


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

   TH1F* histoVertexZ =             (TH1F*)listQAESD->FindObject("Vertex_Z");
   histoVertexZ->Sumw2();
   Double_t nEvt = histoVertexZ->GetEntries();
   histoVertexZ->Scale(1./nEvt);
   histoVertexZ->Write(Form("fig_ga_%s",histoVertexZ->GetName()));
   
   TH1I* histoContrVertexZ =         (TH1I*)listQAESD->FindObject("ContrVertex_Z");
   TH1D* histoDContrVertexZ = new TH1D("ContrVertex_Z","ContrVertex_Z",3000,0,3000);
   histoDContrVertexZ->Sumw2();
   for (Int_t i = 1; i < histoContrVertexZ->GetNbinsX(); i++){
      histoDContrVertexZ->SetBinContent(i, histoContrVertexZ->GetBinContent(i)/nEvt);
      histoDContrVertexZ->SetBinError(i, histoContrVertexZ->GetBinError(i)/nEvt);
   }   
   histoDContrVertexZ->Rebin(8);
   histoDContrVertexZ->Write(Form("fig_ga_%s",histoDContrVertexZ->GetName()));
			     
   TH1I* histoGoodESDTracks = (TH1I*)listQAESD->FindObject("GoodESDTracks");
   TH1D* histoDGoodESDTracks = new TH1D("GoodESDTracks","GoodESDTracks",3000,0,3000);
   histoDGoodESDTracks->Sumw2();
   for (Int_t i = 1; i < histoGoodESDTracks->GetNbinsX(); i++){
     histoDGoodESDTracks->SetBinContent(i, histoGoodESDTracks->GetBinContent(i)/nEvt);
     histoDGoodESDTracks->SetBinError(i, histoGoodESDTracks->GetBinError(i)/nEvt);
   }   
   histoDGoodESDTracks->Rebin(8);
   histoDGoodESDTracks->Write(Form("fig_ga_%s",histoDGoodESDTracks->GetName()));
   
   
   TH1I* histoV0Mult = (TH1I*)listQAESD->FindObject("V0 Multiplicity");
   TH1D* histoDV0Mult = new TH1D("V0Multiplicity","V0 Multiplicity",30000,0,30000);
   histoDV0Mult->Sumw2();
   for (Int_t i = 1; i < histoV0Mult->GetNbinsX(); i++){
      histoDV0Mult->SetBinContent(i, histoV0Mult->GetBinContent(i)/nEvt);
      histoDV0Mult->SetBinError(i, histoV0Mult->GetBinError(i)/nEvt);
   }   
   histoDV0Mult->Rebin(10);
   histoDV0Mult->Write(Form("fig_ga_%s",histoDV0Mult->GetName()));
   
      
   TH2F* histoITSClusterPhi = (TH2F*)listQAESD->FindObject("ITSClusterPhi");
   histoITSClusterPhi->Sumw2();
   histoITSClusterPhi->Scale(1./nEvt);
   histoITSClusterPhi->Write(Form("fig_ga_%s",histoITSClusterPhi->GetName()));   


   TH1F* histoGammaPt = (TH1F*)listQAESD->FindObject("Gamma_Pt");
   histoGammaPt->Sumw2();
   histoGammaPt->Scale(1./nEvt);
   histoGammaPt->Write(Form("fig_ga_%s",histoGammaPt->GetName()));
   
   
   TH1F* histoGammaPhi = (TH1F*)listQAESD->FindObject("Gamma_Phi");
   histoGammaPhi->Sumw2();
   histoGammaPhi->Scale(1./nEvt);
   histoGammaPhi->Rebin(2);
   histoGammaPhi->Write(Form("fig_ga_%s",histoGammaPhi->GetName()));   


   TH1F* histoGammaEta = (TH1F*)listQAESD->FindObject("Gamma_Eta");
   histoGammaEta->Sumw2();
   histoGammaEta->Scale(1./nEvt);
   histoGammaEta->Rebin(2);
   histoGammaEta->Write(Form("fig_ga_%s",histoGammaEta->GetName()));

   
   TH1F* histoGammaChi2 = (TH1F*)listQAESD->FindObject("Gamma_Chi2perNDF");
   histoGammaChi2->Sumw2();
   histoGammaChi2->Scale(1./nEvt);
   histoGammaChi2->Write(Form("fig_ga_%s",histoGammaChi2->GetName()));


   
   TH1F* histoGammaPsiPair = (TH1F*)listQAESD->FindObject("Gamma_PsiPair");
   histoGammaPsiPair->Sumw2();
   histoGammaPsiPair->Scale(1./nEvt);
   histoGammaPsiPair->Write(Form("fig_ga_%s",histoGammaPsiPair->GetName()));   


   TH1F* histoGammaCosPoint = (TH1F*)listQAESD->FindObject("Gamma_CosinePointingAngle");
   histoGammaCosPoint->Sumw2();
   histoGammaCosPoint->Scale(1./nEvt);
   histoGammaCosPoint->Write(Form("fig_ga_%s",histoGammaCosPoint->GetName()));


   TH1F* histoGammaInvMass = (TH1F*)listQAESD->FindObject("Gamma_InvMass");
   histoGammaInvMass->Sumw2();
   histoGammaInvMass->Scale(1./nEvt);
   histoGammaInvMass->Write(Form("fig_ga_%s",histoGammaInvMass->GetName()));   
   

   TH2F* histoGammaArmenteros = (TH2F*)listQAESD->FindObject("Gamma_Armenteros");
   histoGammaArmenteros->Sumw2();
   histoGammaArmenteros->Scale(1./nEvt);
   histoGammaArmenteros->Write(Form("fig_ga_%s",histoGammaArmenteros->GetName()));   
   

   
   TH2F* histoEPPt = (TH2F*)listQAESD->FindObject("Electron_Positron_Pt");
   histoEPPt->Sumw2();
   histoEPPt->Scale(1./nEvt);
   histoEPPt->Write(Form("fig_ga_%s",histoEPPt->GetName()));


   TH2F* histoEPEta = (TH2F*)listQAESD->FindObject("Electron_Positron_Eta");
   histoEPEta->Sumw2();
   histoEPEta->Scale(1./nEvt);
   histoEPEta->Write(Form("fig_ga_%s",histoEPEta->GetName()));   


   TH2F* histoEPPhi = (TH2F*)listQAESD->FindObject("Electron_Positron_Phi");
   histoEPPhi->Sumw2();
   histoEPPhi->Scale(1./nEvt);
   histoEPPhi->Write(Form("fig_ga_%s",histoEPPhi->GetName()));   


   TH1F* histoEFindableClusterTPC = (TH1F*)listQAESD->FindObject("Electron_findableClusterTPC");
   histoEFindableClusterTPC->Sumw2();
   histoEFindableClusterTPC->Scale(1./nEvt);
   histoEFindableClusterTPC->Write(Form("fig_ga_%s",histoEFindableClusterTPC->GetName()));   


   TH1F* histoPFindableClusterTPC = (TH1F*)listQAESD->FindObject("Positron_findableClusterTPC");
   histoPFindableClusterTPC->Sumw2();
   histoPFindableClusterTPC->Scale(1./nEvt);
   histoPFindableClusterTPC->Write(Form("fig_ga_%s",histoPFindableClusterTPC->GetName()));   

   
   TH2F* histoEdEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_dEdx_P");
   Double_t nElectronTPC = histoEdEdxPTPC->GetEntries();
   histoEdEdxPTPC->Sumw2();
   histoEdEdxPTPC->Scale(1./nEvt);
   histoEdEdxPTPC->Write(Form("fig_ga_%s",histoEdEdxPTPC->GetName()));
   
   
   TH2F* histoPdEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_dEdx_P");
   Double_t nPositronTPC = histoPdEdxPTPC->GetEntries();
   histoPdEdxPTPC->Sumw2();
   histoPdEdxPTPC->Scale(1./nEvt);
   histoPdEdxPTPC->Write(Form("fig_ga_%s",histoPdEdxPTPC->GetName()));
   
   TH2F* histoENSigmadEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_NSigmadEdx_P");
   histoENSigmadEdxPTPC->Sumw2();
   histoENSigmadEdxPTPC->Scale(1./nEvt);
   histoENSigmadEdxPTPC->Write(Form("fig_ga_%s",histoENSigmadEdxPTPC->GetName()));

   TH2F* histoPNSigmadEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_NSigmadEdx_P");
   histoPNSigmadEdxPTPC->Sumw2();
   histoPNSigmadEdxPTPC->Scale(1./nEvt);
   histoPNSigmadEdxPTPC->Write(Form("fig_ga_%s",histoPNSigmadEdxPTPC->GetName()));

   TH2F* histoENSigmaPiondEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_NSigmaPiondEdx_P");
   histoENSigmaPiondEdxPTPC->Sumw2();
   histoENSigmaPiondEdxPTPC->Scale(1./nEvt);
   histoENSigmaPiondEdxPTPC->Write(Form("fig_ga_%s",histoENSigmaPiondEdxPTPC->GetName()));
   
   
   TH2F* histoPNSigmaPiondEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_NSigmaPiondEdx_P");
   histoPNSigmaPiondEdxPTPC->Sumw2();
   histoPNSigmaPiondEdxPTPC->Scale(1./nEvt);
   histoPNSigmaPiondEdxPTPC->Write(Form("fig_ga_%s",histoPNSigmaPiondEdxPTPC->GetName()));
   
   TH2F* histoETOFP = (TH2F*)listQAESD->FindObject("Electron_TOF_P");
   Double_t nElectronTOF = histoETOFP->GetEntries();
   histoETOFP->Sumw2();
   histoETOFP->Scale(1./nEvt);
   histoETOFP->Write(Form("fig_ga_%s",histoETOFP->GetName()));


   TH2F* histoPTOFP = (TH2F*)listQAESD->FindObject("Positron_TOF_P");
   Double_t nPositronTOF = histoPTOFP->GetEntries();
   histoPTOFP->Sumw2();
   histoPTOFP->Scale(1./nEvt);
   histoPTOFP->Write(Form("fig_ga_%s",histoPTOFP->GetName()));
   
   TH2F* histoENSigmaTOFP = (TH2F*)listQAESD->FindObject("Electron_NSigmaTOF_P");
   histoENSigmaTOFP->Sumw2();
   histoENSigmaTOFP->Scale(1./nEvt);
   histoENSigmaTOFP->Write(Form("fig_ga_%s",histoENSigmaTOFP->GetName()));

   TH2F* histoPNSigmaTOFP = (TH2F*)listQAESD->FindObject("Positron_NSigmaTOF_P");
   histoPNSigmaTOFP->Sumw2();
   histoPNSigmaTOFP->Scale(1./nEvt);
   histoPNSigmaTOFP->Write(Form("fig_ga_%s",histoPNSigmaTOFP->GetName()));   

   TH2F* histoEdEdxPITS = (TH2F*)listQAESD->FindObject("Electron_ITSdEdx_P");
   Double_t nElectronITS = histoEdEdxPITS->GetEntries();
   histoEdEdxPITS->Sumw2();
   histoEdEdxPITS->Scale(1./nEvt);
   histoEdEdxPITS->Write(Form("fig_ga_%s",histoEdEdxPITS->GetName()));

   TH2F* histoPdEdxPITS = (TH2F*)listQAESD->FindObject("Positron_ITSdEdx_P");
   Double_t nPositronITS = histoPdEdxPITS->GetEntries();
   histoPdEdxPITS->Sumw2();
   histoPdEdxPITS->Scale(1./nEvt);
   histoPdEdxPITS->Write(Form("fig_ga_%s",histoPdEdxPITS->GetName()));

   TH2F* histoENSigmadEdxPITS = (TH2F*)listQAESD->FindObject("Electron_NSigmaITS_P");
   histoENSigmadEdxPITS->Sumw2();
   histoENSigmadEdxPITS->Scale(1./nEvt);
   histoENSigmadEdxPITS->Write(Form("fig_ga_%s",histoENSigmadEdxPITS->GetName()));

   TH2F* histoPNSigmadEdxPITS = (TH2F*)listQAESD->FindObject("Positron_NSigmaITS_P");
   histoPNSigmadEdxPITS->Sumw2();
   histoPNSigmadEdxPITS->Scale(1./nEvt);
   histoPNSigmadEdxPITS->Write(Form("fig_ga_%s",histoPNSigmadEdxPITS->GetName()));
   
   //fout->Close();


   TCanvas * canvasEventProp = new TCanvas("canvasEventProp","",0,0,1000,1000);  // gives the page size
   TPad* padEventProp = new TPad("padEventProp","",0.0,0.0,1,1,0);   // gives the size of the histo areas 
   padEventProp->SetFillColor(0);
   padEventProp->GetFrame()->SetFillColor(0);
   padEventProp->SetBorderMode(0);
   
   padEventProp->Divide(2,2);
   padEventProp->Draw();
   padEventProp->cd(1);
   
   DrawAutoGammaHisto( histoVertexZ,
                       "", "Z_{vtx} (cm)","dZ/dN_{evt}",
                       kTRUE, 1.2, 0.,
                       kFALSE, -10,10,
                       kFALSE, -10,10);
   
   
   TLatex *labelDataSet = NULL;
   if (optPeriod.CompareTo("") ){
      labelDataSet = new TLatex(0.18,0.9,Form("%s",optPeriod.Data()));
      SetStyleTLatex( labelDataSet, 0.05,4);
      labelDataSet->Draw();
   }
   padEventProp->cd(2);
   padEventProp->cd(2)->SetLogy(1);
   
   DrawAutoGammaHisto( histoDContrVertexZ,
                       "", "# Contr to prim Vtx","norm counts",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, -10,10);
    
   padEventProp->cd(3);
   padEventProp->cd(3)->SetLogy(1);
   
   DrawAutoGammaHisto( histoDGoodESDTracks,
                       "", "# Good ESD tracks","norm counts",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, -10,10);
   
   padEventProp->cd(4);
   padEventProp->cd(4)->SetLogy(1);
   
   DrawAutoGammaHisto( histoDV0Mult,
                       "", "V0 signal","norm counts",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, -10,10);
   
   canvasEventProp->Update();
   canvasEventProp->SaveAs(Form("fig_ga_EventCharacteristics.%s",suffix.Data()));

   TCanvas * canvasdEdxTPC = new TCanvas("canvasdEdxTPC","",0,0,1000,1500);  // gives the page size
   TPad* paddEdxTPC = new TPad("paddEdxTPC","",0.0,0.0,1,1,0);   // gives the size of the histo areas 
   paddEdxTPC->SetFillColor(0);
   paddEdxTPC->GetFrame()->SetFillColor(0);
   paddEdxTPC->SetBorderMode(0);
   
   paddEdxTPC->Divide(2,3);
   paddEdxTPC->Draw();
   paddEdxTPC->cd(1);
   paddEdxTPC->cd(1)->SetLogx(1);
   paddEdxTPC->cd(1)->SetLogz(1);
   paddEdxTPC->cd(1)->SetTopMargin(0.01);
   paddEdxTPC->cd(1)->SetRightMargin(0.12);
   Double_t maximumEPTPC = 1.2*histoEdEdxPTPC->GetMaximum();
   histoEdEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoEdEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoEdEdxPTPC,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "dE_{e^{-}-cand} /dx",  "",
                  kTRUE, 30., 180., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelElectronTPC = new TLatex(0.5,0.9,"Electrons TPC");
   SetStyleTLatex( labelElectronTPC, 0.05,4);
   labelElectronTPC->Draw();

   if (labelDataSet) labelDataSet->Draw();
   
   
   paddEdxTPC->cd(2);
   paddEdxTPC->cd(2)->SetLogx(1);
   paddEdxTPC->cd(2)->SetLogz(1);
   paddEdxTPC->cd(2)->SetTopMargin(0.01);
   paddEdxTPC->cd(2)->SetRightMargin(0.12);
   histoPdEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoPdEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPdEdxPTPC,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "dE_{e^{+}-cand} /dx",  "",
                  kTRUE, 30., 180., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelPositronTPC = new TLatex(0.5,0.9,"Positrons TPC");
   SetStyleTLatex( labelPositronTPC, 0.05,4);
   labelPositronTPC->Draw();

   paddEdxTPC->cd(3);
   paddEdxTPC->cd(3)->SetLogx(1);
   paddEdxTPC->cd(3)->SetLogz(1);
   paddEdxTPC->cd(3)->SetTopMargin(0.01);
   paddEdxTPC->cd(3)->SetRightMargin(0.12);
   histoENSigmadEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoENSigmadEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoENSigmadEdxPTPC,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "n #sigma_{e^{-}} dE/dx",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   paddEdxTPC->cd(4);
   paddEdxTPC->cd(4)->SetLogx(1);
   paddEdxTPC->cd(4)->SetLogz(1);
   paddEdxTPC->cd(4)->SetTopMargin(0.01);
   paddEdxTPC->cd(4)->SetRightMargin(0.12);
   histoPNSigmadEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoPNSigmadEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPNSigmadEdxPTPC,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "n #sigma_{e^{+}} dE/dx",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   paddEdxTPC->cd(5);
   paddEdxTPC->cd(5)->SetLogx(1);
   paddEdxTPC->cd(5)->SetLogz(1);
   paddEdxTPC->cd(5)->SetTopMargin(0.01);
   paddEdxTPC->cd(5)->SetRightMargin(0.12);
   histoENSigmaPiondEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoENSigmaPiondEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoENSigmaPiondEdxPTPC,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "n #sigma_{#pi^{-}} dE/dx",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   paddEdxTPC->cd(6);
   paddEdxTPC->cd(6)->SetLogx(1);
   paddEdxTPC->cd(6)->SetLogz(1);
   paddEdxTPC->cd(6)->SetTopMargin(0.01);
   paddEdxTPC->cd(6)->SetRightMargin(0.12);
   histoPNSigmaPiondEdxPTPC->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTPC);
   histoPNSigmaPiondEdxPTPC->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPNSigmaPiondEdxPTPC,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "n #sigma_{#pi^{+}} dE/dx",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
   
   canvasdEdxTPC->Update();
   canvasdEdxTPC->SaveAs(Form("fig_ga_Electrons_dEdx_TPC.%s",suffix.Data()));

   TCanvas * canvasTOF = new TCanvas("canvasTOF","",0,0,1000,1000);  // gives the page size
   TPad* padTOF = new TPad("padTOF","",0.0,0.0,1,1,0);   // gives the size of the histo areas 
   padTOF->SetFillColor(0);
   padTOF->GetFrame()->SetFillColor(0);
   padTOF->SetBorderMode(0);
   
   padTOF->Divide(2,2);
   padTOF->Draw();
   padTOF->cd(1);
   padTOF->cd(1)->SetLogx(1);
   padTOF->cd(1)->SetLogz(1);
   padTOF->cd(1)->SetTopMargin(0.01);
   padTOF->cd(1)->SetRightMargin(0.12);
   Double_t maximumEPTOF = 1.2*histoETOFP->GetMaximum();
   histoETOFP->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTOF);
   histoETOFP->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoETOFP,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "t_{measured}-t_{expected} e^{-}",  "",
                  kTRUE, -1000, 2000., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelElectronTOF = new TLatex(0.5,0.9,"Electrons TOF");
   SetStyleTLatex( labelElectronTOF, 0.05,4);
   labelElectronTOF->Draw();
   Double_t fracElecTOF = nElectronTOF/nElectronTPC*100;
   TLatex *labelFracElectronTOF = new TLatex(0.5,0.845,Form("%4.2f %%",fracElecTOF ));
   SetStyleTLatex( labelFracElectronTOF, 0.05,4);
   labelFracElectronTOF->Draw();
   

   if (labelDataSet) labelDataSet->Draw();
   
   
   padTOF->cd(2);
   padTOF->cd(2)->SetLogx(1);
   padTOF->cd(2)->SetLogz(1);
   padTOF->cd(2)->SetTopMargin(0.01);
   padTOF->cd(2)->SetRightMargin(0.12);
   histoPTOFP->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTOF);
   histoPTOFP->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPTOFP,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "t_{measured}-t_{expected} e^{+}",  "",
                  kTRUE, -1000, 2000., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelPositronTOF = new TLatex(0.5,0.9,"Positrons TOF");
   SetStyleTLatex( labelPositronTOF, 0.05,4);
   labelPositronTOF->Draw();
   Double_t fracPosiTOF = nPositronTOF/nPositronTPC*100;
   TLatex *labelFracPositronTOF = new TLatex(0.5,0.845,Form("%4.2f %%",fracPosiTOF ));
   SetStyleTLatex( labelFracPositronTOF, 0.05,4);
   labelFracPositronTOF->Draw();
   
   padTOF->cd(3);
   padTOF->cd(3)->SetLogx(1);
   padTOF->cd(3)->SetLogz(1);
   padTOF->cd(3)->SetTopMargin(0.01);
   padTOF->cd(3)->SetRightMargin(0.12);
   histoENSigmaTOFP->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTOF);
   histoENSigmaTOFP->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoENSigmaTOFP,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "n #sigma_{e^{-}} TOF",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   padTOF->cd(4);
   padTOF->cd(4)->SetLogx(1);
   padTOF->cd(4)->SetLogz(1);
   padTOF->cd(4)->SetTopMargin(0.01);
   padTOF->cd(4)->SetRightMargin(0.12);
   histoPNSigmaTOFP->GetZaxis()->SetRangeUser(1/nEvt,maximumEPTOF);
   histoPNSigmaTOFP->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPNSigmaTOFP,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "n #sigma_{e^{+}} TOF",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   canvasTOF->Update();
   canvasTOF->SaveAs(Form("fig_ga_Electrons_TOF.%s",suffix.Data()));
   
   
   TCanvas * canvasITS = new TCanvas("canvasITS","",0,0,1000,1000);  // gives the page size
   TPad* padITS = new TPad("padITS","",0.0,0.0,1,1,0);   // gives the size of the histo areas 
   padITS->SetFillColor(0);
   padITS->GetFrame()->SetFillColor(0);
   padITS->SetBorderMode(0);
   
   padITS->Divide(2,2);
   padITS->Draw();
   padITS->cd(1);
   padITS->cd(1)->SetLogx(1);
   padITS->cd(1)->SetLogz(1);
   padITS->cd(1)->SetTopMargin(0.01);
   padITS->cd(1)->SetRightMargin(0.12);
   Double_t maximumEPITS = 1.2*histoEdEdxPITS->GetMaximum();
   histoEdEdxPITS->GetZaxis()->SetRangeUser(1/nEvt,maximumEPITS);
   histoEdEdxPITS->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoEdEdxPITS,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "dE_{e^{-}-cand} /dx ITS",  "",
                  kTRUE, 0, 180., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelElectronITS = new TLatex(0.5,0.9,"Electrons ITS");
   SetStyleTLatex( labelElectronITS, 0.05,4);
   labelElectronITS->Draw();
   Double_t fracElecITS = nElectronITS/nElectronTPC*100;
   TLatex *labelFracElectronITS = new TLatex(0.5,0.845,Form("%4.2f %%",fracElecITS ));
   SetStyleTLatex( labelFracElectronITS, 0.05,4);
   labelFracElectronITS->Draw();
   

   if (labelDataSet) labelDataSet->Draw();
   
   
   padITS->cd(2);
   padITS->cd(2)->SetLogx(1);
   padITS->cd(2)->SetLogz(1);
   padITS->cd(2)->SetTopMargin(0.01);
   padITS->cd(2)->SetRightMargin(0.12);
   
   histoPdEdxPITS->GetZaxis()->SetRangeUser(1/nEvt,maximumEPITS);
   histoPdEdxPITS->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPdEdxPITS,  
                  "", "#it{p}_{e^{+}} (GeV/c)","dE_{e^{+}-cand} /dx ITS",  "",
                  kTRUE, 0, 180., 
                  kTRUE, 0.01, 20.,0.95);
   
   TLatex *labelPositronITS = new TLatex(0.5,0.9,"Positrons ITS");
   SetStyleTLatex( labelPositronITS, 0.05,4);
   labelPositronITS->Draw();
   Double_t fracPosiITS = nPositronITS/nPositronTPC*100;
   TLatex *labelFracPositronITS = new TLatex(0.5,0.845,Form("%4.2f %%",fracPosiITS ));
   SetStyleTLatex( labelFracPositronITS, 0.05,4);
   labelFracPositronITS->Draw();
   
   padITS->cd(3);
   padITS->cd(3)->SetLogx(1);
   padITS->cd(3)->SetLogz(1);
   padITS->cd(3)->SetTopMargin(0.01);
   padITS->cd(3)->SetRightMargin(0.12);
   histoENSigmadEdxPITS->GetZaxis()->SetRangeUser(1/nEvt,maximumEPITS);
   histoENSigmadEdxPITS->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoENSigmadEdxPITS,  
                  "", "#it{p}_{e^{-}} (GeV/c)", "n #sigma_{e^{-}} ITS",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   padITS->cd(4);
   padITS->cd(4)->SetLogx(1);
   padITS->cd(4)->SetLogz(1);
   padITS->cd(4)->SetTopMargin(0.01);
   padITS->cd(4)->SetRightMargin(0.12);
   histoPNSigmadEdxPITS->GetZaxis()->SetRangeUser(1/nEvt,maximumEPITS);
   histoPNSigmadEdxPITS->GetXaxis()->SetLabelOffset(-0.009);
   DrawAutoGammaHisto2D( histoPNSigmadEdxPITS,  
                  "", "#it{p}_{e^{+}} (GeV/c)", "n #sigma_{e^{+}} ITS",  "",
                  kTRUE, -10., 10., 
                  kTRUE, 0.01, 20.,0.95);
 
   canvasITS->Update();
   canvasITS->SaveAs(Form("fig_ga_Electrons_ITS.%s",suffix.Data()));
   
   
   
   TCanvas * canvasPhoton = new TCanvas("canvasPhoton","",0,0,1000,1000);  // gives the page size
   TPad* padPhoton = new TPad("padPhoton","",0.0,0.0,1,1,0);   // gives the size of the histo areas 
   padPhoton->SetFillColor(0);
   padPhoton->GetFrame()->SetFillColor(0);
   padPhoton->SetBorderMode(0);
   
   padPhoton->Divide(3,3);
   padPhoton->Draw();
   padPhoton->cd(1);
   padPhoton->cd(1)->SetLogy(1);
   padPhoton->cd(1)->SetLogx(1);
   padPhoton->cd(1)->SetTopMargin(0.01);
   DrawAutoGammaHisto( histoGammaPt,
                       "", "#it{p}_{#gamma,T} (GeV/c)","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 4., 0.5/nEvt,
                       kFALSE, -10,10,
                       kTRUE, 0.1,30);
   histoGammaPt->SetMarkerSize(0.5);
   histoGammaPt->Draw("ep1");

   TLatex *labelPhotons = new TLatex(0.75,0.9,"Photon");
   SetStyleTLatex( labelPhotons, 0.05,4);
   labelPhotons->Draw();
   
   if (labelDataSet) labelDataSet->Draw();
   
   padPhoton->cd(2);
   padPhoton->cd(2)->SetLogy(1);
   padPhoton->cd(2)->SetTopMargin(0.01);
   
   DrawAutoGammaHisto( histoGammaEta,
                       "", "#eta_{#gamma}","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, 0.1,30);
   histoGammaEta->SetMarkerSize(0.5);
   histoGammaEta->Draw("ep1");

   padPhoton->cd(3);
   padPhoton->cd(3)->SetLogy(1);
   padPhoton->cd(3)->SetTopMargin(0.01);

   DrawAutoGammaHisto( histoGammaPhi,
                       "", "#phi_{#gamma}","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, 0.1,30);
   histoGammaPhi->SetMarkerSize(0.5);
   histoGammaPhi->Draw("ep1");

   padPhoton->cd(4);
   padPhoton->cd(4)->SetLogy(1);
   padPhoton->cd(4)->SetTopMargin(0.01);

   DrawAutoGammaHisto( histoGammaInvMass,
                       "", "M_{#gamma#gamma} (GeV/c^{2})","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kTRUE, 0.,0.1);
   histoGammaInvMass->SetMarkerSize(0.5);
   histoGammaInvMass->Draw("ep1");
   
   padPhoton->cd(5);
   padPhoton->cd(5)->SetLogy(1);
   padPhoton->cd(5)->SetTopMargin(0.01);

   DrawAutoGammaHisto( histoGammaChi2,
                       "", "#chi^{2}/NDF","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt*1e1,
                       kFALSE, -10,10,
                       kFALSE, 0.,0.1);
   histoGammaChi2->SetMarkerSize(0.5);
   histoGammaChi2->Draw("ep1");
   
   padPhoton->cd(6);
   padPhoton->cd(6)->SetLogy(1);
   padPhoton->cd(6)->SetTopMargin(0.01);

   DrawAutoGammaHisto( histoGammaPsiPair,
                       "", "#psi_{Pair}","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt*1e2,
                       kFALSE, -10,10,
                       kTRUE, 0.,0.5);
   histoGammaPsiPair->SetMarkerSize(0.5);
   histoGammaPsiPair->Draw("ep1");
   
   padPhoton->cd(7);
   padPhoton->cd(7)->SetLogy(1);
   padPhoton->cd(7)->SetTopMargin(0.01);

   DrawAutoGammaHisto( histoGammaCosPoint,
                       "", "cos(#theta_{Point})","d#it{N}_{#gamma}/d#it{N}_{evt}",
                       kTRUE, 2., 0.5/nEvt,
                       kFALSE, -10,10,
                       kFALSE, 0.,0.5);
   histoGammaCosPoint->SetMarkerSize(0.5);
   histoGammaCosPoint->Draw("ep1");
 
   padPhoton->cd(8);
   padPhoton->cd(8)->SetLogz(1);
   padPhoton->cd(8)->SetTopMargin(0.01);
   padPhoton->cd(8)->SetRightMargin(0.12);
   Double_t maximumPhotons = 1.2*histoGammaArmenteros->GetMaximum();
   histoGammaArmenteros->GetZaxis()->SetRangeUser(1/nEvt,maximumPhotons);
   DrawAutoGammaHisto2D( histoGammaArmenteros,  
                  "", "#alpha = (p^{+}_{L}-p^{-}_{L})/(p^{+}_{L}+p^{-}_{L})", "q_{T} (GeV/c)",  "",
                  kFALSE, -10., 10., 
                  kTRUE, -1., 1.,0.95);
 
   canvasPhoton->Update();
   canvasPhoton->SaveAs(Form("fig_ga_Photons.%s",suffix.Data()));
   
}

 processProduceFastQA.C:1
 processProduceFastQA.C:2
 processProduceFastQA.C:3
 processProduceFastQA.C:4
 processProduceFastQA.C:5
 processProduceFastQA.C:6
 processProduceFastQA.C:7
 processProduceFastQA.C:8
 processProduceFastQA.C:9
 processProduceFastQA.C:10
 processProduceFastQA.C:11
 processProduceFastQA.C:12
 processProduceFastQA.C:13
 processProduceFastQA.C:14
 processProduceFastQA.C:15
 processProduceFastQA.C:16
 processProduceFastQA.C:17
 processProduceFastQA.C:18
 processProduceFastQA.C:19
 processProduceFastQA.C:20
 processProduceFastQA.C:21
 processProduceFastQA.C:22
 processProduceFastQA.C:23
 processProduceFastQA.C:24
 processProduceFastQA.C:25
 processProduceFastQA.C:26
 processProduceFastQA.C:27
 processProduceFastQA.C:28
 processProduceFastQA.C:29
 processProduceFastQA.C:30
 processProduceFastQA.C:31
 processProduceFastQA.C:32
 processProduceFastQA.C:33
 processProduceFastQA.C:34
 processProduceFastQA.C:35
 processProduceFastQA.C:36
 processProduceFastQA.C:37
 processProduceFastQA.C:38
 processProduceFastQA.C:39
 processProduceFastQA.C:40
 processProduceFastQA.C:41
 processProduceFastQA.C:42
 processProduceFastQA.C:43
 processProduceFastQA.C:44
 processProduceFastQA.C:45
 processProduceFastQA.C:46
 processProduceFastQA.C:47
 processProduceFastQA.C:48
 processProduceFastQA.C:49
 processProduceFastQA.C:50
 processProduceFastQA.C:51
 processProduceFastQA.C:52
 processProduceFastQA.C:53
 processProduceFastQA.C:54
 processProduceFastQA.C:55
 processProduceFastQA.C:56
 processProduceFastQA.C:57
 processProduceFastQA.C:58
 processProduceFastQA.C:59
 processProduceFastQA.C:60
 processProduceFastQA.C:61
 processProduceFastQA.C:62
 processProduceFastQA.C:63
 processProduceFastQA.C:64
 processProduceFastQA.C:65
 processProduceFastQA.C:66
 processProduceFastQA.C:67
 processProduceFastQA.C:68
 processProduceFastQA.C:69
 processProduceFastQA.C:70
 processProduceFastQA.C:71
 processProduceFastQA.C:72
 processProduceFastQA.C:73
 processProduceFastQA.C:74
 processProduceFastQA.C:75
 processProduceFastQA.C:76
 processProduceFastQA.C:77
 processProduceFastQA.C:78
 processProduceFastQA.C:79
 processProduceFastQA.C:80
 processProduceFastQA.C:81
 processProduceFastQA.C:82
 processProduceFastQA.C:83
 processProduceFastQA.C:84
 processProduceFastQA.C:85
 processProduceFastQA.C:86
 processProduceFastQA.C:87
 processProduceFastQA.C:88
 processProduceFastQA.C:89
 processProduceFastQA.C:90
 processProduceFastQA.C:91
 processProduceFastQA.C:92
 processProduceFastQA.C:93
 processProduceFastQA.C:94
 processProduceFastQA.C:95
 processProduceFastQA.C:96
 processProduceFastQA.C:97
 processProduceFastQA.C:98
 processProduceFastQA.C:99
 processProduceFastQA.C:100
 processProduceFastQA.C:101
 processProduceFastQA.C:102
 processProduceFastQA.C:103
 processProduceFastQA.C:104
 processProduceFastQA.C:105
 processProduceFastQA.C:106
 processProduceFastQA.C:107
 processProduceFastQA.C:108
 processProduceFastQA.C:109
 processProduceFastQA.C:110
 processProduceFastQA.C:111
 processProduceFastQA.C:112
 processProduceFastQA.C:113
 processProduceFastQA.C:114
 processProduceFastQA.C:115
 processProduceFastQA.C:116
 processProduceFastQA.C:117
 processProduceFastQA.C:118
 processProduceFastQA.C:119
 processProduceFastQA.C:120
 processProduceFastQA.C:121
 processProduceFastQA.C:122
 processProduceFastQA.C:123
 processProduceFastQA.C:124
 processProduceFastQA.C:125
 processProduceFastQA.C:126
 processProduceFastQA.C:127
 processProduceFastQA.C:128
 processProduceFastQA.C:129
 processProduceFastQA.C:130
 processProduceFastQA.C:131
 processProduceFastQA.C:132
 processProduceFastQA.C:133
 processProduceFastQA.C:134
 processProduceFastQA.C:135
 processProduceFastQA.C:136
 processProduceFastQA.C:137
 processProduceFastQA.C:138
 processProduceFastQA.C:139
 processProduceFastQA.C:140
 processProduceFastQA.C:141
 processProduceFastQA.C:142
 processProduceFastQA.C:143
 processProduceFastQA.C:144
 processProduceFastQA.C:145
 processProduceFastQA.C:146
 processProduceFastQA.C:147
 processProduceFastQA.C:148
 processProduceFastQA.C:149
 processProduceFastQA.C:150
 processProduceFastQA.C:151
 processProduceFastQA.C:152
 processProduceFastQA.C:153
 processProduceFastQA.C:154
 processProduceFastQA.C:155
 processProduceFastQA.C:156
 processProduceFastQA.C:157
 processProduceFastQA.C:158
 processProduceFastQA.C:159
 processProduceFastQA.C:160
 processProduceFastQA.C:161
 processProduceFastQA.C:162
 processProduceFastQA.C:163
 processProduceFastQA.C:164
 processProduceFastQA.C:165
 processProduceFastQA.C:166
 processProduceFastQA.C:167
 processProduceFastQA.C:168
 processProduceFastQA.C:169
 processProduceFastQA.C:170
 processProduceFastQA.C:171
 processProduceFastQA.C:172
 processProduceFastQA.C:173
 processProduceFastQA.C:174
 processProduceFastQA.C:175
 processProduceFastQA.C:176
 processProduceFastQA.C:177
 processProduceFastQA.C:178
 processProduceFastQA.C:179
 processProduceFastQA.C:180
 processProduceFastQA.C:181
 processProduceFastQA.C:182
 processProduceFastQA.C:183
 processProduceFastQA.C:184
 processProduceFastQA.C:185
 processProduceFastQA.C:186
 processProduceFastQA.C:187
 processProduceFastQA.C:188
 processProduceFastQA.C:189
 processProduceFastQA.C:190
 processProduceFastQA.C:191
 processProduceFastQA.C:192
 processProduceFastQA.C:193
 processProduceFastQA.C:194
 processProduceFastQA.C:195
 processProduceFastQA.C:196
 processProduceFastQA.C:197
 processProduceFastQA.C:198
 processProduceFastQA.C:199
 processProduceFastQA.C:200
 processProduceFastQA.C:201
 processProduceFastQA.C:202
 processProduceFastQA.C:203
 processProduceFastQA.C:204
 processProduceFastQA.C:205
 processProduceFastQA.C:206
 processProduceFastQA.C:207
 processProduceFastQA.C:208
 processProduceFastQA.C:209
 processProduceFastQA.C:210
 processProduceFastQA.C:211
 processProduceFastQA.C:212
 processProduceFastQA.C:213
 processProduceFastQA.C:214
 processProduceFastQA.C:215
 processProduceFastQA.C:216
 processProduceFastQA.C:217
 processProduceFastQA.C:218
 processProduceFastQA.C:219
 processProduceFastQA.C:220
 processProduceFastQA.C:221
 processProduceFastQA.C:222
 processProduceFastQA.C:223
 processProduceFastQA.C:224
 processProduceFastQA.C:225
 processProduceFastQA.C:226
 processProduceFastQA.C:227
 processProduceFastQA.C:228
 processProduceFastQA.C:229
 processProduceFastQA.C:230
 processProduceFastQA.C:231
 processProduceFastQA.C:232
 processProduceFastQA.C:233
 processProduceFastQA.C:234
 processProduceFastQA.C:235
 processProduceFastQA.C:236
 processProduceFastQA.C:237
 processProduceFastQA.C:238
 processProduceFastQA.C:239
 processProduceFastQA.C:240
 processProduceFastQA.C:241
 processProduceFastQA.C:242
 processProduceFastQA.C:243
 processProduceFastQA.C:244
 processProduceFastQA.C:245
 processProduceFastQA.C:246
 processProduceFastQA.C:247
 processProduceFastQA.C:248
 processProduceFastQA.C:249
 processProduceFastQA.C:250
 processProduceFastQA.C:251
 processProduceFastQA.C:252
 processProduceFastQA.C:253
 processProduceFastQA.C:254
 processProduceFastQA.C:255
 processProduceFastQA.C:256
 processProduceFastQA.C:257
 processProduceFastQA.C:258
 processProduceFastQA.C:259
 processProduceFastQA.C:260
 processProduceFastQA.C:261
 processProduceFastQA.C:262
 processProduceFastQA.C:263
 processProduceFastQA.C:264
 processProduceFastQA.C:265
 processProduceFastQA.C:266
 processProduceFastQA.C:267
 processProduceFastQA.C:268
 processProduceFastQA.C:269
 processProduceFastQA.C:270
 processProduceFastQA.C:271
 processProduceFastQA.C:272
 processProduceFastQA.C:273
 processProduceFastQA.C:274
 processProduceFastQA.C:275
 processProduceFastQA.C:276
 processProduceFastQA.C:277
 processProduceFastQA.C:278
 processProduceFastQA.C:279
 processProduceFastQA.C:280
 processProduceFastQA.C:281
 processProduceFastQA.C:282
 processProduceFastQA.C:283
 processProduceFastQA.C:284
 processProduceFastQA.C:285
 processProduceFastQA.C:286
 processProduceFastQA.C:287
 processProduceFastQA.C:288
 processProduceFastQA.C:289
 processProduceFastQA.C:290
 processProduceFastQA.C:291
 processProduceFastQA.C:292
 processProduceFastQA.C:293
 processProduceFastQA.C:294
 processProduceFastQA.C:295
 processProduceFastQA.C:296
 processProduceFastQA.C:297
 processProduceFastQA.C:298
 processProduceFastQA.C:299
 processProduceFastQA.C:300
 processProduceFastQA.C:301
 processProduceFastQA.C:302
 processProduceFastQA.C:303
 processProduceFastQA.C:304
 processProduceFastQA.C:305
 processProduceFastQA.C:306
 processProduceFastQA.C:307
 processProduceFastQA.C:308
 processProduceFastQA.C:309
 processProduceFastQA.C:310
 processProduceFastQA.C:311
 processProduceFastQA.C:312
 processProduceFastQA.C:313
 processProduceFastQA.C:314
 processProduceFastQA.C:315
 processProduceFastQA.C:316
 processProduceFastQA.C:317
 processProduceFastQA.C:318
 processProduceFastQA.C:319
 processProduceFastQA.C:320
 processProduceFastQA.C:321
 processProduceFastQA.C:322
 processProduceFastQA.C:323
 processProduceFastQA.C:324
 processProduceFastQA.C:325
 processProduceFastQA.C:326
 processProduceFastQA.C:327
 processProduceFastQA.C:328
 processProduceFastQA.C:329
 processProduceFastQA.C:330
 processProduceFastQA.C:331
 processProduceFastQA.C:332
 processProduceFastQA.C:333
 processProduceFastQA.C:334
 processProduceFastQA.C:335
 processProduceFastQA.C:336
 processProduceFastQA.C:337
 processProduceFastQA.C:338
 processProduceFastQA.C:339
 processProduceFastQA.C:340
 processProduceFastQA.C:341
 processProduceFastQA.C:342
 processProduceFastQA.C:343
 processProduceFastQA.C:344
 processProduceFastQA.C:345
 processProduceFastQA.C:346
 processProduceFastQA.C:347
 processProduceFastQA.C:348
 processProduceFastQA.C:349
 processProduceFastQA.C:350
 processProduceFastQA.C:351
 processProduceFastQA.C:352
 processProduceFastQA.C:353
 processProduceFastQA.C:354
 processProduceFastQA.C:355
 processProduceFastQA.C:356
 processProduceFastQA.C:357
 processProduceFastQA.C:358
 processProduceFastQA.C:359
 processProduceFastQA.C:360
 processProduceFastQA.C:361
 processProduceFastQA.C:362
 processProduceFastQA.C:363
 processProduceFastQA.C:364
 processProduceFastQA.C:365
 processProduceFastQA.C:366
 processProduceFastQA.C:367
 processProduceFastQA.C:368
 processProduceFastQA.C:369
 processProduceFastQA.C:370
 processProduceFastQA.C:371
 processProduceFastQA.C:372
 processProduceFastQA.C:373
 processProduceFastQA.C:374
 processProduceFastQA.C:375
 processProduceFastQA.C:376
 processProduceFastQA.C:377
 processProduceFastQA.C:378
 processProduceFastQA.C:379
 processProduceFastQA.C:380
 processProduceFastQA.C:381
 processProduceFastQA.C:382
 processProduceFastQA.C:383
 processProduceFastQA.C:384
 processProduceFastQA.C:385
 processProduceFastQA.C:386
 processProduceFastQA.C:387
 processProduceFastQA.C:388
 processProduceFastQA.C:389
 processProduceFastQA.C:390
 processProduceFastQA.C:391
 processProduceFastQA.C:392
 processProduceFastQA.C:393
 processProduceFastQA.C:394
 processProduceFastQA.C:395
 processProduceFastQA.C:396
 processProduceFastQA.C:397
 processProduceFastQA.C:398
 processProduceFastQA.C:399
 processProduceFastQA.C:400
 processProduceFastQA.C:401
 processProduceFastQA.C:402
 processProduceFastQA.C:403
 processProduceFastQA.C:404
 processProduceFastQA.C:405
 processProduceFastQA.C:406
 processProduceFastQA.C:407
 processProduceFastQA.C:408
 processProduceFastQA.C:409
 processProduceFastQA.C:410
 processProduceFastQA.C:411
 processProduceFastQA.C:412
 processProduceFastQA.C:413
 processProduceFastQA.C:414
 processProduceFastQA.C:415
 processProduceFastQA.C:416
 processProduceFastQA.C:417
 processProduceFastQA.C:418
 processProduceFastQA.C:419
 processProduceFastQA.C:420
 processProduceFastQA.C:421
 processProduceFastQA.C:422
 processProduceFastQA.C:423
 processProduceFastQA.C:424
 processProduceFastQA.C:425
 processProduceFastQA.C:426
 processProduceFastQA.C:427
 processProduceFastQA.C:428
 processProduceFastQA.C:429
 processProduceFastQA.C:430
 processProduceFastQA.C:431
 processProduceFastQA.C:432
 processProduceFastQA.C:433
 processProduceFastQA.C:434
 processProduceFastQA.C:435
 processProduceFastQA.C:436
 processProduceFastQA.C:437
 processProduceFastQA.C:438
 processProduceFastQA.C:439
 processProduceFastQA.C:440
 processProduceFastQA.C:441
 processProduceFastQA.C:442
 processProduceFastQA.C:443
 processProduceFastQA.C:444
 processProduceFastQA.C:445
 processProduceFastQA.C:446
 processProduceFastQA.C:447
 processProduceFastQA.C:448
 processProduceFastQA.C:449
 processProduceFastQA.C:450
 processProduceFastQA.C:451
 processProduceFastQA.C:452
 processProduceFastQA.C:453
 processProduceFastQA.C:454
 processProduceFastQA.C:455
 processProduceFastQA.C:456
 processProduceFastQA.C:457
 processProduceFastQA.C:458
 processProduceFastQA.C:459
 processProduceFastQA.C:460
 processProduceFastQA.C:461
 processProduceFastQA.C:462
 processProduceFastQA.C:463
 processProduceFastQA.C:464
 processProduceFastQA.C:465
 processProduceFastQA.C:466
 processProduceFastQA.C:467
 processProduceFastQA.C:468
 processProduceFastQA.C:469
 processProduceFastQA.C:470
 processProduceFastQA.C:471
 processProduceFastQA.C:472
 processProduceFastQA.C:473
 processProduceFastQA.C:474
 processProduceFastQA.C:475
 processProduceFastQA.C:476
 processProduceFastQA.C:477
 processProduceFastQA.C:478
 processProduceFastQA.C:479
 processProduceFastQA.C:480
 processProduceFastQA.C:481
 processProduceFastQA.C:482
 processProduceFastQA.C:483
 processProduceFastQA.C:484
 processProduceFastQA.C:485
 processProduceFastQA.C:486
 processProduceFastQA.C:487
 processProduceFastQA.C:488
 processProduceFastQA.C:489
 processProduceFastQA.C:490
 processProduceFastQA.C:491
 processProduceFastQA.C:492
 processProduceFastQA.C:493
 processProduceFastQA.C:494
 processProduceFastQA.C:495
 processProduceFastQA.C:496
 processProduceFastQA.C:497
 processProduceFastQA.C:498
 processProduceFastQA.C:499
 processProduceFastQA.C:500
 processProduceFastQA.C:501
 processProduceFastQA.C:502
 processProduceFastQA.C:503
 processProduceFastQA.C:504
 processProduceFastQA.C:505
 processProduceFastQA.C:506
 processProduceFastQA.C:507
 processProduceFastQA.C:508
 processProduceFastQA.C:509
 processProduceFastQA.C:510
 processProduceFastQA.C:511
 processProduceFastQA.C:512
 processProduceFastQA.C:513
 processProduceFastQA.C:514
 processProduceFastQA.C:515
 processProduceFastQA.C:516
 processProduceFastQA.C:517
 processProduceFastQA.C:518
 processProduceFastQA.C:519
 processProduceFastQA.C:520
 processProduceFastQA.C:521
 processProduceFastQA.C:522
 processProduceFastQA.C:523
 processProduceFastQA.C:524
 processProduceFastQA.C:525
 processProduceFastQA.C:526
 processProduceFastQA.C:527
 processProduceFastQA.C:528
 processProduceFastQA.C:529
 processProduceFastQA.C:530
 processProduceFastQA.C:531
 processProduceFastQA.C:532
 processProduceFastQA.C:533
 processProduceFastQA.C:534
 processProduceFastQA.C:535
 processProduceFastQA.C:536
 processProduceFastQA.C:537
 processProduceFastQA.C:538
 processProduceFastQA.C:539
 processProduceFastQA.C:540
 processProduceFastQA.C:541
 processProduceFastQA.C:542
 processProduceFastQA.C:543
 processProduceFastQA.C:544
 processProduceFastQA.C:545
 processProduceFastQA.C:546
 processProduceFastQA.C:547
 processProduceFastQA.C:548
 processProduceFastQA.C:549
 processProduceFastQA.C:550
 processProduceFastQA.C:551
 processProduceFastQA.C:552
 processProduceFastQA.C:553
 processProduceFastQA.C:554
 processProduceFastQA.C:555
 processProduceFastQA.C:556
 processProduceFastQA.C:557
 processProduceFastQA.C:558
 processProduceFastQA.C:559
 processProduceFastQA.C:560
 processProduceFastQA.C:561
 processProduceFastQA.C:562
 processProduceFastQA.C:563
 processProduceFastQA.C:564
 processProduceFastQA.C:565
 processProduceFastQA.C:566
 processProduceFastQA.C:567
 processProduceFastQA.C:568
 processProduceFastQA.C:569
 processProduceFastQA.C:570
 processProduceFastQA.C:571
 processProduceFastQA.C:572
 processProduceFastQA.C:573
 processProduceFastQA.C:574
 processProduceFastQA.C:575
 processProduceFastQA.C:576
 processProduceFastQA.C:577
 processProduceFastQA.C:578
 processProduceFastQA.C:579
 processProduceFastQA.C:580
 processProduceFastQA.C:581
 processProduceFastQA.C:582
 processProduceFastQA.C:583
 processProduceFastQA.C:584
 processProduceFastQA.C:585
 processProduceFastQA.C:586
 processProduceFastQA.C:587
 processProduceFastQA.C:588
 processProduceFastQA.C:589
 processProduceFastQA.C:590
 processProduceFastQA.C:591
 processProduceFastQA.C:592
 processProduceFastQA.C:593
 processProduceFastQA.C:594
 processProduceFastQA.C:595
 processProduceFastQA.C:596
 processProduceFastQA.C:597
 processProduceFastQA.C:598
 processProduceFastQA.C:599
 processProduceFastQA.C:600
 processProduceFastQA.C:601
 processProduceFastQA.C:602
 processProduceFastQA.C:603
 processProduceFastQA.C:604
 processProduceFastQA.C:605
 processProduceFastQA.C:606
 processProduceFastQA.C:607
 processProduceFastQA.C:608
 processProduceFastQA.C:609
 processProduceFastQA.C:610
 processProduceFastQA.C:611
 processProduceFastQA.C:612
 processProduceFastQA.C:613
 processProduceFastQA.C:614
 processProduceFastQA.C:615
 processProduceFastQA.C:616
 processProduceFastQA.C:617
 processProduceFastQA.C:618
 processProduceFastQA.C:619
 processProduceFastQA.C:620
 processProduceFastQA.C:621
 processProduceFastQA.C:622
 processProduceFastQA.C:623
 processProduceFastQA.C:624
 processProduceFastQA.C:625
 processProduceFastQA.C:626
 processProduceFastQA.C:627
 processProduceFastQA.C:628
 processProduceFastQA.C:629
 processProduceFastQA.C:630
 processProduceFastQA.C:631
 processProduceFastQA.C:632
 processProduceFastQA.C:633
 processProduceFastQA.C:634
 processProduceFastQA.C:635
 processProduceFastQA.C:636
 processProduceFastQA.C:637
 processProduceFastQA.C:638
 processProduceFastQA.C:639
 processProduceFastQA.C:640
 processProduceFastQA.C:641
 processProduceFastQA.C:642
 processProduceFastQA.C:643
 processProduceFastQA.C:644
 processProduceFastQA.C:645
 processProduceFastQA.C:646
 processProduceFastQA.C:647
 processProduceFastQA.C:648
 processProduceFastQA.C:649
 processProduceFastQA.C:650
 processProduceFastQA.C:651
 processProduceFastQA.C:652
 processProduceFastQA.C:653
 processProduceFastQA.C:654
 processProduceFastQA.C:655
 processProduceFastQA.C:656
 processProduceFastQA.C:657
 processProduceFastQA.C:658
 processProduceFastQA.C:659
 processProduceFastQA.C:660
 processProduceFastQA.C:661
 processProduceFastQA.C:662
 processProduceFastQA.C:663
 processProduceFastQA.C:664
 processProduceFastQA.C:665
 processProduceFastQA.C:666
 processProduceFastQA.C:667
 processProduceFastQA.C:668
 processProduceFastQA.C:669
 processProduceFastQA.C:670
 processProduceFastQA.C:671
 processProduceFastQA.C:672
 processProduceFastQA.C:673
 processProduceFastQA.C:674
 processProduceFastQA.C:675
 processProduceFastQA.C:676
 processProduceFastQA.C:677
 processProduceFastQA.C:678
 processProduceFastQA.C:679
 processProduceFastQA.C:680
 processProduceFastQA.C:681
 processProduceFastQA.C:682
 processProduceFastQA.C:683
 processProduceFastQA.C:684
 processProduceFastQA.C:685
 processProduceFastQA.C:686
 processProduceFastQA.C:687
 processProduceFastQA.C:688
 processProduceFastQA.C:689
 processProduceFastQA.C:690
 processProduceFastQA.C:691
 processProduceFastQA.C:692
 processProduceFastQA.C:693
 processProduceFastQA.C:694
 processProduceFastQA.C:695
 processProduceFastQA.C:696
 processProduceFastQA.C:697
 processProduceFastQA.C:698
 processProduceFastQA.C:699
 processProduceFastQA.C:700
 processProduceFastQA.C:701
 processProduceFastQA.C:702
 processProduceFastQA.C:703
 processProduceFastQA.C:704
 processProduceFastQA.C:705
 processProduceFastQA.C:706
 processProduceFastQA.C:707
 processProduceFastQA.C:708
 processProduceFastQA.C:709
 processProduceFastQA.C:710
 processProduceFastQA.C:711
 processProduceFastQA.C:712
 processProduceFastQA.C:713
 processProduceFastQA.C:714
 processProduceFastQA.C:715
 processProduceFastQA.C:716
 processProduceFastQA.C:717
 processProduceFastQA.C:718
 processProduceFastQA.C:719
 processProduceFastQA.C:720
 processProduceFastQA.C:721
 processProduceFastQA.C:722
 processProduceFastQA.C:723
 processProduceFastQA.C:724
 processProduceFastQA.C:725
 processProduceFastQA.C:726
 processProduceFastQA.C:727
 processProduceFastQA.C:728
 processProduceFastQA.C:729
 processProduceFastQA.C:730
 processProduceFastQA.C:731
 processProduceFastQA.C:732
 processProduceFastQA.C:733
 processProduceFastQA.C:734
 processProduceFastQA.C:735
 processProduceFastQA.C:736
 processProduceFastQA.C:737
 processProduceFastQA.C:738
 processProduceFastQA.C:739
 processProduceFastQA.C:740
 processProduceFastQA.C:741
 processProduceFastQA.C:742
 processProduceFastQA.C:743
 processProduceFastQA.C:744
 processProduceFastQA.C:745
 processProduceFastQA.C:746
 processProduceFastQA.C:747
 processProduceFastQA.C:748
 processProduceFastQA.C:749
 processProduceFastQA.C:750
 processProduceFastQA.C:751
 processProduceFastQA.C:752
 processProduceFastQA.C:753
 processProduceFastQA.C:754
 processProduceFastQA.C:755
 processProduceFastQA.C:756
 processProduceFastQA.C:757
 processProduceFastQA.C:758
 processProduceFastQA.C:759
 processProduceFastQA.C:760
 processProduceFastQA.C:761
 processProduceFastQA.C:762
 processProduceFastQA.C:763
 processProduceFastQA.C:764
 processProduceFastQA.C:765
 processProduceFastQA.C:766
 processProduceFastQA.C:767
 processProduceFastQA.C:768
 processProduceFastQA.C:769
 processProduceFastQA.C:770
 processProduceFastQA.C:771
 processProduceFastQA.C:772
 processProduceFastQA.C:773
 processProduceFastQA.C:774
 processProduceFastQA.C:775
 processProduceFastQA.C:776
 processProduceFastQA.C:777
 processProduceFastQA.C:778
 processProduceFastQA.C:779
 processProduceFastQA.C:780
 processProduceFastQA.C:781
 processProduceFastQA.C:782
 processProduceFastQA.C:783
 processProduceFastQA.C:784
 processProduceFastQA.C:785
 processProduceFastQA.C:786
 processProduceFastQA.C:787
 processProduceFastQA.C:788
 processProduceFastQA.C:789
 processProduceFastQA.C:790
 processProduceFastQA.C:791
 processProduceFastQA.C:792
 processProduceFastQA.C:793
 processProduceFastQA.C:794
 processProduceFastQA.C:795
 processProduceFastQA.C:796
 processProduceFastQA.C:797
 processProduceFastQA.C:798
 processProduceFastQA.C:799
 processProduceFastQA.C:800
 processProduceFastQA.C:801
 processProduceFastQA.C:802
 processProduceFastQA.C:803
 processProduceFastQA.C:804
 processProduceFastQA.C:805
 processProduceFastQA.C:806
 processProduceFastQA.C:807
 processProduceFastQA.C:808
 processProduceFastQA.C:809
 processProduceFastQA.C:810
 processProduceFastQA.C:811
 processProduceFastQA.C:812
 processProduceFastQA.C:813
 processProduceFastQA.C:814
 processProduceFastQA.C:815
 processProduceFastQA.C:816
 processProduceFastQA.C:817
 processProduceFastQA.C:818
 processProduceFastQA.C:819
 processProduceFastQA.C:820
 processProduceFastQA.C:821
 processProduceFastQA.C:822
 processProduceFastQA.C:823
 processProduceFastQA.C:824
 processProduceFastQA.C:825
 processProduceFastQA.C:826
 processProduceFastQA.C:827
 processProduceFastQA.C:828
 processProduceFastQA.C:829
 processProduceFastQA.C:830
 processProduceFastQA.C:831
 processProduceFastQA.C:832
 processProduceFastQA.C:833
 processProduceFastQA.C:834
 processProduceFastQA.C:835
 processProduceFastQA.C:836
 processProduceFastQA.C:837
 processProduceFastQA.C:838
 processProduceFastQA.C:839
 processProduceFastQA.C:840
 processProduceFastQA.C:841
 processProduceFastQA.C:842
 processProduceFastQA.C:843
 processProduceFastQA.C:844
 processProduceFastQA.C:845
 processProduceFastQA.C:846
 processProduceFastQA.C:847
 processProduceFastQA.C:848
 processProduceFastQA.C:849
 processProduceFastQA.C:850
 processProduceFastQA.C:851
 processProduceFastQA.C:852
 processProduceFastQA.C:853
 processProduceFastQA.C:854
 processProduceFastQA.C:855
 processProduceFastQA.C:856
 processProduceFastQA.C:857
 processProduceFastQA.C:858
 processProduceFastQA.C:859
 processProduceFastQA.C:860
 processProduceFastQA.C:861
 processProduceFastQA.C:862
 processProduceFastQA.C:863
 processProduceFastQA.C:864
 processProduceFastQA.C:865
 processProduceFastQA.C:866
 processProduceFastQA.C:867
 processProduceFastQA.C:868
 processProduceFastQA.C:869
 processProduceFastQA.C:870
 processProduceFastQA.C:871
 processProduceFastQA.C:872
 processProduceFastQA.C:873
 processProduceFastQA.C:874
 processProduceFastQA.C:875
 processProduceFastQA.C:876
 processProduceFastQA.C:877
 processProduceFastQA.C:878
 processProduceFastQA.C:879
 processProduceFastQA.C:880
 processProduceFastQA.C:881
 processProduceFastQA.C:882
 processProduceFastQA.C:883
 processProduceFastQA.C:884
 processProduceFastQA.C:885
 processProduceFastQA.C:886
 processProduceFastQA.C:887
 processProduceFastQA.C:888
 processProduceFastQA.C:889
 processProduceFastQA.C:890
 processProduceFastQA.C:891
 processProduceFastQA.C:892
 processProduceFastQA.C:893
 processProduceFastQA.C:894
 processProduceFastQA.C:895
 processProduceFastQA.C:896
 processProduceFastQA.C:897
 processProduceFastQA.C:898
 processProduceFastQA.C:899
 processProduceFastQA.C:900
 processProduceFastQA.C:901
 processProduceFastQA.C:902
 processProduceFastQA.C:903
 processProduceFastQA.C:904
 processProduceFastQA.C:905
 processProduceFastQA.C:906
 processProduceFastQA.C:907
 processProduceFastQA.C:908
 processProduceFastQA.C:909
 processProduceFastQA.C:910
 processProduceFastQA.C:911
 processProduceFastQA.C:912
 processProduceFastQA.C:913
 processProduceFastQA.C:914
 processProduceFastQA.C:915
 processProduceFastQA.C:916
 processProduceFastQA.C:917
 processProduceFastQA.C:918
 processProduceFastQA.C:919
 processProduceFastQA.C:920
 processProduceFastQA.C:921
 processProduceFastQA.C:922
 processProduceFastQA.C:923
 processProduceFastQA.C:924
 processProduceFastQA.C:925
 processProduceFastQA.C:926
 processProduceFastQA.C:927
 processProduceFastQA.C:928
 processProduceFastQA.C:929
 processProduceFastQA.C:930
 processProduceFastQA.C:931
 processProduceFastQA.C:932
 processProduceFastQA.C:933
 processProduceFastQA.C:934
 processProduceFastQA.C:935
 processProduceFastQA.C:936
 processProduceFastQA.C:937
 processProduceFastQA.C:938
 processProduceFastQA.C:939
 processProduceFastQA.C:940
 processProduceFastQA.C:941
 processProduceFastQA.C:942
 processProduceFastQA.C:943
 processProduceFastQA.C:944
 processProduceFastQA.C:945
 processProduceFastQA.C:946
 processProduceFastQA.C:947
 processProduceFastQA.C:948
 processProduceFastQA.C:949
 processProduceFastQA.C:950
 processProduceFastQA.C:951
 processProduceFastQA.C:952
 processProduceFastQA.C:953
 processProduceFastQA.C:954
 processProduceFastQA.C:955
 processProduceFastQA.C:956
 processProduceFastQA.C:957
 processProduceFastQA.C:958
 processProduceFastQA.C:959
 processProduceFastQA.C:960
 processProduceFastQA.C:961
 processProduceFastQA.C:962
 processProduceFastQA.C:963
 processProduceFastQA.C:964
 processProduceFastQA.C:965
 processProduceFastQA.C:966
 processProduceFastQA.C:967
 processProduceFastQA.C:968
 processProduceFastQA.C:969
 processProduceFastQA.C:970
 processProduceFastQA.C:971
 processProduceFastQA.C:972
 processProduceFastQA.C:973
 processProduceFastQA.C:974
 processProduceFastQA.C:975
 processProduceFastQA.C:976
 processProduceFastQA.C:977
 processProduceFastQA.C:978
 processProduceFastQA.C:979
 processProduceFastQA.C:980
 processProduceFastQA.C:981
 processProduceFastQA.C:982
 processProduceFastQA.C:983
 processProduceFastQA.C:984
 processProduceFastQA.C:985
 processProduceFastQA.C:986
 processProduceFastQA.C:987
 processProduceFastQA.C:988
 processProduceFastQA.C:989
 processProduceFastQA.C:990
 processProduceFastQA.C:991
 processProduceFastQA.C:992
 processProduceFastQA.C:993
 processProduceFastQA.C:994
 processProduceFastQA.C:995
 processProduceFastQA.C:996
 processProduceFastQA.C:997
 processProduceFastQA.C:998
 processProduceFastQA.C:999
 processProduceFastQA.C:1000
 processProduceFastQA.C:1001
 processProduceFastQA.C:1002
 processProduceFastQA.C:1003
 processProduceFastQA.C:1004
 processProduceFastQA.C:1005
 processProduceFastQA.C:1006
 processProduceFastQA.C:1007
 processProduceFastQA.C:1008
 processProduceFastQA.C:1009
 processProduceFastQA.C:1010
 processProduceFastQA.C:1011
 processProduceFastQA.C:1012
 processProduceFastQA.C:1013
 processProduceFastQA.C:1014
 processProduceFastQA.C:1015
 processProduceFastQA.C:1016
 processProduceFastQA.C:1017
 processProduceFastQA.C:1018
 processProduceFastQA.C:1019
 processProduceFastQA.C:1020
 processProduceFastQA.C:1021
 processProduceFastQA.C:1022
 processProduceFastQA.C:1023
 processProduceFastQA.C:1024
 processProduceFastQA.C:1025
 processProduceFastQA.C:1026
 processProduceFastQA.C:1027
 processProduceFastQA.C:1028
 processProduceFastQA.C:1029
 processProduceFastQA.C:1030
 processProduceFastQA.C:1031
 processProduceFastQA.C:1032
 processProduceFastQA.C:1033
 processProduceFastQA.C:1034
 processProduceFastQA.C:1035
 processProduceFastQA.C:1036
 processProduceFastQA.C:1037
 processProduceFastQA.C:1038
 processProduceFastQA.C:1039
 processProduceFastQA.C:1040
 processProduceFastQA.C:1041
 processProduceFastQA.C:1042
 processProduceFastQA.C:1043
 processProduceFastQA.C:1044
 processProduceFastQA.C:1045
 processProduceFastQA.C:1046
 processProduceFastQA.C:1047
 processProduceFastQA.C:1048
 processProduceFastQA.C:1049
 processProduceFastQA.C:1050
 processProduceFastQA.C:1051
 processProduceFastQA.C:1052
 processProduceFastQA.C:1053
 processProduceFastQA.C:1054
 processProduceFastQA.C:1055
 processProduceFastQA.C:1056
 processProduceFastQA.C:1057
 processProduceFastQA.C:1058