ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TFile.h>
#include <TFileMerger.h>
#include <TAlienFile.h>
#include <TSystem.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <Riostream.h>
#include <TObjArray.h>
#include <TClass.h>
#include <TKey.h>
#include <TFile.h>
#include <TFileMerger.h>
#include <TAlienFile.h>
//#include <TExec.h>
#include <TSystem.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <Riostream.h>
#include <TObjArray.h>
#include <TClass.h>
#include <TH1F.h>
#include <TH2D.h>
#include <TH2F.h>
#include <TF1.h>
#include <TStyle.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <TMath.h>
#include <TString.h>
#include "AliRecoParam.h"
#endif

enum rawexpert_t{pattern,patternnorm,layer3norm,layer4norm,layer3occ,layer4occ,rawcheck,rawtot};
enum nonrawexpert_t{layer3,layer4,calibl3,calibl4,nonrawtot};

enum rpexpert_t{rlocaldistro,rlayer3norm,rlayer4norm,rmodpattern,rmodpatternnorm,rphilayer3,rphilayer4,rrlayer3,rrlayer4,occlayer3,occlayer4,recraw2dlayer3,recraw2dlayer4,recrawlayer3,recrawlayer4,dedxlayer3,dedxlayer4,rlayer3,rlayer4,recpointcheck,rtot};
enum rnonexpert_t{rphizlayer3,rphizlayer4,rglobalrz,rglobalxy,rchargelayer3,rchargelayer4,rtimelayer3,rtimelayer4,nrtot};

enum canvsname_t{canvname0,canvname1,canvname2,canvname3,canvname4,canvname5,canvname6,canvname7,canvname8,canvname9,canvname10,canvname11,canvname12,canvname13,canvname14,canvname15,canvname16,canvname17,canvname18,canvname19,canvname20,canvname21,canvname22,canvname23,canvasname24,canvasname25,canvasname26};//27



