ROOT logo
const char * tag = "_Hadrons_QA_PbPb";
Float_t gpTMin = 0.51;
Float_t gpTMax = 49.99;
const char* lastFileName = 0;
void* cacheSameEvent = 0;
void* cacheMixedEvent = 0;

void processMakeQA2pc(const char * filename="AnalysisResults",  //file name without ".root"
		      TString suffix = "eps",
		      const char *outfile="MakeQA2pc_output.root"){
  
  loadlibs();
  if (!gGrid && TString(filename).BeginsWith("alien://"))
    TGrid::Connect("alien://");
  
  //fill CFContainers
  FillParentTHnSparse(Form("%s.root",filename),kFALSE,tag);
  
  Double_t ptTmin[]={0.5,0.5,2.0,2.0};
  Double_t ptTmax[]={1.0,1.0,4.0,4.0};
  Double_t ptAmin[]={0.5,0.5,2.0,2.0};
  Double_t ptAmax[]={1.0,1.0,4.0,4.0};
  Int_t   centBegin[]={  0, 60,  0, 60};
  Int_t     centEnd[]={ 10, 90, 10, 90};
  


  for(Int_t i=0;i<4;i++){
    TCanvas *c=new TCanvas(Form("c%d",i),Form("c%d",i),1200,1200);
    DrawSameMixedSV(Form("%s_zvtx.root",filename),ptTmin[i],ptTmax[i],ptAmin[i],ptAmax[i],centBegin[i],centEnd[i],8,c,i,outfile);
    c->SaveAs(Form("fig_cf_c%d.%s",i,suffix.Data()));
  }
  
  TCanvas *ccorr=new TCanvas("ccorr","ccorr",1200,1200);
  DrawCorrelation(Form("%s_zvtx.root",filename),ccorr,outfile);


  ccorr->SaveAs(Form("fig_cf_ccorr.%s",suffix.Data()));
  
}

void SetupRanges(void* obj)
{
  if (!obj)
    return;
  ((AliUEHistograms*) obj)->SetEtaRange(0, 0);
  ((AliUEHistograms*) obj)->SetPtRange(gpTMin, gpTMax);
  ((AliUEHistograms*) obj)->SetCombineMinMax(kTRUE);
}

void DrawCorrelation(const char* fileName,TCanvas *c,const char *outfile){
  
  AliUEHistograms* h = (AliUEHistograms*) GetUEHistogram(fileName);
  c->Divide(1,3);
  c->cd(1);
  gPad->SetLogz();
  h->((TH2F*)h->GetCorrelationpT())->DrawCopy("colz")->GetYaxis()->SetRangeUser(0.,20.);
  c->cd(2);
  h->((TH2F*)h->GetCorrelationEta())->DrawCopy("colz")->GetYaxis()->SetRangeUser(-1.5,1.5);
  c->cd(3);
  h->((TH2F*)h->GetCorrelationPhi())->DrawCopy("colz");

  //Added by sjena
  TFile *fout = TFile::Open(outfile,"UPDATE");
  fout->ls();

  TDirectoryFile *cdd = NULL;
  cdd = (TDirectoryFile*)fout->Get("CF");
  if(!cdd) {
    Printf("Warning: CF <dir> doesn't exist, creating a new one");
    cdd = (TDirectoryFile*)fout->mkdir("CF");
  }
  cdd->cd();
  cdd->ls();
  

  TH2F *h1 = (TH2F*)h->((TH2F*)h->GetCorrelationpT())->Clone();
  TH2F *h2 = (TH2F*)h->((TH2F*)h->GetCorrelationEta())->Clone();
  TH2F *h3 = (TH2F*)h->((TH2F*)h->GetCorrelationPhi())->Clone();
  h1->Write();
  h2->Write();
  h3->Write();
  fout->Close();

}


