ROOT logo
/*
fbellini@cern.ch, last update on 12/07/2013
- added average multi vs. run number trending plot
Previous history - january 2012:
- added flag for displaying reduced n. of trending plots
- now producing tree run by run
- new method to produce trending plots from list of trees
*/

Int_t MakeTrendingTOFQA(char * runlist, Int_t year=2012, char *period="LHC12a", char* pass="cpass1", char* nameSuffix ="_barrel",Bool_t isMC=kTRUE, Int_t trainId=0, Bool_t displayAll=kTRUE, Bool_t includeStartTime=kTRUE){                                             
	Int_t filesCounter=0;
  
	if (!runlist) {
		printf("Invalid list of runs given as input: nothing done\n");
		return 1;
	}	
	Int_t runNumber;
	char infile[300]; 
	char postFileName[20];
	char treePostFileName[20];
  
	char trendFileName[100]; 
	//Define trending output
	if (trainId==0){
	  sprintf(trendFileName,"treeTOFQA_%s_%s.root",period,pass);  
	}else{
	  sprintf(trendFileName,"treeTOFQA_QA%i_%s_%s.root",trainId,period,pass);
	}
	TFile * trendFile=new TFile(trendFileName,"recreate");
	FILE * files = fopen(runlist, "r") ; 

	//create chain of treePostQA     
	Long64_t nentries=100000, firstentry=0; 
	TChain *chainTree = 0;
	chainTree=new TChain("trendTree");
	
	while (fscanf(files,"%d",&runNumber)==1 ){
	  
	  //get QAtrain output
	  if (trainId==0){
	    if (!isMC) sprintf(infile,"alien:///alice/data/%i/%s/000%d/%s/QAresults%s.root",year,period,runNumber,pass,nameSuffix);
	    else sprintf(infile,"alien:///alice/sim/%i/%s/%d/QAresults%s.root",year,period,runNumber,nameSuffix);
	  } else{
	    if (!isMC) sprintf(infile,"alien:///alice/data/%i/%s/000%d/ESDs/%s/QA%i/QAresults%s.root",year,period,runNumber,pass,trainId,nameSuffix);
	    else sprintf(infile,"alien:///alice/sim/%i/%s/%d/QA%i/QAresults%s.root",year,period,runNumber,trainId,nameSuffix);
	  }

	  Printf("============== Opening QA file(s) for run %i =======================\n",runNumber);
	  
	  //run post-analysis
	  if (RunESDQApostAnalysis(infile,runNumber,isMC,kTRUE,displayAll,includeStartTime)==0){
	    filesCounter++;
	    sprintf(postFileName,"postQA_%i.root",runNumber);
	    sprintf(treePostFileName,"treePostQA_%i.root",runNumber);
	    
	    if (MakePostQAtree(runNumber, isMC, postFileName, treePostFileName, includeStartTime)==0){
	      chainTree->Add(treePostFileName); 
	      Printf("Tree chain has now %d entries ",(Int_t)chainTree->GetEntries());
	    } else {
	      Printf("Could not get tree with trending quantities for run %i: SKIPPING",runNumber);
	    } 
	  } else 
	    Printf("Post analysis not run on QA output %s", infile);
	}
	return  MakeTrendingFromTreeWithErrors(chainTree, trendFileName, displayAll, includeStartTime); 
}
//-----------------------------------------------------------
Int_t MakeTrendingHistoFromTreeList(char * fileList, TString treeName = "trendTree", Bool_t displayAll=kFALSE, Bool_t includeStartTime=kTRUE){    

	Int_t filesCounter=0;
  
	if (!fileList) {
		printf("Invalid list of runs given as input: nothing done\n");
		return 1;
	}	
	char infile[300]; 
	char trendFileName[100]; 
	//Define trending output
	sprintf(trendFileName,"trendingHistoTOFQA_%s.root",fileList);  
	TFile * trendFile=new TFile(trendFileName,"recreate");
	FILE * files = fopen(fileList, "r") ; 

	//create chain of treePostQA
	Long64_t nentries=100000, firstentry=0; 
	TChain *chainTree =new TChain(treeName.Data());
	
	while (fscanf(files,"%s",&infile)==1 ){	  
	  if (!TFile::Open(infile,"r")) 
	    Printf("Error: cannot open file %s", infile);
	  Printf("============== Adding QA tree file %s to the chain",infile);
	  filesCounter++;	  
	  chainTree->Add(infile); 
	}
	return  MakeTrendingFromTreeWithErrors(chainTree, trendFileName, displayAll, includeStartTime); 
}

