ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TError.h>
#include <TROOT.h>
#include <TKey.h>
#include <TH2.h>
#include <TF1.h>
#include <TH1.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TStyle.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <TEnv.h>
#include <TLegend.h>
#include <TMath.h>
#include <TSpectrum.h>
#include <TTree.h>

#include "AliCDBManager.h"
#include "AliCDBEntry.h"
#include "AliGRPObject.h"
#include "AliTriggerInput.h"
#include "AliTriggerConfiguration.h"
#endif


Int_t MakeTrendingV0QA(TString qafilename,Int_t runNumber,TString ocdbStorage = "raw://",Bool_t IsOnGrid = kFALSE,Bool_t canvasE = kFALSE)
{
	if (!qafilename) 
	{
     		Printf("Error - Invalid input file");
  		return 1;
	}
	gStyle->SetPalette(1);
	
	TString treePostFileName=Form("trending_%i.root",runNumber);
	if(IsOnGrid)
		TGrid::Connect("alien://");
	TFile*fin=TFile::Open(qafilename,"r");

	if(!fin)
	{
		Printf("ERROR: QA output not found. Exiting ...\n");
		return -1;
	}
	else
	{
		Printf("INFO: QA output file %s open. \n",fin->GetName());
	}
	AliCDBManager *man = AliCDBManager::Instance();
	man->SetDefaultStorage(ocdbStorage);
	man->SetRun(runNumber);
    	AliCDBEntry *entry2=0;
    	entry2 = man->Get("GRP/GRP/Data");
    	AliGRPObject* fGRPData=0;
    	if (entry2) 
    	{
      		printf("Found an AliGRPObject in GRP/GRP/Data, reading it\n");
      		fGRPData = dynamic_cast<AliGRPObject*>(entry2->GetObject()); 
     		entry2->SetOwner(0);
   	}
    	TString activeDetList(AliDAQ::ListOfTriggeredDetectors(fGRPData->GetDetectorMask()));
    	TString runType(fGRPData->GetRunType());
    	TString beamType(fGRPData->GetBeamType());
    	TString machineMode(fGRPData->GetMachineMode());
    	TString lhcState(fGRPData->GetLHCState());
    	printf("activeDetList %s\nrunType %s\nbeamType %s\nmachineMode %s\nlhcState %s\n",
    		activeDetList.Data(),runType.Data(),beamType.Data(),
    		machineMode.Data(),lhcState.Data());
    
    	time_t duration = fGRPData->GetTimeEnd() - fGRPData->GetTimeStart();
    
   	if(!activeDetList.Contains("VZERO"))
    	{ 
       		printf("RUN WITH VZERO NOT ACTIVE\n");
      		return 0;
    	}
    	if(!runType.Contains("PHYSICS"))
    	{ 
      		printf("RUN NO PHYSICS\n");
      		return 0;
    	}
    	if(duration<120)
    	{ 
      		printf("RUNS SHORTER THAN 2 MIN\n");
     		return 0;
    	}
    	Float_t TimesA=-9999.,TimesC=-9999., BB_BG=-9999.,BB_EE=-9999.,AdcA=-9999.;
    	Float_t AdcC=-9999.,MultA=-9999.,MultC=-9999.;
    	Int_t NumberVoieOff=0, numberBadOffset=0;
   	TTree *ttree=new TTree("trending","tree of trending variables");

   	ttree->Branch("run",&runNumber,"run/I");
   	ttree->Branch("TimesA",&TimesA,"BB Leading time;;Time (ns)/F");
	ttree->Branch("TimesC",&TimesC,"BB Leading time;;Time (ns)/F");
	ttree->Branch("BB_BG",&BB_BG,"Trigger ratio/F");
  	ttree->Branch("BB_EE",&BB_EE,"Trigger ratio/F");
  	ttree->Branch("AdcA" ,&AdcA ,"Average Charge/F");
  	ttree->Branch("AdcC" ,&AdcC ,"Average Charge/F");
  	ttree->Branch("MultA",&MultA,"Average number of Fired cell/F");
  	ttree->Branch("MultC",&MultC,"Average number of Fired cell/F");
  	ttree->Branch("NumberVoieOff",&NumberVoieOff,"Number of path off/I");
  	ttree->Branch("numberBadOffset",&numberBadOffset,"Number of bad offset /I");
  	
  	char v0QAdirName[20]="VZERO_Performance";
  	TDirectoryFile * v0QAdir=(TDirectoryFile*)fin->Get(v0QAdirName);
  	if(!v0QAdir)
  	{
  		printf("ERROR: VZERO QA directory not present in input file.\n");
  		return -1;
  	}
  	TList *list = (TList*)v0QAdir->Get("QAVZEROHists");
    	if(!list) 
    	{
      		cout << "ERROR: No list found" << endl;
		return -1;
    	}
    	TH2F *hEvents = (TH2F*)list->FindObject("hEvents");
    	TH1F *hAdcNoTimeA = (TH1F*)list->FindObject("hAdcNoTimeA");
    	TH1F *hAdcWithTimeA = (TH1F*)list->FindObject("hAdcWithTimeA");
   	TH1F *hAdcNoTimeC = (TH1F*)list->FindObject("hAdcNoTimeC");
    	TH1F *hAdcWithTimeC = (TH1F*)list->FindObject("hAdcWithTimeC");
    	TH2F *hadcpmtwithtime = (TH2F*)list->FindObject("hadcpmtwithtime");	
    	TH1F *htimepmtA = (TH1F*)list->FindObject("htimepmtA");
    	TH1F *htimepmtC = (TH1F*)list->FindObject("htimepmtC");
    	TH1F *hwidthA = (TH1F*)list->FindObject("hwidthA");
    	TH1F *hwidthC = (TH1F*)list->FindObject("hwidthC");
    	TH1F *hV0ampl = (TH1F*)list->FindObject("hV0ampl");
    	TH2F *htimepmt = (TH2F*)list->FindObject("htimepmt");	
   	TH2F *hwidthpmt = (TH2F*)list->FindObject("hwidthpmt");	
    	TH2F *hadcwidthA = (TH2F*)list->FindObject("hadcwidthA");	
    	TH2F *hadcwidthC = (TH2F*)list->FindObject("hadcwidthC");	
    	TH2F *hAdcTimeA = (TH2F*)list->FindObject("hAdcTimeA");	
    	TH2F *hAdcTimeC = (TH2F*)list->FindObject("hAdcTimeC");	
    	TH2F *htimecorr = (TH2F*)list->FindObject("htimecorr");	
    	TH1F *hV0A = (TH1F*)list->FindObject("hV0a");
    	TH1F *hV0C = (TH1F*)list->FindObject("hV0c");
    	TH1F *hV0multA = (TH1F*)list->FindObject("hV0multA");
    	TH1F *hV0multC = (TH1F*)list->FindObject("hV0multC");
    	TH2F* hVtxXYBB  =(TH2F*) list->FindObject("fhVtxXYBB");
    	TH1F* hVtxZBB   =(TH1F*) list->FindObject("fhVtxZBB");
    	TH2F* hVtxXYBGA =(TH2F*) list->FindObject("fhVtxXYBGA");
    	TH1F* hVtxZBGA  =(TH1F*) list->FindObject("fhVtxZBGA");
    	TH2F* hVtxXYBGC =(TH2F*) list->FindObject("fhVtxXYBGC");
    	TH1F* hVtxZBGC  =(TH1F*) list->FindObject("fhVtxZBGC");
    	
    	float BB = hEvents->GetBinContent(2,2);
    	float EE = hEvents->GetBinContent(1,1);
    	float BGA = hEvents->GetBinContent(3,2);
    	float BGC = hEvents->GetBinContent(2,3);
    	
    	if(hAdcWithTimeA->GetEntries()==0)
    		return 0;
    	
    	{
    		TSpectrum s;
        	float shiftA = 8.;
    		Int_t nPeaksFound = s.Search(htimepmtA);
    		Float_t *peaks = s.GetPositionY();
		Float_t *posiX = s.GetPositionX();
    		Float_t maxY = 0.;
    		Int_t index = -1;
	
    		for(int i=0;i<nPeaksFound;i++) 
    		{
    			if(peaks[i]>maxY && posiX[i]>0.) 
    			{
				maxY = peaks[i];
				index = i;
			}	
    		}
    		Float_t maxX = (index >= 0) ? s.GetPositionX()[index] : -11111;	
		
		TF1 *fgaus = new TF1("gausbbbb","gaus",maxX-1.,maxX+1.);
    		htimepmtA->Fit(fgaus,"","",maxX-1.,maxX+1.);
    		TimesA=fgaus->GetParameter(1)-shiftA;
    		delete fgaus;
    	}
    	{
   		TSpectrum s;
    		Int_t nPeaksFound = s.Search(htimepmtC);
		Float_t *peaks = s.GetPositionY();
		Float_t maxY = 0.;
		Int_t index = -1;
    		for(int i=0;i<nPeaksFound;i++) 
    		{
			if(peaks[i]>maxY) 
			{
			maxY = peaks[i];
			index = i;
			}
		}	
    		Float_t maxX = (index >= 0) ? s.GetPositionX()[index] : -11111;	
		TF1 *fgaus = new TF1("gausffff","gaus",maxX-1.,maxX+1.);
    		htimepmtC->Fit(fgaus,"","",maxX-1.,maxX+1.);
    		TimesC=fgaus->GetParameter(1);
    		delete fgaus;
    	}
    	if(BB) 
    	{
      		BB_BG=(BGA+BGC)/BB;
      		BB_EE=EE/BB;
    	}else
    	{
      		BB_BG=0;
      		BB_EE=0;
    	}
    	
    	MultA=hV0A->GetMean();
    	MultC=hV0C->GetMean();
    
    	AdcA=hAdcWithTimeA->GetMean();
    	AdcC=hAdcWithTimeC->GetMean();
    	
	double valBin=0;
	TH1D*hadcXFull=hadcpmtwithtime->ProjectionX("hadcXFull",1,hadcpmtwithtime->GetYaxis()->GetLast());
	TH1D*hadcX=hadcpmtwithtime->ProjectionX("hadcX",10,20);
	for(Int_t i=0;i<64;i++)
	{
		valBin=hadcXFull->GetBinContent(i+1);
		if(valBin==0)
			NumberVoieOff++;
		valBin=hadcX->GetBinContent(i+1);
		if(valBin==0)
			numberBadOffset++;
	}
	    	
    	TFile * trendFile = new TFile(treePostFileName.Data(),"recreate");
    	ttree->Fill();
	trendFile->cd();
	ttree->Write();
	trendFile->Close();
	
    	if(canvasE)
    	{
   	
    		TCanvas * cOut = new TCanvas("cOut",Form("Run %d",runNumber));
    		cOut->Divide(2,2);
    		cOut->cd(1); cOut->GetPad(1)->SetLogy();
    		hAdcNoTimeA->Draw("l");
    		hAdcWithTimeA->Draw("same"); hAdcWithTimeA->SetLineColor(2);
    
     		cOut->cd(2); cOut->GetPad(2)->SetLogy();
    		hAdcNoTimeC->Draw("l");
    		hAdcWithTimeC->Draw("same"); hAdcWithTimeC->SetLineColor(2);
    	
       		cOut->cd(3); cOut->GetPad(3)->SetLogz();
    		hadcpmtwithtime->Draw("colz");
    	
    		cOut->cd(4); cOut->GetPad(4)->SetLogz();
    		hEvents->Draw("colz text");
    	
    		cOut->Print(Form("QA_Run_%d.pdf(",runNumber));
	
	
    		cOut->cd(1); cOut->GetPad(1)->SetLogy();
    		htimepmtA->GetXaxis()->SetRangeUser(-25.,25.); htimepmtA->Draw();
    	
    		cOut->cd(2); cOut->GetPad(2)->SetLogy();
    		htimepmtC->GetXaxis()->SetRangeUser(-25.,25.); htimepmtC->Draw();
    	
       		cOut->cd(3); cOut->GetPad(3)->SetLogy();cOut->GetPad(3)->SetLogz(0);
    		hwidthA->GetXaxis()->SetRangeUser(0.,50.); hwidthA->Draw();
    	
    		cOut->cd(4); cOut->GetPad(4)->SetLogy();cOut->GetPad(4)->SetLogz(0);
    		hwidthC->GetXaxis()->SetRangeUser(0.,50.); hwidthC->Draw();
    	
    		cOut->Print(Form("QA_Run_%d.pdf",runNumber));
    		
    	
    		cOut->cd(1); cOut->GetPad(1)->SetLogy(0);cOut->GetPad(1)->SetLogz();
    		htimepmt->Draw("colz");
    	
    		cOut->cd(2); cOut->GetPad(2)->SetLogy(0);cOut->GetPad(2)->SetLogz();
    		hwidthpmt->GetYaxis()->SetRangeUser(0.,50.); hwidthpmt->Draw("colz");
    		
    		cOut->cd(3); cOut->GetPad(3)->SetLogy(0);cOut->GetPad(3)->SetLogz();
    		hadcwidthA->GetYaxis()->SetRangeUser(0.,50.); hadcwidthA->Draw("colz");
    	
    		cOut->cd(4); cOut->GetPad(4)->SetLogy(0);cOut->GetPad(4)->SetLogz();
    		hadcwidthC->GetYaxis()->SetRangeUser(0.,50.); hadcwidthC->Draw("colz");
    	
    		cOut->Print(Form("QA_Run_%d.pdf",runNumber));
    		
	
    		cOut->cd(1); cOut->GetPad(1)->SetLogy(0);cOut->GetPad(1)->SetLogz();
    		hAdcTimeA->Draw("colz");
	
    		cOut->cd(2); cOut->GetPad(2)->SetLogy(0);cOut->GetPad(2)->SetLogz();
    		hAdcTimeC->Draw("colz");
 	
    		cOut->cd(3); cOut->GetPad(3)->SetLogy(); cOut->GetPad(3)->SetLogz(0);
    		hV0ampl->Draw();
	
    		cOut->cd(4); cOut->GetPad(4)->SetLogy(0); cOut->GetPad(4)->SetLogz(0);
    		htimecorr->Draw("colz");
    	
    		cOut->Print(Form("QA_Run_%d.pdf",runNumber));
	
		
    	
    		cOut->cd(1);  cOut->GetPad(1)->SetLogy(1);cOut->GetPad(1)->SetLogz(0);
    		hV0A->GetXaxis()->SetRangeUser(0.,33.);hV0A->Draw();
    	
    		cOut->cd(2); cOut->GetPad(2)->SetLogy(1);cOut->GetPad(2)->SetLogz(0);
    		hV0C->GetXaxis()->SetRangeUser(0.,33.);hV0C->Draw();
    	
    		cOut->cd(3); cOut->GetPad(3)->SetLogy(); cOut->GetPad(3)->SetLogz(0);
    		hV0multA->Draw();
		
    		cOut->cd(4); cOut->GetPad(4)->SetLogy(); cOut->GetPad(3)->SetLogz(0);
    		hV0multC->Draw();
    	
    		cOut->Print(Form("QA_Run_%d.pdf",runNumber));
	
		
    		cOut->Clear();
    		cOut->Divide(2,3);
    	
    		cOut->cd(1);  cOut->GetPad(1)->SetLogy(0);cOut->GetPad(1)->SetLogz(1);
    		hVtxXYBB->Draw("colz");
    	
    		cOut->cd(2); cOut->GetPad(2)->SetLogy(1);cOut->GetPad(2)->SetLogz(0);
    		hVtxZBB->Draw();
    	
      		cOut->cd(3); cOut->GetPad(3)->SetLogy(0); cOut->GetPad(3)->SetLogz(1);
    		hVtxXYBGA->Draw("colz");
    	
    		cOut->cd(4); cOut->GetPad(4)->SetLogy(); cOut->GetPad(3)->SetLogz(0);
    		hVtxZBGA->Draw();
    	
    		cOut->cd(5); cOut->GetPad(5)->SetLogy(0); cOut->GetPad(5)->SetLogz(1);
    		hVtxXYBGC->Draw("colz");
    	
    		cOut->cd(6); cOut->GetPad(6)->SetLogy(); cOut->GetPad(6)->SetLogz(0);
    		hVtxZBGC->Draw();
    		
    		cOut->Print(Form("QA_Run_%d.pdf)",runNumber));
    		delete cOut;
    					
 	}
	delete v0QAdir;
 	return 0;
}
 MakeTrendingV0QA.C:1
 MakeTrendingV0QA.C:2
 MakeTrendingV0QA.C:3
 MakeTrendingV0QA.C:4
 MakeTrendingV0QA.C:5
 MakeTrendingV0QA.C:6
 MakeTrendingV0QA.C:7
 MakeTrendingV0QA.C:8
 MakeTrendingV0QA.C:9
 MakeTrendingV0QA.C:10
 MakeTrendingV0QA.C:11
 MakeTrendingV0QA.C:12
 MakeTrendingV0QA.C:13
 MakeTrendingV0QA.C:14
 MakeTrendingV0QA.C:15
 MakeTrendingV0QA.C:16
 MakeTrendingV0QA.C:17
 MakeTrendingV0QA.C:18
 MakeTrendingV0QA.C:19
 MakeTrendingV0QA.C:20
 MakeTrendingV0QA.C:21
 MakeTrendingV0QA.C:22
 MakeTrendingV0QA.C:23
 MakeTrendingV0QA.C:24
 MakeTrendingV0QA.C:25
 MakeTrendingV0QA.C:26
 MakeTrendingV0QA.C:27
 MakeTrendingV0QA.C:28
 MakeTrendingV0QA.C:29
 MakeTrendingV0QA.C:30
 MakeTrendingV0QA.C:31
 MakeTrendingV0QA.C:32
 MakeTrendingV0QA.C:33
 MakeTrendingV0QA.C:34
 MakeTrendingV0QA.C:35
 MakeTrendingV0QA.C:36
 MakeTrendingV0QA.C:37
 MakeTrendingV0QA.C:38
 MakeTrendingV0QA.C:39
 MakeTrendingV0QA.C:40
 MakeTrendingV0QA.C:41
 MakeTrendingV0QA.C:42
 MakeTrendingV0QA.C:43
 MakeTrendingV0QA.C:44
 MakeTrendingV0QA.C:45
 MakeTrendingV0QA.C:46
 MakeTrendingV0QA.C:47
 MakeTrendingV0QA.C:48
 MakeTrendingV0QA.C:49
 MakeTrendingV0QA.C:50
 MakeTrendingV0QA.C:51
 MakeTrendingV0QA.C:52
 MakeTrendingV0QA.C:53
 MakeTrendingV0QA.C:54
 MakeTrendingV0QA.C:55
 MakeTrendingV0QA.C:56
 MakeTrendingV0QA.C:57
 MakeTrendingV0QA.C:58
 MakeTrendingV0QA.C:59
 MakeTrendingV0QA.C:60
 MakeTrendingV0QA.C:61
 MakeTrendingV0QA.C:62
 MakeTrendingV0QA.C:63
 MakeTrendingV0QA.C:64
 MakeTrendingV0QA.C:65
 MakeTrendingV0QA.C:66
 MakeTrendingV0QA.C:67
 MakeTrendingV0QA.C:68
 MakeTrendingV0QA.C:69
 MakeTrendingV0QA.C:70
 MakeTrendingV0QA.C:71
 MakeTrendingV0QA.C:72
 MakeTrendingV0QA.C:73
 MakeTrendingV0QA.C:74
 MakeTrendingV0QA.C:75
 MakeTrendingV0QA.C:76
 MakeTrendingV0QA.C:77
 MakeTrendingV0QA.C:78
 MakeTrendingV0QA.C:79
 MakeTrendingV0QA.C:80
 MakeTrendingV0QA.C:81
 MakeTrendingV0QA.C:82
 MakeTrendingV0QA.C:83
 MakeTrendingV0QA.C:84
 MakeTrendingV0QA.C:85
 MakeTrendingV0QA.C:86
 MakeTrendingV0QA.C:87
 MakeTrendingV0QA.C:88
 MakeTrendingV0QA.C:89
 MakeTrendingV0QA.C:90
 MakeTrendingV0QA.C:91
 MakeTrendingV0QA.C:92
 MakeTrendingV0QA.C:93
 MakeTrendingV0QA.C:94
 MakeTrendingV0QA.C:95
 MakeTrendingV0QA.C:96
 MakeTrendingV0QA.C:97
 MakeTrendingV0QA.C:98
 MakeTrendingV0QA.C:99
 MakeTrendingV0QA.C:100
 MakeTrendingV0QA.C:101
 MakeTrendingV0QA.C:102
 MakeTrendingV0QA.C:103
 MakeTrendingV0QA.C:104
 MakeTrendingV0QA.C:105
 MakeTrendingV0QA.C:106
 MakeTrendingV0QA.C:107
 MakeTrendingV0QA.C:108
 MakeTrendingV0QA.C:109
 MakeTrendingV0QA.C:110
 MakeTrendingV0QA.C:111
 MakeTrendingV0QA.C:112
 MakeTrendingV0QA.C:113
 MakeTrendingV0QA.C:114
 MakeTrendingV0QA.C:115
 MakeTrendingV0QA.C:116
 MakeTrendingV0QA.C:117
 MakeTrendingV0QA.C:118
 MakeTrendingV0QA.C:119
 MakeTrendingV0QA.C:120
 MakeTrendingV0QA.C:121
 MakeTrendingV0QA.C:122
 MakeTrendingV0QA.C:123
 MakeTrendingV0QA.C:124
 MakeTrendingV0QA.C:125
 MakeTrendingV0QA.C:126
 MakeTrendingV0QA.C:127
 MakeTrendingV0QA.C:128
 MakeTrendingV0QA.C:129
 MakeTrendingV0QA.C:130
 MakeTrendingV0QA.C:131
 MakeTrendingV0QA.C:132
 MakeTrendingV0QA.C:133
 MakeTrendingV0QA.C:134
 MakeTrendingV0QA.C:135
 MakeTrendingV0QA.C:136
 MakeTrendingV0QA.C:137
 MakeTrendingV0QA.C:138
 MakeTrendingV0QA.C:139
 MakeTrendingV0QA.C:140
 MakeTrendingV0QA.C:141
 MakeTrendingV0QA.C:142
 MakeTrendingV0QA.C:143
 MakeTrendingV0QA.C:144
 MakeTrendingV0QA.C:145
 MakeTrendingV0QA.C:146
 MakeTrendingV0QA.C:147
 MakeTrendingV0QA.C:148
 MakeTrendingV0QA.C:149
 MakeTrendingV0QA.C:150
 MakeTrendingV0QA.C:151
 MakeTrendingV0QA.C:152
 MakeTrendingV0QA.C:153
 MakeTrendingV0QA.C:154
 MakeTrendingV0QA.C:155
 MakeTrendingV0QA.C:156
 MakeTrendingV0QA.C:157
 MakeTrendingV0QA.C:158
 MakeTrendingV0QA.C:159
 MakeTrendingV0QA.C:160
 MakeTrendingV0QA.C:161
 MakeTrendingV0QA.C:162
 MakeTrendingV0QA.C:163
 MakeTrendingV0QA.C:164
 MakeTrendingV0QA.C:165
 MakeTrendingV0QA.C:166
 MakeTrendingV0QA.C:167
 MakeTrendingV0QA.C:168
 MakeTrendingV0QA.C:169
 MakeTrendingV0QA.C:170
 MakeTrendingV0QA.C:171
 MakeTrendingV0QA.C:172
 MakeTrendingV0QA.C:173
 MakeTrendingV0QA.C:174
 MakeTrendingV0QA.C:175
 MakeTrendingV0QA.C:176
 MakeTrendingV0QA.C:177
 MakeTrendingV0QA.C:178
 MakeTrendingV0QA.C:179
 MakeTrendingV0QA.C:180
 MakeTrendingV0QA.C:181
 MakeTrendingV0QA.C:182
 MakeTrendingV0QA.C:183
 MakeTrendingV0QA.C:184
 MakeTrendingV0QA.C:185
 MakeTrendingV0QA.C:186
 MakeTrendingV0QA.C:187
 MakeTrendingV0QA.C:188
 MakeTrendingV0QA.C:189
 MakeTrendingV0QA.C:190
 MakeTrendingV0QA.C:191
 MakeTrendingV0QA.C:192
 MakeTrendingV0QA.C:193
 MakeTrendingV0QA.C:194
 MakeTrendingV0QA.C:195
 MakeTrendingV0QA.C:196
 MakeTrendingV0QA.C:197
 MakeTrendingV0QA.C:198
 MakeTrendingV0QA.C:199
 MakeTrendingV0QA.C:200
 MakeTrendingV0QA.C:201
 MakeTrendingV0QA.C:202
 MakeTrendingV0QA.C:203
 MakeTrendingV0QA.C:204
 MakeTrendingV0QA.C:205
 MakeTrendingV0QA.C:206
 MakeTrendingV0QA.C:207
 MakeTrendingV0QA.C:208
 MakeTrendingV0QA.C:209
 MakeTrendingV0QA.C:210
 MakeTrendingV0QA.C:211
 MakeTrendingV0QA.C:212
 MakeTrendingV0QA.C:213
 MakeTrendingV0QA.C:214
 MakeTrendingV0QA.C:215
 MakeTrendingV0QA.C:216
 MakeTrendingV0QA.C:217
 MakeTrendingV0QA.C:218
 MakeTrendingV0QA.C:219
 MakeTrendingV0QA.C:220
 MakeTrendingV0QA.C:221
 MakeTrendingV0QA.C:222
 MakeTrendingV0QA.C:223
 MakeTrendingV0QA.C:224
 MakeTrendingV0QA.C:225
 MakeTrendingV0QA.C:226
 MakeTrendingV0QA.C:227
 MakeTrendingV0QA.C:228
 MakeTrendingV0QA.C:229
 MakeTrendingV0QA.C:230
 MakeTrendingV0QA.C:231
 MakeTrendingV0QA.C:232
 MakeTrendingV0QA.C:233
 MakeTrendingV0QA.C:234
 MakeTrendingV0QA.C:235
 MakeTrendingV0QA.C:236
 MakeTrendingV0QA.C:237
 MakeTrendingV0QA.C:238
 MakeTrendingV0QA.C:239
 MakeTrendingV0QA.C:240
 MakeTrendingV0QA.C:241
 MakeTrendingV0QA.C:242
 MakeTrendingV0QA.C:243
 MakeTrendingV0QA.C:244
 MakeTrendingV0QA.C:245
 MakeTrendingV0QA.C:246
 MakeTrendingV0QA.C:247
 MakeTrendingV0QA.C:248
 MakeTrendingV0QA.C:249
 MakeTrendingV0QA.C:250
 MakeTrendingV0QA.C:251
 MakeTrendingV0QA.C:252
 MakeTrendingV0QA.C:253
 MakeTrendingV0QA.C:254
 MakeTrendingV0QA.C:255
 MakeTrendingV0QA.C:256
 MakeTrendingV0QA.C:257
 MakeTrendingV0QA.C:258
 MakeTrendingV0QA.C:259
 MakeTrendingV0QA.C:260
 MakeTrendingV0QA.C:261
 MakeTrendingV0QA.C:262
 MakeTrendingV0QA.C:263
 MakeTrendingV0QA.C:264
 MakeTrendingV0QA.C:265
 MakeTrendingV0QA.C:266
 MakeTrendingV0QA.C:267
 MakeTrendingV0QA.C:268
 MakeTrendingV0QA.C:269
 MakeTrendingV0QA.C:270
 MakeTrendingV0QA.C:271
 MakeTrendingV0QA.C:272
 MakeTrendingV0QA.C:273
 MakeTrendingV0QA.C:274
 MakeTrendingV0QA.C:275
 MakeTrendingV0QA.C:276
 MakeTrendingV0QA.C:277
 MakeTrendingV0QA.C:278
 MakeTrendingV0QA.C:279
 MakeTrendingV0QA.C:280
 MakeTrendingV0QA.C:281
 MakeTrendingV0QA.C:282
 MakeTrendingV0QA.C:283
 MakeTrendingV0QA.C:284
 MakeTrendingV0QA.C:285
 MakeTrendingV0QA.C:286
 MakeTrendingV0QA.C:287
 MakeTrendingV0QA.C:288
 MakeTrendingV0QA.C:289
 MakeTrendingV0QA.C:290
 MakeTrendingV0QA.C:291
 MakeTrendingV0QA.C:292
 MakeTrendingV0QA.C:293
 MakeTrendingV0QA.C:294
 MakeTrendingV0QA.C:295
 MakeTrendingV0QA.C:296
 MakeTrendingV0QA.C:297
 MakeTrendingV0QA.C:298
 MakeTrendingV0QA.C:299
 MakeTrendingV0QA.C:300
 MakeTrendingV0QA.C:301
 MakeTrendingV0QA.C:302
 MakeTrendingV0QA.C:303
 MakeTrendingV0QA.C:304
 MakeTrendingV0QA.C:305
 MakeTrendingV0QA.C:306
 MakeTrendingV0QA.C:307
 MakeTrendingV0QA.C:308
 MakeTrendingV0QA.C:309
 MakeTrendingV0QA.C:310
 MakeTrendingV0QA.C:311
 MakeTrendingV0QA.C:312
 MakeTrendingV0QA.C:313
 MakeTrendingV0QA.C:314
 MakeTrendingV0QA.C:315
 MakeTrendingV0QA.C:316
 MakeTrendingV0QA.C:317
 MakeTrendingV0QA.C:318
 MakeTrendingV0QA.C:319
 MakeTrendingV0QA.C:320
 MakeTrendingV0QA.C:321
 MakeTrendingV0QA.C:322
 MakeTrendingV0QA.C:323
 MakeTrendingV0QA.C:324
 MakeTrendingV0QA.C:325
 MakeTrendingV0QA.C:326
 MakeTrendingV0QA.C:327
 MakeTrendingV0QA.C:328
 MakeTrendingV0QA.C:329
 MakeTrendingV0QA.C:330
 MakeTrendingV0QA.C:331
 MakeTrendingV0QA.C:332
 MakeTrendingV0QA.C:333
 MakeTrendingV0QA.C:334
 MakeTrendingV0QA.C:335
 MakeTrendingV0QA.C:336
 MakeTrendingV0QA.C:337
 MakeTrendingV0QA.C:338
 MakeTrendingV0QA.C:339
 MakeTrendingV0QA.C:340
 MakeTrendingV0QA.C:341
 MakeTrendingV0QA.C:342
 MakeTrendingV0QA.C:343
 MakeTrendingV0QA.C:344
 MakeTrendingV0QA.C:345
 MakeTrendingV0QA.C:346