void PlotQASDD(Char_t fileName[100]="File.QA.111333.2010.LHC09b.pass2.root",Bool_t kDoEps=kFALSE,Char_t eventspecie[25]="LowMultiplicity")
{
  const TString Rawsexpertname[]={"SDDModPattern",//0     1
				  "SDDModPatternNORM",//1  //1
				  "SDDphizL3NORM",    //2  //0
				  "SDDphizL4NORM",    //3  //0
				  "SDDL3_RelativeOccupancy", //4     4  5
				  "SDDL4_RelativeOccupancy",//5      4  5
				  "SDDRawDataCheck"//6              6
                                  };//tot 7
  const TString Rawsnonexpertname[]={"SDDphizL3",//0   2         
				     "SDDphizL4",//1    2
				     "SDDphizCalibL3",//2  //   3
				     "SDDphizCalibL4"//3     3
                                     };//tot 4

  const TString RecPointsexpertname[]={"SDDLocalCoordDistrib",//0    //11
				       "SDDModPatternL3RP",//1       //12
				       "SDDModPatternL4RP",//2       //12
				       "SDDModPatternL3RPNORM",//3   //13
				       "SDDModPatternL4RPNORM",//4   //13
				       "SDDModPatternRP",//5         //14
				       "SDDModPatternRPNORM",//6     //14
				       "SDDphidistrib_Layer3",//7    //15
				       "SDDphidistrib_Layer4",//8    //15
				       "SDDrdistrib_Layer3",//9      //16
				       "SDDrdistrib_Layer4",//10     //16
				       "SDDL3_RelativeOccupancy",//11 //19  20
				       "SDDL4_RelativeOccupancy",//12 //19  20
				       "SDDL3_Rec2Raw_2D",       //13 //21
				       "SDDL4_Rec2Raw_2D",       //14 //21
				       "SDDL3_Rec2Raw",          //15 //22  23 
				       "SDDL4_Rec2Raw",          //16 //22  23 
				       "SDDL3_dedx",             //17 //24  25
				       "SDDL4_dedx",             //18   24  25
				       "SDDRecPointCheck"//19           26
                                       };//tot 20

  const TString RecPointsnonexpertname[]={"SDDGlobalCoordDistribL3PHIZ",//0      7
					  "SDDGlobalCoordDistribL4PHIZ",//1      7
					  "SDDGlobalCoordDistribRZ",//2          8
					  "SDDGlobalCoordDistribYX",//3          8
					  "SDDLay3TotCh",           //4          9    17
					  "SDDLay4TotCh",           //5          9    17
					  "SDDdrifttime_Layer3",    //6          10   18
					  "SDDdrifttime_Layer4"//7               10   18
                                         };//tot 8

  const TString canvassavedname[]={"RawLayersNORM",                 //0
				   "Rawpatterns",                   //1
				   "RawLayers",                     //2
				   "CalibConfiguration",            //3
				   "RawLayersRelOcc",               //4
				   "RawLayersRelOccBoth",           //5
				   "CheckRawdata",                  //6
				   "RecPointsphiz",                 //7
				   "RecPointsGlobalDistributions",  //8
				   "RecPointsCharge",               //9
				   "RecPointsDriftTime",            //10
				   "RecPointsLocalDistribution",    //11
				   "RecPointsLayers",               //12
				   "RecPointsLayersNORM",           //13
				   "RecPointsLayersPatterns",       //14
				   "RecPointsPhiDistribution",      //15
				   "RecPointsRDistribution",        //16
				   "RecPointsChargeBothLayers",     //17
				   "RecPointsDriftTimeBothLayers",  //18
				   "RecPointsRelLayersOcc",         //19
				   "RecPointsLayersRelOccBoth",     //20
				   "RecPointsLayersRecRaw2D",       //21
				   "RecPointsLayersRecRaw",         //22
				   "RecPointsLayersRecRawBoth",     //23
				   "RecPointsLayersdedx",           //24
				   "RecPointsLayersdedxBoth",       //25
				   "CheckRecPoints"                 //26
				  };//tot 27

  Char_t trendfile[25]="FileQAtrend.root";

  TString psfilestart=Form("SDDQAPlot.ps[");
  TString psfile     =Form("SDDQAPlot.ps");
  TString psfileend  =Form("SDDQAPlot.ps]");


  gStyle->SetTitleFont(62,"");
  gStyle->SetTitleFontSize(0.025);
  gStyle->SetPalette(1);
  //  gStyle->SetOptStat("ne");
  if(gSystem->Exec(Form("ls %s >/dev/null 2>&1", fileName))!=0)
    {
      printf(" No file created --- Exit");
      return;
    }
  TFile mergedfile(fileName);
  if(mergedfile.GetKey("ITS")==0x0){
    printf("In this run ITS QA has not been executed.\n\nExit macro \n\n");
    return;
  }
  Char_t filepath[100];
  Char_t namecanvas[50];
  TDirectory *directory=NULL;
  TDirectory *directory2=NULL;
  Char_t histoname[200];
  TH2D *historaw=NULL;
  TH1F *historaw2=NULL;
  TH2F *histodraw=NULL;
  
  //  TH1F *histo2save[9];
  //for(Int_t i=0;i<9;i++){histo2save[i]=NULL;}
  
  TF1 *f1 = new TF1("f1","1",-100000,100000); // this is the function defined to multiply histograms
  Char_t layer[10];
  float fmax=0.;
  float fmaxold=0.;
  float fmaxmargin;
  
  Int_t cannum=0;
  //Int_t histo2savenumber[9]={4,5,6,7,7,8,3,5,1};
  TCanvas *canvas1 = new TCanvas("canvas1","SDD QA Plot",1000,600);
  //   TLegend *legend=new TLegend(0.83,0.8,0.97,0.7);
  TLegend *legend=new TLegend(0.81,0.895,0.95,0.995);
  Bool_t updatecanvas[2];
  for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
  
  // -------------This part is to read the number of chunks that were merged
  Float_t fChnknmbr=0.;
  FILE * pChunkNumber = fopen ("ChunkNumber.txt","r");
  if(pChunkNumber){
  Int_t rv=fscanf(pChunkNumber, "%f", &fChnknmbr);
  fclose (pChunkNumber);
  }
  else fChnknmbr=1.;

  gStyle->SetPalette(1);
  float fCNinv=1./fChnknmbr;
  //   printf("\n====================>%f\n\n", fCNinv);
  

  if(!mergedfile.IsOpen()){return;}else{printf("file is open\n");}

  for(Int_t ispecie=0;ispecie<AliRecoParam::kNSpecies;ispecie++){
    //__________________________________________________________________
    //raw data
    sprintf(filepath,"ITS/Raws/%s",AliRecoParam::GetEventSpecieName(ispecie));
    printf("%s",filepath);
    TString especie(filepath);
    if(!especie.Contains(eventspecie)){printf("...Found and Skipped\n");continue;}
    canvas1->Print(psfilestart.Data());
    directory=(TDirectory*)mergedfile.Get(filepath);
    if(!directory){printf("...Not Found\n ");}//faccio l'istogramma
    else{
      
      printf("...Found: The histograms of this EventSpecie will be displayed\n");
      printf("0\n");
      canvas1->Clear();
      canvas1->Divide(2,1);
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      for(Int_t iraws=2;iraws<4;iraws++){//non expert raws
	canvas1->cd(iraws-1);
	
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
	printf("histo name %s ",Rawsexpertname[iraws].Data());
	historaw=(TH2D*)mergedfile.Get(histoname);
	if(historaw){printf("...Found\n"); 	  historaw->Multiply(f1,fCNinv);  historaw->DrawCopy("colz");}
	else
	  {
	    sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
	    printf("...Not found\nSecond try for histo name %s ",Rawsexpertname[iraws].Data());
	    historaw=(TH2D*)mergedfile.Get(histoname);
	    if(historaw){printf("...Found\n");	  historaw->Multiply(f1,fCNinv);historaw->DrawCopy("colz");} 
	    else
	      {
		updatecanvas[iraws-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");
	      }
	  }
	historaw=NULL;
      }//end for	
      
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data());
	}
      //else{delete canvas1; canvas1=NULL;}
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(1,2);
      printf("1\n");
      cannum++;
      for(Int_t inraws=0;inraws<2;inraws++){//non expert raws
	canvas1->cd(inraws+1);
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[inraws].Data());
	printf("histo name %s ",Rawsexpertname[inraws].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);	
	// 	  -----------------This is the part were I divide between the number of chunks to normalize the histogram----------------
	
	
	if(historaw2)
	  {
	    printf("...Found\n");
	    if (inraws==1)
	      {
		historaw2->Multiply(f1,fCNinv);
		
	      }
	    historaw2->DrawCopy();
	  }
	else {updatecanvas[inraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas2; canvas2=NULL;}
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      printf("2\n");
      cannum++;
      canvas1->Clear();
      canvas1->Divide(2,1);
      for(Int_t iraws=0;iraws<2;iraws++){//non expert raws
	canvas1->cd(iraws+1);
	
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data());
	printf("histo name %s",Rawsnonexpertname[iraws].Data());
	historaw=(TH2D*)mergedfile.Get(histoname);
	if(historaw){
	  printf("...Found\n");
	  //	  historaw->SetTitleSize(0.02);

	  historaw->DrawCopy("colz");
	}
	else
	  {
	    sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data());
	    printf("...Not Found.\n Second Try for histo name %s",Rawsnonexpertname[iraws].Data());
	    historaw=(TH2D*)mergedfile.Get(histoname);
	    if(historaw){
	      printf("...Found\n");
	      //	      historaw->SetTitleSize(0.02);
	      historaw->Multiply(f1,fCNinv);
	      historaw->DrawCopy("colz");
	    }
	    else
	      {
		updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");
	      }
	  } 
	historaw=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas3; canvas3=NULL;}
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      printf("3\n");
      cannum++;
      canvas1->Clear();
      canvas1->Divide(2,1);
      for(Int_t iraws=2;iraws<4;iraws++){//non expert raws
	canvas1->cd(iraws-1);
	
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[iraws].Data());
	printf("histo name %s",Rawsnonexpertname[iraws].Data());
	historaw=(TH2D*)mergedfile.Get(histoname);
	if(historaw){
	  printf("...Found\n");
	  //	  historaw->SetTitleSize(0.02);
	  //	  historaw->Multiply(f1,fCNinv);
	  historaw->DrawCopy("colz");
	}
	else
	  {
	    updatecanvas[iraws]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");
	  } 
	historaw=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}

      //--------------------- new plots
      printf("================= 4\n");
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      cannum++;
      canvas1->Clear();
      canvas1->Divide(2,1);
      for(Int_t iraws=4;iraws<rawtot-1;iraws++){//non expert raws
	canvas1->cd(iraws-3);
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[iraws].Data());
	printf("histo name %s",Rawsexpertname[iraws].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->DrawCopy();
	  }else
	  {
	    updatecanvas[iraws-4]=kFALSE;
	    printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");
	  } 
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas3; canvas3=NULL;}
      
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("5\n");
      cannum++;
      for (Int_t i=4;i<rawtot-1;i++){
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==4){
	    fmaxold=fmax;}
	  if (i!=4){
	    if(fmaxold<fmax){
	      fmaxold=fmax;
	    }
	  }
	}
	historaw2=NULL;
      }
      fmaxmargin=1.1*fmaxold;
      for(Int_t irrpp=4;irrpp<rawtot-1;irrpp++){//non expert raws
	
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[irrpp].Data());
	printf("histo name %s",Rawsexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-1);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("Raw Relative Occupancy");
	    if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //---------------------------- summary plot ------------------------//
      printf("6\n");
      canvas1->Clear();
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[rawtot-1].Data());
      printf("histo name %s",Rawsexpertname[rawtot-1].Data());
      cannum++;
      historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->SetStats(0);
	    historaw2->DrawCopy();
	    canvas1->Update();
	  }
	else{updatecanvas[0]=kFALSE;updatecanvas[1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
	if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	  {
	    canvas1->Update();
	    if(kDoEps){
	      sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	      canvas1->SaveAs(namecanvas);
	    }
	    canvas1->Print(psfile.Data()); 
	  }

    }//end if directory
	
    
    
    //_______________________________________________________________________________
    //rec point
    sprintf(filepath,"ITS/RecPoints/%s",AliRecoParam::GetEventSpecieName(ispecie));
    printf("%s\n",filepath);
    directory2=(TDirectory*)mergedfile.Get(filepath);
    if(directory2){
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("7\n");
      cannum++;
      for(Int_t irp=0;irp<2;irp++){//non expert rec point
	canvas1->cd(irp+1);
	
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irp].Data());
	printf("histo name %s ",RecPointsnonexpertname[irp].Data());
	histodraw=(TH2F*)mergedfile.Get(histoname);
	if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irp]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	histodraw=NULL;
      }
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //	else{delete canvas4; canvas4=NULL;}
      
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("8\n");
      cannum++;
      for(Int_t irrp=2;irrp<4;irrp++){//non expert raws
	canvas1->cd(irrp-1);
	
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrp].Data());
	printf("histo name %s",RecPointsnonexpertname[irrp].Data() );
	histodraw=(TH2F*)mergedfile.Get(histoname);
	if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[irrp-2]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	histodraw=NULL;
      }
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas5; canvas5=NULL;}
      
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(1,2);
      printf("9\n");
      cannum++;
      for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws
	canvas1->cd(irrpp-3);
	
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
	printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	
	if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas6; canvas6=NULL;}
      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(1,2);
      printf("10\n");
      cannum++;
      for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws
	canvas1->cd(irrpp-5);
	//	  printf("histo name\n");
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
	printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //else{delete canvas7; canvas7=NULL;}

      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      printf("11\n");
      cannum++;
      //canvas1->Divide(2,1);
      sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rlocaldistro].Data());
      printf("histo name %s",RecPointsexpertname[rlocaldistro].Data());
      histodraw=(TH2F*)mergedfile.Get(histoname);

      if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[0]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
      histodraw=NULL;
      if(updatecanvas[0]==kTRUE){
	canvas1->Update();
	if(kDoEps){
	  sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	  canvas1->SaveAs(namecanvas);
	}
	canvas1->Print(psfile.Data()); 
      }
      //else{delete canvas8; canvas8=NULL;}
       
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("12\n");
      cannum++;
      for(Int_t i=1;i<3;i++)
	{
	  canvas1->cd(i);

	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  histodraw=(TH2F*)mergedfile.Get(histoname);

	  if(histodraw){printf("...Found\n");histodraw->DrawCopy("colz");}else{updatecanvas[i-1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  histodraw=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      
      //else{delete canvas9; canvas9=NULL;}
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("13\n");
      cannum++;
      for(Int_t i=3;i<5;i++)
	{
	  canvas1->cd(i-2);

	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  histodraw=(TH2F*)mergedfile.Get(histoname);
	  printf("histo name %s",RecPointsexpertname[i].Data());

	  if(histodraw){
	    printf("...Found\n");histodraw->Multiply(f1,fCNinv);
	    histodraw->DrawCopy("colz");
	  }else{updatecanvas[i-3]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  histodraw=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}

      
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(1,2);

      printf("14\n");
      cannum++;
      for(Int_t i=5;i<7;i++)
	{
	  canvas1->cd(i-4);

	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2)
	    {
	      printf("...Found\n");
	      if (i==4){historaw2->Multiply(f1,fCNinv);}
	      historaw2->DrawCopy();
	    }
	  else{updatecanvas[i-5]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}


      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("15\n");
      cannum++;
      for(Int_t i=7;i<9;i++)
	{
	  canvas1->cd(i-6);

	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-7]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
 
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("16\n");
      cannum++;
      for(Int_t i=9;i<11;i++)
	{
	  canvas1->cd(i-8);
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-9]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
	  

      //superimposed
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("17\n");
      cannum++;
      for (Int_t i=4;i<6;i++){
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==4){
	    fmaxold=fmax;}
	  if (i!=4){
	    if(fmaxold<fmax){
	      fmaxold=fmax;
	    }
	  }
	}
	historaw2=NULL;
      }
      fmaxmargin=1.1*fmaxold;
      for(Int_t irrpp=4;irrpp<6;irrpp++){//non expert raws
    
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
	printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-1);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	  
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("Charge");
	    historaw2->SetFillColor(0);
	    if (irrpp==4) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=4) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-4]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
	  
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("18\n");
      cannum++;
      for (Int_t i=6;i<8;i++){
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==6){
	    fmaxold=fmax;}
	  if (i!=6){
	    if(fmaxold<fmax){
	      fmaxold=fmax;}}}
	fmaxmargin=1.1*fmaxold;
      }
      for(Int_t irrpp=6;irrpp<8;irrpp++){//non expert raws
    
	sprintf(histoname,"%s/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[irrpp].Data());
	printf("histo name %s",RecPointsnonexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-3);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	  
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("Drift Time");
	    historaw2->SetFillColor(0);
	    if (irrpp==6) {historaw2->SetStats(0); historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=6) {historaw2->SetStats(0); historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-6]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	printf("%s\n%s\n",historaw2->GetName(),historaw2->GetTitle());
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}

      //------------------------------------------- new plot

      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("19\n");
      cannum++;
      for(Int_t i=11;i<13;i++)
	{
	  canvas1->cd(i-10);
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-11]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
	  
      //------------------------------------
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("20\n");
      cannum++;
      for (Int_t i=11;i<13;i++){
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==4){
	    fmaxold=fmax;}
	  if (i!=4){
	    if(fmaxold<fmax){
	      fmaxold=fmax;
	    }
	  }
	}
	historaw2=NULL;
      }
      fmaxmargin=1.1*fmaxold;
      for(Int_t irrpp=11;irrpp<13;irrpp++){//non expert raws
	  
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
	printf("histo name %s",RecPointsexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-8);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	  
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("RecPoint Relative Occupancy");
	    if (irrpp==11) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=11) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-11]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}


      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("21\n");
      cannum++;
      for(Int_t i=13;i<15;i++)
	{
	  canvas1->cd(i-12);
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw=(TH2D*)mergedfile.Get(histoname);

	  if(historaw){printf("...Found\n");  historaw->DrawCopy("colz");}else{updatecanvas[i-13]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
	  


      //-----------------
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("22\n");
      cannum++;
      for(Int_t i=15;i<17;i++)
	{
	  canvas1->cd(i-14);
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
      //--------------------------------------------

      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("23\n");
      cannum++;
      for (Int_t i=15;i<17;i++){
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==15){
	    fmaxold=fmax;}
	  if (i!=15){
	    if(fmaxold<fmax){
	      fmaxold=fmax;
	    }
	  }
	}
	historaw2=NULL;
      }
      fmaxmargin=1.1*fmaxold;
      for(Int_t irrpp=15;irrpp<17;irrpp++){//non expert raws
    
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
	printf("histo name %s",RecPointsexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-12);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	  
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("Rec2Raw Ratio");
	    if (irrpp==15) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=15) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}

	  
      //--------------------------------------
	  
      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      canvas1->Divide(2,1);
      printf("24\n");
      cannum++;
      for(Int_t i=17;i<19;i++)
	{
	  canvas1->cd(i-16);
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	  printf("histo name %s",RecPointsexpertname[i].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);
		
	  if(historaw2){printf("...Found\n");historaw2->DrawCopy();}else{updatecanvas[i-17]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;
	}
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
	  

      //--------------------------------------------

      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();
      legend->Clear();
      printf("25\n");
      cannum++;
      for (Int_t i=17;i<19;i++){
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[i].Data());
	historaw2=(TH1F*)mergedfile.Get(histoname);
	if(historaw2){
	  fmax=historaw2->GetMaximum();
	  if (i==17){
	    fmaxold=fmax;}
	  if (i!=17){
	    if(fmaxold<fmax){fmaxold=fmax;}
	  }
	}
	historaw2=NULL;
      }
      fmaxmargin=1.1*fmaxold;
      for(Int_t irrpp=17;irrpp<19;irrpp++){//non expert raws
    
	sprintf(histoname,"%s/Expert/%s_%s",filepath,AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[irrpp].Data());
	printf("histo name %s",RecPointsexpertname[irrpp].Data());
	sprintf(layer, "layer %d",irrpp-14);
	historaw2=(TH1F*)mergedfile.Get(histoname);
	gStyle->SetOptStat(0);
	  
	if(historaw2)
	  {
	    printf("...Found\n");
	    historaw2->GetYaxis()->SetRangeUser(0,fmaxmargin);
	    historaw2->SetTitle("RecPoint dEdx");
	    if (irrpp==17) {historaw2->SetStats(0);historaw2->SetLineColor(2);historaw2->DrawCopy();}
	    if (irrpp!=17) {historaw2->SetStats(0);historaw2->SetLineColor(4);historaw2->DrawCopy("same");}
	    legend->AddEntry(historaw2,layer,"l");
	    legend->Draw();
	    canvas1->Update();
	  }
	else{updatecanvas[irrpp-15]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	historaw2=NULL;
      }//end for
      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 

      //------------------------summary plot ---------------//

      for(Int_t i=0;i<2;i++){updatecanvas[i]=kTRUE;}
      canvas1->Clear();

      printf("26\n");
      cannum++;


	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[rtot-1].Data());
	  printf("histo name %s",RecPointsexpertname[rtot-1].Data());
	  historaw2=(TH1F*)mergedfile.Get(histoname);

	  if(historaw2)
	    {
	      printf("...Found\n");
	
	      historaw2->DrawCopy();
	    }
	  else{updatecanvas[0]=kFALSE;updatecanvas[1]=kFALSE;printf("...Not Found: the histogram or this QA has been done before the histograms was added to QA\n");}
	  historaw2=NULL;

      if(updatecanvas[0]==kTRUE||updatecanvas[1]==kTRUE)
	{
	  canvas1->Update();
	  if(kDoEps){
	    sprintf(namecanvas,"%s.eps",canvassavedname[cannum].Data());
	    canvas1->SaveAs(namecanvas);
	  }
	  canvas1->Print(psfile.Data()); 
	}
    



	}
      canvas1->Print(psfileend.Data()); 

      TFile file2savefortrend(trendfile,"recreate");
      file2savefortrend.cd();
      
      for(Int_t isave=0;isave<nonrawtot;isave++)
	{
	  sprintf(histoname,"ITS/Raws/%s/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),Rawsnonexpertname[isave].Data());
	  historaw=(TH2D*)mergedfile.Get(histoname);
	  historaw->Write();
	  printf("Saved  %s\n",histoname);
	  historaw=NULL;
	}
      
      for(Int_t isave1=0;isave1<rawtot;isave1++)
	{
	  sprintf(histoname,"ITS/Raws/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),Rawsexpertname[isave1].Data());
	  if(isave1==2||isave1==3)
	    {
	      historaw=(TH2D*)mergedfile.Get(histoname);
	      historaw->Write();
	      historaw=NULL;
	    }
	  else
	    {
	      historaw2=(TH1F*)mergedfile.Get(histoname);
	      historaw2->Write();
	      historaw2=NULL;
	    }
	  printf("Saved %s\n",histoname);
	}
      
      for(Int_t isave2=0;isave2<nrtot;isave2++)
	{
	  sprintf(histoname,"ITS/RecPoints/%s/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsnonexpertname[isave2].Data());
	  if(isave2<4||isave2==17||isave2==18)
	    {
	      historaw=(TH2D*)mergedfile.Get(histoname);
	      historaw->Write();
	      historaw=NULL;
	    }
	  else
	    {
	      historaw2=(TH1F*)mergedfile.Get(histoname);
	      historaw2->Write();
	      historaw2=NULL;
	    }
	  printf("Saved %s\n",histoname);
	}
      for(Int_t isave3=0;isave3<rtot;isave3++)
	{
	  sprintf(histoname,"ITS/RecPoints/%s/Expert/%s_%s",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[isave3].Data());
	  //printf(histoname,"ITS/RecPoints/%s/Expert/%s_%s \n",AliRecoParam::GetEventSpecieName(ispecie),AliRecoParam::GetEventSpecieName(ispecie),RecPointsexpertname[isave3].Data());
	  if(isave3<3||isave3==11||isave3==12||isave3==17||isave3==18)
	    {
	      histodraw=(TH2F*)mergedfile.Get(histoname);
	      histodraw->Write();
	      histodraw=NULL;
	    }
	  else
	    {
	      historaw2=(TH1F*)mergedfile.Get(histoname);
	      historaw2->Write();
	      historaw2=NULL;
	    }
	  printf("Saved %s\n",histoname);
	}
      
      //for(Int_t iss=0;iss<9;iss++){printf("Saved %d\n",iss); histo2save[iss]->Write();}
      file2savefortrend.Close();
	
      //else{delete canvas13; canvas13=NULL;}	
      //directory2=NULL;




    }//end directory



  }//end for   




  delete  directory;
  directory=NULL;
  delete directory2;
  directory2=NULL;

}//end macro


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