void DrawSameMixed(const char* fileName,Double_t ptTmin,Double_t ptTmax,Double_t ptAmin,Double_t ptAmax,Int_t centBegin,Int_t centEnd,Int_t step = 8,TCanvas *c)
{
  c->Divide(3, 3);
  TPaveText* paveText = new TPaveText(0.2, 0.9, 1., 1., "BRNDC");
  paveText->SetTextSize(0.04);
  paveText->SetFillColor(0);
  paveText->SetShadowColor(0);
  paveText->SetBorderSize(0);
  paveText->SetFillStyle(0);
  paveText->AddText(Form("%.1f<p_{T,trig}<%.1f, %.1f<p_{T,ass}<%.1f, %d-%d %%",ptTmin,ptTmax,ptAmin,ptAmax,centBegin,centEnd));
  
  loadlibs();
  
  AliUEHistograms* h = (AliUEHistograms*) GetUEHistogram(fileName);
  hMixed = (AliUEHistograms*) GetUEHistogram(fileName, 0, kTRUE);
  
  gpTMin=ptAmin;
  gpTMax=ptAmax;
  
  SetupRanges(h);
  SetupRanges(hMixed);
  
  TH1* hist1 = 0;
  TH1* hist2 = 0;
  GetDistAndFlow(h, &hist1, step, centBegin,  centEnd, ptTmin, ptTmax); 
  
  NormalizeToBinWidth(hist1);
  
  c->cd(1);
  gPad->SetLeftMargin(0.15);
  hist1->SetTitle("");
  hist1->GetYaxis()->SetRangeUser(-1.79, 1.79);
  hist1->GetZaxis()->SetTitleOffset(1.8);
  hist1->GetXaxis()->SetTitleOffset(1.5);
  hist1->GetYaxis()->SetTitleOffset(2);
  hist1->GetZaxis()->SetTitle("same event pairs (a.u.)");
  hist1->SetStats(kFALSE);
  hist1->DrawCopy("SURF1");
  paveText->Draw();
  c->cd(4);
  ((TH2*) hist1)->ProjectionX()->DrawCopy();
  c->cd(7);
  ((TH2*) hist1)->ProjectionY()->DrawCopy();
  
  hist2 = hist1;
  
  GetDistAndFlow(hMixed, &hist1, step, centBegin,  centEnd, ptTmin, ptTmax); 
  NormalizeToBinWidth(hist1);
  
  c->cd(2);
  gPad->SetLeftMargin(0.15);
  hist1->SetTitle("");
  hist1->GetYaxis()->SetRangeUser(-1.79, 1.79);
  hist1->GetZaxis()->SetTitleOffset(1.8);
  hist1->GetXaxis()->SetTitleOffset(1.5);
  hist1->GetYaxis()->SetTitleOffset(2);
  hist1->GetZaxis()->SetTitle("mixed event pairs (a.u.)");
  hist1->SetStats(kFALSE);
  hist1->DrawCopy("SURF1");
  c->cd(5);
  ((TH2*) hist1)->ProjectionX()->DrawCopy();
  c->cd(8);
  ((TH2*) hist1)->ProjectionY()->DrawCopy();
  
  c->cd(3);
  gPad->SetLeftMargin(0.15);
  hist2->GetZaxis()->SetTitle("same/mixed event pairs (a.u.)");
  hist2->Divide(hist1);
  hist2->DrawCopy("SURF1");
  c->cd(6);
  ((TH2*) hist2)->ProjectionX()->DrawCopy();
  c->cd(9);
  ((TH2*) hist2)->ProjectionY()->DrawCopy();
  
}