//______________________________________________________________________________
Int_t MakeTrendingFromTreeWithErrors(TChain * fin,char* trendFileName=NULL, Bool_t displayAll=kFALSE, Bool_t includeStartTime=kTRUE){

	if (!trendFileName) 
		return 3;
 
	if (!fin) 
		return 4;

	Int_t runNumber;
	Double_t avTime=0., peakTime=0., spreadTime=0., peakTimeErr=0., spreadTimeErr=0.,negTimeRatio=0.,
		avRawTime=0., peakRawTime=0., spreadRawTime=0., peakRawTimeErr=0., spreadRawTimeErr=0., 
		avTot=0., peakTot=0.,spreadTot=0.,  peakTotErr=0.,spreadTotErr=0.,
		orphansRatio=0., avL=0., negLratio=0.,
		effPt1=0., effPt2=0., matchEffLinFit1Gev=0.,matchEffLinFit1GevErr=0.;
	Double_t avDiffTime=0.,peakDiffTime=0., spreadDiffTime=0.,peakDiffTimeErr=0., spreadDiffTimeErr=0.,avT0fillRes=0.;
   
	Double_t avT0A=0.,peakT0A=0., spreadT0A=0.,peakT0AErr=0., spreadT0AErr=0.;
	Double_t avT0C=0.,peakT0C=0., spreadT0C=0.,peakT0CErr=0., spreadT0CErr=0.;
	Double_t avT0AC=0.,peakT0AC=0., spreadT0AC=0.,peakT0ACErr=0., spreadT0ACErr=0.;
	Double_t avT0res=0.,peakT0res=0., spreadT0res=0.,peakT0resErr=0., spreadT0resErr=0.;
	Float_t avMulti=0;
	Float_t fractionEventsWHits=0.0;
	Double_t goodChannelRatio=0.0;
   
	TTree * ttree = (TTree*) fin->CloneTree();
	ttree->SetBranchAddress("run",&runNumber);
	ttree->SetBranchAddress("avMulti",&avMulti);
	ttree->SetBranchAddress("goodChannelsRatio",&goodChannelRatio);   
	ttree->SetBranchAddress("avTime",&avTime); //mean time
	ttree->SetBranchAddress("peakTime",&peakTime); //main peak time after fit
	ttree->SetBranchAddress("spreadTime",&spreadTime); //spread of main peak of time after fit
	ttree->SetBranchAddress("peakTimeErr",&peakTimeErr); //main peak time after fit error
	ttree->SetBranchAddress("spreadTimeErr",&spreadTimeErr); //spread of main peak of time after fit error
   
	ttree->SetBranchAddress("negTimeRatio",&negTimeRatio); //negative time ratio
   
	ttree->SetBranchAddress("avRawTime",&avRawTime); //mean raw time
	ttree->SetBranchAddress("peakRawTime",&peakRawTime); //mean peak of raw time after fit
	ttree->SetBranchAddress("spreadRawTime",&spreadRawTime); //spread of main peak of raw time after fit
	ttree->SetBranchAddress("peakRawTimeErr",&peakRawTimeErr); //main peak raw  time after fit error
	ttree->SetBranchAddress("spreadRawTimeErr",&spreadRawTimeErr); //spread of  raw main peak of time after fit error
  
	ttree->SetBranchAddress("avTot",&avTot); //main peak tot
	ttree->SetBranchAddress("peakTot",&peakTot); // main peak of tot after fit
	ttree->SetBranchAddress("spreadTot",&spreadTot); //spread of main peak of tot after fit
	ttree->SetBranchAddress("peakTotErr",&peakTotErr); // main peak of tot after fit
	ttree->SetBranchAddress("spreadTotErr",&spreadTotErr); //spread of main peak of tot after fit
   
	ttree->SetBranchAddress("orphansRatio",&orphansRatio); //orphans ratio
   
	ttree->SetBranchAddress("avL",&avL); //mean track length
	ttree->SetBranchAddress("negLratio",&negLratio);//ratio of tracks with track length <350 cm
   
	ttree->SetBranchAddress("effPt1",&effPt1);//matching eff at 1 GeV/c
	ttree->SetBranchAddress("effPt2",&effPt2); //matching eff at 2 GeV/c
	ttree->SetBranchAddress("matchEffLinFit1Gev",&matchEffLinFit1Gev);//matching eff fit param 
	ttree->SetBranchAddress("matchEffLinFit1GevErr",&matchEffLinFit1GevErr);////matching eff fit param error
   
	ttree->SetBranchAddress("avPiDiffTime",&avDiffTime); //mean t-texp
	ttree->SetBranchAddress("peakPiDiffTime",&peakDiffTime); //main peak t-texp after fit
	ttree->SetBranchAddress("spreadPiDiffTime",&spreadDiffTime); //spread of main peak t-texp after fit
	ttree->SetBranchAddress("peakPiDiffTimeErr",&peakDiffTimeErr); //main peak t-texp after fit error
	ttree->SetBranchAddress("spreadPiDiffTimeErr",&spreadDiffTimeErr); //spread of main peak of t-texp after fit error
   
	ttree->SetBranchAddress("avT0A",&avT0A); //main peak t0A
	ttree->SetBranchAddress("peakT0A",&peakT0A); // main peak of t0A after fit
	ttree->SetBranchAddress("spreadT0A",&spreadT0A); //spread of main peak of t0A after fit
	ttree->SetBranchAddress("peakT0AErr",&peakT0AErr); // main peak of t0A after fit
	ttree->SetBranchAddress("spreadT0AErr",&spreadT0AErr); //spread of main peak of t0A after fit
   
	ttree->SetBranchAddress("avT0C",&avT0C); //main peak t0C
	ttree->SetBranchAddress("peakT0C",&peakT0C); // main peak of t0C after fit
	ttree->SetBranchAddress("spreadT0C",&spreadT0C); //spread of main peak of t0C after fit
	ttree->SetBranchAddress("peakT0CErr",&peakT0CErr); // main peak of t0C after fit
	ttree->SetBranchAddress("spreadT0CErr",&spreadT0CErr); //spread of main peak of t0C after fit
   
	ttree->SetBranchAddress("avT0AC",&avT0AC); //main peak t0AC
	ttree->SetBranchAddress("peakT0AC",&peakT0AC); // main peak of t0AC after fit
	ttree->SetBranchAddress("spreadT0AC",&spreadT0AC); //spread of main peak of t0AC after fit
	ttree->SetBranchAddress("peakT0ACErr",&peakT0ACErr); // main peak of t0AC after fit
	ttree->SetBranchAddress("spreadT0ACErr",&spreadT0ACErr); //spread of main peak of t0AC after fit
   
	ttree->SetBranchAddress("avT0res",&avT0res); //main peak t0AC
	ttree->SetBranchAddress("peakT0res",&peakT0res); // main peak of t0AC after fit
	ttree->SetBranchAddress("spreadT0res",&spreadT0res); //spread of main peak of t0AC after fit
	ttree->SetBranchAddress("peakT0resErr",&peakT0resErr); // main peak of t0AC after fit
	ttree->SetBranchAddress("spreadT0resErr",&spreadT0resErr); //spread of main peak of t0AC after fit
	ttree->SetBranchAddress("avT0fillRes",&avT0fillRes); //t0 fill res

	Int_t nRuns=ttree->GetEntries();
	TList lista;
   
	TH1F * hAvMulti=new TH1F("hAvMulti","Average multiplicity of matched tracks <N_{TOF}>;; <N_{TOF}>", nRuns,0., nRuns);//, 600, 0. , 600.);
	hAvMulti->SetDrawOption("E1");
	hAvMulti->SetMarkerStyle(20);
	hAvMulti->SetMarkerColor(kBlue);
	
	TH1F * hAvDiffTimeVsRun=new TH1F("hAvDiffTimeVsRun","Mean t-t_{exp} (no fit);run;<t^{TOF}-t_{exp,#pi}> (ps)",nRuns,0., nRuns);//, 600, 0. , 600.);
	hAvDiffTimeVsRun->SetDrawOption("E1");
	hAvDiffTimeVsRun->SetMarkerStyle(20);
	hAvDiffTimeVsRun->SetMarkerColor(kBlue);
	//   hAvTimeVsRun->GetYaxis()->SetRangeUser(0.0, 50.0);

	TH1F * hPeakDiffTimeVsRun=new TH1F("hPeakDiffTimeVsRun","t-t_{exp} (gaussian fit) ;; <t^{TOF}-t_{exp,#pi}> (ps)",nRuns,0., nRuns);//,600, 0. , 600. );
	hPeakDiffTimeVsRun->SetDrawOption("E1");
	hPeakDiffTimeVsRun->SetMarkerStyle(20);
	hPeakDiffTimeVsRun->SetMarkerColor(kBlue);
   
	TH1F * hSpreadDiffTimeVsRun=new TH1F("hSpreadDiffTimeVsRun","#sigma(t-t_{exp}) (gaussian fit);; #sigma(t^{TOF}-t_{exp,#pi}) (ns)",nRuns,0., nRuns);//, 100, 0. , 100.);
	hSpreadDiffTimeVsRun->SetDrawOption("E1");
	hSpreadDiffTimeVsRun->SetMarkerStyle(20);
	hSpreadDiffTimeVsRun->SetMarkerColor(kBlue);

	TH1F * hAvTimeVsRun=new TH1F("hAvTimeVsRun","<t^{TOF}>;;<t^{TOF}> (ns)",nRuns,0., nRuns);//, 600, 0. , 600.);
	hAvTimeVsRun->SetDrawOption("E1");
	hAvTimeVsRun->SetMarkerStyle(20);
	hAvTimeVsRun->SetMarkerColor(kBlue);
	//   hAvTimeVsRun->GetYaxis()->SetRangeUser(0.0, 50.0);

	TH1F * hPeakTimeVsRun=new TH1F("hPeakTimeVsRun","Peak value of t^{TOF} (landau fit);;t_{peak}^{TOF} (ns)",nRuns,0., nRuns);//,600, 0. , 600. );
	hPeakTimeVsRun->SetDrawOption("E1");
	hPeakTimeVsRun->SetMarkerStyle(20);
	hPeakTimeVsRun->SetMarkerColor(kBlue);
   
	TH1F * hSpreadTimeVsRun=new TH1F("hSpreadTimeVsRun","Spread of t^{TOF} (landau fit);; #sigma(t^{TOF}) (ns)",nRuns,0., nRuns);//, 100, 0. , 100.);
	hSpreadTimeVsRun->SetDrawOption("E1");
	hSpreadTimeVsRun->SetMarkerStyle(20);
	hSpreadTimeVsRun->SetMarkerColor(kBlue);
  
	TH1F * hAvRawTimeVsRun=new TH1F("hAvRawTimeVsRun","Peak value of raw t^{TOF};;<t_{raw}^{TOF}> (ns)",nRuns,0., nRuns);//, 600, 0. , 600.);
	hAvRawTimeVsRun->SetDrawOption("E1");
	hAvRawTimeVsRun->SetMarkerStyle(21);
	hAvRawTimeVsRun->SetMarkerColor(kGreen);

	TH1F * hPeakRawTimeVsRun=new TH1F("hPeakRawTimeVsRun","Peak value of raw t^{TOF} (landau fit);;t_{peak,raw}^{TOF} (ns)",nRuns,0., nRuns);//, 600, 0. , 600.);
	hPeakRawTimeVsRun->SetDrawOption("E1");
	hPeakRawTimeVsRun->SetMarkerStyle(21);
	hPeakRawTimeVsRun->SetMarkerColor(kGreen);

	TH1F * hSpreadRawTimeVsRun=new TH1F("hSpreadRawTimeVsRun","Spread of raw t^{TOF} (landau fit);;#sigma(t_{raw}^{TOF}) (ns)",nRuns,0., nRuns);//, 100, 0. , 100.);
	hSpreadRawTimeVsRun->SetDrawOption("E1");
	hSpreadRawTimeVsRun->SetMarkerStyle(21);
	hSpreadRawTimeVsRun->SetMarkerColor(kGreen);
   
	TH1F * hAvTotVsRun=new TH1F("hAvTotVsRun","<ToT> (no fit);run;<ToT> (ns)",nRuns,0., nRuns);//, 50, 0. , 50.);
	hAvTotVsRun->SetDrawOption("E1");
	hAvTotVsRun->SetMarkerStyle(22);
   
	TH1F * hPeakTotVsRun=new TH1F("hPeakTotVsRun","<ToT> (gaussian fit);;ToT_{peak} (ns)",nRuns,0., nRuns);//, 50, 0. , 50.);
	hPeakTotVsRun->SetDrawOption("E1");
	hPeakTotVsRun->SetMarkerStyle(22);
   
	TH1F * hSpreadTotVsRun=new TH1F("hSpreadTotVsRun","#sigma(ToT) (gaussian fit);#sigma(ToT) (ns)",nRuns,0., nRuns);//, 50, 0. , 50.);
	hSpreadTotVsRun->SetDrawOption("E1");
	hSpreadTotVsRun->SetMarkerStyle(22);
   
	TH1F * hNegTimeRatioVsRun=new TH1F("hNegTimeRatioVsRun","Ratio of tracks with t^{TOF}<12.5 ns; ; ratio of tracks with t^{TOF}<12.5 ns (%)",nRuns, 0., nRuns);//, 100, 0. , 100.);
	hNegTimeRatioVsRun->SetDrawOption("E");

	TH1F * hOrphansRatioVsRun=new TH1F("hOrphansRatioVsRun","Ratio of orphans (hits with ToT=0); ; ratio of orphans (%)",nRuns, 0., nRuns);//, 1000, 0. , 100.);
	hOrphansRatioVsRun->SetDrawOption("E");

	TH1F * hMeanLVsRun=new TH1F("hMeanLVsRun","Average track length;; <L> (cm)",nRuns, 0., nRuns);//, 350, 350. , 700.);
	hMeanLVsRun->SetDrawOption("E");
	TH1F * hNegLRatioVsRun=new TH1F("hNegLRatioVsRun","Ratio of tracks with L<350 cm;; ratio of tracks with L<350 cm (%)",nRuns, 0., nRuns);//, 1000, 0. , 100.);
	hNegLRatioVsRun->SetDrawOption("E");
	TH1F * hMatchEffVsRun=new TH1F("hMatchEffVsRun","Matching efficiency (linear fit for p_{T}>1.0 GeV/c);;matching efficiency (pT>1.0 GeV/c)",nRuns, 0., nRuns);//, 100, 0. , 1.);
	hMatchEffVsRun->SetDrawOption("E");
	TH1F * hMatchEffVsRunNormToGoodCh=new TH1F("hMatchEffVsRunNormToGoodCh","Matching efficiency normalized to percentage of TOF good channels;;matching efficiency (pT>1.0 GeV/c)",nRuns, 0., nRuns);//, 100, 0. , 1.);
	hMatchEffVsRunNormToGoodCh->SetDrawOption("E");
	
	TH1F * hMatchEffVsRun1=new TH1F("hMatchEffVsRun1","Matching efficiency (value for p_{T}=1.0 GeV/c);;matching efficiency (pT=1.0 GeV/c)",nRuns, 0., nRuns);
	hMatchEffVsRun1->SetDrawOption("E");
	TH1F * hPeakT0AVsRun=new TH1F("hPeakT0AVsRun","Peak value of T0A (gaussian fit);;t0A (ps)",nRuns,0., nRuns);
	TH1F * hPeakT0CVsRun=new TH1F("hPeakT0CVsRun","Peak value of T0C (gaussian fit);;t0AC (ps)",nRuns,0., nRuns);
	TH1F * hPeakT0ACVsRun=new TH1F("hPeakT0ACVsRun","Peak value of T0AC (gaussian fit);;t0AC (ps)",nRuns,0., nRuns);
	TH1F * hT0fillResVsRun=new TH1F("hT0fillResVsRun","t0_fill spread;;t0_spread (ps)",nRuns,0., nRuns);
	
	
	lista.Add(hAvMulti);
	lista.Add(hAvDiffTimeVsRun);
	lista.Add(hPeakDiffTimeVsRun);
	lista.Add(hSpreadDiffTimeVsRun);
	lista.Add(hAvTimeVsRun);
	lista.Add(hPeakTimeVsRun);
	lista.Add(hSpreadTimeVsRun);
	lista.Add(hAvRawTimeVsRun);
	lista.Add(hPeakRawTimeVsRun);
	lista.Add(hSpreadRawTimeVsRun); 
	lista.Add(hAvTotVsRun);
	lista.Add(hPeakTotVsRun);
	lista.Add(hSpreadTotVsRun);
	lista.Add(hNegTimeRatioVsRun);
	lista.Add(hOrphansRatioVsRun);
	lista.Add(hMeanLVsRun);
	lista.Add(hNegLRatioVsRun);
	lista.Add(hMatchEffVsRun);
	lista.Add(hMatchEffVsRunNormToGoodCh);
	lista.Add(hPeakT0AVsRun);
	lista.Add(hPeakT0CVsRun);
	lista.Add(hPeakT0ACVsRun);
	lista.Add(hT0fillResVsRun);
	char runlabel[6];
   
	for (Int_t irun=0;irun<nRuns;irun++){
		ttree->GetEntry(irun);
    
		sprintf(runlabel,"%i",runNumber);
    
		hAvMulti->SetBinContent(irun+1, avMulti);
		hAvMulti->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hAvDiffTimeVsRun->SetBinContent(irun+1, avDiffTime);
		hAvDiffTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hPeakDiffTimeVsRun->SetBinContent(irun+1,peakDiffTime);
		hPeakDiffTimeVsRun->SetBinError(irun+1,peakDiffTimeErr);
		hPeakDiffTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hSpreadDiffTimeVsRun->SetBinContent(irun+1,spreadDiffTime);
		hSpreadDiffTimeVsRun->SetBinError(irun+1,spreadDiffTimeErr);
		hSpreadDiffTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hAvTimeVsRun->SetBinContent(irun+1, avTime);
		hAvTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hPeakTimeVsRun->SetBinContent(irun+1,peakTime);
		hPeakTimeVsRun->SetBinError(irun+1,peakTimeErr);
		hPeakTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hSpreadTimeVsRun->SetBinContent(irun+1,spreadTime);
		hSpreadTimeVsRun->SetBinError(irun+1,spreadTimeErr);
		hSpreadTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hAvRawTimeVsRun->SetBinContent(irun+1, avRawTime);
		hAvRawTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hPeakRawTimeVsRun->SetBinContent(irun+1,peakRawTime);
		hPeakRawTimeVsRun->SetBinError(irun+1,peakRawTimeErr);
		hPeakRawTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hSpreadRawTimeVsRun->SetBinContent(irun+1,spreadRawTime);
		hSpreadRawTimeVsRun->SetBinError(irun+1,spreadRawTimeErr);
		hSpreadRawTimeVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hAvTotVsRun->SetBinContent(irun+1,avTot);
		hAvTotVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hPeakTotVsRun->SetBinContent(irun+1,peakTot);
		hPeakTotVsRun->SetBinError(irun+1,peakTotErr);
		hPeakTotVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hSpreadTotVsRun->SetBinContent(irun+1,spreadTot);
		hSpreadTotVsRun->SetBinError(irun+1,spreadTotErr);
		hSpreadTotVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hNegTimeRatioVsRun->SetBinContent(irun+1,negTimeRatio);
		hNegTimeRatioVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hOrphansRatioVsRun->SetBinContent(irun+1,orphansRatio);
		hOrphansRatioVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hMeanLVsRun->SetBinContent(irun+1,avL);
		hMeanLVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hNegLRatioVsRun->SetBinContent(irun+1,negLratio);
		hNegLRatioVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hMatchEffVsRun->SetBinContent(irun+1,matchEffLinFit1Gev);
		hMatchEffVsRun->SetBinError(irun+1,matchEffLinFit1GevErr);
		hMatchEffVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
		hMatchEffVsRun->SetLineColor(kRed);
		hMatchEffVsRun->SetLineWidth(2);

		if (goodChannelRatio>0)
		  hMatchEffVsRunNormToGoodCh->SetBinContent(irun+1,matchEffLinFit1Gev/goodChannelRatio);
		else 
		  hMatchEffVsRunNormToGoodCh->SetBinContent(irun+1, 0.0);
		hMatchEffVsRunNormToGoodCh->SetBinError(irun+1,matchEffLinFit1GevErr);
		hMatchEffVsRunNormToGoodCh->GetXaxis()->SetBinLabel(irun+1,runlabel);
		hMatchEffVsRunNormToGoodCh->SetLineColor(kBlue);
		hMatchEffVsRunNormToGoodCh->SetLineWidth(2);
     
		hPeakT0AVsRun->SetBinContent(irun+1,peakT0A);
		hPeakT0AVsRun->SetBinError(irun+1,spreadT0A);
		hPeakT0AVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hPeakT0CVsRun->SetBinContent(irun+1,peakT0C);
		hPeakT0CVsRun->SetBinError(irun+1,spreadT0C);
		hPeakT0CVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
    
		hPeakT0ACVsRun->SetBinContent(irun+1,peakT0AC);
		hPeakT0ACVsRun->SetBinError(irun+1,spreadT0AC);
		hPeakT0ACVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);

		hT0fillResVsRun->SetBinContent(irun+1,avT0fillRes);
		hT0fillResVsRun->GetXaxis()->SetBinLabel(irun+1,runlabel);
	}
  
	char  outfilename[200];
	sprintf(outfilename, "trend_%s",trendFileName);
	TFile * fout=new TFile(outfilename,"recreate");
	fout->cd();
	lista.Write();
	fout->Close();
	
	TString plotDir(Form("PlotsTrending"));
	gSystem->Exec(Form("mkdir %s",plotDir.Data()));
	
	TCanvas* cPeakDiffTimeVsRun = new TCanvas("cPeakDiffTimeVsRun","cPeakDiffTimeVsRun", 50,50,750,550);
	hPeakDiffTimeVsRun->GetYaxis()->SetRangeUser(-50.,50.);
	hPeakDiffTimeVsRun->Draw();
	cPeakDiffTimeVsRun->Print(Form("%s/cPeakDiffTimeVsRun.png",plotDir.Data()));
	
	TCanvas* cSpreadDiffTimeVsRun = new TCanvas("cSpreadDiffTimeVsRun","cSpreadDiffTimeVsRun", 50,50,750,550);
	hSpreadDiffTimeVsRun->GetYaxis()->SetRangeUser(200.,400.);
	hSpreadDiffTimeVsRun->Draw();
	cSpreadDiffTimeVsRun->Print(Form("%s/cSpreadDiffTimeVsRun.png",plotDir.Data()));

	TCanvas* cMatchEffVsRun = new TCanvas("cMatchEffVsRun","cMatchEffVsRun",50, 50, 750,550);
	hMatchEffVsRun->GetYaxis()->SetRangeUser(0.,1.);
	hMatchEffVsRun->Draw();
	cMatchEffVsRun->Print(Form("%s/cMatchEffVsRun.png",plotDir.Data()));

	TCanvas* cMatchEffNormToGoodCh = new TCanvas("cMatchEffNormToGoodCh","cMatchEffNormToGoodCh",50, 50,750,550);
	hMatchEffVsRunNormToGoodCh->GetYaxis()->SetRangeUser(0.,1.);
	hMatchEffVsRunNormToGoodCh->Draw();
	cMatchEffNormToGoodCh->Print(Form("%s/cMatchEffNormToGoodCh.png",plotDir.Data()));
	
	TCanvas* cPeakT0AVsRun = new TCanvas("cPeakT0AVsRun","cPeakT0AVsRun", 50,50,750,550);
	hPeakT0AVsRun->Draw();
	cPeakT0AVsRun->Print(Form("%s/cPeakT0AVsRun.png",plotDir.Data()));

	TCanvas* cPeakT0CVsRun = new TCanvas("cPeakT0CVsRun","cPeakT0CVsRun", 50,50,750,550);
	hPeakT0CVsRun->Draw();
	cPeakT0CVsRun->Print(Form("%s/cPeakT0CVsRun.png",plotDir.Data()));

	TCanvas* cPeakT0ACVsRun = new TCanvas("cPeakT0ACVsRun","cPeakT0ACVsRun", 50,50,750,550);
	hPeakT0ACVsRun->Draw();
	cPeakT0ACVsRun->Print(Form("%s/cPeakT0ACVsRun.png",plotDir.Data()));

	TCanvas* cT0fillResVsRun = new TCanvas("cT0fillResVsRun","cT0fillResVsRun", 50,50,750,550);
	hT0fillResVsRun->Draw();
	cT0fillResVsRun->Print(Form("%s/cT0fillResVsRun.png",plotDir.Data()));

	if (displayAll) {
	  TCanvas* cAvDiffTimeVsRun = new TCanvas("cAvDiffTimeVsRun","cAvDiffTimeVsRun",50,50,750,550);
	  gPad->SetGridx();
	  gPad->SetGridy();
	  hAvDiffTimeVsRun->Draw();
	  cAvDiffTimeVsRun->Print(Form("%s/cAvDiffTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cAvTimeVsRun = new TCanvas("cAvTimeVsRun","cAvTimeVsRun", 50,50,750,550);
	  hAvTimeVsRun->Draw();
	  cAvTimeVsRun->Print(Form("%s/cAvTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cPeakTimeVsRun = new TCanvas("cPeakTimeVsRun","cPeakTimeVsRun", 50,50,750,550);
	  hPeakTimeVsRun->Draw();
	  cPeakTimeVsRun->Print(Form("%s/cPeakTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cSpreadTimeVsRun = new TCanvas("cSpreadTimeVsRun","cSpreadTimeVsRun", 50,50,750,550);
	  hSpreadTimeVsRun->Draw();
	  cSpreadTimeVsRun->Print(Form("%s/cSpreadTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cAvRawTimeVsRun = new TCanvas("cAvRawTimeVsRun","cAvRawTimeVsRun", 50,50,750,550);
	  hAvRawTimeVsRun->Draw();
	  cAvRawTimeVsRun->Print(Form("%s/cAvRawTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cPeakRawTimeVsRun = new TCanvas("cPeakRawTimeVsRun","cPeakRawTimeVsRun", 50,50,750,550);
	  hPeakRawTimeVsRun->Draw();
	  cPeakRawTimeVsRun->Print(Form("%s/cPeakRawTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cSpreadRawTimeVsRun = new TCanvas("cSpreadRawTimeVsRun","cSpreadRawTimeVsRun", 50,50,750,550);
	  hSpreadRawTimeVsRun->Draw();
	  cSpreadRawTimeVsRun->Print(Form("%s/cSpreadRawTimeVsRun.png",plotDir.Data()));
	  
	  TCanvas* cAvTotVsRun = new TCanvas("cAvTotVsRun","cAvTotVsRun", 50,50,750,550);
	  hAvTotVsRun->Draw();
	  cAvTotVsRun->Print(Form("%s/cAvTotVsRun.png",plotDir.Data()));
	  
	  TCanvas* cPeakTotVsRun = new TCanvas("cPeakTotVsRun","cPeakTotVsRun", 50,50,750,550);
	  hPeakTotVsRun->Draw();
	  cPeakTotVsRun->Print(Form("%s/cPeakTotVsRun.png",plotDir.Data()));
	  
	  TCanvas* cSpreadTotVsRun = new TCanvas("cSpreadTotVsRun","cSpreadTotVsRun", 50,50,750,550);
	  hSpreadTotVsRun->Draw();
	  cSpreadTotVsRun->Print(Form("%s/cSpreadTotVsRun.png",plotDir.Data()));
	  
	  TCanvas* cNegTimeRatioVsRun = new TCanvas("cNegTimeRatioVsRun","cNegTimeRatioVsRun", 50,50,750,550);
	  hNegTimeRatioVsRun->Draw();
	  cNegTimeRatioVsRun->Print(Form("%s/cNegTimeRatioVsRun.png",plotDir.Data()));
	  
	  TCanvas* cOrphansRatioVsRun = new TCanvas("cOrphansRatioVsRun","cOrphansRatioVsRun", 50,50,750,550);
	  hOrphansRatioVsRun->Draw();
	  cOrphansRatioVsRun->Print(Form("%s/cOrphansRatioVsRun.png",plotDir.Data()));
	  
	  TCanvas* cMeanLVsRun = new TCanvas("cMeanLVsRun","cMeanLVsRun", 50,50,750,550);
	  hMeanLVsRun->Draw();
	  cMeanLVsRun->Print(Form("%s/cMeanLVsRun.png",plotDir.Data()));
	  
	  TCanvas* cNegLRatioVsRun = new TCanvas("cNegLRatioVsRun","cNegLRatioVsRun", 50,50,750,550);
	  hNegLRatioVsRun->Draw();
	  cNegLRatioVsRun->Print(Form("%s/cNegLRatioVsRun.png",plotDir.Data()));
	}
	
	return 0;
}

//-------------------------------------------------------------------------
Int_t MakePostQAtree(Int_t runNumber, Bool_t isMC=kFALSE, char * postFileName="postQA.0.root",char * treePostFileName="treePostQA.0.root", Bool_t includeStartTime=kTRUE){  
  
       TFile *postfile=TFile::Open(postFileName);
       if (!postfile) {
	  printf("Post-analysis output not found - cannot perform trending analysis. Exiting.");
	  return -1;
	}
       Printf("==============  Getting post-analysis info for run %i ===============\n",runNumber);
       TFile * trendFile=new TFile(treePostFileName,"recreate");

  	Double_t avTime=-9999., peakTime=-9999., spreadTime=-9999., peakTimeErr=-9999., spreadTimeErr=-9999., negTimeRatio=-9999.,
		avRawTime=-9999., peakRawTime=-9999., spreadRawTime=-9999., peakRawTimeErr=-9999., spreadRawTimeErr=-9999., 
		avTot=-9999., peakTot=-9999.,spreadTot=-9999.,  peakTotErr=-9999.,spreadTotErr=-9999.,
		orphansRatio=-9999., avL=-9999., negLratio=-9999.,
		effPt1=-9999., effPt2=-9999., matchEffLinFit1Gev=-9999.,matchEffLinFit1GevErr=-9999.;
  
	Double_t avPiDiffTime=-9999.,peakPiDiffTime=-9999., spreadPiDiffTime=-9999.,peakPiDiffTimeErr=-9999., spreadPiDiffTimeErr=-9999.;
  
	Double_t avT0A=-9999.,peakT0A=-9999., spreadT0A=-9999.,peakT0AErr=-9999., spreadT0AErr=-9999.;
	Double_t avT0C=-9999.,peakT0C=-9999., spreadT0C=-9999.,peakT0CErr=-9999., spreadT0CErr=-9999.;
	Double_t avT0AC=-9999.,peakT0AC=-9999., spreadT0AC=-9999.,peakT0ACErr=-9999., spreadT0ACErr=-9999.;
	Double_t avT0res=-9999.,peakT0res=-9999., spreadT0res=-9999.,peakT0resErr=-9999., spreadT0resErr=-9999.;
	Double_t avT0fillRes=-9999.;

	Float_t avMulti=0;
	Float_t fractionEventsWHits=-9999.;
	/*number of good (HW ok && efficient && !noisy) TOF channels from OCDB*/
	Double_t goodChannelRatio=0.0;

	TTree * ttree=new TTree("trendTree","tree of trending variables");
	ttree->Branch("run",&runNumber,"run/I");
	ttree->Branch("avMulti",&avMulti,"avMulti/F");
	ttree->Branch("fractionEventsWHits",&fractionEventsWHits,"fractionEventsWHits/F");
	ttree->Branch("goodChannelsRatio",&goodChannelRatio,"goodChannelRatio/D");
	ttree->Branch("avTime",&avTime,"avTime/D"); //mean time
	ttree->Branch("peakTime",&peakTime,"peakTime/D"); //main peak time after fit
	ttree->Branch("spreadTime",&spreadTime,"spreadTime/D"); //spread of main peak of time after fit
	ttree->Branch("peakTimeErr",&peakTimeErr,"peakTimeErr/D"); //main peak time after fit error
	ttree->Branch("spreadTimeErr",&spreadTimeErr,"spreadTimeErr/D"); //spread of main peak of time after fit error
	ttree->Branch("negTimeRatio",&negTimeRatio,"negTimeRatio/D"); //negative time ratio
  
	ttree->Branch("avRawTime",&avRawTime,"avRawTime/D"); //mean raw time
	ttree->Branch("peakRawTime",&peakRawTime,"peakRawTime/D"); //mean peak of RAW TIME after fit
	ttree->Branch("spreadRawTime",&spreadRawTime,"spreadRawTime/D"); //spread of main peak of raw time after fit
	ttree->Branch("peakRawTimeErr",&peakRawTimeErr,"peakRawTimeErr/D"); //main peak raw  time after fit error
	ttree->Branch("spreadRawTimeErr",&spreadRawTimeErr,"spreadRawTimeErr/D"); //spread of  raw main peak of time after fit error
  
	ttree->Branch("avTot",&avTot,"avTot/D"); //main peak tot
	ttree->Branch("peakTot",&peakTot,"peakTot/D"); // main peak of tot after fit
	ttree->Branch("spreadTot",&spreadTot,"spreadTot/D"); //spread of main peak of tot after fit
	ttree->Branch("peakTotErr",&peakTotErr,"peakTotErr/D"); // main peak of tot after fit
	ttree->Branch("spreadTotErr",&spreadTotErr,"spreadTotErr/D"); //spread of main peak of tot after fit
  
	ttree->Branch("orphansRatio",&orphansRatio,"orphansRatio/D"); //orphans ratio

	ttree->Branch("avL",&avL,"avL/D"); //mean track length
	ttree->Branch("negLratio",&negLratio,"negLratio/D");//ratio of tracks with track length <350 cm
	ttree->Branch("effPt1",&effPt1,"effPt1/D");//matching eff at 1 GeV/c
	ttree->Branch("effPt2",&effPt2,"effPt2/D"); //matching eff at 2 GeV/c
	ttree->Branch("matchEffLinFit1Gev",&matchEffLinFit1Gev,"matchEffLinFit1Gev/D");//matching eff fit param 
	ttree->Branch("matchEffLinFit1GevErr",&matchEffLinFit1GevErr,"matchEffLinFit1GevErr/D");////matching eff fit param error
  
	ttree->Branch("avPiDiffTime",&avPiDiffTime,"avPiDiffTime/D"); //mean t-texp
	ttree->Branch("peakPiDiffTime",&peakPiDiffTime,"peakPiDiffTime/D"); //main peak t-texp after fit
	ttree->Branch("spreadPiDiffTime",&spreadPiDiffTime,"spreadPiDiffTime/D"); //spread of main peak t-texp after fit
	ttree->Branch("peakPiDiffTimeErr",&peakPiDiffTimeErr,"peakPiDiffTimeErr/D"); //main peak t-texp after fit error
	ttree->Branch("spreadPiDiffTimeErr",&spreadPiDiffTimeErr,"spreadPiDiffTimeErr/D"); //spread of main peak of t-texp after fit error

	ttree->Branch("avT0A",&avT0A,"avT0A/D"); //main peak t0A
	ttree->Branch("peakT0A",&peakT0A,"peakT0A/D"); // main peak of t0A after fit
	ttree->Branch("spreadT0A",&spreadT0A,"spreadTot/D"); //spread of main peak of t0A after fit
	ttree->Branch("peakT0AErr",&peakT0AErr,"peakT0AErr/D"); // main peak of t0A after fit
	ttree->Branch("spreadT0AErr",&spreadT0AErr,"spreadT0AErr/D"); //spread of main peak of t0A after fit

	ttree->Branch("avT0C",&avT0C,"avT0C/D"); //main peak t0C
	ttree->Branch("peakT0C",&peakT0C,"peakT0C/D"); // main peak of t0C after fit
	ttree->Branch("spreadT0C",&spreadT0C,"spreadT0C/D"); //spread of main peak of t0C after fit
	ttree->Branch("peakT0CErr",&peakT0CErr,"peakT0CErr/D"); // main peak of t0C after fit
	ttree->Branch("spreadT0CErr",&spreadT0CErr,"spreadT0CErr/D"); //spread of main peak of t0C after fit
 
	ttree->Branch("avT0AC",&avT0AC,"avT0AC/D"); //main peak t0AC
	ttree->Branch("peakT0AC",&peakT0AC,"peakT0AC/D"); // main peak of t0AC after fit
	ttree->Branch("spreadT0AC",&spreadT0AC,"spreadT0AC/D"); //spread of main peak of t0AC after fit
	ttree->Branch("peakT0ACErr",&peakT0ACErr,"peakT0ACErr/D"); // main peak of t0AC after fit
	ttree->Branch("spreadT0ACErr",&spreadT0ACErr,"spreadT0ACErr/D"); //spread of main peak of t0AC after fit
 
	ttree->Branch("avT0res",&avT0res,"avT0res/D"); //main peak t0AC
	ttree->Branch("peakT0res",&peakT0res,"peakT0res/D"); // main peak of t0AC after fit
	ttree->Branch("spreadT0res",&spreadT0res,"spreadT0res/D"); //spread of main peak of t0AC after fit
	ttree->Branch("peakT0resErr",&peakT0resErr,"peakT0resErr/D"); // main peak of t0AC after fit
	ttree->Branch("spreadT0resErr",&spreadT0resErr,"spreadT0resErr/D"); //spread of main peak of t0AC after fit
	ttree->Branch("avT0fillRes",&avT0fillRes,"avT0fillRes/D"); //t0 fill res

	//postfile->ls();
	//save quantities for trending
	goodChannelRatio=(Double_t)GetGoodTOFChannelsRatio(runNumber);
	
	//--------------------------------- Multiplicity ----------------------------------//
	TH1F*hMulti=(TH1F*)postfile->Get("hTOFmatchedPerEvt");
	if ((hMulti)&&(hMulti->GetEntries()>0)) {
	  avMulti=hMulti->GetMean();
	}
	
	//--------------------------------- T0F signal ----------------------------------//
	
	TH1F*hTime=(TH1F*)postfile->Get("hTOFmatchedESDtime");
	if ((hTime)&&(hTime->GetEntries()>0)) {
	  avTime=hTime->GetMean();
	  hTime->Fit("landau","","",0.,50.);
	  peakTime=(hTime->GetFunction("landau"))->GetParameter(1);
	  spreadTime=(hTime->GetFunction("landau"))->GetParameter(2);
	  peakTimeErr=(hTime->GetFunction("landau"))->GetParError(1);
	  spreadTimeErr=(hTime->GetFunction("landau"))->GetParError(2);
	  
	  negTimeRatio=((Double_t)hTime->Integral(1,3)*100.)/((Double_t)hTime->Integral());
	  printf("Main peak time (landau): mean = %f +- %f\n",peakTime,peakTimeErr );
	  printf("Main peak time (landau): spread = %f +- %f\n",spreadTime,spreadTimeErr );
	  printf("Ratio of tracks with time<12.5 ns / total = %f\n",negTimeRatio );
	  
	  //add integral of main peak over total
	}
	printf("---------------------------------------------------------------- \n");
	TH1F * hRawTime = (TH1F*)postfile->Get("hTOFmatchedESDrawTime");
	if ((hRawTime)&&(hRawTime->GetEntries()>0)){
	  avRawTime=hRawTime->GetMean();
	  if (!isMC){
	    hRawTime->Fit("landau","","",200.,250.);
	    peakRawTime=(hRawTime->GetFunction("landau"))->GetParameter(1);
	    spreadRawTime=(hRawTime->GetFunction("landau"))->GetParameter(2);
	    peakRawTimeErr=(hRawTime->GetFunction("landau"))->GetParError(1);
	    spreadRawTimeErr=(hRawTime->GetFunction("landau"))->GetParError(2);
	    printf("Main peak raw time (landau): mean = %f +- %f\n",peakTime,peakTimeErr );
	    printf("Main peak raw time (landau): spread = %f +- %f\n",spreadRawTime,spreadRawTimeErr );
	  } else {
	   printf("Reminder: Raw time not available in MC simulated data.");
	   }
	}
	
	printf("---------------------------------------------------------------- \n");
      
	TH1F * hTot = (TH1F*)postfile->Get("hTOFmatchedESDToT");
	if ((hTot)&&(hTot->GetEntries()>0)){
	  avTot=hTot->GetMean();
	  hTot->Fit("gaus","","",0.,50.);
	  peakTot=(hTot->GetFunction("gaus"))->GetParameter(1);
	  spreadTot=(hTot->GetFunction("gaus"))->GetParameter(2);
	  peakTotErr=(hTot->GetFunction("gaus"))->GetParError(1);
	  spreadTotErr=(hTot->GetFunction("gaus"))->GetParError(2);
	  printf("Main peak ToT (gaus): mean = %f +- %f\n",peakTot,peakTotErr );
	  printf("Main peak ToT (gaus): spread = %f +- %f\n",spreadTot,spreadTotErr );	
	}      
	printf("---------------------------------------------------------------- \n");
	TH1F * hOrphansRatio=(TH1F*)postfile->Get("hOrphansRatio");
	if (hOrphansRatio)
	  orphansRatio=hOrphansRatio->GetMean();
	
	TH1F * hL=(TH1F*)postfile->Get("hTOFmatchedESDtrkLength");
	if (hL)
	  avL=hL->GetMean();
	
	TH1F *hLnegRatio =(TH1F*)postfile->Get("hLnegRatio");
	if (hLnegRatio)
	  negLratio=hLnegRatio->GetMean();
	
	//--------------------------------- matching eff ----------------------------------//
	
	//Double_t linFitEff1Param[3]={0.,0.,0.};
	TH1F *hMatchingVsPt =(TH1F*)postfile->Get("hTOFmatchedESDPt");
	if (hMatchingVsPt) {
	  if (hMatchingVsPt->GetEntries()>0){
	    hMatchingVsPt->Fit("pol0","","",1.0,5.);
	    hMatchingVsPt->Draw();
	    if (hMatchingVsPt->GetFunction("pol0")){
	      matchEffLinFit1Gev=(hMatchingVsPt->GetFunction("pol0"))->GetParameter(0);
	      matchEffLinFit1GevErr=(hMatchingVsPt->GetFunction("pol0"))->GetParError(0);	
	      printf("Matching efficiency fit param is %f +- %f\n",matchEffLinFit1Gev,matchEffLinFit1GevErr );
	    }
	  } else {
	    printf("WARNING: matching efficiency plot has 0 entries. Skipped!\n");
	  }
	} else {
	  printf("WARNING: cannot retrieve matching efficiency plot\n");
	}
	
	//--------------------------------- t-texp ----------------------------------//
	
	TH1F*hPiDiffTime=(TH1F*)postfile->Get("hTOFmatchedExpTimePi");
	if ((hPiDiffTime)&&(hPiDiffTime->GetEntries()>0)) {
	  avPiDiffTime=hPiDiffTime->GetMean();
	  hPiDiffTime->Fit("gaus","","",-1000.,500.);
	  if (hPiDiffTime->GetFunction("gaus")){
	    peakPiDiffTime=(hPiDiffTime->GetFunction("gaus"))->GetParameter(1);
	    spreadPiDiffTime=(hPiDiffTime->GetFunction("gaus"))->GetParameter(2);
	    peakPiDiffTimeErr=(hPiDiffTime->GetFunction("gaus"))->GetParError(1);
	    spreadPiDiffTimeErr=(hPiDiffTime->GetFunction("gaus"))->GetParError(2);
	    printf("Main peak t-t_exp (gaus): mean = %f +- %f\n",peakPiDiffTime,peakPiDiffTimeErr );
	    printf("Main peak t-t_exp (gaus): spread = %f +- %f\n",spreadPiDiffTime,spreadPiDiffTimeErr );
	  }
	}
	//--------------------------------- T0 detector ----------------------------------//
	
	TH1F*hT0A=(TH1F*)postfile->Get("hEventT0DetA");
	if ((hT0A)&&(hT0A->GetEntries()>0)) {
	  avT0A=hT0A->GetMean();
	  hT0A->Fit("gaus");
	  peakT0A=(hT0A->GetFunction("gaus"))->GetParameter(1);
	  spreadT0A=(hT0A->GetFunction("gaus"))->GetParameter(2);
	  peakT0AErr=(hT0A->GetFunction("gaus"))->GetParError(1);
	  spreadT0AErr=(hT0A->GetFunction("gaus"))->GetParError(2);	
	  printf("Main peak T0A(gaus): mean = %f +- %f\n",peakT0A,peakT0AErr );
	  printf("Main peak T0A (gaus): spread = %f +- %f\n",spreadT0A,spreadT0AErr );	 
	  //add integral of main peak over total
	}
	
	TH1F*hT0C=(TH1F*)postfile->Get("hEventT0DetC");
	if ((hT0C)&&(hT0C->GetEntries()>0)) {
	  avT0C=hT0C->GetMean();
	  hT0C->Fit("gaus");
	  peakT0C=(hT0C->GetFunction("gaus"))->GetParameter(1);
	  spreadT0C=(hT0C->GetFunction("gaus"))->GetParameter(2);
	  peakT0CErr=(hT0C->GetFunction("gaus"))->GetParError(1);
	  spreadT0CErr=(hT0C->GetFunction("gaus"))->GetParError(2);	
	  printf("Main peak T0C(gaus): mean = %f +- %f\n",peakT0C,peakT0CErr );
	  printf("Main peak T0C (gaus): spread = %f +- %f\n",spreadT0C,spreadT0CErr );	 
	  //add integral of main peak over total
	}
	
	TH1F*hT0AC=(TH1F*)postfile->Get("hEventT0DetAND");
	if ((hT0AC)&&(hT0AC->GetEntries()>0)) {
	  avT0AC=hT0AC->GetMean();
	  hT0AC->Fit("gaus");
	  peakT0AC=(hT0AC->GetFunction("gaus"))->GetParameter(1);
	  spreadT0AC=(hT0AC->GetFunction("gaus"))->GetParameter(2);
	  peakT0ACErr=(hT0AC->GetFunction("gaus"))->GetParError(1);
	  spreadT0ACErr=(hT0AC->GetFunction("gaus"))->GetParError(2);	
	  printf("Main peak T0AC(gaus): mean = %f +- %f\n",peakT0AC,peakT0ACErr );
	  printf("Main peak T0AC (gaus): spread = %f +- %f\n",spreadT0AC,spreadT0ACErr );	 
	}
      
	TH1F*hT0res=(TH1F*)postfile->Get("hT0DetRes");
	if ((hT0res)&&(hT0res->GetEntries()>0)) {
	  avT0res=hT0res->GetMean();
	  hT0res->Fit("gaus");
	  peakT0res=(hT0res->GetFunction("gaus"))->GetParameter(1);
	  spreadT0res=(hT0res->GetFunction("gaus"))->GetParameter(2);
	  peakT0resErr=(hT0res->GetFunction("gaus"))->GetParError(1);
	  spreadT0resErr=(hT0res->GetFunction("gaus"))->GetParError(2);	
	  printf("Main peak T0res(gaus): mean = %f +- %f\n",peakT0res,peakT0resErr );
	  printf("Main peak T0res (gaus): spread = %f +- %f\n",spreadT0res,spreadT0resErr );	 
	  //add integral of main peak over total
	}
	
	TH1F*hT0fillRes=(TH1F*)postfile->Get("hT0fillRes");
	if ((hT0fillRes)&&(hT0fillRes->GetEntries()>0)) {
	  avT0fillRes=hT0fillRes->GetMean();
	}
	
	ttree->Fill();
	printf("==============  Saving trending quantities in tree for run %i ===============\n",runNumber);
	if (postfile->IsOpen()) {
	  printf("Trying to close\n");
	  postfile->Close();
	}  

	trendFile->cd();
	ttree->Write();
	trendFile->Close();
	return  0;
}

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

Int_t RunESDQApostAnalysis(char *qafilename=NULL, Int_t runNumber=-1, Bool_t isMC=kFALSE, Bool_t IsOnGrid=kFALSE, Bool_t displayAll=kFALSE, Bool_t includeStartTime=kTRUE) {
  
	Bool_t debug=kFALSE;
  
	/*access qa PWGPP output files - saved locally or on grid as specified by the second argument */
  
	char defaultQAoutput[30]="QAresults.root";
	if (IsOnGrid) TGrid::Connect("alien://");
	TFile * fin= TFile::Open(qafilename,"r");
	printf("Opening file %s\n",qafilename);
	if (!fin) {
		printf("ERROR: QA output not found. Exiting with status -1\n");
		return 1;
	} else {
		printf("INFO: QA output file %s open. \n",fin->GetName());
	}
  
 
	//access histograms lists
	char tofQAdirName[15]="TOF_Performance";
	char PIDqaListName[6]="PIDqa";
	char genListName[15]="cGeneralTOFqa";
	char t0ListName[15]="cTimeZeroTOFqa";
	char pidListName[15]="cPIDTOFqa"; 
	char posListName[15]="cPositiveTOFqa";
	char negListName[15]="cNegativeTOFqa";
 
	TDirectoryFile * tofQAdir=(TDirectoryFile*)fin->Get(tofQAdirName);
	TDirectoryFile * pidQAdir=(TDirectoryFile*)fin->Get(PIDqaListName);

	if(debug){
	  printf("------------------------------------------------------------------\n");
	  tofQAdir->ls();
	  printf("------------------------------------------------------------------\n");
	  if(includeStartTime){
	    pidQAdir->ls();
	    printf("------------------------------------------------------------------\n");
	  }
	}
	
	TList * generalList=(TList*)tofQAdir->Get(genListName);
	TList  *timeZeroList=(TList*)tofQAdir->Get(t0ListName);
	TList  *pidList=(TList*)tofQAdir->Get(pidListName);
	TList  *posList=(TList*)tofQAdir->Get(posListName);
	TList  *negList=(TList*)tofQAdir->Get(negListName);

	if(!pidQAdir)
	  printf("WARNING: PIDqa histograms not available\n");
	else{
	  TList  *pidListT0=(TList*)pidQAdir->Get(PIDqaListName);        
	  TList  *tofPidListT0=(TList*)pidListT0->FindObject("TOF");      
	}
	if (!generalList) printf("WARNING: general QA histograms absent or not accessible\n");
	if (!timeZeroList) printf("WARNING: timeZero QA histograms absent or not accessible\n");
	if (!pidList) printf("WARNING: PID QA histograms absent or not accessible\n");
	if (!posList) printf("WARNING: general QA histograms for positive tracks absent or not accessible\n");
	if (!negList) printf("WARNING: general QA histograms for negative tracks absent or not accessible\n");

	if ( (!generalList) && (!timeZeroList) && (!pidList) ){
		printf("ERROR: no QA available \n");
		return 1;
	}
  
	if (debug){
		generalList->ls();
		printf("------------------------------------------------------------------\n");
		timeZeroList->ls();
		printf("------------------------------------------------------------------\n");
		pidList->ls();
		printf("------------------------------------------------------------------\n");
	}

	/*set graphic style*/
	gStyle->SetCanvasColor(kWhite);
	gStyle->SetFrameFillColor(kWhite);
	gStyle->SetFrameBorderMode(0);
	gStyle->SetCanvasBorderMode(0);
	gStyle->SetTitleFillColor(kWhite);
	gStyle->SetTitleBorderSize(0)  ;
	gStyle->SetTitleFont(42);
	gStyle->SetTextFont(42);
	//gStyle->SetPalette(1);
	gStyle->SetStatColor(kWhite); 
	gStyle->SetStatBorderSize(1);
	gStyle->SetOptStat(0);
  
	//DEFINE OUTPUT FILE 
	char outfilename[60];
	sprintf(outfilename,"postQA_%i.root",runNumber);
	TFile * fout=new TFile(outfilename,"recreate");

	TH1I* hRunNumber=new TH1I("hRunNumber","hRunNumber;run",1,runNumber,runNumber+1);
	hRunNumber->Fill(runNumber);

	//-------------------------------------------------------------
	/*GENERAL MONITOR - MULTIPLICITY*/
	TH1F*hMulti= (TH1F*) generalList->At(0);

	TH1F* hFractionEventsWhits=new TH1F("hFractionEventsWhits","hFractionEventsWhits;fraction of events with hits (%)",200,0.,100.);
	if (hMulti->GetEntries()<1) return 2;
	Float_t fraction=0.0;
	if (hMulti->GetEntries()>0.0) fraction=((Float_t) hMulti->GetBinContent(1))/((Float_t) hMulti->GetEntries());
	else fraction=0.0;
	hFractionEventsWhits->Fill(fraction*100.);
	//-------------------------------------------------------------
	/*GENERAL MONITOR - TIMING AND GEOMETRY*/
	TH1F * hTime = (TH1F*) generalList->At(1);
	if (hTime->GetEntries()<1) return 2;
	hTime->SetMarkerStyle(8);
	hTime->SetMarkerSize(0.7);
	hTime->SetMarkerColor(kBlue);
	hTime->SetLineColor(kBlue);
	hTime->SetFillColor(kBlue);
	hTime->SetFillStyle(3001);
	hTime->Rebin(2);
	hTime->GetYaxis()->SetTitle("matched tracks"); 
	hTime->GetYaxis()->SetTitleOffset(1.35);
 
	TH1F * hRawTime = (TH1F*) generalList->At(2);
	hRawTime->SetMarkerStyle(21);
	hRawTime->SetMarkerSize(0.7);
	hRawTime->SetMarkerColor(kGreen);
	hRawTime->SetLineColor(kGreen);
	hRawTime->SetFillColor(kGreen);
	hRawTime->SetFillStyle(3001); 
	hRawTime->Rebin(2);
	hRawTime->GetYaxis()->SetTitle("matched tracks");
	hRawTime->GetYaxis()->SetTitleOffset(1.35);
  
	TLegend *lTime = new TLegend(0.7125881,0.6052519,0.979435,0.7408306,NULL,"brNDC");
	lTime->SetTextSize(0.04281433);
	lTime->AddEntry(hRawTime, "raw","L");
	lTime->AddEntry(hTime, "ESD","L"); 
	lTime->SetFillColor(kWhite);
	lTime->SetShadowColor(0);

	TH1F * hTot = (TH1F*) generalList->At(3);
	hTot->SetMarkerStyle(8);
	hTot->SetMarkerSize(0.7);
	hTot->SetMarkerColor(kViolet-3);
	hTot->SetLineColor(kViolet-3);
	hTot->SetFillColor(kViolet-3);
	hTot->SetFillStyle(3001);
	//hTime->SetDrawOption();
	hTot->GetYaxis()->SetTitle("matched tracks");
	hTot->GetYaxis()->SetTitleOffset(1.35);
  
  
	char orphansTxt[200];
	Float_t orphansRatio=0.0;
	if (hTot->GetEntries()>1){
		orphansRatio=((Float_t) hTot->GetBinContent(1))/((Float_t) hTot->GetEntries()) ;
	}
	sprintf(orphansTxt,"orphans/matched tracks = %.4f ",orphansRatio);
	TH1F * hOrphansRatio=new TH1F("hOrphansRatio","Percentage of signals with only leading edge; percentage (%)",1000,0.,100.);
	hOrphansRatio->Fill(orphansRatio*100.);  


	TPaveText *tOrphans = new TPaveText(0.38,0.63,0.88,0.7, "NDC");
	//NDC sets coords relative to pad
	tOrphans->SetBorderSize(0);
	tOrphans->SetTextSize(0.045);
	tOrphans->SetFillColor(0); //white background
	tOrphans->SetTextAlign(12);
	tOrphans->SetTextColor(kViolet-3);
	tOrphans->AddText(orphansTxt);
      
	TH1F * hL = (TH1F*) generalList->At(4);
	hL->SetMarkerStyle(8);
	hL->SetMarkerSize(0.7);
	hL->SetMarkerColor(kOrange-3);
	hL->SetLineColor(kOrange-3);
	hL->SetFillColor(kOrange-3);
	hL->SetFillStyle(3001);
	//hTime->SetDrawOption();
	hL->GetYaxis()->SetTitle("matched tracks");
	hL->GetYaxis()->SetTitleOffset(1.35);

	char negLengthTxt[200];
	Float_t negLengthRatio=0.0;
	if (hL->GetEntries()>1){
		negLengthRatio=(hL->Integral(1,750))/((Float_t) hL->GetEntries()) ;
	}
	sprintf(negLengthTxt,"tracks with L<350cm /matched tracks = %.5f ",negLengthRatio);
	TH1F * hLnegRatio=new TH1F("hLnegRatio","Ratio of TOF-matched tracks with L<350cm; ratio (%)",10000,0.,100.);
	hLnegRatio->Fill(negLengthRatio*100);
  


	TPaveText *tLength = new TPaveText(0.15,0.83,0.65,0.87, "NDC");
	//NDC sets coords relative to pad
	tLength->SetBorderSize(0);
	tLength->SetTextSize(0.04);
	tLength->SetFillColor(0); //white background
	tLength->SetTextAlign(11);
	tLength->SetTextColor(kOrange-3);
	tLength->AddText(negLengthTxt);
 
	if (displayAll){
		TCanvas *cTrackProperties= new TCanvas("cTrackProperties","summary of matched tracks properties",900,900);
		cTrackProperties->Divide(2,2);
		cTrackProperties->cd(1);
		gPad->SetLogy();
		gPad->SetGridx();
		gPad->SetGridy();
		hTime->Draw("BAR");
		hRawTime ->Draw("BARsame");
		lTime->Draw();  
		cTrackProperties->cd(2);
		gPad->SetGridx();
		gPad->SetGridy();
		gPad->SetLogy();
		hTot->Draw("BAR");
		tOrphans->Draw(); 
		cTrackProperties->cd(3);
		gPad->SetGridx();
		gPad->SetGridy();
		gPad->SetLogy();
		hL->Draw("BAR");
		tLength->Draw(); 
	}
	fout->cd();
	hRunNumber->Write();
	hMulti->Write();
	hFractionEventsWhits->Write();
	hTime->Write();
	hRawTime->Write();
	hTot->Write();
	hOrphansRatio->Write();
	hL->Write();
	hLnegRatio->Write();
  
	TH2F* hDxPos4profile = (TH2F*) generalList->At(14);
	TH2F* hDxNeg4profile = (TH2F*) generalList->At(13);
    
	char profilename[30];
	const Int_t ybinMin = 0;
	const Int_t ybinMax =hDxPos4profile->GetYaxis()->GetNbins() ;
	sprintf(profilename,"profDxPos");
	TProfile * profDxPos = (TProfile*)hDxPos4profile->ProfileX(profilename, ybinMin,ybinMax); 
	sprintf(profilename,"profDxNeg");
	profDxPos->SetLineWidth(2);
	TProfile * profDxNeg = (TProfile*)hDxNeg4profile->ProfileX(profilename, ybinMin, ybinMax); 
	profDxNeg->SetLineWidth(2);  
 
	TH1 *profRatioPosOverNegDx = (TH1*) profDxPos->Clone();
	profRatioPosOverNegDx->SetName("profRatioPosOverNegDx");
	profRatioPosOverNegDx->Divide((TH1*) profDxNeg);
	profRatioPosOverNegDx->GetYaxis()->SetRangeUser(-5.,5.);
	profRatioPosOverNegDx->GetXaxis()->SetRangeUser(0.,2.);
	if (displayAll){
		TCanvas *residuals= new TCanvas("residuals","residuals",900,450);
		residuals->Divide(2,1);
		residuals->cd(1);
		gPad->SetGridx();
		gPad->SetGridy();
		hDxPos4profile->GetYaxis()->SetRangeUser(-5.,5.);
		hDxPos4profile->Draw("colz");
		profDxPos->SetLineColor(kRed);
		profDxPos ->Draw("same");
		residuals->cd(2);
		gPad->SetGridx();
		gPad->SetGridy();
		hDxNeg4profile->GetYaxis()->SetRangeUser(-5.,5.); 
		hDxNeg4profile->Draw("colz");
		profDxNeg->SetLineColor(kBlue);
		profDxNeg->Draw("same"); 
	}

	fout->cd();
	hDxPos4profile->Write();
	hDxNeg4profile->Write();
	profDxPos->Write();
	profDxNeg->Write();
	profRatioPosOverNegDx->Write();
	//-------------------------------------------------------------
	/* T0 DETECTOR MONITOR*/

	TH1F * hT0AC = (TH1F*) timeZeroList->At(0);
	hT0AC->SetMarkerStyle(8);
	hT0AC->SetMarkerSize(0.7);
	hT0AC->SetMarkerColor(kRed);
	hT0AC->SetLineColor(kRed);
	hT0AC->SetFillColor(kRed);
	hT0AC->SetFillStyle(1001);
	hT0AC->Rebin(2);
	hT0AC->GetYaxis()->SetTitle("events"); 
	hT0AC->GetYaxis()->SetTitleOffset(1.35);
	hT0AC->GetXaxis()->SetLabelSize(0.03);
 
	TH1F * hT0A = (TH1F*) timeZeroList->At(1);
	hT0A->SetMarkerStyle(8);
	hT0A->SetMarkerSize(0.7);
	hT0A->SetMarkerColor(kBlue);
	hT0A->SetLineColor(kBlue);
	hT0A->SetFillColor(kBlue);
	hT0A->SetFillStyle(1001);
	hT0A->Rebin(2);
	hT0A->GetYaxis()->SetTitle("events"); 
	hT0A->GetYaxis()->SetTitleOffset(1.35);
	hT0A->GetXaxis()->SetLabelSize(0.03);

	TH1F * hT0C = (TH1F*) timeZeroList->At(2);
	hT0C->SetMarkerStyle(8);
	hT0C->SetMarkerSize(0.7);
	hT0C->SetMarkerColor(kGreen);
	hT0C->SetLineColor(kGreen);
	hT0C->SetFillColor(kGreen);
	hT0C->SetFillStyle(1001);
	hT0C->Rebin(2);
	hT0C->GetYaxis()->SetTitle("events"); 
	hT0C->GetYaxis()->SetTitleOffset(1.35);
	hT0C->GetXaxis()->SetLabelSize(0.03);
 
	TLegend *lT0 = new TLegend(0.7125881,0.6052519,0.979435,0.7408306,NULL,"brNDC");
	lT0->SetTextSize(0.041);
	lT0->AddEntry(hT0AC, "T0 A&C","L");
	lT0->AddEntry(hT0A, "T0 A","L"); 
	lT0->AddEntry(hT0C, "T0 C","L");
	lT0->SetFillColor(kWhite);
	lT0->SetShadowColor(0);
  
	TH1F * hT0res = (TH1F*) timeZeroList->At(3);
	hT0res->GetXaxis()->SetLabelSize(0.03);
	if (displayAll){
		TCanvas *cT0detector= new TCanvas("cT0detector","T0 detector",900,450);
		cT0detector->Divide(2,1);
		cT0detector->cd(1);
		gPad->SetGridx();
		gPad->SetGridy();
		hT0AC->Draw("BAR");
		hT0AC->SetTitle("timeZero measured by T0 detector");
		hT0A ->Draw("BARsame");
		hT0C ->Draw("BARsame");
		lT0->Draw();  
		cT0detector->cd(2);
		gPad->SetGridx();
		gPad->SetGridy();
		// gPad->SetLogy();
		hT0res->Draw();
		// myText1->Draw(); 
		// cTrackProperties->cd(3);
		// gPad->SetLogy();
		// hL->Draw("BAR");
		// myText2->Draw(); 
	}

	TH1F * hT0fillRes = (TH1F*) timeZeroList->At(8);
	hT0fillRes->GetXaxis()->SetLabelSize(0.03);

	fout->cd();
	hT0AC->Write();
	hT0A->Write();
	hT0C->Write();
	hT0res->Write();
	hT0fillRes->Write();
	lT0->Write();
  

	//-------------------------------------------------------------
	/*MATCHING EFFICIENCY  MONITOR*/

	//TH1F * hMatchingVsP =new TH1F("hMatchingVsP","Matching probability vs. P; P(GeV/c); matching probability", 50, 0., 5. );
  
	TH1F * hMatchingVsPt =new TH1F("hMatchingVsPt","Matching probability vs. Pt; Pt(GeV/c); matching probability", 50, 0., 5. );
  
	TH1F * hMatchingVsEta =new TH1F("hMatchingVsEta","Matching probability vs. #\Eta; #\Eta; matching probability", 20, -1., 1.);
  
	TH1F * hMatchingVsPhi =new TH1F("hMatchingVsPhi","Matching probability vs. Phi; Phi(rad); matching probability", 628, 0., 6.28);
  
	/*/matching as function of p
	  TH1F * hDenom=(TH1F*)generalList->At(9); 
	  if (hDenom) {  
	  hMatchingVsP=(TH1F*) generalList->At(5); 
	  hMatchingVsP->Rebin(5);
	  hDenom->Rebin(5);
	  hMatchingVsP->Divide(hDenom);
	  hMatchingVsP->GetYaxis()->SetTitle("matching efficiency");
	  hMatchingVsP->SetTitle("TOF matching efficiency as function of momentum");
	  }*/
  
	//matching as function of pT
  
	// hDenom->Clear();
	TH1F * hDenom=(TH1F*)generalList->At(10); 
	if (hDenom) {  
		hMatchingVsPt=(TH1F*) generalList->At(6); 
		hMatchingVsPt->Rebin(5);
		hDenom->Rebin(5);
		hMatchingVsPt->Divide(hDenom);
		hMatchingVsPt->GetYaxis()->SetTitle("matching efficiency");
		hMatchingVsPt->SetTitle("TOF matching efficiency as function of transverse momentum");
		hMatchingVsPt->GetYaxis()->SetRangeUser(0,1.2); 
	}
  
	//matching as function of eta
	hDenom->Clear();
	hDenom=(TH1F*)generalList->At(11); 
	if (hDenom) {  
		hMatchingVsEta=(TH1F*) generalList->At(7); 
		hMatchingVsEta->Rebin(5);
		hDenom->Rebin(5);
		hMatchingVsEta->Divide(hDenom);
		hMatchingVsEta->GetXaxis()->SetRangeUser(-1,1);
		hMatchingVsEta->GetYaxis()->SetTitle("matching efficiency");
		hMatchingVsEta->GetYaxis()->SetRangeUser(0,1.2);
		hMatchingVsEta->SetTitle("TOF matching efficiency as function of pseudorapidity");
	}
	//matching as function of phi
	hDenom->Clear();
	hDenom=(TH1F*)generalList->At(12); 
	if (hDenom) {  
		hMatchingVsPhi=(TH1F*) generalList->At(8); 
		//hMatchingVsPhi->Rebin(5);
		//hDenom->Rebin(5);
		hMatchingVsPhi->Divide(hDenom);
		hMatchingVsPhi->GetYaxis()->SetTitle("matching efficiency");
		hMatchingVsPhi->SetTitle("TOF matching efficiency as function of phi");
		hMatchingVsPhi->GetYaxis()->SetRangeUser(0,1.2);
	}
	if (  displayAll){
		TCanvas *cMatchingPerformance= new TCanvas("cMatchingPerformance","summary of matching performance",700,400);
		cMatchingPerformance->Divide(2,2);
		cMatchingPerformance->cd(1);
		gPad->SetGridx();
		gPad->SetGridy();
		hMatchingVsPt->Draw();
		cMatchingPerformance->cd(2);
		gPad->SetGridx();
		gPad->SetGridy();
		hMatchingVsEta->Draw();
		cMatchingPerformance->cd(3);
		gPad->SetGridx();
		gPad->SetGridy();
		hMatchingVsPhi->Draw();
	}
	fout->cd();
	hMatchingVsPt->Write();
	hMatchingVsEta->Write();
	hMatchingVsPhi->Write();
  
	//----------------------------------------------------
	/* PID PERFORMANCE MONITOR */

	TH2F * hBetaP=(TH2F*)pidList->At(0);
	if (hBetaP) hBetaP->GetYaxis()->SetRangeUser(0.,1.2);
	else Printf("Plot hBetaP not available (old aliroot?)");
	TH1F * hMass=(TH1F*)pidList->At(1);
	if (hMass){
	  //hMass->SetMarkerColor(kBlue);
	  //hMass->SetLineColor(kBlue);
	  hMass->SetFillColor(kAzure+10);
	  hMass->SetFillStyle(1001);
	  hMass->Rebin(2);
	  hMass->GetYaxis()->SetTitle("tracks"); 
	  hMass->GetYaxis()->SetTitleOffset(1.35);
	  hMass->GetXaxis()->SetLabelSize(0.03);
	} else 
	  Printf("Plot hMass not available (old aliroot?)");
	
	TH1F * hPionDiff=(TH1F*)pidList->At(3); 

	TH2F * hDiffTimePi=(TH2F*)pidList->At(4); 
	if (!hDiffTimePi) {
	  Printf("Plot hDiffTimePi not available (old aliroot?)");
	} else {
	  hDiffTimePi->SetTitle("PIONS t-t_{exp,#pi} (from tracking) vs. P");
	  hDiffTimePi->GetYaxis()->SetRangeUser(-2000.,2000.);
	  //hDiffTimePi->GetYaxis()->Rebin(2);//1 bin=10 ps
	}
	
	TH2F * hDiffTimePiTh=(TH2F*)pidList->At(6); 
	if (!hDiffTimePiTh) {
	  Printf("Plot hDiffTimePiTh not available (old aliroot?)");
	} else {
	  hDiffTimePiTh->SetTitle("PIONS t-t_{exp,#pi} (theoretical) vs. P");
	  hDiffTimePiTh->GetYaxis()->SetRangeUser(-2000.,2000.); 
	  //hDiffTimePiTh->GetYaxis()->Rebin(2);//1 bin=10 ps
	}

	TH2F * hDiffTimeKa=(TH2F*)pidList->At(9); 
	if (!hDiffTimeKa) {
	  Printf("Plot hDiffTimeKa not available (old aliroot?)");
	} else {
	  hDiffTimeKa->SetTitle("KAONS t-t_{exp,K} (from tracking) vs. P");
	  hDiffTimeKa->GetYaxis()->SetRangeUser(-2000.,2000.);
	  //hDiffTimeKa->GetYaxis()->Rebin(2);//1 bin=10 ps
	}

	TH2F * hDiffTimeKaTh=(TH2F*)pidList->At(11); 
	if (!hDiffTimeKaTh) {
	  Printf("Plot hDiffTimeKaTh not available (old aliroot?)");
	} else {
	  hDiffTimeKaTh->SetTitle("KAONS t-t_{exp,K} (theoretical) vs. P");
	  hDiffTimeKaTh->GetYaxis()->SetRangeUser(-2000.,2000.);
	  //hDiffTimeKaTh->GetYaxis()->Rebin(2);//1 bin=10 ps
	}

	TH2F * hDiffTimePro=(TH2F*)pidList->At(14); 
	if (!hDiffTimePro) {
	  Printf("Plot hDiffTimePro not available (old aliroot?)");
	} else {
	  hDiffTimePro->SetTitle("PROTONS t-t_{exp,p} (from tracking) vs. P");
	  hDiffTimePro->GetYaxis()->SetRangeUser(-2000.,2000.);
	  //hDiffTime->GetYaxis()->Rebin(2);//1 bin=10 ps
	}
	
	TH2F * hDiffTimeProTh=(TH2F*)pidList->At(16); 
	if (!hDiffTimeProTh) {
	  Printf("Plot hDiffTimeProTh not available (old aliroot?)");
	} else {
	  hDiffTimePro->SetTitle("PROTONS t-t_{exp,p} (theoretical) vs. P");
	  hDiffTimeProTh->GetYaxis()->SetRangeUser(-2000.,2000.);
	  //hDiffTime->GetYaxis()->Rebin(2);//1 bin=10 ps
	}

	if (displayAll){
		TCanvas *cPidPerformance= new TCanvas("cPidPerformance","summary of pid performance",800,800);
		cPidPerformance->Divide(2,1);
		cPidPerformance->cd(1);
		gPad->SetGridy();
		gPad->SetGridx();
		gPad->SetLogz();
		if (hBetaP) hBetaP->Draw("colz"); 
  
		cPidPerformance->cd(2);
		gPad->SetGridx();
		gPad->SetGridy();
		gPad->SetLogy();
		if (hMass) hMass->Draw("HIST BAR");
  
		gStyle->SetOptStat(10);
		TCanvas *cPidPerformance2= new TCanvas("cPidPerformance2","summary of pid performance - tracking",700,700);
		cPidPerformance2->Divide(2,2);
		cPidPerformance2->cd(1);
		gPad->SetLogz();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hDiffTimePi) hDiffTimePi->Draw("colz");
		cPidPerformance2->cd(2);
		gPad->SetLogz();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hDiffTimeKa) hDiffTimeKa->Draw("colz");
		cPidPerformance2->cd(3);
		gPad->SetLogz();
		if (hDiffTimePro) hDiffTimePro->Draw("colz");

		TCanvas *cPidPerformanceTh= new TCanvas("cPidPerformanceTh","summary of pid performance - theoretical times",700,700);
		cPidPerformanceTh->Divide(2,2);
		cPidPerformanceTh->cd(1);
		gPad->SetLogz();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hDiffTimePiTh) hDiffTimePiTh->Draw("colz");
		cPidPerformanceTh->cd(2);
		gPad->SetLogz();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hDiffTimeKaTh) hDiffTimeKaTh->Draw("colz");
		cPidPerformanceTh->cd(3);
		gPad->SetLogz();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hDiffTimeProTh) hDiffTimeProTh->Draw("colz");
	}
  
	TH1F * hPionDiff=(TH1F*)pidList->FindObject("hTOFmatchedExpTimePi"); 
	TH1F * hKaonDiff=(TH1F*)pidList->FindObject("hTOFmatchedExpTimeKa"); 
	TH1F * hProtonDiff=(TH1F*)pidList->FindObject("hTOFmatchedExpTimePro");
	TH2F * hDiffTimeT0TOFPion1GeV=(TH2F*)pidList->FindObject("hTOFmatchedTimePion1GeV"); 

	fout->cd();
	if (hPionDiff) hPionDiff->Write();
	if (hKaonDiff) hKaonDiff->Write();
	if (hProtonDiff) hProtonDiff->Write();
	if (hBetaP) hBetaP->Write();
	if (hMass) hMass->Write();
	if (hDiffTimeT0TOFPion1GeV) hDiffTimeT0TOFPion1GeV->Write();
	if (hDiffTimePi) hDiffTimePi->Write();
	if (hDiffTimeKa) hDiffTimeKa->Write();
	if (hDiffTimePro) hDiffTimePro->Write();
	if (hDiffTimePiTh) hDiffTimePiTh->Write();
	if (hDiffTimeKaTh) hDiffTimeKaTh->Write();
	if (hDiffTimeProTh) hDiffTimeProTh->Write();

	//SIGMAS PID
	TH2F * hSigmaPi=(TH2F*)pidList->At(7); 
	TProfile * profSigmaPi = 0x0;
	if (!hSigmaPi){
	  Printf("Plot hSigmaPi not available (old aliroot?)");
	} else {
	  sprintf(profilename,"profSigmaPi");
	  hSigmaPi->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaPi->GetXaxis()->SetRangeUser(0.2,10.);	
	  profSigmaPi = (TProfile*)hSigmaPi->ProfileX(profilename); 
	  profSigmaPi->SetLineWidth(2);
	  profSigmaPi->SetLineColor(kRed+2); 
	}

	TH2F * hSigmaKa=(TH2F*)pidList->At(12); 
	TProfile * profSigmaKa = 0x0;
	if (!hSigmaKa){
	  Printf("Plot hSigmaKa not available (old aliroot?)");
	} else {
	  sprintf(profilename,"profSigmaKa");
	  hSigmaKa->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaKa->GetXaxis()->SetRangeUser(0.2,10.);
	  profSigmaKa = (TProfile*)hSigmaKa->ProfileX(profilename); 
	  profSigmaKa->SetLineWidth(2);
	  profSigmaKa->SetLineColor(kBlue);  
	}
 
	TH2F * hSigmaPro=(TH2F*)pidList->At(17); 
	TProfile * profSigmaPro = 0x0;
	if (!hSigmaPro){
	  Printf("Plot hSigmaPro not available (old aliroot?)");
	} else {
	  sprintf(profilename,"profSigmaPro");
	  hSigmaPro->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaPro->GetXaxis()->SetRangeUser(0.2,10.);
	  profSigmaPro = (TProfile*)hSigmaPro->ProfileX(profilename); 
	  profSigmaPro->SetLineWidth(2);
	  profSigmaPro->SetLineColor(kGreen+2);  
	}

	if(includeStartTime){                                                                  
	  if(pidQAdir){
	  TH2F * hSigmaPiT0=(TH2F*)tofPidListT0->FindObject("hNsigmaP_TOF_pion"); 
	  hSigmaPiT0->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaPiT0->GetXaxis()->SetRangeUser(0.2,10.);
	  hSigmaPiT0->FitSlicesY();
	  TH1D * hSigmaPiT0_1 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_pion_1");
	  TH1D * hSigmaPiT0_2 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_pion_2");
	  hSigmaPiT0_1->SetLineColor(1);
	  hSigmaPiT0_1->SetLineWidth(2);
	  hSigmaPiT0_2->SetLineColor(2);
	  hSigmaPiT0_2->SetLineWidth(2);  

	  TH2F * hSigmaKaT0=(TH2F*)tofPidListT0->FindObject("hNsigmaP_TOF_kaon"); 
	  hSigmaKaT0->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaKaT0->GetXaxis()->SetRangeUser(0.2,10.);
	  hSigmaKaT0->FitSlicesY();
	  TH1D * hSigmaKaT0_1 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_kaon_1");
	  TH1D * hSigmaKaT0_2 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_kaon_2");
	  hSigmaKaT0_1->SetLineColor(1);
	  hSigmaKaT0_1->SetLineWidth(2);
	  hSigmaKaT0_2->SetLineColor(2);
	  hSigmaKaT0_2->SetLineWidth(2); 
 
	  TH2F * hSigmaProT0=(TH2F*)tofPidListT0->FindObject("hNsigmaP_TOF_proton"); 
	  hSigmaProT0->GetYaxis()->SetRangeUser(-5.,5.);
	  hSigmaProT0->GetXaxis()->SetRangeUser(0.2,10.);
	  hSigmaProT0->FitSlicesY();
	  TH1D * hSigmaProT0_1 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_proton_1");
	  TH1D * hSigmaProT0_2 = (TH1D*)gDirectory->Get("hNsigmaP_TOF_proton_2");
	  hSigmaProT0_1->SetLineColor(1);
	  hSigmaProT0_1->SetLineWidth(2);
	  hSigmaProT0_2->SetLineColor(2);
	  hSigmaProT0_2->SetLineWidth(2);
	  } 
	}
	if (displayAll){
	  
		TLegend * lSigmaPid=new TLegend(0.75,0.75,0.95,0.95,"#sigma_{PID}");
		lSigmaPid->AddEntry(profSigmaPi,"#pi^{#pm}","l");
		lSigmaPid->AddEntry(profSigmaKa,"K^{#pm}","l");
		lSigmaPid->AddEntry(profSigmaPro,"p^{#pm}","l");
	  
		TCanvas *cPidPerformance3= new TCanvas("cPidPerformance3","summary of pid performance - sigmas",1200,400);
		cPidPerformance3->Divide(3,1);
		cPidPerformance3->cd(1);
		gPad->SetLogz();
		gPad->SetLogx();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hSigmaPi){
		  hSigmaPi->Draw("colz");
		  profSigmaPi->Draw("same");
		}
		cPidPerformance3->cd(2);
		gPad->SetLogz();
		gPad->SetLogx();
		gPad->SetGridx();
		gPad->SetGridy();
		if (hSigmaKa){
		  hSigmaKa->Draw("colz");
		  profSigmaKa->Draw("same");
		}
		cPidPerformance3->cd(3);
		gPad->SetGridx();
		gPad->SetGridy();
		gPad->SetLogz();
		gPad->SetLogx();
		if (hSigmaPro){
		  hSigmaPro->Draw("colz");
		  profSigmaPro->Draw("same");
		}

		if(includeStartTime){  
		  if(pidQAdir){   
		    TLine *l1=new TLine(0.,0.,5.,0.);
		    TLine *l2=new TLine(0.,1.,5.,1.); 
		    TCanvas *cPidPerformance3T0 = new TCanvas("cPidPerformance3T0","summary of pid performance - sigmas - with StartTime",1200,500);  
		    cPidPerformance3T0->Divide(3,1);
		    cPidPerformance3T0->cd(1);        
		    gPad->SetLogz();
		    gPad->SetLogx();
		    gPad->SetGridx();
		    gPad->SetGridy();
		    hSigmaPiT0->Draw("colz");    
		    hSigmaPiT0_1->Draw("same");
		    hSigmaPiT0_2->Draw("same");
		    l1->Draw("same");
		    l2->Draw("same");
		    cPidPerformance3T0->cd(2);
		    gPad->SetLogz();
		    gPad->SetLogx();
		    gPad->SetGridx();
		    gPad->SetGridy();
		    hSigmaKaT0->Draw("colz");
		    hSigmaKaT0_1->Draw("same");
		    hSigmaKaT0_2->Draw("same");
		    l1->Draw("same");
		    l2->Draw("same");
		    cPidPerformance3T0->cd(3);  
		    gPad->SetLogz();
		    gPad->SetLogx();
		    gPad->SetGridx();
		    gPad->SetGridy();
		    hSigmaProT0->Draw("colz");
		    hSigmaProT0_1->Draw("same");
		    hSigmaProT0_2->Draw("same");
		    l1->Draw("same");
		    l2->Draw("same");      		   
		}
	}
	}

	fout->cd();
	if (hSigmaPi){
	  hSigmaPi->Write();
	  profSigmaPi->Write();
	}
	if (hSigmaKa){ 
	  hSigmaKa->Write();
	  profSigmaKa->Write();
	}
	if (hSigmaPro){
	  hSigmaPro->Write();
	  profSigmaPro->Write();
	}
	if(includeStartTime)
	  {
	    if(pidQAdir){
	      hSigmaPiT0->Write();
	      hSigmaKaT0->Write();
	      hSigmaProT0->Write();
      
	      hSigmaPiT0_1->Write();
	      hSigmaKaT0_1->Write();
	      hSigmaProT0_1->Write();

	      hSigmaPiT0_2->Write();
	      hSigmaKaT0_2->Write();
	      hSigmaProT0_2->Write();
	    }
	  }
	TH2F* hTOFmatchedDzVsStrip = (TH2F*)generalList->FindObject("hTOFmatchedDzVsStrip");
	
	if (displayAll){
	  TCanvas* cProfile = new TCanvas("cProfile","cProfile",50,50,750,550);
		gStyle->SetOptStat(0);
		hTOFmatchedDzVsStrip->Draw("colz");
		Int_t binmin = hTOFmatchedDzVsStrip->GetYaxis()->FindBin(-3);
		Int_t binmax = hTOFmatchedDzVsStrip->GetYaxis()->FindBin(3);
		TProfile* hDzProfile = (TProfile*)hTOFmatchedDzVsStrip->ProfileX("hDzProfile",binmin, binmax);
		hDzProfile->SetLineWidth(3);
		hDzProfile->Draw("same");
		cProfile->SetGridx();
		cProfile->SetGridy();
		TString plotDir(Form("Plots_run%d",runNumber));
		gSystem->Exec(Form("mkdir %s",plotDir.Data()));
		cPidPerformance3->Print(Form("%s/PID_sigmas.png",plotDir.Data()));
		if(includeStartTime){
		  if(pidQAdir)
		    cPidPerformance3T0->Print(Form("%s/%i_PID_sigmaStartTime.png", plotDir.Data()));  
		}
		cPidPerformance->Print(Form("%s/PID.png",plotDir.Data()));
		cPidPerformanceTh->Print(Form("%s/PID_theoreticalTimes.png",plotDir.Data()));
		cPidPerformance2->Print(Form("%s/PID_ExpTimes.png",plotDir.Data()));
		cMatchingPerformance->Print(Form("%s/Matching.png",plotDir.Data()));
		cT0detector->Print(Form("%s/T0Detector.png",plotDir.Data()));
		cTrackProperties->Print(Form("%s/TrackProperties.png",plotDir.Data()));
		residuals->Print(Form("%s/Residuals.png",plotDir.Data()));
		cProfile->Print(Form("%s/ProfileDZvsStripNumber.png",plotDir.Data()));
	}
	fout->cd();
	hTOFmatchedDzVsStrip->Write();
	fout->Close();
	fin->Close();
	return 0;
}

//----------------------------------------------------------
char * SetQAtrainOutputName(Int_t run=0,Int_t year=2011,char *period="LHC11a", char* pass="cpass1",Int_t trainId=76){
  
	char infile[200];
	sprintf(infile,"alien:///alice/data/%i/%s/000%d/ESDs/%s/QA%i/QAresults.root",year,period,runNumber,pass,trainId);
	return infile;
  
}

//----------------------------------------------------------
Double_t GetGoodTOFChannelsRatio(Int_t run, Bool_t saveMap = kFALSE)
{
  /*
    It retrieves from OCDB the number of good (= efficient && not noisy && HW ok) TOF channels.
    Optionally is saves the channel map
  */
  if (run<=0) {
    printf("MakeTrendingTOFqa.C - ERROR in CheckCalibStatus(): invalid run number. Please set a run number.\n"); 
    return 0.0;
  }
  
  AliCDBManager *cdb = AliCDBManager::Instance();
  cdb->SetDefaultStorage("raw://");
  cdb->SetRun(run);
  
  AliCDBEntry *cdbe = cdb->Get("TOF/Calib/Status");
  if (!cdbe) {
    printf("MakeTrendingTOFqa.C - ERROR in CheckCalibStatus(): OCDB entry not available. Please, try again.\n");
    return 0.0;
  }  

  AliTOFChannelOnlineStatusArray *array = (AliTOFChannelOnlineStatusArray *)cdbe->GetObject();
  TH2F *hOkMap = new TH2F("hOkMap", "Ok map (!noisy & !problematic & efficient);sector;strip", 72, 0., 18., 91, 0., 91.);

  AliTOFcalibHisto calibHisto;
  calibHisto.LoadCalibHisto();
  AliTOFcalib calib;
  calib.Init();

  Int_t sector, sectorStrip, padx, fea;
  Float_t hitmapx, hitmapy;
  for (Int_t i = 0; i <  array->GetSize(); i++) {
    sector = calibHisto.GetCalibMap(AliTOFcalibHisto::kSector, i);
    sectorStrip = calibHisto.GetCalibMap(AliTOFcalibHisto::kSectorStrip, i);
    padx = calibHisto.GetCalibMap(AliTOFcalibHisto::kPadX, i);
    fea = padx / 12;
    hitmapx = sector + ((Double_t)(3 - fea) + 0.5) / 4.;
    hitmapy = sectorStrip;
    if ( !(array->GetNoiseStatus(i) == AliTOFChannelOnlineStatusArray::kTOFNoiseBad)   &&
	 (calib.IsChannelEnabled(i,kTRUE,kTRUE)))
      hOkMap->Fill(hitmapx,hitmapy);
  }
  Int_t nOk=(Int_t) hOkMap->GetEntries();
  Double_t ratioOk=nOk/152928.;
  if (saveMap) hOkMap->SaveAs(Form("run%i_OKChannelsMap.root",run));
  cout << "###    Run " << run << ": TOF channels ok = " << nOk << "/ total 152928 channels = " << ratioOk*100. << "% of whole TOF" << endl;
  return ratioOk;
}

 MakeTrendingTOFQA.C:1
 MakeTrendingTOFQA.C:2
 MakeTrendingTOFQA.C:3
 MakeTrendingTOFQA.C:4
 MakeTrendingTOFQA.C:5
 MakeTrendingTOFQA.C:6
 MakeTrendingTOFQA.C:7
 MakeTrendingTOFQA.C:8
 MakeTrendingTOFQA.C:9
 MakeTrendingTOFQA.C:10
 MakeTrendingTOFQA.C:11
 MakeTrendingTOFQA.C:12
 MakeTrendingTOFQA.C:13
 MakeTrendingTOFQA.C:14
 MakeTrendingTOFQA.C:15
 MakeTrendingTOFQA.C:16
 MakeTrendingTOFQA.C:17
 MakeTrendingTOFQA.C:18
 MakeTrendingTOFQA.C:19
 MakeTrendingTOFQA.C:20
 MakeTrendingTOFQA.C:21
 MakeTrendingTOFQA.C:22
 MakeTrendingTOFQA.C:23
 MakeTrendingTOFQA.C:24
 MakeTrendingTOFQA.C:25
 MakeTrendingTOFQA.C:26
 MakeTrendingTOFQA.C:27
 MakeTrendingTOFQA.C:28
 MakeTrendingTOFQA.C:29
 MakeTrendingTOFQA.C:30
 MakeTrendingTOFQA.C:31
 MakeTrendingTOFQA.C:32
 MakeTrendingTOFQA.C:33
 MakeTrendingTOFQA.C:34
 MakeTrendingTOFQA.C:35
 MakeTrendingTOFQA.C:36
 MakeTrendingTOFQA.C:37
 MakeTrendingTOFQA.C:38
 MakeTrendingTOFQA.C:39
 MakeTrendingTOFQA.C:40
 MakeTrendingTOFQA.C:41
 MakeTrendingTOFQA.C:42
 MakeTrendingTOFQA.C:43
 MakeTrendingTOFQA.C:44
 MakeTrendingTOFQA.C:45
 MakeTrendingTOFQA.C:46
 MakeTrendingTOFQA.C:47
 MakeTrendingTOFQA.C:48
 MakeTrendingTOFQA.C:49
 MakeTrendingTOFQA.C:50
 MakeTrendingTOFQA.C:51
 MakeTrendingTOFQA.C:52
 MakeTrendingTOFQA.C:53
 MakeTrendingTOFQA.C:54
 MakeTrendingTOFQA.C:55
 MakeTrendingTOFQA.C:56
 MakeTrendingTOFQA.C:57
 MakeTrendingTOFQA.C:58
 MakeTrendingTOFQA.C:59
 MakeTrendingTOFQA.C:60
 MakeTrendingTOFQA.C:61
 MakeTrendingTOFQA.C:62
 MakeTrendingTOFQA.C:63
 MakeTrendingTOFQA.C:64
 MakeTrendingTOFQA.C:65
 MakeTrendingTOFQA.C:66
 MakeTrendingTOFQA.C:67
 MakeTrendingTOFQA.C:68
 MakeTrendingTOFQA.C:69
 MakeTrendingTOFQA.C:70
 MakeTrendingTOFQA.C:71
 MakeTrendingTOFQA.C:72
 MakeTrendingTOFQA.C:73
 MakeTrendingTOFQA.C:74
 MakeTrendingTOFQA.C:75
 MakeTrendingTOFQA.C:76
 MakeTrendingTOFQA.C:77
 MakeTrendingTOFQA.C:78
 MakeTrendingTOFQA.C:79
 MakeTrendingTOFQA.C:80
 MakeTrendingTOFQA.C:81
 MakeTrendingTOFQA.C:82
 MakeTrendingTOFQA.C:83
 MakeTrendingTOFQA.C:84
 MakeTrendingTOFQA.C:85
 MakeTrendingTOFQA.C:86
 MakeTrendingTOFQA.C:87
 MakeTrendingTOFQA.C:88
 MakeTrendingTOFQA.C:89
 MakeTrendingTOFQA.C:90
 MakeTrendingTOFQA.C:91
 MakeTrendingTOFQA.C:92
 MakeTrendingTOFQA.C:93
 MakeTrendingTOFQA.C:94
 MakeTrendingTOFQA.C:95
 MakeTrendingTOFQA.C:96
 MakeTrendingTOFQA.C:97
 MakeTrendingTOFQA.C:98
 MakeTrendingTOFQA.C:99
 MakeTrendingTOFQA.C:100
 MakeTrendingTOFQA.C:101
 MakeTrendingTOFQA.C:102
 MakeTrendingTOFQA.C:103
 MakeTrendingTOFQA.C:104
 MakeTrendingTOFQA.C:105
 MakeTrendingTOFQA.C:106
 MakeTrendingTOFQA.C:107
 MakeTrendingTOFQA.C:108
 MakeTrendingTOFQA.C:109
 MakeTrendingTOFQA.C:110
 MakeTrendingTOFQA.C:111
 MakeTrendingTOFQA.C:112
 MakeTrendingTOFQA.C:113
 MakeTrendingTOFQA.C:114
 MakeTrendingTOFQA.C:115
 MakeTrendingTOFQA.C:116
 MakeTrendingTOFQA.C:117
 MakeTrendingTOFQA.C:118
 MakeTrendingTOFQA.C:119
 MakeTrendingTOFQA.C:120
 MakeTrendingTOFQA.C:121
 MakeTrendingTOFQA.C:122
 MakeTrendingTOFQA.C:123
 MakeTrendingTOFQA.C:124
 MakeTrendingTOFQA.C:125
 MakeTrendingTOFQA.C:126
 MakeTrendingTOFQA.C:127
 MakeTrendingTOFQA.C:128
 MakeTrendingTOFQA.C:129
 MakeTrendingTOFQA.C:130
 MakeTrendingTOFQA.C:131
 MakeTrendingTOFQA.C:132
 MakeTrendingTOFQA.C:133
 MakeTrendingTOFQA.C:134
 MakeTrendingTOFQA.C:135
 MakeTrendingTOFQA.C:136
 MakeTrendingTOFQA.C:137
 MakeTrendingTOFQA.C:138
 MakeTrendingTOFQA.C:139
 MakeTrendingTOFQA.C:140
 MakeTrendingTOFQA.C:141
 MakeTrendingTOFQA.C:142
 MakeTrendingTOFQA.C:143
 MakeTrendingTOFQA.C:144
 MakeTrendingTOFQA.C:145
 MakeTrendingTOFQA.C:146
 MakeTrendingTOFQA.C:147
 MakeTrendingTOFQA.C:148
 MakeTrendingTOFQA.C:149
 MakeTrendingTOFQA.C:150
 MakeTrendingTOFQA.C:151
 MakeTrendingTOFQA.C:152
 MakeTrendingTOFQA.C:153
 MakeTrendingTOFQA.C:154
 MakeTrendingTOFQA.C:155
 MakeTrendingTOFQA.C:156
 MakeTrendingTOFQA.C:157
 MakeTrendingTOFQA.C:158
 MakeTrendingTOFQA.C:159
 MakeTrendingTOFQA.C:160
 MakeTrendingTOFQA.C:161
 MakeTrendingTOFQA.C:162
 MakeTrendingTOFQA.C:163
 MakeTrendingTOFQA.C:164
 MakeTrendingTOFQA.C:165
 MakeTrendingTOFQA.C:166
 MakeTrendingTOFQA.C:167
 MakeTrendingTOFQA.C:168
 MakeTrendingTOFQA.C:169
 MakeTrendingTOFQA.C:170
 MakeTrendingTOFQA.C:171
 MakeTrendingTOFQA.C:172
 MakeTrendingTOFQA.C:173
 MakeTrendingTOFQA.C:174
 MakeTrendingTOFQA.C:175
 MakeTrendingTOFQA.C:176
 MakeTrendingTOFQA.C:177
 MakeTrendingTOFQA.C:178
 MakeTrendingTOFQA.C:179
 MakeTrendingTOFQA.C:180
 MakeTrendingTOFQA.C:181
 MakeTrendingTOFQA.C:182
 MakeTrendingTOFQA.C:183
 MakeTrendingTOFQA.C:184
 MakeTrendingTOFQA.C:185
 MakeTrendingTOFQA.C:186
 MakeTrendingTOFQA.C:187
 MakeTrendingTOFQA.C:188
 MakeTrendingTOFQA.C:189
 MakeTrendingTOFQA.C:190
 MakeTrendingTOFQA.C:191
 MakeTrendingTOFQA.C:192
 MakeTrendingTOFQA.C:193
 MakeTrendingTOFQA.C:194
 MakeTrendingTOFQA.C:195
 MakeTrendingTOFQA.C:196
 MakeTrendingTOFQA.C:197
 MakeTrendingTOFQA.C:198
 MakeTrendingTOFQA.C:199
 MakeTrendingTOFQA.C:200
 MakeTrendingTOFQA.C:201
 MakeTrendingTOFQA.C:202
 MakeTrendingTOFQA.C:203
 MakeTrendingTOFQA.C:204
 MakeTrendingTOFQA.C:205
 MakeTrendingTOFQA.C:206
 MakeTrendingTOFQA.C:207
 MakeTrendingTOFQA.C:208
 MakeTrendingTOFQA.C:209
 MakeTrendingTOFQA.C:210
 MakeTrendingTOFQA.C:211
 MakeTrendingTOFQA.C:212
 MakeTrendingTOFQA.C:213
 MakeTrendingTOFQA.C:214
 MakeTrendingTOFQA.C:215
 MakeTrendingTOFQA.C:216
 MakeTrendingTOFQA.C:217
 MakeTrendingTOFQA.C:218
 MakeTrendingTOFQA.C:219
 MakeTrendingTOFQA.C:220
 MakeTrendingTOFQA.C:221
 MakeTrendingTOFQA.C:222
 MakeTrendingTOFQA.C:223
 MakeTrendingTOFQA.C:224
 MakeTrendingTOFQA.C:225
 MakeTrendingTOFQA.C:226
 MakeTrendingTOFQA.C:227
 MakeTrendingTOFQA.C:228
 MakeTrendingTOFQA.C:229
 MakeTrendingTOFQA.C:230
 MakeTrendingTOFQA.C:231
 MakeTrendingTOFQA.C:232
 MakeTrendingTOFQA.C:233
 MakeTrendingTOFQA.C:234
 MakeTrendingTOFQA.C:235
 MakeTrendingTOFQA.C:236
 MakeTrendingTOFQA.C:237
 MakeTrendingTOFQA.C:238
 MakeTrendingTOFQA.C:239
 MakeTrendingTOFQA.C:240
 MakeTrendingTOFQA.C:241
 MakeTrendingTOFQA.C:242
 MakeTrendingTOFQA.C:243
 MakeTrendingTOFQA.C:244
 MakeTrendingTOFQA.C:245
 MakeTrendingTOFQA.C:246
 MakeTrendingTOFQA.C:247
 MakeTrendingTOFQA.C:248
 MakeTrendingTOFQA.C:249
 MakeTrendingTOFQA.C:250
 MakeTrendingTOFQA.C:251
 MakeTrendingTOFQA.C:252
 MakeTrendingTOFQA.C:253
 MakeTrendingTOFQA.C:254
 MakeTrendingTOFQA.C:255
 MakeTrendingTOFQA.C:256
 MakeTrendingTOFQA.C:257
 MakeTrendingTOFQA.C:258
 MakeTrendingTOFQA.C:259
 MakeTrendingTOFQA.C:260
 MakeTrendingTOFQA.C:261
 MakeTrendingTOFQA.C:262
 MakeTrendingTOFQA.C:263
 MakeTrendingTOFQA.C:264
 MakeTrendingTOFQA.C:265
 MakeTrendingTOFQA.C:266
 MakeTrendingTOFQA.C:267
 MakeTrendingTOFQA.C:268
 MakeTrendingTOFQA.C:269
 MakeTrendingTOFQA.C:270
 MakeTrendingTOFQA.C:271
 MakeTrendingTOFQA.C:272
 MakeTrendingTOFQA.C:273
 MakeTrendingTOFQA.C:274
 MakeTrendingTOFQA.C:275
 MakeTrendingTOFQA.C:276
 MakeTrendingTOFQA.C:277
 MakeTrendingTOFQA.C:278
 MakeTrendingTOFQA.C:279
 MakeTrendingTOFQA.C:280
 MakeTrendingTOFQA.C:281
 MakeTrendingTOFQA.C:282
 MakeTrendingTOFQA.C:283
 MakeTrendingTOFQA.C:284
 MakeTrendingTOFQA.C:285
 MakeTrendingTOFQA.C:286
 MakeTrendingTOFQA.C:287
 MakeTrendingTOFQA.C:288
 MakeTrendingTOFQA.C:289
 MakeTrendingTOFQA.C:290
 MakeTrendingTOFQA.C:291
 MakeTrendingTOFQA.C:292
 MakeTrendingTOFQA.C:293
 MakeTrendingTOFQA.C:294
 MakeTrendingTOFQA.C:295
 MakeTrendingTOFQA.C:296
 MakeTrendingTOFQA.C:297
 MakeTrendingTOFQA.C:298
 MakeTrendingTOFQA.C:299
 MakeTrendingTOFQA.C:300
 MakeTrendingTOFQA.C:301
 MakeTrendingTOFQA.C:302
 MakeTrendingTOFQA.C:303
 MakeTrendingTOFQA.C:304
 MakeTrendingTOFQA.C:305
 MakeTrendingTOFQA.C:306
 MakeTrendingTOFQA.C:307
 MakeTrendingTOFQA.C:308
 MakeTrendingTOFQA.C:309
 MakeTrendingTOFQA.C:310
 MakeTrendingTOFQA.C:311
 MakeTrendingTOFQA.C:312
 MakeTrendingTOFQA.C:313
 MakeTrendingTOFQA.C:314
 MakeTrendingTOFQA.C:315
 MakeTrendingTOFQA.C:316
 MakeTrendingTOFQA.C:317
 MakeTrendingTOFQA.C:318
 MakeTrendingTOFQA.C:319
 MakeTrendingTOFQA.C:320
 MakeTrendingTOFQA.C:321
 MakeTrendingTOFQA.C:322
 MakeTrendingTOFQA.C:323
 MakeTrendingTOFQA.C:324
 MakeTrendingTOFQA.C:325
 MakeTrendingTOFQA.C:326
 MakeTrendingTOFQA.C:327
 MakeTrendingTOFQA.C:328
 MakeTrendingTOFQA.C:329
 MakeTrendingTOFQA.C:330
 MakeTrendingTOFQA.C:331
 MakeTrendingTOFQA.C:332
 MakeTrendingTOFQA.C:333
 MakeTrendingTOFQA.C:334
 MakeTrendingTOFQA.C:335
 MakeTrendingTOFQA.C:336
 MakeTrendingTOFQA.C:337
 MakeTrendingTOFQA.C:338
 MakeTrendingTOFQA.C:339
 MakeTrendingTOFQA.C:340
 MakeTrendingTOFQA.C:341
 MakeTrendingTOFQA.C:342
 MakeTrendingTOFQA.C:343
 MakeTrendingTOFQA.C:344
 MakeTrendingTOFQA.C:345
 MakeTrendingTOFQA.C:346
 MakeTrendingTOFQA.C:347
 MakeTrendingTOFQA.C:348
 MakeTrendingTOFQA.C:349
 MakeTrendingTOFQA.C:350
 MakeTrendingTOFQA.C:351
 MakeTrendingTOFQA.C:352
 MakeTrendingTOFQA.C:353
 MakeTrendingTOFQA.C:354
 MakeTrendingTOFQA.C:355
 MakeTrendingTOFQA.C:356
 MakeTrendingTOFQA.C:357
 MakeTrendingTOFQA.C:358
 MakeTrendingTOFQA.C:359
 MakeTrendingTOFQA.C:360
 MakeTrendingTOFQA.C:361
 MakeTrendingTOFQA.C:362
 MakeTrendingTOFQA.C:363
 MakeTrendingTOFQA.C:364
 MakeTrendingTOFQA.C:365
 MakeTrendingTOFQA.C:366
 MakeTrendingTOFQA.C:367
 MakeTrendingTOFQA.C:368
 MakeTrendingTOFQA.C:369
 MakeTrendingTOFQA.C:370
 MakeTrendingTOFQA.C:371
 MakeTrendingTOFQA.C:372
 MakeTrendingTOFQA.C:373
 MakeTrendingTOFQA.C:374
 MakeTrendingTOFQA.C:375
 MakeTrendingTOFQA.C:376
 MakeTrendingTOFQA.C:377
 MakeTrendingTOFQA.C:378
 MakeTrendingTOFQA.C:379
 MakeTrendingTOFQA.C:380
 MakeTrendingTOFQA.C:381
 MakeTrendingTOFQA.C:382
 MakeTrendingTOFQA.C:383
 MakeTrendingTOFQA.C:384
 MakeTrendingTOFQA.C:385
 MakeTrendingTOFQA.C:386
 MakeTrendingTOFQA.C:387
 MakeTrendingTOFQA.C:388
 MakeTrendingTOFQA.C:389
 MakeTrendingTOFQA.C:390
 MakeTrendingTOFQA.C:391
 MakeTrendingTOFQA.C:392
 MakeTrendingTOFQA.C:393
 MakeTrendingTOFQA.C:394
 MakeTrendingTOFQA.C:395
 MakeTrendingTOFQA.C:396
 MakeTrendingTOFQA.C:397
 MakeTrendingTOFQA.C:398
 MakeTrendingTOFQA.C:399
 MakeTrendingTOFQA.C:400
 MakeTrendingTOFQA.C:401
 MakeTrendingTOFQA.C:402
 MakeTrendingTOFQA.C:403
 MakeTrendingTOFQA.C:404
 MakeTrendingTOFQA.C:405
 MakeTrendingTOFQA.C:406
 MakeTrendingTOFQA.C:407
 MakeTrendingTOFQA.C:408
 MakeTrendingTOFQA.C:409
 MakeTrendingTOFQA.C:410
 MakeTrendingTOFQA.C:411
 MakeTrendingTOFQA.C:412
 MakeTrendingTOFQA.C:413
 MakeTrendingTOFQA.C:414
 MakeTrendingTOFQA.C:415
 MakeTrendingTOFQA.C:416
 MakeTrendingTOFQA.C:417
 MakeTrendingTOFQA.C:418
 MakeTrendingTOFQA.C:419
 MakeTrendingTOFQA.C:420
 MakeTrendingTOFQA.C:421
 MakeTrendingTOFQA.C:422
 MakeTrendingTOFQA.C:423
 MakeTrendingTOFQA.C:424
 MakeTrendingTOFQA.C:425
 MakeTrendingTOFQA.C:426
 MakeTrendingTOFQA.C:427
 MakeTrendingTOFQA.C:428
 MakeTrendingTOFQA.C:429
 MakeTrendingTOFQA.C:430
 MakeTrendingTOFQA.C:431
 MakeTrendingTOFQA.C:432
 MakeTrendingTOFQA.C:433
 MakeTrendingTOFQA.C:434
 MakeTrendingTOFQA.C:435
 MakeTrendingTOFQA.C:436
 MakeTrendingTOFQA.C:437
 MakeTrendingTOFQA.C:438
 MakeTrendingTOFQA.C:439
 MakeTrendingTOFQA.C:440
 MakeTrendingTOFQA.C:441
 MakeTrendingTOFQA.C:442
 MakeTrendingTOFQA.C:443
 MakeTrendingTOFQA.C:444
 MakeTrendingTOFQA.C:445
 MakeTrendingTOFQA.C:446
 MakeTrendingTOFQA.C:447
 MakeTrendingTOFQA.C:448
 MakeTrendingTOFQA.C:449
 MakeTrendingTOFQA.C:450
 MakeTrendingTOFQA.C:451
 MakeTrendingTOFQA.C:452
 MakeTrendingTOFQA.C:453
 MakeTrendingTOFQA.C:454
 MakeTrendingTOFQA.C:455
 MakeTrendingTOFQA.C:456
 MakeTrendingTOFQA.C:457
 MakeTrendingTOFQA.C:458
 MakeTrendingTOFQA.C:459
 MakeTrendingTOFQA.C:460
 MakeTrendingTOFQA.C:461
 MakeTrendingTOFQA.C:462
 MakeTrendingTOFQA.C:463
 MakeTrendingTOFQA.C:464
 MakeTrendingTOFQA.C:465
 MakeTrendingTOFQA.C:466
 MakeTrendingTOFQA.C:467
 MakeTrendingTOFQA.C:468
 MakeTrendingTOFQA.C:469
 MakeTrendingTOFQA.C:470
 MakeTrendingTOFQA.C:471
 MakeTrendingTOFQA.C:472
 MakeTrendingTOFQA.C:473
 MakeTrendingTOFQA.C:474
 MakeTrendingTOFQA.C:475
 MakeTrendingTOFQA.C:476
 MakeTrendingTOFQA.C:477
 MakeTrendingTOFQA.C:478
 MakeTrendingTOFQA.C:479
 MakeTrendingTOFQA.C:480
 MakeTrendingTOFQA.C:481
 MakeTrendingTOFQA.C:482
 MakeTrendingTOFQA.C:483
 MakeTrendingTOFQA.C:484
 MakeTrendingTOFQA.C:485
 MakeTrendingTOFQA.C:486
 MakeTrendingTOFQA.C:487
 MakeTrendingTOFQA.C:488
 MakeTrendingTOFQA.C:489
 MakeTrendingTOFQA.C:490
 MakeTrendingTOFQA.C:491
 MakeTrendingTOFQA.C:492
 MakeTrendingTOFQA.C:493
 MakeTrendingTOFQA.C:494
 MakeTrendingTOFQA.C:495
 MakeTrendingTOFQA.C:496
 MakeTrendingTOFQA.C:497
 MakeTrendingTOFQA.C:498
 MakeTrendingTOFQA.C:499
 MakeTrendingTOFQA.C:500
 MakeTrendingTOFQA.C:501
 MakeTrendingTOFQA.C:502
 MakeTrendingTOFQA.C:503
 MakeTrendingTOFQA.C:504
 MakeTrendingTOFQA.C:505
 MakeTrendingTOFQA.C:506
 MakeTrendingTOFQA.C:507
 MakeTrendingTOFQA.C:508
 MakeTrendingTOFQA.C:509
 MakeTrendingTOFQA.C:510
 MakeTrendingTOFQA.C:511
 MakeTrendingTOFQA.C:512
 MakeTrendingTOFQA.C:513
 MakeTrendingTOFQA.C:514
 MakeTrendingTOFQA.C:515
 MakeTrendingTOFQA.C:516
 MakeTrendingTOFQA.C:517
 MakeTrendingTOFQA.C:518
 MakeTrendingTOFQA.C:519
 MakeTrendingTOFQA.C:520
 MakeTrendingTOFQA.C:521
 MakeTrendingTOFQA.C:522
 MakeTrendingTOFQA.C:523
 MakeTrendingTOFQA.C:524
 MakeTrendingTOFQA.C:525
 MakeTrendingTOFQA.C:526
 MakeTrendingTOFQA.C:527
 MakeTrendingTOFQA.C:528
 MakeTrendingTOFQA.C:529
 MakeTrendingTOFQA.C:530
 MakeTrendingTOFQA.C:531
 MakeTrendingTOFQA.C:532
 MakeTrendingTOFQA.C:533
 MakeTrendingTOFQA.C:534
 MakeTrendingTOFQA.C:535
 MakeTrendingTOFQA.C:536
 MakeTrendingTOFQA.C:537
 MakeTrendingTOFQA.C:538
 MakeTrendingTOFQA.C:539
 MakeTrendingTOFQA.C:540
 MakeTrendingTOFQA.C:541
 MakeTrendingTOFQA.C:542
 MakeTrendingTOFQA.C:543
 MakeTrendingTOFQA.C:544
 MakeTrendingTOFQA.C:545
 MakeTrendingTOFQA.C:546
 MakeTrendingTOFQA.C:547
 MakeTrendingTOFQA.C:548
 MakeTrendingTOFQA.C:549
 MakeTrendingTOFQA.C:550
 MakeTrendingTOFQA.C:551
 MakeTrendingTOFQA.C:552
 MakeTrendingTOFQA.C:553
 MakeTrendingTOFQA.C:554
 MakeTrendingTOFQA.C:555
 MakeTrendingTOFQA.C:556
 MakeTrendingTOFQA.C:557
 MakeTrendingTOFQA.C:558
 MakeTrendingTOFQA.C:559
 MakeTrendingTOFQA.C:560
 MakeTrendingTOFQA.C:561
 MakeTrendingTOFQA.C:562
 MakeTrendingTOFQA.C:563
 MakeTrendingTOFQA.C:564
 MakeTrendingTOFQA.C:565
 MakeTrendingTOFQA.C:566
 MakeTrendingTOFQA.C:567
 MakeTrendingTOFQA.C:568
 MakeTrendingTOFQA.C:569
 MakeTrendingTOFQA.C:570
 MakeTrendingTOFQA.C:571
 MakeTrendingTOFQA.C:572
 MakeTrendingTOFQA.C:573
 MakeTrendingTOFQA.C:574
 MakeTrendingTOFQA.C:575
 MakeTrendingTOFQA.C:576
 MakeTrendingTOFQA.C:577
 MakeTrendingTOFQA.C:578
 MakeTrendingTOFQA.C:579
 MakeTrendingTOFQA.C:580
 MakeTrendingTOFQA.C:581
 MakeTrendingTOFQA.C:582
 MakeTrendingTOFQA.C:583
 MakeTrendingTOFQA.C:584
 MakeTrendingTOFQA.C:585
 MakeTrendingTOFQA.C:586
 MakeTrendingTOFQA.C:587
 MakeTrendingTOFQA.C:588
 MakeTrendingTOFQA.C:589
 MakeTrendingTOFQA.C:590
 MakeTrendingTOFQA.C:591
 MakeTrendingTOFQA.C:592
 MakeTrendingTOFQA.C:593
 MakeTrendingTOFQA.C:594
 MakeTrendingTOFQA.C:595
 MakeTrendingTOFQA.C:596
 MakeTrendingTOFQA.C:597
 MakeTrendingTOFQA.C:598
 MakeTrendingTOFQA.C:599
 MakeTrendingTOFQA.C:600
 MakeTrendingTOFQA.C:601
 MakeTrendingTOFQA.C:602
 MakeTrendingTOFQA.C:603
 MakeTrendingTOFQA.C:604
 MakeTrendingTOFQA.C:605
 MakeTrendingTOFQA.C:606
 MakeTrendingTOFQA.C:607
 MakeTrendingTOFQA.C:608
 MakeTrendingTOFQA.C:609
 MakeTrendingTOFQA.C:610
 MakeTrendingTOFQA.C:611
 MakeTrendingTOFQA.C:612
 MakeTrendingTOFQA.C:613
 MakeTrendingTOFQA.C:614
 MakeTrendingTOFQA.C:615
 MakeTrendingTOFQA.C:616
 MakeTrendingTOFQA.C:617
 MakeTrendingTOFQA.C:618
 MakeTrendingTOFQA.C:619
 MakeTrendingTOFQA.C:620
 MakeTrendingTOFQA.C:621
 MakeTrendingTOFQA.C:622
 MakeTrendingTOFQA.C:623
 MakeTrendingTOFQA.C:624
 MakeTrendingTOFQA.C:625
 MakeTrendingTOFQA.C:626
 MakeTrendingTOFQA.C:627
 MakeTrendingTOFQA.C:628
 MakeTrendingTOFQA.C:629
 MakeTrendingTOFQA.C:630
 MakeTrendingTOFQA.C:631
 MakeTrendingTOFQA.C:632
 MakeTrendingTOFQA.C:633
 MakeTrendingTOFQA.C:634
 MakeTrendingTOFQA.C:635
 MakeTrendingTOFQA.C:636
 MakeTrendingTOFQA.C:637
 MakeTrendingTOFQA.C:638
 MakeTrendingTOFQA.C:639
 MakeTrendingTOFQA.C:640
 MakeTrendingTOFQA.C:641
 MakeTrendingTOFQA.C:642
 MakeTrendingTOFQA.C:643
 MakeTrendingTOFQA.C:644
 MakeTrendingTOFQA.C:645
 MakeTrendingTOFQA.C:646
 MakeTrendingTOFQA.C:647
 MakeTrendingTOFQA.C:648
 MakeTrendingTOFQA.C:649
 MakeTrendingTOFQA.C:650
 MakeTrendingTOFQA.C:651
 MakeTrendingTOFQA.C:652
 MakeTrendingTOFQA.C:653
 MakeTrendingTOFQA.C:654
 MakeTrendingTOFQA.C:655
 MakeTrendingTOFQA.C:656
 MakeTrendingTOFQA.C:657
 MakeTrendingTOFQA.C:658
 MakeTrendingTOFQA.C:659
 MakeTrendingTOFQA.C:660
 MakeTrendingTOFQA.C:661
 MakeTrendingTOFQA.C:662
 MakeTrendingTOFQA.C:663
 MakeTrendingTOFQA.C:664
 MakeTrendingTOFQA.C:665
 MakeTrendingTOFQA.C:666
 MakeTrendingTOFQA.C:667
 MakeTrendingTOFQA.C:668
 MakeTrendingTOFQA.C:669
 MakeTrendingTOFQA.C:670
 MakeTrendingTOFQA.C:671
 MakeTrendingTOFQA.C:672
 MakeTrendingTOFQA.C:673
 MakeTrendingTOFQA.C:674
 MakeTrendingTOFQA.C:675
 MakeTrendingTOFQA.C:676
 MakeTrendingTOFQA.C:677
 MakeTrendingTOFQA.C:678
 MakeTrendingTOFQA.C:679
 MakeTrendingTOFQA.C:680
 MakeTrendingTOFQA.C:681
 MakeTrendingTOFQA.C:682
 MakeTrendingTOFQA.C:683
 MakeTrendingTOFQA.C:684
 MakeTrendingTOFQA.C:685
 MakeTrendingTOFQA.C:686
 MakeTrendingTOFQA.C:687
 MakeTrendingTOFQA.C:688
 MakeTrendingTOFQA.C:689
 MakeTrendingTOFQA.C:690
 MakeTrendingTOFQA.C:691
 MakeTrendingTOFQA.C:692
 MakeTrendingTOFQA.C:693
 MakeTrendingTOFQA.C:694
 MakeTrendingTOFQA.C:695
 MakeTrendingTOFQA.C:696
 MakeTrendingTOFQA.C:697
 MakeTrendingTOFQA.C:698
 MakeTrendingTOFQA.C:699
 MakeTrendingTOFQA.C:700
 MakeTrendingTOFQA.C:701
 MakeTrendingTOFQA.C:702
 MakeTrendingTOFQA.C:703
 MakeTrendingTOFQA.C:704
 MakeTrendingTOFQA.C:705
 MakeTrendingTOFQA.C:706
 MakeTrendingTOFQA.C:707
 MakeTrendingTOFQA.C:708
 MakeTrendingTOFQA.C:709
 MakeTrendingTOFQA.C:710
 MakeTrendingTOFQA.C:711
 MakeTrendingTOFQA.C:712
 MakeTrendingTOFQA.C:713
 MakeTrendingTOFQA.C:714
 MakeTrendingTOFQA.C:715
 MakeTrendingTOFQA.C:716
 MakeTrendingTOFQA.C:717
 MakeTrendingTOFQA.C:718
 MakeTrendingTOFQA.C:719
 MakeTrendingTOFQA.C:720
 MakeTrendingTOFQA.C:721
 MakeTrendingTOFQA.C:722
 MakeTrendingTOFQA.C:723
 MakeTrendingTOFQA.C:724
 MakeTrendingTOFQA.C:725
 MakeTrendingTOFQA.C:726
 MakeTrendingTOFQA.C:727
 MakeTrendingTOFQA.C:728
 MakeTrendingTOFQA.C:729
 MakeTrendingTOFQA.C:730
 MakeTrendingTOFQA.C:731
 MakeTrendingTOFQA.C:732
 MakeTrendingTOFQA.C:733
 MakeTrendingTOFQA.C:734
 MakeTrendingTOFQA.C:735
 MakeTrendingTOFQA.C:736
 MakeTrendingTOFQA.C:737
 MakeTrendingTOFQA.C:738
 MakeTrendingTOFQA.C:739
 MakeTrendingTOFQA.C:740
 MakeTrendingTOFQA.C:741
 MakeTrendingTOFQA.C:742
 MakeTrendingTOFQA.C:743
 MakeTrendingTOFQA.C:744
 MakeTrendingTOFQA.C:745
 MakeTrendingTOFQA.C:746
 MakeTrendingTOFQA.C:747
 MakeTrendingTOFQA.C:748
 MakeTrendingTOFQA.C:749
 MakeTrendingTOFQA.C:750
 MakeTrendingTOFQA.C:751
 MakeTrendingTOFQA.C:752
 MakeTrendingTOFQA.C:753
 MakeTrendingTOFQA.C:754
 MakeTrendingTOFQA.C:755
 MakeTrendingTOFQA.C:756
 MakeTrendingTOFQA.C:757
 MakeTrendingTOFQA.C:758
 MakeTrendingTOFQA.C:759
 MakeTrendingTOFQA.C:760
 MakeTrendingTOFQA.C:761
 MakeTrendingTOFQA.C:762
 MakeTrendingTOFQA.C:763
 MakeTrendingTOFQA.C:764
 MakeTrendingTOFQA.C:765
 MakeTrendingTOFQA.C:766
 MakeTrendingTOFQA.C:767
 MakeTrendingTOFQA.C:768
 MakeTrendingTOFQA.C:769
 MakeTrendingTOFQA.C:770
 MakeTrendingTOFQA.C:771
 MakeTrendingTOFQA.C:772
 MakeTrendingTOFQA.C:773
 MakeTrendingTOFQA.C:774
 MakeTrendingTOFQA.C:775
 MakeTrendingTOFQA.C:776
 MakeTrendingTOFQA.C:777
 MakeTrendingTOFQA.C:778
 MakeTrendingTOFQA.C:779
 MakeTrendingTOFQA.C:780
 MakeTrendingTOFQA.C:781
 MakeTrendingTOFQA.C:782
 MakeTrendingTOFQA.C:783
 MakeTrendingTOFQA.C:784
 MakeTrendingTOFQA.C:785
 MakeTrendingTOFQA.C:786
 MakeTrendingTOFQA.C:787
 MakeTrendingTOFQA.C:788
 MakeTrendingTOFQA.C:789
 MakeTrendingTOFQA.C:790
 MakeTrendingTOFQA.C:791
 MakeTrendingTOFQA.C:792
 MakeTrendingTOFQA.C:793
 MakeTrendingTOFQA.C:794
 MakeTrendingTOFQA.C:795
 MakeTrendingTOFQA.C:796
 MakeTrendingTOFQA.C:797
 MakeTrendingTOFQA.C:798
 MakeTrendingTOFQA.C:799
 MakeTrendingTOFQA.C:800
 MakeTrendingTOFQA.C:801
 MakeTrendingTOFQA.C:802
 MakeTrendingTOFQA.C:803
 MakeTrendingTOFQA.C:804
 MakeTrendingTOFQA.C:805
 MakeTrendingTOFQA.C:806
 MakeTrendingTOFQA.C:807
 MakeTrendingTOFQA.C:808
 MakeTrendingTOFQA.C:809
 MakeTrendingTOFQA.C:810
 MakeTrendingTOFQA.C:811
 MakeTrendingTOFQA.C:812
 MakeTrendingTOFQA.C:813
 MakeTrendingTOFQA.C:814
 MakeTrendingTOFQA.C:815
 MakeTrendingTOFQA.C:816
 MakeTrendingTOFQA.C:817
 MakeTrendingTOFQA.C:818
 MakeTrendingTOFQA.C:819
 MakeTrendingTOFQA.C:820
 MakeTrendingTOFQA.C:821
 MakeTrendingTOFQA.C:822
 MakeTrendingTOFQA.C:823
 MakeTrendingTOFQA.C:824
 MakeTrendingTOFQA.C:825
 MakeTrendingTOFQA.C:826
 MakeTrendingTOFQA.C:827
 MakeTrendingTOFQA.C:828
 MakeTrendingTOFQA.C:829
 MakeTrendingTOFQA.C:830
 MakeTrendingTOFQA.C:831
 MakeTrendingTOFQA.C:832
 MakeTrendingTOFQA.C:833
 MakeTrendingTOFQA.C:834
 MakeTrendingTOFQA.C:835
 MakeTrendingTOFQA.C:836
 MakeTrendingTOFQA.C:837
 MakeTrendingTOFQA.C:838
 MakeTrendingTOFQA.C:839
 MakeTrendingTOFQA.C:840
 MakeTrendingTOFQA.C:841
 MakeTrendingTOFQA.C:842
 MakeTrendingTOFQA.C:843
 MakeTrendingTOFQA.C:844
 MakeTrendingTOFQA.C:845
 MakeTrendingTOFQA.C:846
 MakeTrendingTOFQA.C:847
 MakeTrendingTOFQA.C:848
 MakeTrendingTOFQA.C:849
 MakeTrendingTOFQA.C:850
 MakeTrendingTOFQA.C:851
 MakeTrendingTOFQA.C:852
 MakeTrendingTOFQA.C:853
 MakeTrendingTOFQA.C:854
 MakeTrendingTOFQA.C:855
 MakeTrendingTOFQA.C:856
 MakeTrendingTOFQA.C:857
 MakeTrendingTOFQA.C:858
 MakeTrendingTOFQA.C:859
 MakeTrendingTOFQA.C:860
 MakeTrendingTOFQA.C:861
 MakeTrendingTOFQA.C:862
 MakeTrendingTOFQA.C:863
 MakeTrendingTOFQA.C:864
 MakeTrendingTOFQA.C:865
 MakeTrendingTOFQA.C:866
 MakeTrendingTOFQA.C:867
 MakeTrendingTOFQA.C:868
 MakeTrendingTOFQA.C:869
 MakeTrendingTOFQA.C:870
 MakeTrendingTOFQA.C:871
 MakeTrendingTOFQA.C:872
 MakeTrendingTOFQA.C:873
 MakeTrendingTOFQA.C:874
 MakeTrendingTOFQA.C:875
 MakeTrendingTOFQA.C:876
 MakeTrendingTOFQA.C:877
 MakeTrendingTOFQA.C:878
 MakeTrendingTOFQA.C:879
 MakeTrendingTOFQA.C:880
 MakeTrendingTOFQA.C:881
 MakeTrendingTOFQA.C:882
 MakeTrendingTOFQA.C:883
 MakeTrendingTOFQA.C:884
 MakeTrendingTOFQA.C:885
 MakeTrendingTOFQA.C:886
 MakeTrendingTOFQA.C:887
 MakeTrendingTOFQA.C:888
 MakeTrendingTOFQA.C:889
 MakeTrendingTOFQA.C:890
 MakeTrendingTOFQA.C:891
 MakeTrendingTOFQA.C:892
 MakeTrendingTOFQA.C:893
 MakeTrendingTOFQA.C:894
 MakeTrendingTOFQA.C:895
 MakeTrendingTOFQA.C:896
 MakeTrendingTOFQA.C:897
 MakeTrendingTOFQA.C:898
 MakeTrendingTOFQA.C:899
 MakeTrendingTOFQA.C:900
 MakeTrendingTOFQA.C:901
 MakeTrendingTOFQA.C:902
 MakeTrendingTOFQA.C:903
 MakeTrendingTOFQA.C:904
 MakeTrendingTOFQA.C:905
 MakeTrendingTOFQA.C:906
 MakeTrendingTOFQA.C:907
 MakeTrendingTOFQA.C:908
 MakeTrendingTOFQA.C:909
 MakeTrendingTOFQA.C:910
 MakeTrendingTOFQA.C:911
 MakeTrendingTOFQA.C:912
 MakeTrendingTOFQA.C:913
 MakeTrendingTOFQA.C:914
 MakeTrendingTOFQA.C:915
 MakeTrendingTOFQA.C:916
 MakeTrendingTOFQA.C:917
 MakeTrendingTOFQA.C:918
 MakeTrendingTOFQA.C:919
 MakeTrendingTOFQA.C:920
 MakeTrendingTOFQA.C:921
 MakeTrendingTOFQA.C:922
 MakeTrendingTOFQA.C:923
 MakeTrendingTOFQA.C:924
 MakeTrendingTOFQA.C:925
 MakeTrendingTOFQA.C:926
 MakeTrendingTOFQA.C:927
 MakeTrendingTOFQA.C:928
 MakeTrendingTOFQA.C:929
 MakeTrendingTOFQA.C:930
 MakeTrendingTOFQA.C:931
 MakeTrendingTOFQA.C:932
 MakeTrendingTOFQA.C:933
 MakeTrendingTOFQA.C:934
 MakeTrendingTOFQA.C:935
 MakeTrendingTOFQA.C:936
 MakeTrendingTOFQA.C:937
 MakeTrendingTOFQA.C:938
 MakeTrendingTOFQA.C:939
 MakeTrendingTOFQA.C:940
 MakeTrendingTOFQA.C:941
 MakeTrendingTOFQA.C:942
 MakeTrendingTOFQA.C:943
 MakeTrendingTOFQA.C:944
 MakeTrendingTOFQA.C:945
 MakeTrendingTOFQA.C:946
 MakeTrendingTOFQA.C:947
 MakeTrendingTOFQA.C:948
 MakeTrendingTOFQA.C:949
 MakeTrendingTOFQA.C:950
 MakeTrendingTOFQA.C:951
 MakeTrendingTOFQA.C:952
 MakeTrendingTOFQA.C:953
 MakeTrendingTOFQA.C:954
 MakeTrendingTOFQA.C:955
 MakeTrendingTOFQA.C:956
 MakeTrendingTOFQA.C:957
 MakeTrendingTOFQA.C:958
 MakeTrendingTOFQA.C:959
 MakeTrendingTOFQA.C:960
 MakeTrendingTOFQA.C:961
 MakeTrendingTOFQA.C:962
 MakeTrendingTOFQA.C:963
 MakeTrendingTOFQA.C:964
 MakeTrendingTOFQA.C:965
 MakeTrendingTOFQA.C:966
 MakeTrendingTOFQA.C:967
 MakeTrendingTOFQA.C:968
 MakeTrendingTOFQA.C:969
 MakeTrendingTOFQA.C:970
 MakeTrendingTOFQA.C:971
 MakeTrendingTOFQA.C:972
 MakeTrendingTOFQA.C:973
 MakeTrendingTOFQA.C:974
 MakeTrendingTOFQA.C:975
 MakeTrendingTOFQA.C:976
 MakeTrendingTOFQA.C:977
 MakeTrendingTOFQA.C:978
 MakeTrendingTOFQA.C:979
 MakeTrendingTOFQA.C:980
 MakeTrendingTOFQA.C:981
 MakeTrendingTOFQA.C:982
 MakeTrendingTOFQA.C:983
 MakeTrendingTOFQA.C:984
 MakeTrendingTOFQA.C:985
 MakeTrendingTOFQA.C:986
 MakeTrendingTOFQA.C:987
 MakeTrendingTOFQA.C:988
 MakeTrendingTOFQA.C:989
 MakeTrendingTOFQA.C:990
 MakeTrendingTOFQA.C:991
 MakeTrendingTOFQA.C:992
 MakeTrendingTOFQA.C:993
 MakeTrendingTOFQA.C:994
 MakeTrendingTOFQA.C:995
 MakeTrendingTOFQA.C:996
 MakeTrendingTOFQA.C:997
 MakeTrendingTOFQA.C:998
 MakeTrendingTOFQA.C:999
 MakeTrendingTOFQA.C:1000
 MakeTrendingTOFQA.C:1001
 MakeTrendingTOFQA.C:1002
 MakeTrendingTOFQA.C:1003
 MakeTrendingTOFQA.C:1004
 MakeTrendingTOFQA.C:1005
 MakeTrendingTOFQA.C:1006
 MakeTrendingTOFQA.C:1007
 MakeTrendingTOFQA.C:1008
 MakeTrendingTOFQA.C:1009
 MakeTrendingTOFQA.C:1010
 MakeTrendingTOFQA.C:1011
 MakeTrendingTOFQA.C:1012
 MakeTrendingTOFQA.C:1013
 MakeTrendingTOFQA.C:1014
 MakeTrendingTOFQA.C:1015
 MakeTrendingTOFQA.C:1016
 MakeTrendingTOFQA.C:1017
 MakeTrendingTOFQA.C:1018
 MakeTrendingTOFQA.C:1019
 MakeTrendingTOFQA.C:1020
 MakeTrendingTOFQA.C:1021
 MakeTrendingTOFQA.C:1022
 MakeTrendingTOFQA.C:1023
 MakeTrendingTOFQA.C:1024
 MakeTrendingTOFQA.C:1025
 MakeTrendingTOFQA.C:1026
 MakeTrendingTOFQA.C:1027
 MakeTrendingTOFQA.C:1028
 MakeTrendingTOFQA.C:1029
 MakeTrendingTOFQA.C:1030
 MakeTrendingTOFQA.C:1031
 MakeTrendingTOFQA.C:1032
 MakeTrendingTOFQA.C:1033
 MakeTrendingTOFQA.C:1034
 MakeTrendingTOFQA.C:1035
 MakeTrendingTOFQA.C:1036
 MakeTrendingTOFQA.C:1037
 MakeTrendingTOFQA.C:1038
 MakeTrendingTOFQA.C:1039
 MakeTrendingTOFQA.C:1040
 MakeTrendingTOFQA.C:1041
 MakeTrendingTOFQA.C:1042
 MakeTrendingTOFQA.C:1043
 MakeTrendingTOFQA.C:1044
 MakeTrendingTOFQA.C:1045
 MakeTrendingTOFQA.C:1046
 MakeTrendingTOFQA.C:1047
 MakeTrendingTOFQA.C:1048
 MakeTrendingTOFQA.C:1049
 MakeTrendingTOFQA.C:1050
 MakeTrendingTOFQA.C:1051
 MakeTrendingTOFQA.C:1052
 MakeTrendingTOFQA.C:1053
 MakeTrendingTOFQA.C:1054
 MakeTrendingTOFQA.C:1055
 MakeTrendingTOFQA.C:1056
 MakeTrendingTOFQA.C:1057
 MakeTrendingTOFQA.C:1058
 MakeTrendingTOFQA.C:1059
 MakeTrendingTOFQA.C:1060
 MakeTrendingTOFQA.C:1061
 MakeTrendingTOFQA.C:1062
 MakeTrendingTOFQA.C:1063
 MakeTrendingTOFQA.C:1064
 MakeTrendingTOFQA.C:1065
 MakeTrendingTOFQA.C:1066
 MakeTrendingTOFQA.C:1067
 MakeTrendingTOFQA.C:1068
 MakeTrendingTOFQA.C:1069
 MakeTrendingTOFQA.C:1070
 MakeTrendingTOFQA.C:1071
 MakeTrendingTOFQA.C:1072
 MakeTrendingTOFQA.C:1073
 MakeTrendingTOFQA.C:1074
 MakeTrendingTOFQA.C:1075
 MakeTrendingTOFQA.C:1076
 MakeTrendingTOFQA.C:1077
 MakeTrendingTOFQA.C:1078
 MakeTrendingTOFQA.C:1079
 MakeTrendingTOFQA.C:1080
 MakeTrendingTOFQA.C:1081
 MakeTrendingTOFQA.C:1082
 MakeTrendingTOFQA.C:1083
 MakeTrendingTOFQA.C:1084
 MakeTrendingTOFQA.C:1085
 MakeTrendingTOFQA.C:1086
 MakeTrendingTOFQA.C:1087
 MakeTrendingTOFQA.C:1088
 MakeTrendingTOFQA.C:1089
 MakeTrendingTOFQA.C:1090
 MakeTrendingTOFQA.C:1091
 MakeTrendingTOFQA.C:1092
 MakeTrendingTOFQA.C:1093
 MakeTrendingTOFQA.C:1094
 MakeTrendingTOFQA.C:1095
 MakeTrendingTOFQA.C:1096
 MakeTrendingTOFQA.C:1097
 MakeTrendingTOFQA.C:1098
 MakeTrendingTOFQA.C:1099
 MakeTrendingTOFQA.C:1100
 MakeTrendingTOFQA.C:1101
 MakeTrendingTOFQA.C:1102
 MakeTrendingTOFQA.C:1103
 MakeTrendingTOFQA.C:1104
 MakeTrendingTOFQA.C:1105
 MakeTrendingTOFQA.C:1106
 MakeTrendingTOFQA.C:1107
 MakeTrendingTOFQA.C:1108
 MakeTrendingTOFQA.C:1109
 MakeTrendingTOFQA.C:1110
 MakeTrendingTOFQA.C:1111
 MakeTrendingTOFQA.C:1112
 MakeTrendingTOFQA.C:1113
 MakeTrendingTOFQA.C:1114
 MakeTrendingTOFQA.C:1115
 MakeTrendingTOFQA.C:1116
 MakeTrendingTOFQA.C:1117
 MakeTrendingTOFQA.C:1118
 MakeTrendingTOFQA.C:1119
 MakeTrendingTOFQA.C:1120
 MakeTrendingTOFQA.C:1121
 MakeTrendingTOFQA.C:1122
 MakeTrendingTOFQA.C:1123
 MakeTrendingTOFQA.C:1124
 MakeTrendingTOFQA.C:1125
 MakeTrendingTOFQA.C:1126
 MakeTrendingTOFQA.C:1127
 MakeTrendingTOFQA.C:1128
 MakeTrendingTOFQA.C:1129
 MakeTrendingTOFQA.C:1130
 MakeTrendingTOFQA.C:1131
 MakeTrendingTOFQA.C:1132
 MakeTrendingTOFQA.C:1133
 MakeTrendingTOFQA.C:1134
 MakeTrendingTOFQA.C:1135
 MakeTrendingTOFQA.C:1136
 MakeTrendingTOFQA.C:1137
 MakeTrendingTOFQA.C:1138
 MakeTrendingTOFQA.C:1139
 MakeTrendingTOFQA.C:1140
 MakeTrendingTOFQA.C:1141
 MakeTrendingTOFQA.C:1142
 MakeTrendingTOFQA.C:1143
 MakeTrendingTOFQA.C:1144
 MakeTrendingTOFQA.C:1145
 MakeTrendingTOFQA.C:1146
 MakeTrendingTOFQA.C:1147
 MakeTrendingTOFQA.C:1148
 MakeTrendingTOFQA.C:1149
 MakeTrendingTOFQA.C:1150
 MakeTrendingTOFQA.C:1151
 MakeTrendingTOFQA.C:1152
 MakeTrendingTOFQA.C:1153
 MakeTrendingTOFQA.C:1154
 MakeTrendingTOFQA.C:1155
 MakeTrendingTOFQA.C:1156
 MakeTrendingTOFQA.C:1157
 MakeTrendingTOFQA.C:1158
 MakeTrendingTOFQA.C:1159
 MakeTrendingTOFQA.C:1160
 MakeTrendingTOFQA.C:1161
 MakeTrendingTOFQA.C:1162
 MakeTrendingTOFQA.C:1163
 MakeTrendingTOFQA.C:1164
 MakeTrendingTOFQA.C:1165
 MakeTrendingTOFQA.C:1166
 MakeTrendingTOFQA.C:1167
 MakeTrendingTOFQA.C:1168
 MakeTrendingTOFQA.C:1169
 MakeTrendingTOFQA.C:1170
 MakeTrendingTOFQA.C:1171
 MakeTrendingTOFQA.C:1172
 MakeTrendingTOFQA.C:1173
 MakeTrendingTOFQA.C:1174
 MakeTrendingTOFQA.C:1175
 MakeTrendingTOFQA.C:1176
 MakeTrendingTOFQA.C:1177
 MakeTrendingTOFQA.C:1178
 MakeTrendingTOFQA.C:1179
 MakeTrendingTOFQA.C:1180
 MakeTrendingTOFQA.C:1181
 MakeTrendingTOFQA.C:1182
 MakeTrendingTOFQA.C:1183
 MakeTrendingTOFQA.C:1184
 MakeTrendingTOFQA.C:1185
 MakeTrendingTOFQA.C:1186
 MakeTrendingTOFQA.C:1187
 MakeTrendingTOFQA.C:1188
 MakeTrendingTOFQA.C:1189
 MakeTrendingTOFQA.C:1190
 MakeTrendingTOFQA.C:1191
 MakeTrendingTOFQA.C:1192
 MakeTrendingTOFQA.C:1193
 MakeTrendingTOFQA.C:1194
 MakeTrendingTOFQA.C:1195
 MakeTrendingTOFQA.C:1196
 MakeTrendingTOFQA.C:1197
 MakeTrendingTOFQA.C:1198
 MakeTrendingTOFQA.C:1199
 MakeTrendingTOFQA.C:1200
 MakeTrendingTOFQA.C:1201
 MakeTrendingTOFQA.C:1202
 MakeTrendingTOFQA.C:1203
 MakeTrendingTOFQA.C:1204
 MakeTrendingTOFQA.C:1205
 MakeTrendingTOFQA.C:1206
 MakeTrendingTOFQA.C:1207
 MakeTrendingTOFQA.C:1208
 MakeTrendingTOFQA.C:1209
 MakeTrendingTOFQA.C:1210
 MakeTrendingTOFQA.C:1211
 MakeTrendingTOFQA.C:1212
 MakeTrendingTOFQA.C:1213
 MakeTrendingTOFQA.C:1214
 MakeTrendingTOFQA.C:1215
 MakeTrendingTOFQA.C:1216
 MakeTrendingTOFQA.C:1217
 MakeTrendingTOFQA.C:1218
 MakeTrendingTOFQA.C:1219
 MakeTrendingTOFQA.C:1220
 MakeTrendingTOFQA.C:1221
 MakeTrendingTOFQA.C:1222
 MakeTrendingTOFQA.C:1223
 MakeTrendingTOFQA.C:1224
 MakeTrendingTOFQA.C:1225
 MakeTrendingTOFQA.C:1226
 MakeTrendingTOFQA.C:1227
 MakeTrendingTOFQA.C:1228
 MakeTrendingTOFQA.C:1229
 MakeTrendingTOFQA.C:1230
 MakeTrendingTOFQA.C:1231
 MakeTrendingTOFQA.C:1232
 MakeTrendingTOFQA.C:1233
 MakeTrendingTOFQA.C:1234
 MakeTrendingTOFQA.C:1235
 MakeTrendingTOFQA.C:1236
 MakeTrendingTOFQA.C:1237
 MakeTrendingTOFQA.C:1238
 MakeTrendingTOFQA.C:1239
 MakeTrendingTOFQA.C:1240
 MakeTrendingTOFQA.C:1241
 MakeTrendingTOFQA.C:1242
 MakeTrendingTOFQA.C:1243
 MakeTrendingTOFQA.C:1244
 MakeTrendingTOFQA.C:1245
 MakeTrendingTOFQA.C:1246
 MakeTrendingTOFQA.C:1247
 MakeTrendingTOFQA.C:1248
 MakeTrendingTOFQA.C:1249
 MakeTrendingTOFQA.C:1250
 MakeTrendingTOFQA.C:1251
 MakeTrendingTOFQA.C:1252
 MakeTrendingTOFQA.C:1253
 MakeTrendingTOFQA.C:1254
 MakeTrendingTOFQA.C:1255
 MakeTrendingTOFQA.C:1256
 MakeTrendingTOFQA.C:1257
 MakeTrendingTOFQA.C:1258
 MakeTrendingTOFQA.C:1259
 MakeTrendingTOFQA.C:1260
 MakeTrendingTOFQA.C:1261
 MakeTrendingTOFQA.C:1262
 MakeTrendingTOFQA.C:1263
 MakeTrendingTOFQA.C:1264
 MakeTrendingTOFQA.C:1265
 MakeTrendingTOFQA.C:1266
 MakeTrendingTOFQA.C:1267
 MakeTrendingTOFQA.C:1268
 MakeTrendingTOFQA.C:1269
 MakeTrendingTOFQA.C:1270
 MakeTrendingTOFQA.C:1271
 MakeTrendingTOFQA.C:1272
 MakeTrendingTOFQA.C:1273
 MakeTrendingTOFQA.C:1274
 MakeTrendingTOFQA.C:1275
 MakeTrendingTOFQA.C:1276
 MakeTrendingTOFQA.C:1277
 MakeTrendingTOFQA.C:1278
 MakeTrendingTOFQA.C:1279
 MakeTrendingTOFQA.C:1280
 MakeTrendingTOFQA.C:1281
 MakeTrendingTOFQA.C:1282
 MakeTrendingTOFQA.C:1283
 MakeTrendingTOFQA.C:1284
 MakeTrendingTOFQA.C:1285
 MakeTrendingTOFQA.C:1286
 MakeTrendingTOFQA.C:1287
 MakeTrendingTOFQA.C:1288
 MakeTrendingTOFQA.C:1289
 MakeTrendingTOFQA.C:1290
 MakeTrendingTOFQA.C:1291
 MakeTrendingTOFQA.C:1292
 MakeTrendingTOFQA.C:1293
 MakeTrendingTOFQA.C:1294
 MakeTrendingTOFQA.C:1295
 MakeTrendingTOFQA.C:1296
 MakeTrendingTOFQA.C:1297
 MakeTrendingTOFQA.C:1298
 MakeTrendingTOFQA.C:1299
 MakeTrendingTOFQA.C:1300
 MakeTrendingTOFQA.C:1301
 MakeTrendingTOFQA.C:1302
 MakeTrendingTOFQA.C:1303
 MakeTrendingTOFQA.C:1304
 MakeTrendingTOFQA.C:1305
 MakeTrendingTOFQA.C:1306
 MakeTrendingTOFQA.C:1307
 MakeTrendingTOFQA.C:1308
 MakeTrendingTOFQA.C:1309
 MakeTrendingTOFQA.C:1310
 MakeTrendingTOFQA.C:1311
 MakeTrendingTOFQA.C:1312
 MakeTrendingTOFQA.C:1313
 MakeTrendingTOFQA.C:1314
 MakeTrendingTOFQA.C:1315
 MakeTrendingTOFQA.C:1316
 MakeTrendingTOFQA.C:1317
 MakeTrendingTOFQA.C:1318
 MakeTrendingTOFQA.C:1319
 MakeTrendingTOFQA.C:1320
 MakeTrendingTOFQA.C:1321
 MakeTrendingTOFQA.C:1322
 MakeTrendingTOFQA.C:1323
 MakeTrendingTOFQA.C:1324
 MakeTrendingTOFQA.C:1325
 MakeTrendingTOFQA.C:1326
 MakeTrendingTOFQA.C:1327
 MakeTrendingTOFQA.C:1328
 MakeTrendingTOFQA.C:1329
 MakeTrendingTOFQA.C:1330
 MakeTrendingTOFQA.C:1331
 MakeTrendingTOFQA.C:1332
 MakeTrendingTOFQA.C:1333
 MakeTrendingTOFQA.C:1334
 MakeTrendingTOFQA.C:1335
 MakeTrendingTOFQA.C:1336
 MakeTrendingTOFQA.C:1337
 MakeTrendingTOFQA.C:1338
 MakeTrendingTOFQA.C:1339
 MakeTrendingTOFQA.C:1340
 MakeTrendingTOFQA.C:1341
 MakeTrendingTOFQA.C:1342
 MakeTrendingTOFQA.C:1343
 MakeTrendingTOFQA.C:1344
 MakeTrendingTOFQA.C:1345
 MakeTrendingTOFQA.C:1346
 MakeTrendingTOFQA.C:1347
 MakeTrendingTOFQA.C:1348
 MakeTrendingTOFQA.C:1349
 MakeTrendingTOFQA.C:1350
 MakeTrendingTOFQA.C:1351
 MakeTrendingTOFQA.C:1352
 MakeTrendingTOFQA.C:1353
 MakeTrendingTOFQA.C:1354
 MakeTrendingTOFQA.C:1355
 MakeTrendingTOFQA.C:1356
 MakeTrendingTOFQA.C:1357
 MakeTrendingTOFQA.C:1358
 MakeTrendingTOFQA.C:1359
 MakeTrendingTOFQA.C:1360
 MakeTrendingTOFQA.C:1361
 MakeTrendingTOFQA.C:1362
 MakeTrendingTOFQA.C:1363
 MakeTrendingTOFQA.C:1364
 MakeTrendingTOFQA.C:1365
 MakeTrendingTOFQA.C:1366
 MakeTrendingTOFQA.C:1367
 MakeTrendingTOFQA.C:1368
 MakeTrendingTOFQA.C:1369
 MakeTrendingTOFQA.C:1370
 MakeTrendingTOFQA.C:1371
 MakeTrendingTOFQA.C:1372
 MakeTrendingTOFQA.C:1373
 MakeTrendingTOFQA.C:1374
 MakeTrendingTOFQA.C:1375
 MakeTrendingTOFQA.C:1376
 MakeTrendingTOFQA.C:1377
 MakeTrendingTOFQA.C:1378
 MakeTrendingTOFQA.C:1379
 MakeTrendingTOFQA.C:1380
 MakeTrendingTOFQA.C:1381
 MakeTrendingTOFQA.C:1382
 MakeTrendingTOFQA.C:1383
 MakeTrendingTOFQA.C:1384
 MakeTrendingTOFQA.C:1385
 MakeTrendingTOFQA.C:1386
 MakeTrendingTOFQA.C:1387
 MakeTrendingTOFQA.C:1388
 MakeTrendingTOFQA.C:1389
 MakeTrendingTOFQA.C:1390
 MakeTrendingTOFQA.C:1391
 MakeTrendingTOFQA.C:1392
 MakeTrendingTOFQA.C:1393
 MakeTrendingTOFQA.C:1394
 MakeTrendingTOFQA.C:1395
 MakeTrendingTOFQA.C:1396
 MakeTrendingTOFQA.C:1397
 MakeTrendingTOFQA.C:1398
 MakeTrendingTOFQA.C:1399
 MakeTrendingTOFQA.C:1400
 MakeTrendingTOFQA.C:1401
 MakeTrendingTOFQA.C:1402
 MakeTrendingTOFQA.C:1403
 MakeTrendingTOFQA.C:1404
 MakeTrendingTOFQA.C:1405
 MakeTrendingTOFQA.C:1406
 MakeTrendingTOFQA.C:1407
 MakeTrendingTOFQA.C:1408
 MakeTrendingTOFQA.C:1409
 MakeTrendingTOFQA.C:1410
 MakeTrendingTOFQA.C:1411
 MakeTrendingTOFQA.C:1412
 MakeTrendingTOFQA.C:1413
 MakeTrendingTOFQA.C:1414
 MakeTrendingTOFQA.C:1415
 MakeTrendingTOFQA.C:1416
 MakeTrendingTOFQA.C:1417
 MakeTrendingTOFQA.C:1418
 MakeTrendingTOFQA.C:1419
 MakeTrendingTOFQA.C:1420
 MakeTrendingTOFQA.C:1421
 MakeTrendingTOFQA.C:1422
 MakeTrendingTOFQA.C:1423
 MakeTrendingTOFQA.C:1424
 MakeTrendingTOFQA.C:1425
 MakeTrendingTOFQA.C:1426
 MakeTrendingTOFQA.C:1427
 MakeTrendingTOFQA.C:1428
 MakeTrendingTOFQA.C:1429
 MakeTrendingTOFQA.C:1430
 MakeTrendingTOFQA.C:1431
 MakeTrendingTOFQA.C:1432
 MakeTrendingTOFQA.C:1433
 MakeTrendingTOFQA.C:1434
 MakeTrendingTOFQA.C:1435
 MakeTrendingTOFQA.C:1436
 MakeTrendingTOFQA.C:1437
 MakeTrendingTOFQA.C:1438
 MakeTrendingTOFQA.C:1439
 MakeTrendingTOFQA.C:1440
 MakeTrendingTOFQA.C:1441
 MakeTrendingTOFQA.C:1442
 MakeTrendingTOFQA.C:1443
 MakeTrendingTOFQA.C:1444
 MakeTrendingTOFQA.C:1445
 MakeTrendingTOFQA.C:1446
 MakeTrendingTOFQA.C:1447
 MakeTrendingTOFQA.C:1448
 MakeTrendingTOFQA.C:1449
 MakeTrendingTOFQA.C:1450
 MakeTrendingTOFQA.C:1451
 MakeTrendingTOFQA.C:1452
 MakeTrendingTOFQA.C:1453
 MakeTrendingTOFQA.C:1454
 MakeTrendingTOFQA.C:1455
 MakeTrendingTOFQA.C:1456
 MakeTrendingTOFQA.C:1457
 MakeTrendingTOFQA.C:1458
 MakeTrendingTOFQA.C:1459
 MakeTrendingTOFQA.C:1460
 MakeTrendingTOFQA.C:1461
 MakeTrendingTOFQA.C:1462
 MakeTrendingTOFQA.C:1463
 MakeTrendingTOFQA.C:1464
 MakeTrendingTOFQA.C:1465
 MakeTrendingTOFQA.C:1466
 MakeTrendingTOFQA.C:1467
 MakeTrendingTOFQA.C:1468
 MakeTrendingTOFQA.C:1469
 MakeTrendingTOFQA.C:1470
 MakeTrendingTOFQA.C:1471
 MakeTrendingTOFQA.C:1472
 MakeTrendingTOFQA.C:1473
 MakeTrendingTOFQA.C:1474
 MakeTrendingTOFQA.C:1475
 MakeTrendingTOFQA.C:1476
 MakeTrendingTOFQA.C:1477
 MakeTrendingTOFQA.C:1478
 MakeTrendingTOFQA.C:1479
 MakeTrendingTOFQA.C:1480
 MakeTrendingTOFQA.C:1481
 MakeTrendingTOFQA.C:1482
 MakeTrendingTOFQA.C:1483
 MakeTrendingTOFQA.C:1484
 MakeTrendingTOFQA.C:1485
 MakeTrendingTOFQA.C:1486
 MakeTrendingTOFQA.C:1487
 MakeTrendingTOFQA.C:1488
 MakeTrendingTOFQA.C:1489
 MakeTrendingTOFQA.C:1490
 MakeTrendingTOFQA.C:1491
 MakeTrendingTOFQA.C:1492
 MakeTrendingTOFQA.C:1493
 MakeTrendingTOFQA.C:1494
 MakeTrendingTOFQA.C:1495
 MakeTrendingTOFQA.C:1496
 MakeTrendingTOFQA.C:1497
 MakeTrendingTOFQA.C:1498
 MakeTrendingTOFQA.C:1499
 MakeTrendingTOFQA.C:1500
 MakeTrendingTOFQA.C:1501
 MakeTrendingTOFQA.C:1502
 MakeTrendingTOFQA.C:1503
 MakeTrendingTOFQA.C:1504
 MakeTrendingTOFQA.C:1505
 MakeTrendingTOFQA.C:1506
 MakeTrendingTOFQA.C:1507
 MakeTrendingTOFQA.C:1508
 MakeTrendingTOFQA.C:1509
 MakeTrendingTOFQA.C:1510
 MakeTrendingTOFQA.C:1511
 MakeTrendingTOFQA.C:1512
 MakeTrendingTOFQA.C:1513
 MakeTrendingTOFQA.C:1514
 MakeTrendingTOFQA.C:1515
 MakeTrendingTOFQA.C:1516
 MakeTrendingTOFQA.C:1517
 MakeTrendingTOFQA.C:1518
 MakeTrendingTOFQA.C:1519
 MakeTrendingTOFQA.C:1520
 MakeTrendingTOFQA.C:1521
 MakeTrendingTOFQA.C:1522
 MakeTrendingTOFQA.C:1523
 MakeTrendingTOFQA.C:1524
 MakeTrendingTOFQA.C:1525
 MakeTrendingTOFQA.C:1526
 MakeTrendingTOFQA.C:1527
 MakeTrendingTOFQA.C:1528
 MakeTrendingTOFQA.C:1529
 MakeTrendingTOFQA.C:1530
 MakeTrendingTOFQA.C:1531
 MakeTrendingTOFQA.C:1532
 MakeTrendingTOFQA.C:1533
 MakeTrendingTOFQA.C:1534
 MakeTrendingTOFQA.C:1535
 MakeTrendingTOFQA.C:1536
 MakeTrendingTOFQA.C:1537
 MakeTrendingTOFQA.C:1538
 MakeTrendingTOFQA.C:1539
 MakeTrendingTOFQA.C:1540
 MakeTrendingTOFQA.C:1541
 MakeTrendingTOFQA.C:1542
 MakeTrendingTOFQA.C:1543
 MakeTrendingTOFQA.C:1544
 MakeTrendingTOFQA.C:1545
 MakeTrendingTOFQA.C:1546
 MakeTrendingTOFQA.C:1547
 MakeTrendingTOFQA.C:1548
 MakeTrendingTOFQA.C:1549
 MakeTrendingTOFQA.C:1550
 MakeTrendingTOFQA.C:1551
 MakeTrendingTOFQA.C:1552
 MakeTrendingTOFQA.C:1553
 MakeTrendingTOFQA.C:1554
 MakeTrendingTOFQA.C:1555
 MakeTrendingTOFQA.C:1556
 MakeTrendingTOFQA.C:1557
 MakeTrendingTOFQA.C:1558
 MakeTrendingTOFQA.C:1559
 MakeTrendingTOFQA.C:1560
 MakeTrendingTOFQA.C:1561
 MakeTrendingTOFQA.C:1562
 MakeTrendingTOFQA.C:1563
 MakeTrendingTOFQA.C:1564
 MakeTrendingTOFQA.C:1565
 MakeTrendingTOFQA.C:1566
 MakeTrendingTOFQA.C:1567
 MakeTrendingTOFQA.C:1568
 MakeTrendingTOFQA.C:1569
 MakeTrendingTOFQA.C:1570
 MakeTrendingTOFQA.C:1571
 MakeTrendingTOFQA.C:1572
 MakeTrendingTOFQA.C:1573
 MakeTrendingTOFQA.C:1574
 MakeTrendingTOFQA.C:1575
 MakeTrendingTOFQA.C:1576
 MakeTrendingTOFQA.C:1577
 MakeTrendingTOFQA.C:1578
 MakeTrendingTOFQA.C:1579
 MakeTrendingTOFQA.C:1580
 MakeTrendingTOFQA.C:1581
 MakeTrendingTOFQA.C:1582
 MakeTrendingTOFQA.C:1583
 MakeTrendingTOFQA.C:1584
 MakeTrendingTOFQA.C:1585
 MakeTrendingTOFQA.C:1586
 MakeTrendingTOFQA.C:1587
 MakeTrendingTOFQA.C:1588
 MakeTrendingTOFQA.C:1589
 MakeTrendingTOFQA.C:1590
 MakeTrendingTOFQA.C:1591
 MakeTrendingTOFQA.C:1592
 MakeTrendingTOFQA.C:1593
 MakeTrendingTOFQA.C:1594
 MakeTrendingTOFQA.C:1595
 MakeTrendingTOFQA.C:1596
 MakeTrendingTOFQA.C:1597
 MakeTrendingTOFQA.C:1598
 MakeTrendingTOFQA.C:1599
 MakeTrendingTOFQA.C:1600
 MakeTrendingTOFQA.C:1601
 MakeTrendingTOFQA.C:1602
 MakeTrendingTOFQA.C:1603
 MakeTrendingTOFQA.C:1604
 MakeTrendingTOFQA.C:1605
 MakeTrendingTOFQA.C:1606
 MakeTrendingTOFQA.C:1607
 MakeTrendingTOFQA.C:1608
 MakeTrendingTOFQA.C:1609
 MakeTrendingTOFQA.C:1610
 MakeTrendingTOFQA.C:1611
 MakeTrendingTOFQA.C:1612
 MakeTrendingTOFQA.C:1613
 MakeTrendingTOFQA.C:1614
 MakeTrendingTOFQA.C:1615
 MakeTrendingTOFQA.C:1616
 MakeTrendingTOFQA.C:1617
 MakeTrendingTOFQA.C:1618
 MakeTrendingTOFQA.C:1619
 MakeTrendingTOFQA.C:1620
 MakeTrendingTOFQA.C:1621
 MakeTrendingTOFQA.C:1622
 MakeTrendingTOFQA.C:1623
 MakeTrendingTOFQA.C:1624
 MakeTrendingTOFQA.C:1625
 MakeTrendingTOFQA.C:1626
 MakeTrendingTOFQA.C:1627
 MakeTrendingTOFQA.C:1628
 MakeTrendingTOFQA.C:1629
 MakeTrendingTOFQA.C:1630
 MakeTrendingTOFQA.C:1631
 MakeTrendingTOFQA.C:1632
 MakeTrendingTOFQA.C:1633
 MakeTrendingTOFQA.C:1634
 MakeTrendingTOFQA.C:1635
 MakeTrendingTOFQA.C:1636
 MakeTrendingTOFQA.C:1637
 MakeTrendingTOFQA.C:1638
 MakeTrendingTOFQA.C:1639
 MakeTrendingTOFQA.C:1640
 MakeTrendingTOFQA.C:1641
 MakeTrendingTOFQA.C:1642