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.                     *****
 ****************************************************************************************************************************/

#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 ProduceFastQA(TString fileNameInput = "myOutput", TString cutSelection = "5080001022092970023220000000", TString suffix = "eps", TString optEnergy="", TString optMCGenerator="", TString optPeriod=""){   
   
   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());
   }

   if(optMCGenerator.CompareTo("") ==0){
      textGenerator = "";
   } else {
      textGenerator = optMCGenerator;
   }
   
   TFile*  fileInput = new TFile(fileNameInput.Data());
   TDirectory* directoryQA = (TDirectory*)fileInput->Get(Form("GammaConvV1_QA_%s",cutSelection.Data())); 
   TList* listQA = (TList*)directoryQA->Get(Form("GammaConv_V1QA_%s",cutSelection.Data()));
   TList* listQAESD = (TList*)listQA->FindObject("ESD QA");
   TH1F* histoVertexZ =             (TH1F*)listQAESD->FindObject("Vertex_Z");
   histoVertexZ->Sumw2();
   Double_t nEvt = histoVertexZ->GetEntries();
   histoVertexZ->Scale(1./nEvt);
   
   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);
   
   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);
   
   TH1I* histoV0Mult = (TH1I*)listQAESD->FindObject("V0 Multiplicity");
   TH1D* histoDV0Mult = new TH1D("V0 Multiplicity","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);
   
   
   TH2F* histoITSClusterPhi = (TH2F*)listQAESD->FindObject("ITSClusterPhi");
   histoITSClusterPhi->Sumw2();
   histoITSClusterPhi->Scale(1./nEvt);
   
   TH1F* histoGammaPt = (TH1F*)listQAESD->FindObject("Gamma_Pt");
   Double_t nGamma = histoGammaPt->GetEntries();
   histoGammaPt->Sumw2();
   histoGammaPt->Scale(1./nEvt);
   
   
   TH1F* histoGammaPhi = (TH1F*)listQAESD->FindObject("Gamma_Phi");
   histoGammaPhi->Sumw2();
   histoGammaPhi->Scale(1./nEvt);
   histoGammaPhi->Rebin(2);
   
   TH1F* histoGammaEta = (TH1F*)listQAESD->FindObject("Gamma_Eta");
   histoGammaEta->Sumw2();
   histoGammaEta->Scale(1./nEvt);
   histoGammaEta->Rebin(2);
   
   TH1F* histoGammaChi2 = (TH1F*)listQAESD->FindObject("Gamma_Chi2perNDF");
   histoGammaChi2->Sumw2();
   histoGammaChi2->Scale(1./nEvt);
   
   TH1F* histoGammaPsiPair = (TH1F*)listQAESD->FindObject("Gamma_PsiPair");
   histoGammaPsiPair->Sumw2();
   histoGammaPsiPair->Scale(1./nEvt);
   
   TH1F* histoGammaCosPoint = (TH1F*)listQAESD->FindObject("Gamma_CosinePointingAngle");
   histoGammaCosPoint->Sumw2();
   histoGammaCosPoint->Scale(1./nEvt);
   
   TH1F* histoGammaInvMass = (TH1F*)listQAESD->FindObject("Gamma_InvMass");
   histoGammaInvMass->Sumw2();
   histoGammaInvMass->Scale(1./nEvt);
   
   TH2F* histoGammaArmenteros = (TH2F*)listQAESD->FindObject("Gamma_Armenteros");
   histoGammaArmenteros->Sumw2();
   histoGammaArmenteros->Scale(1./nEvt);
   
   TH2F* histoEPPt = (TH2F*)listQAESD->FindObject("Electron_Positron_Pt");
   histoEPPt->Sumw2();
   histoEPPt->Scale(1./nEvt);
   
   TH2F* histoEPEta = (TH2F*)listQAESD->FindObject("Electron_Positron_Eta");
   histoEPEta->Sumw2();
   histoEPEta->Scale(1./nEvt);
   
   TH2F* histoEPPhi = (TH2F*)listQAESD->FindObject("Electron_Positron_Phi");
   histoEPPhi->Sumw2();
   histoEPPhi->Scale(1./nEvt);
   
   TH1F* histoEFindableClusterTPC = (TH1F*)listQAESD->FindObject("Electron_findableClusterTPC");
   histoEFindableClusterTPC->Sumw2();
   histoEFindableClusterTPC->Scale(1./nEvt);
   
   TH1F* histoPFindableClusterTPC = (TH1F*)listQAESD->FindObject("Positron_findableClusterTPC");
   histoPFindableClusterTPC->Sumw2();
   histoPFindableClusterTPC->Scale(1./nEvt);
   
   TH2F* histoEdEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_dEdx_P");
   Double_t nElectronTPC = histoEdEdxPTPC->GetEntries();
   histoEdEdxPTPC->Sumw2();
   histoEdEdxPTPC->Scale(1./nEvt);
   TH2F* histoPdEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_dEdx_P");
   Double_t nPositronTPC = histoPdEdxPTPC->GetEntries();
   histoPdEdxPTPC->Sumw2();
   histoPdEdxPTPC->Scale(1./nEvt);
   TH2F* histoENSigmadEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_NSigmadEdx_P");
   histoENSigmadEdxPTPC->Sumw2();
   histoENSigmadEdxPTPC->Scale(1./nEvt);
   TH2F* histoPNSigmadEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_NSigmadEdx_P");
   histoPNSigmadEdxPTPC->Sumw2();
   histoPNSigmadEdxPTPC->Scale(1./nEvt);
   TH2F* histoENSigmaPiondEdxPTPC = (TH2F*)listQAESD->FindObject("Electron_NSigmaPiondEdx_P");
   histoENSigmaPiondEdxPTPC->Sumw2();
   histoENSigmaPiondEdxPTPC->Scale(1./nEvt);
   TH2F* histoPNSigmaPiondEdxPTPC = (TH2F*)listQAESD->FindObject("Positron_NSigmaPiondEdx_P");
   histoPNSigmaPiondEdxPTPC->Sumw2();
   histoPNSigmaPiondEdxPTPC->Scale(1./nEvt);
   
   TH2F* histoETOFP = (TH2F*)listQAESD->FindObject("Electron_TOF_P");
   Double_t nElectronTOF = histoETOFP->GetEntries();
   histoETOFP->Sumw2();
   histoETOFP->Scale(1./nEvt);
   TH2F* histoPTOFP = (TH2F*)listQAESD->FindObject("Positron_TOF_P");
   Double_t nPositronTOF = histoPTOFP->GetEntries();
   histoPTOFP->Sumw2();
   histoPTOFP->Scale(1./nEvt);
   TH2F* histoENSigmaTOFP = (TH2F*)listQAESD->FindObject("Electron_NSigmaTOF_P");
   histoENSigmaTOFP->Sumw2();
   histoENSigmaTOFP->Scale(1./nEvt);
   TH2F* histoPNSigmaTOFP = (TH2F*)listQAESD->FindObject("Positron_NSigmaTOF_P");
   histoPNSigmaTOFP->Sumw2();
   histoPNSigmaTOFP->Scale(1./nEvt);
   
   TH2F* histoEdEdxPITS = (TH2F*)listQAESD->FindObject("Electron_ITSdEdx_P");
   Double_t nElectronITS = histoEdEdxPITS->GetEntries();
   histoEdEdxPITS->Sumw2();
   histoEdEdxPITS->Scale(1./nEvt);
   TH2F* histoPdEdxPITS = (TH2F*)listQAESD->FindObject("Positron_ITSdEdx_P");
   Double_t nPositronITS = histoPdEdxPITS->GetEntries();
   histoPdEdxPITS->Sumw2();
   histoPdEdxPITS->Scale(1./nEvt);
   TH2F* histoENSigmadEdxPITS = (TH2F*)listQAESD->FindObject("Electron_NSigmaITS_P");
   histoENSigmadEdxPITS->Sumw2();
   histoENSigmadEdxPITS->Scale(1./nEvt);
   TH2F* histoPNSigmadEdxPITS = (TH2F*)listQAESD->FindObject("Positron_NSigmaITS_P");
   histoPNSigmadEdxPITS->Sumw2();
   histoPNSigmadEdxPITS->Scale(1./nEvt);
   
   
   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("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("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("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("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();
   Double_t nGammaPerEvt = nGamma/nEvt;
   TLatex *labelPhotonsPerEvent = new TLatex(0.18,0.18,Form("N_{#gamma}/N_{Evt} = %4.4f",nGammaPerEvt));
   SetStyleTLatex( labelPhotonsPerEvent, 0.05,4);
   labelPhotonsPerEvent->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("Photons.%s",suffix.Data()));
   
}

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