void DrawSameMixedSV(const char* fileName,Double_t ptTmin,Double_t ptTmax,Double_t ptAmin,Double_t ptAmax,Int_t centBegin,Int_t centEnd,Int_t step = 8,TCanvas *c, Int_t key, const char *outfile)
{
  c->Divide(3, 3);
  TPaveText* paveText = new TPaveText(0.2, 0.9, 1., 1., "BRNDC");
  paveText->SetTextSize(0.04);
  paveText->SetFillColor(0);
  paveText->SetShadowColor(0);
  paveText->SetBorderSize(0);
  paveText->SetFillStyle(0);
  paveText->AddText(Form("%.1f<p_{T,trig}<%.1f, %.1f<p_{T,ass}<%.1f, %d-%d %%",ptTmin,ptTmax,ptAmin,ptAmax,centBegin,centEnd));
  
  loadlibs();
  
  AliUEHistograms* h = (AliUEHistograms*) GetUEHistogram(fileName);
  hMixed = (AliUEHistograms*) GetUEHistogram(fileName, 0, kTRUE);
  
  gpTMin=ptAmin;
  gpTMax=ptAmax;
  
  SetupRanges(h);
  SetupRanges(hMixed);
  
  TH1* hist1 = 0;
  TH1* hist2 = 0;
  GetDistAndFlow(h, &hist1, step, centBegin,  centEnd, ptTmin, ptTmax); 
  
  NormalizeToBinWidth(hist1);
  
  c->cd(1);
  gPad->SetLeftMargin(0.15);
  hist1->SetTitle("");
  hist1->GetYaxis()->SetRangeUser(-1.79, 1.79);
  hist1->GetZaxis()->SetTitleOffset(1.8);
  hist1->GetXaxis()->SetTitleOffset(1.5);
  hist1->GetYaxis()->SetTitleOffset(2);
  hist1->GetZaxis()->SetTitle("same event pairs (a.u.)");
  hist1->SetStats(kFALSE);
  hist1->DrawCopy("SURF1");
  
  //added by sjena
  TFile *fout = TFile::Open(outfile,"UPDATE");
  fout->ls();
  
  TDirectoryFile *cdd = NULL;
  cdd = (TDirectoryFile*)fout->Get("CF");
  if(!cdd) {
    Printf("Warning: CF <dir> doesn't exist, creating a new one");
    cdd = (TDirectoryFile*)fout->mkdir("CF");
  }
  cdd->cd();
  cdd->ls();
  

  TH1D *h1 = (TH1D*)hist1->Clone();
  h1->SetName(Form("fig_cf_cr1_%d",key));
  h1->SetTitle(hist1->GetName());
  h1->Write();
  

  paveText->Draw();
  c->cd(4);
  ((TH2*) hist1)->ProjectionX()->DrawCopy();
 
  TH2D *h2 =  (TH2D*)((TH2*) hist1)->ProjectionX();
  h2->SetTitle(h2->GetName());
  h2->SetName(Form("fig_cf_cr2_%d", key));
  h2->Write();

  c->cd(7);
  ((TH2*) hist1)->ProjectionY()->DrawCopy();
  //ofile->cd();
  TH2D *h3 =  (TH2D*)((TH2*) hist1)->ProjectionY();
  h3->SetTitle(h3->GetName());
  h3->SetName(Form("fig_cf_cr3_%d",key));
  h3->Write();




  hist2 = hist1;
  
  GetDistAndFlow(hMixed, &hist1, step, centBegin,  centEnd, ptTmin, ptTmax); 
  NormalizeToBinWidth(hist1);
  
  c->cd(2);
  gPad->SetLeftMargin(0.15);
  hist1->SetTitle("");
  hist1->GetYaxis()->SetRangeUser(-1.79, 1.79);
  hist1->GetZaxis()->SetTitleOffset(1.8);
  hist1->GetXaxis()->SetTitleOffset(1.5);
  hist1->GetYaxis()->SetTitleOffset(2);
  hist1->GetZaxis()->SetTitle("mixed event pairs (a.u.)");
  hist1->SetStats(kFALSE);
  hist1->DrawCopy("SURF1");
  //ofile->cd();
   TH1D *h4 =  (TH1D*)hist1->Clone();
  h4->SetTitle(hist1->GetName());
  h4->SetName(Form("fig_cf_cr4_%d",key));
  h4->Write();





  c->cd(5);
  ((TH2*) hist1)->ProjectionX()->DrawCopy();
  //ofile->cd();
  TH2D *h5 =  (TH2D*)((TH2*) hist1)->ProjectionX();
  h5->SetTitle(h5->GetName());
  h5->SetName(Form("fig_cf_cr5_%d",key));
  h5->Write();




  c->cd(8);
  ((TH2*) hist1)->ProjectionY()->DrawCopy();
  //ofile->cd();
  TH2D *h6 =  (TH2D*)((TH2*) hist1)->ProjectionY();
  h6->SetTitle(h6->GetName());
   h6->SetName(Form("fig_cf_cr6_%d",key));
   h6->Write();  


  c->cd(3);
  gPad->SetLeftMargin(0.15);
  hist2->GetZaxis()->SetTitle("same/mixed event pairs (a.u.)");
  hist2->Divide(hist1);
  hist2->DrawCopy("SURF1");
  //ofile->cd();
 
  TH1D *h7 =  (TH1D*)hist2->Clone();
  h7->SetTitle(hist2->GetName());
  h7->SetName(Form("fig_cf_cr7_%d",key));
  h7->Write();


  c->cd(6);
  ((TH2*) hist2)->ProjectionX()->DrawCopy();
  //ofile->cd();
  TH2D *h8 =  (TH2D*)((TH2*) hist2)->ProjectionX();
  h8->SetTitle(h8->GetName());
  h8->SetName(Form("fig_cf_cr8_%d",key));
  h8->Write();  
  

  c->cd(9);
  ((TH2*) hist2)->ProjectionY()->DrawCopy();
  //ofile->cd();
  TH2D *h9 =  (TH2D*)((TH2*) hist2)->ProjectionY();
  h9->SetTitle(h9->GetName());
  h9->SetName(Form("fig_cf_cr9_%d",key));
  h9->Write();  

  fout->Close();
}


void loadlibs()
{
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  gSystem->Load("libPWGTools");
  gSystem->Load("libPWGCFCorrelationsBase");
}

void FillParentTHnSparse(const char* fileName, Bool_t reduce = kFALSE, const char* tag = "")
{
  if (TString(fileName).BeginsWith("alien:"))
    TGrid::Connect("alien:");
  
  loadlibs();

  TList* list = 0;
  
  AliUEHistograms* h = (AliUEHistograms*) GetUEHistogram(fileName, &list, kFALSE, tag);

  
  Printf("We have %d axes", ((AliTHn*) h->GetUEHist(2)->GetTrackHist(0)->GetNVar()));
  
  if (reduce)
    ((AliTHn*) h->GetUEHist(2)->GetTrackHist(0))->ReduceAxis();
  ((AliTHn*) h->GetUEHist(2)->GetTrackHist(0))->FillParent();
  ((AliTHn*) h->GetUEHist(2)->GetTrackHist(0))->DeleteContainers();
  
  AliUEHistograms* hMixed = (AliUEHistograms*) GetUEHistogram(fileName, 0, kTRUE, tag);
  if (reduce)
    ((AliTHn*) hMixed->GetUEHist(2)->GetTrackHist(0))->ReduceAxis();
  ((AliTHn*) hMixed->GetUEHist(2)->GetTrackHist(0))->FillParent();
  ((AliTHn*) hMixed->GetUEHist(2)->GetTrackHist(0))->DeleteContainers();
  
  TString newFileName(fileName);

  if (TString(fileName).BeginsWith("alien:"))
    newFileName = gSystem->BaseName(newFileName);
  
  newFileName.ReplaceAll(".root", "");
  if (reduce)
    newFileName += "_.root";
  else
    newFileName += "_zvtx.root";

  file3 = TFile::Open(newFileName, "RECREATE");
  file3->mkdir("PWG4_PhiCorrelations");
  file3->cd("PWG4_PhiCorrelations");
  list->Write("histosPhiCorrelations", TObject::kSingleKey);
  file3->Close();
}

void* GetUEHistogram(const char* fileName, TList** listRef = 0, Bool_t mixed = kFALSE, const char* tag = "")
{
  if (!lastFileName || strcmp(lastFileName, fileName) != 0)
    {
      lastFileName = fileName;
      file = TFile::Open(fileName);
      if (!file)
	return 0;
      
      list = (TList*) gFile->Get("PWG4_LeadingTrackUE/histosLeadingTrackUE");
      if (!list)
	list = (TList*) gFile->Get(Form("PWG4_PhiCorrelations/histosPhiCorrelations%s", tag));
      if (!list)
	list = (TList*) gFile->Get("PWG4_PhiCorrelations/histosPhiCorrelations_Syst");
      
      if (!list)
	return 0;
      
      if (listRef)
	*listRef = list;
      
      cacheMixedEvent = list->FindObject("AliUEHistogramsMixed");
      cacheSameEvent = list->FindObject("AliUEHistogramsSame");

      if (mixed)
	return cacheMixedEvent;
    
      if (list->FindObject("AliUEHistograms"))
	return list->FindObject("AliUEHistograms");
      
      return cacheSameEvent;
    }
  else
    {
      Printf("GetUEHistogram --> Using cache for %s", fileName);
    
      if (mixed)
	return cacheMixedEvent;
      else
	return cacheSameEvent;
    }
}


Int_t gHistCount = 0;

void GetDistAndFlow(void* hVoid, TH1** hist, Int_t step, Int_t centralityBegin, Int_t centralityEnd, Float_t ptBegin, Float_t ptEnd)
{
  h = (AliUEHistograms*) hVoid;
  
  Int_t centralityBeginBin = 0;
  Int_t centralityEndBin = -1;
  
  if (centralityEnd >= centralityBegin)
    {
      centralityBeginBin = h->GetUEHist(2)->GetEventHist()->GetGrid(step)->GetGrid()->GetAxis(1)->FindBin(0.01 + centralityBegin);
      centralityEndBin = h->GetUEHist(2)->GetEventHist()->GetGrid(step)->GetGrid()->GetAxis(1)->FindBin(-0.01 + centralityEnd);
    }
  
  // 2d same and mixed event
  TH2* sameTwoD  = h->GetUEHist(2)->GetUEHist(step, 0, ptBegin, ptEnd, centralityBeginBin, centralityEndBin, 1, kFALSE);
  
  TString histName;
  histName.Form("GetDistAndFlow%d", gHistCount++);
  
  *hist = sameTwoD;
    
  TString str;
  str.Form("%.1f < p_{T,trig} < %.1f", ptBegin - 0.01, ptEnd + 0.01);
  
  TString str2;
  str2.Form("%.2f < p_{T,assoc} < %.2f", gpTMin - 0.01, gpTMax + 0.01);
  
  TString newTitle;
  newTitle.Form("%s - %s - %d-%d%%", str.Data(), str2.Data(), centralityBegin, centralityEnd);
  (*hist)->SetTitle(newTitle);
  
}

void NormalizeToBinWidth(TH1* hist)
{
  //
  // normalizes a 1-d histogram to its bin width
  //

  if (hist->GetDimension() == 1)
    {
      for (Int_t i=1; i<=hist->GetNbinsX(); ++i)
	{
	  hist->SetBinContent(i, hist->GetBinContent(i) / hist->GetBinWidth(i));
	  hist->SetBinError(i, hist->GetBinError(i) / hist->GetBinWidth(i));
	}
    }
  else if (hist->GetDimension() == 2)
    {
      for (Int_t i=1; i<=hist->GetNbinsX(); ++i)
	{
	  for (Int_t j=1; j<=hist->GetNbinsY(); ++j)
	    {
	      hist->SetBinContent(i, j, hist->GetBinContent(i, j) / hist->GetXaxis()->GetBinWidth(i) / hist->GetYaxis()->GetBinWidth(j));
	      hist->SetBinError(i, j, hist->GetBinError(i) / hist->GetXaxis()->GetBinWidth(i) / hist->GetYaxis()->GetBinWidth(j));
	    }
	}
    }
}
 processMakeQA2pc.C:1
 processMakeQA2pc.C:2
 processMakeQA2pc.C:3
 processMakeQA2pc.C:4
 processMakeQA2pc.C:5
 processMakeQA2pc.C:6
 processMakeQA2pc.C:7
 processMakeQA2pc.C:8
 processMakeQA2pc.C:9
 processMakeQA2pc.C:10
 processMakeQA2pc.C:11
 processMakeQA2pc.C:12
 processMakeQA2pc.C:13
 processMakeQA2pc.C:14
 processMakeQA2pc.C:15
 processMakeQA2pc.C:16
 processMakeQA2pc.C:17
 processMakeQA2pc.C:18
 processMakeQA2pc.C:19
 processMakeQA2pc.C:20
 processMakeQA2pc.C:21
 processMakeQA2pc.C:22
 processMakeQA2pc.C:23
 processMakeQA2pc.C:24
 processMakeQA2pc.C:25
 processMakeQA2pc.C:26
 processMakeQA2pc.C:27
 processMakeQA2pc.C:28
 processMakeQA2pc.C:29
 processMakeQA2pc.C:30
 processMakeQA2pc.C:31
 processMakeQA2pc.C:32
 processMakeQA2pc.C:33
 processMakeQA2pc.C:34
 processMakeQA2pc.C:35
 processMakeQA2pc.C:36
 processMakeQA2pc.C:37
 processMakeQA2pc.C:38
 processMakeQA2pc.C:39
 processMakeQA2pc.C:40
 processMakeQA2pc.C:41
 processMakeQA2pc.C:42
 processMakeQA2pc.C:43
 processMakeQA2pc.C:44
 processMakeQA2pc.C:45
 processMakeQA2pc.C:46
 processMakeQA2pc.C:47
 processMakeQA2pc.C:48
 processMakeQA2pc.C:49
 processMakeQA2pc.C:50
 processMakeQA2pc.C:51
 processMakeQA2pc.C:52
 processMakeQA2pc.C:53
 processMakeQA2pc.C:54
 processMakeQA2pc.C:55
 processMakeQA2pc.C:56
 processMakeQA2pc.C:57
 processMakeQA2pc.C:58
 processMakeQA2pc.C:59
 processMakeQA2pc.C:60
 processMakeQA2pc.C:61
 processMakeQA2pc.C:62
 processMakeQA2pc.C:63
 processMakeQA2pc.C:64
 processMakeQA2pc.C:65
 processMakeQA2pc.C:66
 processMakeQA2pc.C:67
 processMakeQA2pc.C:68
 processMakeQA2pc.C:69
 processMakeQA2pc.C:70
 processMakeQA2pc.C:71
 processMakeQA2pc.C:72
 processMakeQA2pc.C:73
 processMakeQA2pc.C:74
 processMakeQA2pc.C:75
 processMakeQA2pc.C:76
 processMakeQA2pc.C:77
 processMakeQA2pc.C:78
 processMakeQA2pc.C:79
 processMakeQA2pc.C:80
 processMakeQA2pc.C:81
 processMakeQA2pc.C:82
 processMakeQA2pc.C:83
 processMakeQA2pc.C:84
 processMakeQA2pc.C:85
 processMakeQA2pc.C:86
 processMakeQA2pc.C:87
 processMakeQA2pc.C:88
 processMakeQA2pc.C:89
 processMakeQA2pc.C:90
 processMakeQA2pc.C:91
 processMakeQA2pc.C:92
 processMakeQA2pc.C:93
 processMakeQA2pc.C:94
 processMakeQA2pc.C:95
 processMakeQA2pc.C:96
 processMakeQA2pc.C:97
 processMakeQA2pc.C:98
 processMakeQA2pc.C:99
 processMakeQA2pc.C:100
 processMakeQA2pc.C:101
 processMakeQA2pc.C:102
 processMakeQA2pc.C:103
 processMakeQA2pc.C:104
 processMakeQA2pc.C:105
 processMakeQA2pc.C:106
 processMakeQA2pc.C:107
 processMakeQA2pc.C:108
 processMakeQA2pc.C:109
 processMakeQA2pc.C:110
 processMakeQA2pc.C:111
 processMakeQA2pc.C:112
 processMakeQA2pc.C:113
 processMakeQA2pc.C:114
 processMakeQA2pc.C:115
 processMakeQA2pc.C:116
 processMakeQA2pc.C:117
 processMakeQA2pc.C:118
 processMakeQA2pc.C:119
 processMakeQA2pc.C:120
 processMakeQA2pc.C:121
 processMakeQA2pc.C:122
 processMakeQA2pc.C:123
 processMakeQA2pc.C:124
 processMakeQA2pc.C:125
 processMakeQA2pc.C:126
 processMakeQA2pc.C:127
 processMakeQA2pc.C:128
 processMakeQA2pc.C:129
 processMakeQA2pc.C:130
 processMakeQA2pc.C:131
 processMakeQA2pc.C:132
 processMakeQA2pc.C:133
 processMakeQA2pc.C:134
 processMakeQA2pc.C:135
 processMakeQA2pc.C:136
 processMakeQA2pc.C:137
 processMakeQA2pc.C:138
 processMakeQA2pc.C:139
 processMakeQA2pc.C:140
 processMakeQA2pc.C:141
 processMakeQA2pc.C:142
 processMakeQA2pc.C:143
 processMakeQA2pc.C:144
 processMakeQA2pc.C:145
 processMakeQA2pc.C:146
 processMakeQA2pc.C:147
 processMakeQA2pc.C:148
 processMakeQA2pc.C:149
 processMakeQA2pc.C:150
 processMakeQA2pc.C:151
 processMakeQA2pc.C:152
 processMakeQA2pc.C:153
 processMakeQA2pc.C:154
 processMakeQA2pc.C:155
 processMakeQA2pc.C:156
 processMakeQA2pc.C:157
 processMakeQA2pc.C:158
 processMakeQA2pc.C:159
 processMakeQA2pc.C:160
 processMakeQA2pc.C:161
 processMakeQA2pc.C:162
 processMakeQA2pc.C:163
 processMakeQA2pc.C:164
 processMakeQA2pc.C:165
 processMakeQA2pc.C:166
 processMakeQA2pc.C:167
 processMakeQA2pc.C:168
 processMakeQA2pc.C:169
 processMakeQA2pc.C:170
 processMakeQA2pc.C:171
 processMakeQA2pc.C:172
 processMakeQA2pc.C:173
 processMakeQA2pc.C:174
 processMakeQA2pc.C:175
 processMakeQA2pc.C:176
 processMakeQA2pc.C:177
 processMakeQA2pc.C:178
 processMakeQA2pc.C:179
 processMakeQA2pc.C:180
 processMakeQA2pc.C:181
 processMakeQA2pc.C:182
 processMakeQA2pc.C:183
 processMakeQA2pc.C:184
 processMakeQA2pc.C:185
 processMakeQA2pc.C:186
 processMakeQA2pc.C:187
 processMakeQA2pc.C:188
 processMakeQA2pc.C:189
 processMakeQA2pc.C:190
 processMakeQA2pc.C:191
 processMakeQA2pc.C:192
 processMakeQA2pc.C:193
 processMakeQA2pc.C:194
 processMakeQA2pc.C:195
 processMakeQA2pc.C:196
 processMakeQA2pc.C:197
 processMakeQA2pc.C:198
 processMakeQA2pc.C:199
 processMakeQA2pc.C:200
 processMakeQA2pc.C:201
 processMakeQA2pc.C:202
 processMakeQA2pc.C:203
 processMakeQA2pc.C:204
 processMakeQA2pc.C:205
 processMakeQA2pc.C:206
 processMakeQA2pc.C:207
 processMakeQA2pc.C:208
 processMakeQA2pc.C:209
 processMakeQA2pc.C:210
 processMakeQA2pc.C:211
 processMakeQA2pc.C:212
 processMakeQA2pc.C:213
 processMakeQA2pc.C:214
 processMakeQA2pc.C:215
 processMakeQA2pc.C:216
 processMakeQA2pc.C:217
 processMakeQA2pc.C:218
 processMakeQA2pc.C:219
 processMakeQA2pc.C:220
 processMakeQA2pc.C:221
 processMakeQA2pc.C:222
 processMakeQA2pc.C:223
 processMakeQA2pc.C:224
 processMakeQA2pc.C:225
 processMakeQA2pc.C:226
 processMakeQA2pc.C:227
 processMakeQA2pc.C:228
 processMakeQA2pc.C:229
 processMakeQA2pc.C:230
 processMakeQA2pc.C:231
 processMakeQA2pc.C:232
 processMakeQA2pc.C:233
 processMakeQA2pc.C:234
 processMakeQA2pc.C:235
 processMakeQA2pc.C:236
 processMakeQA2pc.C:237
 processMakeQA2pc.C:238
 processMakeQA2pc.C:239
 processMakeQA2pc.C:240
 processMakeQA2pc.C:241
 processMakeQA2pc.C:242
 processMakeQA2pc.C:243
 processMakeQA2pc.C:244
 processMakeQA2pc.C:245
 processMakeQA2pc.C:246
 processMakeQA2pc.C:247
 processMakeQA2pc.C:248
 processMakeQA2pc.C:249
 processMakeQA2pc.C:250
 processMakeQA2pc.C:251
 processMakeQA2pc.C:252
 processMakeQA2pc.C:253
 processMakeQA2pc.C:254
 processMakeQA2pc.C:255
 processMakeQA2pc.C:256
 processMakeQA2pc.C:257
 processMakeQA2pc.C:258
 processMakeQA2pc.C:259
 processMakeQA2pc.C:260
 processMakeQA2pc.C:261
 processMakeQA2pc.C:262
 processMakeQA2pc.C:263
 processMakeQA2pc.C:264
 processMakeQA2pc.C:265
 processMakeQA2pc.C:266
 processMakeQA2pc.C:267
 processMakeQA2pc.C:268
 processMakeQA2pc.C:269
 processMakeQA2pc.C:270
 processMakeQA2pc.C:271
 processMakeQA2pc.C:272
 processMakeQA2pc.C:273
 processMakeQA2pc.C:274
 processMakeQA2pc.C:275
 processMakeQA2pc.C:276
 processMakeQA2pc.C:277
 processMakeQA2pc.C:278
 processMakeQA2pc.C:279
 processMakeQA2pc.C:280
 processMakeQA2pc.C:281
 processMakeQA2pc.C:282
 processMakeQA2pc.C:283
 processMakeQA2pc.C:284
 processMakeQA2pc.C:285
 processMakeQA2pc.C:286
 processMakeQA2pc.C:287
 processMakeQA2pc.C:288
 processMakeQA2pc.C:289
 processMakeQA2pc.C:290
 processMakeQA2pc.C:291
 processMakeQA2pc.C:292
 processMakeQA2pc.C:293
 processMakeQA2pc.C:294
 processMakeQA2pc.C:295
 processMakeQA2pc.C:296
 processMakeQA2pc.C:297
 processMakeQA2pc.C:298
 processMakeQA2pc.C:299
 processMakeQA2pc.C:300
 processMakeQA2pc.C:301
 processMakeQA2pc.C:302
 processMakeQA2pc.C:303
 processMakeQA2pc.C:304
 processMakeQA2pc.C:305
 processMakeQA2pc.C:306
 processMakeQA2pc.C:307
 processMakeQA2pc.C:308
 processMakeQA2pc.C:309
 processMakeQA2pc.C:310
 processMakeQA2pc.C:311
 processMakeQA2pc.C:312
 processMakeQA2pc.C:313
 processMakeQA2pc.C:314
 processMakeQA2pc.C:315
 processMakeQA2pc.C:316
 processMakeQA2pc.C:317
 processMakeQA2pc.C:318
 processMakeQA2pc.C:319
 processMakeQA2pc.C:320
 processMakeQA2pc.C:321
 processMakeQA2pc.C:322
 processMakeQA2pc.C:323
 processMakeQA2pc.C:324
 processMakeQA2pc.C:325
 processMakeQA2pc.C:326
 processMakeQA2pc.C:327
 processMakeQA2pc.C:328
 processMakeQA2pc.C:329
 processMakeQA2pc.C:330
 processMakeQA2pc.C:331
 processMakeQA2pc.C:332
 processMakeQA2pc.C:333
 processMakeQA2pc.C:334
 processMakeQA2pc.C:335
 processMakeQA2pc.C:336
 processMakeQA2pc.C:337
 processMakeQA2pc.C:338
 processMakeQA2pc.C:339
 processMakeQA2pc.C:340
 processMakeQA2pc.C:341
 processMakeQA2pc.C:342
 processMakeQA2pc.C:343
 processMakeQA2pc.C:344
 processMakeQA2pc.C:345
 processMakeQA2pc.C:346
 processMakeQA2pc.C:347
 processMakeQA2pc.C:348
 processMakeQA2pc.C:349
 processMakeQA2pc.C:350
 processMakeQA2pc.C:351
 processMakeQA2pc.C:352
 processMakeQA2pc.C:353
 processMakeQA2pc.C:354
 processMakeQA2pc.C:355
 processMakeQA2pc.C:356
 processMakeQA2pc.C:357
 processMakeQA2pc.C:358
 processMakeQA2pc.C:359
 processMakeQA2pc.C:360
 processMakeQA2pc.C:361
 processMakeQA2pc.C:362
 processMakeQA2pc.C:363
 processMakeQA2pc.C:364
 processMakeQA2pc.C:365
 processMakeQA2pc.C:366
 processMakeQA2pc.C:367
 processMakeQA2pc.C:368
 processMakeQA2pc.C:369
 processMakeQA2pc.C:370
 processMakeQA2pc.C:371
 processMakeQA2pc.C:372
 processMakeQA2pc.C:373
 processMakeQA2pc.C:374
 processMakeQA2pc.C:375
 processMakeQA2pc.C:376
 processMakeQA2pc.C:377
 processMakeQA2pc.C:378
 processMakeQA2pc.C:379
 processMakeQA2pc.C:380
 processMakeQA2pc.C:381
 processMakeQA2pc.C:382
 processMakeQA2pc.C:383
 processMakeQA2pc.C:384
 processMakeQA2pc.C:385
 processMakeQA2pc.C:386
 processMakeQA2pc.C:387
 processMakeQA2pc.C:388
 processMakeQA2pc.C:389
 processMakeQA2pc.C:390
 processMakeQA2pc.C:391
 processMakeQA2pc.C:392
 processMakeQA2pc.C:393
 processMakeQA2pc.C:394
 processMakeQA2pc.C:395
 processMakeQA2pc.C:396
 processMakeQA2pc.C:397
 processMakeQA2pc.C:398
 processMakeQA2pc.C:399
 processMakeQA2pc.C:400
 processMakeQA2pc.C:401
 processMakeQA2pc.C:402
 processMakeQA2pc.C:403
 processMakeQA2pc.C:404
 processMakeQA2pc.C:405
 processMakeQA2pc.C:406
 processMakeQA2pc.C:407
 processMakeQA2pc.C:408
 processMakeQA2pc.C:409
 processMakeQA2pc.C:410
 processMakeQA2pc.C:411
 processMakeQA2pc.C:412
 processMakeQA2pc.C:413
 processMakeQA2pc.C:414
 processMakeQA2pc.C:415
 processMakeQA2pc.C:416
 processMakeQA2pc.C:417
 processMakeQA2pc.C:418
 processMakeQA2pc.C:419
 processMakeQA2pc.C:420
 processMakeQA2pc.C:421
 processMakeQA2pc.C:422
 processMakeQA2pc.C:423
 processMakeQA2pc.C:424
 processMakeQA2pc.C:425
 processMakeQA2pc.C:426
 processMakeQA2pc.C:427
 processMakeQA2pc.C:428
 processMakeQA2pc.C:429
 processMakeQA2pc.C:430
 processMakeQA2pc.C:431
 processMakeQA2pc.C:432
 processMakeQA2pc.C:433
 processMakeQA2pc.C:434
 processMakeQA2pc.C:435
 processMakeQA2pc.C:436
 processMakeQA2pc.C:437
 processMakeQA2pc.C:438
 processMakeQA2pc.C:439
 processMakeQA2pc.C:440
 processMakeQA2pc.C:441
 processMakeQA2pc.C:442
 processMakeQA2pc.C:443
 processMakeQA2pc.C:444
 processMakeQA2pc.C:445
 processMakeQA2pc.C:446
 processMakeQA2pc.C:447
 processMakeQA2pc.C:448
 processMakeQA2pc.C:449
 processMakeQA2pc.C:450
 processMakeQA2pc.C:451
 processMakeQA2pc.C:452
 processMakeQA2pc.C:453
 processMakeQA2pc.C:454
 processMakeQA2pc.C:455
 processMakeQA2pc.C:456
 processMakeQA2pc.C:457
 processMakeQA2pc.C:458
 processMakeQA2pc.C:459
 processMakeQA2pc.C:460
 processMakeQA2pc.C:461
 processMakeQA2pc.C:462
 processMakeQA2pc.C:463
 processMakeQA2pc.C:464
 processMakeQA2pc.C:465
 processMakeQA2pc.C:466
 processMakeQA2pc.C:467
 processMakeQA2pc.C:468
 processMakeQA2pc.C:469
 processMakeQA2pc.C:470
 processMakeQA2pc.C:471
 processMakeQA2pc.C:472
 processMakeQA2pc.C:473
 processMakeQA2pc.C:474
 processMakeQA2pc.C:475
 processMakeQA2pc.C:476
 processMakeQA2pc.C:477
 processMakeQA2pc.C:478
 processMakeQA2pc.C:479
 processMakeQA2pc.C:480