ROOT logo
const Int_t numberOfCentralityBins = 14;
TString centralityArray[numberOfCentralityBins] = {"0-80","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3","92-8500","0-10000"};

// reduced ranges for moments determination
// (Average over all event classes of 3 sigma of Gauss + Pol0 Fit) 
Double_t rangePbPbEtaMedMom  = 3. * 0.233;// PbPb, Delta Eta, 2<pT,assoc<3<pT,trig<4
Double_t rangePbPbEtaHighMom = 3. * 0.096;// PbPb, Delta Eta, 3<pT,assoc<8<pT,trig<15
Double_t rangePbPbPhiMedMom  = 3. * 0.273;// PbPb, Delta Phi, 2<pT,assoc<3<pT,trig<4
Double_t rangePbPbPhiHighMom = 3. * 0.097;// PbPb, Delta Eta, 3<pT,assoc<8<pT,trig<15

const Int_t gRebin = 1;
void drawBalanceFunction2DPsi(const char* filename = "AnalysisResultsPsi.root", 
			      Int_t gCentrality = 1,
			      Int_t gBit = -1,
			      const char* gCentralityEstimator = 0x0,
			      Bool_t kShowShuffled = kFALSE, 
			      Bool_t kShowMixed = kTRUE, 
			      Double_t psiMin = -0.5, Double_t psiMax = 0.5,
			      Double_t vertexZMin = -10.,
			      Double_t vertexZMax = 10.,
			      Double_t ptTriggerMin = -1.,
			      Double_t ptTriggerMax = -1.,
			      Double_t ptAssociatedMin = -1.,
			      Double_t ptAssociatedMax = -1.,
			      Bool_t kUseVzBinning = kTRUE,
			      Bool_t k2pMethod = kTRUE,
			      TString eventClass = "EventPlane", //Can be "EventPlane", "Centrality", "Multiplicity"
			      Bool_t bToy = kFALSE)
{
  //Macro that draws the BF distributions for each centrality bin
  //for reaction plane dependent analysis
  //Author: Panos.Christakoglou@nikhef.nl
  //Load the PWG2ebye library
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libEventMixing.so");
  gSystem->Load("libCORRFW.so");
  gSystem->Load("libPWGTools.so");
  gSystem->Load("libPWGCFebye.so");

  //gROOT->LoadMacro("~/SetPlotStyle.C");
  //SetPlotStyle();
  gStyle->SetPalette(1,0);

  //Prepare the objects and return them
  TList *listBF = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,0,bToy);
  TList *listBFShuffled = NULL;
  if(kShowShuffled) listBFShuffled = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,1,bToy);
  TList *listBFMixed = NULL;
  if(kShowMixed) listBFMixed = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,2,bToy);
  if(!listBF) {
    Printf("The TList object was not created");
    return;
  }
  else 
    draw(listBF,listBFShuffled,listBFMixed,gCentrality,gCentralityEstimator,
	 psiMin,psiMax,vertexZMin,vertexZMax,
	 ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,
	 kUseVzBinning,k2pMethod,eventClass);  
}

//______________________________________________________//
TList *GetListOfObjects(const char* filename,
			Int_t gCentrality,
			Int_t gBit,
			const char *gCentralityEstimator,
			Int_t kData = 1,
			Bool_t bToy = kFALSE) {
  //Get the TList objects (QA, bf, bf shuffled)
  TList *listBF = 0x0;
  
  //Open the file
  TFile *f = TFile::Open(filename,"UPDATE");
  if((!f)||(!f->IsOpen())) {
    Printf("The file %s is not found. Aborting...",filename);
    return listBF;
  }
  //f->ls();
  
  TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
  if(!dir) {   
    Printf("The TDirectoryFile is not found. Aborting...",filename);
    return listBF;
  }
  //dir->ls();
  
  TString listBFName;
  if(kData == 0) {
    //cout<<"no shuffling - no mixing"<<endl;
    listBFName = "listBFPsi";
  }
  else if(kData == 1) {
    //cout<<"shuffling - no mixing"<<endl;
    listBFName = "listBFPsiShuffled";
  }
  else if(kData == 2) {
    //cout<<"no shuffling - mixing"<<endl;
    listBFName = "listBFPsiMixed";
  }

  // different list names in case of toy model
  if(!bToy){
    listBFName += "_";
    listBFName += centralityArray[gCentrality-1];
    if(gBit > -1) {
      listBFName += "_Bit"; listBFName += gBit; }
    if(gCentralityEstimator) {
      listBFName += "_"; listBFName += gCentralityEstimator;}
  }
  else{
    listBFName.ReplaceAll("Psi","");
  }

  // histograms were already retrieved (in first iteration)
  if(dir->Get(Form("%s_histograms",listBFName.Data()))){
    //cout<<"second iteration"<<endl;
    listBF = dynamic_cast<TList *>(dir->Get(Form("%s_histograms",listBFName.Data())));
  }

  // histograms were not yet retrieved (this is the first iteration)
  else{

    listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
    cout<<"======================================================="<<endl;
    cout<<"List name: "<<listBF->GetName()<<endl;
    //listBF->ls();
    
    //Get the histograms
    TString histoName;
    if(kData == 0)
      histoName = "fHistP";
    else if(kData == 1)
      histoName = "fHistP_shuffle";
    else if(kData == 2)
      histoName = "fHistP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));  
    if(!fHistP) {
      Printf("fHistP %s not found!!!",histoName.Data());
      break;
    }
    fHistP->FillParent(); fHistP->DeleteContainers();
    
    if(kData == 0)
      histoName = "fHistN";
    if(kData == 1)
      histoName = "fHistN_shuffle";
    if(kData == 2)
      histoName = "fHistN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
    if(!fHistN) {
      Printf("fHistN %s not found!!!",histoName.Data());
      break;
    }
    fHistN->FillParent(); fHistN->DeleteContainers();
    
    if(kData == 0)
      histoName = "fHistPN";
    if(kData == 1)
      histoName = "fHistPN_shuffle";
    if(kData == 2)
      histoName = "fHistPN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
    if(!fHistPN) {
      Printf("fHistPN %s not found!!!",histoName.Data());
      break;
    }
    fHistPN->FillParent(); fHistPN->DeleteContainers();
    
    if(kData == 0)
      histoName = "fHistNP";
    if(kData == 1)
      histoName = "fHistNP_shuffle";
    if(kData == 2)
      histoName = "fHistNP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
    if(!fHistNP) {
      Printf("fHistNP %s not found!!!",histoName.Data());
      break;
    }
    fHistNP->FillParent(); fHistNP->DeleteContainers();
    
    if(kData == 0)
      histoName = "fHistPP";
    if(kData == 1)
      histoName = "fHistPP_shuffle";
    if(kData == 2)
      histoName = "fHistPP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
    if(!fHistPP) {
      Printf("fHistPP %s not found!!!",histoName.Data());
      break;
    }
    fHistPP->FillParent(); fHistPP->DeleteContainers();
    
    if(kData == 0)
      histoName = "fHistNN";
    if(kData == 1)
      histoName = "fHistNN_shuffle";
    if(kData == 2)
      histoName = "fHistNN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
    if(!fHistNN) {
      Printf("fHistNN %s not found!!!",histoName.Data());
      break;
    }
    fHistNN->FillParent(); fHistNN->DeleteContainers();
    
    dir->cd();
    listBF->Write(Form("%s_histograms",listBFName.Data()), TObject::kSingleKey);
    
  }// first iteration
  
  f->Close();
  
  return listBF;
}

//______________________________________________________//
void draw(TList *listBF, TList *listBFShuffled, TList *listBFMixed,
	  Int_t gCentrality, const char* gCentralityEstimator,
	  Double_t psiMin, Double_t psiMax,
	  Double_t vertexZMin,
	  Double_t vertexZMax,
	  Double_t ptTriggerMin, Double_t ptTriggerMax,
	  Double_t ptAssociatedMin, Double_t ptAssociatedMax,
	  Bool_t kUseVzBinning=kFALSE,
	  Bool_t k2pMethod = kFALSE, TString eventClass) {  
  //balance function
  AliTHn *hP = NULL;
  AliTHn *hN = NULL;
  AliTHn *hPN = NULL;
  AliTHn *hNP = NULL;
  AliTHn *hPP = NULL;
  AliTHn *hNN = NULL;
  //listBF->ls();
  //Printf("=================");
  TString histoName = "fHistP";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hP = (AliTHn*) listBF->FindObject(histoName.Data());
  hP->SetName("gHistP");
  histoName = "fHistN";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hN = (AliTHn*) listBF->FindObject(histoName.Data());
  hN->SetName("gHistN");
  histoName = "fHistPN";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hPN = (AliTHn*) listBF->FindObject(histoName.Data());
  hPN->SetName("gHistPN");
  histoName = "fHistNP";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hNP = (AliTHn*) listBF->FindObject(histoName.Data());
  hNP->SetName("gHistNP");
  histoName = "fHistPP";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hPP = (AliTHn*) listBF->FindObject(histoName.Data());
  hPP->SetName("gHistPP");
  histoName = "fHistNN";
  if(gCentralityEstimator) histoName += gCentralityEstimator;
  hNN = (AliTHn*) listBF->FindObject(histoName.Data());
  hNN->SetName("gHistNN");

  AliBalancePsi *b = new AliBalancePsi();
  b->SetEventClass(eventClass);
  b->SetHistNp(hP);
  b->SetHistNn(hN);
  b->SetHistNpn(hPN);
  b->SetHistNnp(hNP);
  b->SetHistNpp(hPP);
  b->SetHistNnn(hNN);
  if(kUseVzBinning) b->SetVertexZBinning(kTRUE);


  //balance function shuffling
  AliTHn *hPShuffled = NULL;
  AliTHn *hNShuffled = NULL;
  AliTHn *hPNShuffled = NULL;
  AliTHn *hNPShuffled = NULL;
  AliTHn *hPPShuffled = NULL;
  AliTHn *hNNShuffled = NULL;
  if(listBFShuffled) {
    //listBFShuffled->ls();
    histoName = "fHistP_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hPShuffled->SetName("gHistPShuffled");
    histoName = "fHistN_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hNShuffled->SetName("gHistNShuffled");
    histoName = "fHistPN_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hPNShuffled->SetName("gHistPNShuffled");
    histoName = "fHistNP_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hNPShuffled->SetName("gHistNPShuffled");
    histoName = "fHistPP_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPPShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hPPShuffled->SetName("gHistPPShuffled");
    histoName = "fHistNN_shuffle";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNNShuffled = (AliTHn*) listBFShuffled->FindObject(histoName.Data());
    hNNShuffled->SetName("gHistNNShuffled");
    
    AliBalancePsi *bShuffled = new AliBalancePsi();
    bShuffled->SetEventClass(eventClass);
    bShuffled->SetHistNp(hPShuffled);
    bShuffled->SetHistNn(hNShuffled);
    bShuffled->SetHistNpn(hPNShuffled);
    bShuffled->SetHistNnp(hNPShuffled);
    bShuffled->SetHistNpp(hPPShuffled);
    bShuffled->SetHistNnn(hNNShuffled);
  if(kUseVzBinning) bShuffled->SetVertexZBinning(kTRUE);

  }

  //balance function mixing
  AliTHn *hPMixed = NULL;
  AliTHn *hNMixed = NULL;
  AliTHn *hPNMixed = NULL;
  AliTHn *hNPMixed = NULL;
  AliTHn *hPPMixed = NULL;
  AliTHn *hNNMixed = NULL;

  if(listBFMixed) {
    //listBFMixed->ls();
    histoName = "fHistP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    hPMixed->SetName("gHistPMixed");
    histoName = "fHistN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    hNMixed->SetName("gHistNMixed");
    histoName = "fHistPN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    hPNMixed->SetName("gHistPNMixed");
    histoName = "fHistNP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    histoName = "fHistNP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNPMixed->SetName("gHistNPMixed");
    histoName = "fHistPP";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hPPMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    hPPMixed->SetName("gHistPPMixed");
    histoName = "fHistNN";
    if(gCentralityEstimator) histoName += gCentralityEstimator;
    hNNMixed = (AliTHn*) listBFMixed->FindObject(histoName.Data());
    hNNMixed->SetName("gHistNNMixed");
    
    AliBalancePsi *bMixed = new AliBalancePsi();
    bMixed->SetEventClass(eventClass);
    bMixed->SetHistNp(hPMixed);
    bMixed->SetHistNn(hNMixed);
    bMixed->SetHistNpn(hPNMixed);
    bMixed->SetHistNnp(hNPMixed);
    bMixed->SetHistNpp(hPPMixed);
    bMixed->SetHistNnn(hNNMixed);
    if(kUseVzBinning) bMixed->SetVertexZBinning(kTRUE);
  
  }

  TH2D *gHistBalanceFunction;
  TH2D *gHistBalanceFunctionSubtracted;
  TH2D *gHistBalanceFunctionShuffled;
  TH2D *gHistBalanceFunctionMixed;
  TString histoTitle, pngName;
  
  if(eventClass == "Centrality"){
    histoTitle = "Centrality: ";
    histoTitle += psiMin;
    histoTitle += " - ";
    histoTitle += psiMax;
    histoTitle += " % ";
    histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
  }
  else if(eventClass == "Multiplicity"){
    histoTitle = "Multiplicity: ";
    histoTitle += psiMin;
    histoTitle += " - ";
    histoTitle += psiMax;
    histoTitle += " tracks";
    histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
  }
  else{ // "EventPlane" (default)
    histoTitle = "Centrality: ";
    histoTitle += centralityArray[gCentrality-1]; 
    histoTitle += "%";
    if((psiMin == -0.5)&&(psiMax == 0.5))
      histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
    else if((psiMin == 0.5)&&(psiMax == 1.5))
      histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
    else if((psiMin == 1.5)&&(psiMax == 2.5))
      histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
    else 
      histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
  }

  if(k2pMethod) 
    if(bMixed)
      gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
    else{
      cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
      return;
    }
  else
    gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
  gHistBalanceFunction->SetTitle(histoTitle.Data());
  gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
  gHistBalanceFunction->SetName("gHistBalanceFunction");

  if(listBFShuffled) {
    
    if(k2pMethod) 
      if(bMixed)
	gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
      else{
	cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
	return;
      }
    else
      gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
    gHistBalanceFunctionShuffled->SetTitle(histoTitle.Data());
    gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionShuffled->SetName("gHistBalanceFunctionShuffled");
  }

  if(listBFMixed) {
    if(k2pMethod) 
      if(bMixed)
	gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
      else{
	cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
	return;
      }
    else
      gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,vertexZMin,vertexZMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
    gHistBalanceFunctionMixed->SetTitle(histoTitle.Data());
    gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionMixed->SetName("gHistBalanceFunctionMixed");
  
    gHistBalanceFunctionSubtracted = dynamic_cast<TH2D *>(gHistBalanceFunction->Clone());
    gHistBalanceFunctionSubtracted->Add(gHistBalanceFunctionMixed,-1);
    gHistBalanceFunctionSubtracted->SetTitle(histoTitle.Data());
    gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionSubtracted->SetName("gHistBalanceFunctionSubtracted");
  }

  //Draw the results
  TCanvas *c1 = new TCanvas("c1","",0,0,600,500);
  c1->SetFillColor(10); 
  c1->SetHighLightColor(10);
  c1->SetLeftMargin(0.15);
  gHistBalanceFunction->DrawCopy("lego2");
  gPad->SetTheta(30); // default is 30
  gPad->SetPhi(-60); // default is 30
  gPad->Update();  
  TCanvas *c1a = new TCanvas("c1a","",600,0,600,500);
  c1a->SetFillColor(10); 
  c1a->SetHighLightColor(10);
  c1a->SetLeftMargin(0.15);
  gHistBalanceFunction->DrawCopy("colz");

  if(listBFShuffled) {
    TCanvas *c2 = new TCanvas("c2","",100,100,600,500);
    c2->SetFillColor(10); 
    c2->SetHighLightColor(10);
    c2->SetLeftMargin(0.15);
    gHistBalanceFunctionShuffled->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  
    TCanvas *c2a = new TCanvas("c2a","",700,100,600,500);
    c2a->SetFillColor(10); 
    c2a->SetHighLightColor(10);
    c2a->SetLeftMargin(0.15);
    gHistBalanceFunctionShuffled->DrawCopy("colz");
  }

  if(listBFMixed) {
    TCanvas *c3 = new TCanvas("c3","",200,200,600,500);
    c3->SetFillColor(10); 
    c3->SetHighLightColor(10);
    c3->SetLeftMargin(0.15);
    gHistBalanceFunctionMixed->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  
    TCanvas *c3a = new TCanvas("c3a","",800,200,600,500);
    c3a->SetFillColor(10); 
    c3a->SetHighLightColor(10);
    c3a->SetLeftMargin(0.15);
    gHistBalanceFunctionMixed->DrawCopy("colz");

    TCanvas *c4 = new TCanvas("c4","",300,300,600,500);
    c4->SetFillColor(10); 
    c4->SetHighLightColor(10);
    c4->SetLeftMargin(0.15);
    gHistBalanceFunctionSubtracted->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  
    TCanvas *c4a = new TCanvas("c4a","",900,300,600,500);
    c4a->SetFillColor(10); 
    c4a->SetHighLightColor(10);
    c4a->SetLeftMargin(0.15);
    gHistBalanceFunctionSubtracted->DrawCopy("colz");

    fitbalanceFunction(gCentrality, psiMin , psiMax,
		       ptTriggerMin, ptTriggerMax,
		       ptAssociatedMin, ptAssociatedMax,
		       gHistBalanceFunctionSubtracted,k2pMethod, eventClass);
  }

  TString newFileName = "balanceFunction2D."; 
  if(eventClass == "Centrality"){
    newFileName += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
    newFileName += ".PsiAll.PttFrom";
  }
  else if(eventClass == "Multiplicity"){
    newFileName += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
    newFileName += ".PsiAll.PttFrom";
  }
  else{ // "EventPlane" (default)
    newFileName += "Centrality";
    newFileName += gCentrality; newFileName += ".Psi";
    if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
    else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
    else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
    else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
    else newFileName += "All.PttFrom";
  }  
  newFileName += Form("%.1f",ptTriggerMin); newFileName += "To"; 
  newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
  newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To"; 
  newFileName += Form("%.1f",ptAssociatedMax); 
  if(k2pMethod) newFileName += "_2pMethod";

  newFileName += "_";
  newFileName += Form("%.1f",psiMin); 
  newFileName += "-"; 
  newFileName += Form("%.1f",psiMax); 
  newFileName += ".root";

  TFile *fOutput = new TFile(newFileName.Data(),"recreate");
  fOutput->cd();
  /*hP->Write(); hN->Write();
  hPN->Write(); hNP->Write();
  hPP->Write(); hNN->Write();
  hPShuffled->Write(); hNShuffled->Write();
  hPNShuffled->Write(); hNPShuffled->Write();
  hPPShuffled->Write(); hNNShuffled->Write();
  hPMixed->Write(); hNMixed->Write();
  hPNMixed->Write(); hNPMixed->Write();
  hPPMixed->Write(); hNNMixed->Write();*/
  gHistBalanceFunction->Write();
  if(listBFShuffled) gHistBalanceFunctionShuffled->Write();
  if(listBFMixed) {
    gHistBalanceFunctionMixed->Write();
    gHistBalanceFunctionSubtracted->Write();
  }
  fOutput->Close();
}

//____________________________________________________________//
void fitbalanceFunction(Int_t gCentrality = 1,
			Double_t psiMin = -0.5, Double_t psiMax = 3.5,
			Double_t ptTriggerMin = -1.,
			Double_t ptTriggerMax = -1.,
			Double_t ptAssociatedMin = -1.,
			Double_t ptAssociatedMax = -1.,
			TH2D *gHist,
			Bool_t k2pMethod = kFALSE, 
			TString eventClass="EventPlane") {
  //balancing charges: [1]*TMath::Exp(-0.5*TMath::Power(((x - [3])/[2]),2)-0.5*TMath::Power(((y - [5])/[4]),2)) 
  //short range correlations: [6]*TMath::Exp(-0.5*TMath::Power(((x - [8])/[7]),2)-0.5*TMath::Power(((y - [10])/[9]),2))
  cout<<"FITTING FUNCTION"<<endl;

  TF2 *gFitFunction = new TF2("gFitFunction","[0] + [1]*TMath::Exp(-0.5*TMath::Power(((x - [3])/[2]),2)-0.5*TMath::Power(((y - [5])/[4]),2)) + [6]*TMath::Exp(-0.5*TMath::Power(((x - [8])/[7]),2)-0.5*TMath::Power(((y - [10])/[9]),2))",-1.2,1.2,-TMath::Pi()/2.,3.*TMath::Pi()/2.); 
  gFitFunction->SetName("gFitFunction");

  //Normalization
  gFitFunction->SetParName(0,"N1"); 
  gFitFunction->SetParameter(0,1.0);

  //2D balance function
  gFitFunction->SetParName(1,"N_{BF}");
  gFitFunction->SetParameter(1,1.0);
  gFitFunction->SetParLimits(1, 0., 100.);
  gFitFunction->SetParName(2,"Sigma_{BF}(delta eta)"); 
  gFitFunction->SetParameter(2,0.6);
  gFitFunction->SetParLimits(2, 0., 1.);
  gFitFunction->SetParName(3,"Mean_{BF}(delta eta)"); 
  gFitFunction->SetParameter(3,0.0);
  gFitFunction->SetParLimits(3, -0.2, 0.2);
  gFitFunction->SetParName(4,"Sigma_{BF}(delta phi)"); 
  gFitFunction->SetParameter(4,0.6);
  gFitFunction->SetParLimits(4, 0., 1.);
  gFitFunction->SetParName(5,"Mean_{BF}(delta phi)"); 
  gFitFunction->SetParameter(5,0.0);
  gFitFunction->SetParLimits(5, -0.2, 0.2);

  //short range structure
  gFitFunction->SetParName(6,"N_{SR}");
  gFitFunction->SetParameter(6,5.0);
  gFitFunction->SetParLimits(6, 0., 100.);
  gFitFunction->SetParName(7,"Sigma_{SR}(delta eta)"); 
  gFitFunction->SetParameter(7,0.01);
  gFitFunction->SetParLimits(7, 0.0, 0.1);
  gFitFunction->SetParName(8,"Mean_{SR}(delta eta)"); 
  gFitFunction->SetParameter(8,0.0);
  gFitFunction->SetParLimits(8, -0.01, 0.01);
  gFitFunction->SetParName(9,"Sigma_{SR}(delta phi)"); 
  gFitFunction->SetParameter(9,0.01);
  gFitFunction->SetParLimits(9, 0.0, 0.1);
  gFitFunction->SetParName(10,"Mean_{SR}(delta phi)"); 
  gFitFunction->SetParameter(10,0.0);
  gFitFunction->SetParLimits(10, -0.01, 0.01);


  //Cloning the histogram
  TH2D *gHistResidual = dynamic_cast<TH2D *>(gHist->Clone());
  gHistResidual->SetName("gHistResidual");
  gHistResidual->Sumw2();

  //Fitting the 2D bf
  for(Int_t iAttempt = 0; iAttempt < 10; iAttempt++) {
    gHist->Fit("gFitFunction","nm");
    for(Int_t iParam = 0; iParam < 11; iParam++) 
      gFitFunction->SetParameter(iParam,gFitFunction->GetParameter(iParam));
  }
  cout<<"======================================================"<<endl;
  cout<<"Fit chi2/ndf: "<<gFitFunction->GetChisquare()/gFitFunction->GetNDF()<<" - chi2: "<<gFitFunction->GetChisquare()<<" - ndf: "<<gFitFunction->GetNDF()<<endl;
  cout<<"======================================================"<<endl;

  //Getting the residual
  gHistResidual->Add(gFitFunction,-1);

  //Write to output file
  TString newFileName = "balanceFunctionFit2D.";
  if(eventClass == "Centrality"){
    newFileName += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
    newFileName += ".PsiAll.PttFrom";
  }
  else if(eventClass == "Multiplicity"){
    newFileName += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
    newFileName += ".PsiAll.PttFrom";
  }
  else{ // "EventPlane" (default)
    newFileName += "Centrality";
    newFileName += gCentrality; newFileName += ".Psi";
    if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
    else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
    else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
    else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
    else newFileName += "All.PttFrom";
  }  
  newFileName += Form("%.1f",ptTriggerMin); newFileName += "To"; 
  newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
  newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To"; 
  newFileName += Form("%.1f",ptAssociatedMax); 
  if(k2pMethod) newFileName += "_2pMethod";

  newFileName += "_";
  newFileName += Form("%.1f",psiMin); 
  newFileName += "-"; 
  newFileName += Form("%.1f",psiMax); 
  newFileName += ".root";

  TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
  gHist->Write();
  gHistResidual->Write();
  gFitFunction->Write();
  newFile->Close();
}

//____________________________________________________________//
void drawBFPsi2D(const char* lhcPeriod = "LHC11h",
		 const char* gCentralityEstimator = "V0M",
		 Int_t gBit = 128,
		 const char* gEventPlaneEstimator = "VZERO",
		 Int_t gCentrality = 1,
		 Bool_t kShowShuffled = kFALSE, 
		 Bool_t kShowMixed = kFALSE, 
		 Double_t psiMin = -0.5, Double_t psiMax = 0.5,
		 Double_t ptTriggerMin = -1.,
		 Double_t ptTriggerMax = -1.,
		 Double_t ptAssociatedMin = -1.,
		 Double_t ptAssociatedMax = -1.,
		 Bool_t k2pMethod = kTRUE) {
  //Macro that draws the BF distributions for each centrality bin
  //for reaction plane dependent analysis
  //Author: Panos.Christakoglou@nikhef.nl
  TGaxis::SetMaxDigits(3);

  //Get the input file
  TString filename = lhcPeriod; 
  filename += "/Centrality"; filename += gCentralityEstimator;
  filename += "_Bit"; filename += gBit;
  filename += "_"; filename += gEventPlaneEstimator;
  filename +="/PttFrom";
  filename += Form("%.1f",ptTriggerMin); filename += "To"; 
  filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
  filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
  filename += Form("%.1f",ptAssociatedMax); 
  filename += "/balanceFunction2D.Centrality"; 
  filename += gCentrality; filename += ".Psi";
  if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
  else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
  else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
  else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.Ptt";
  else filename += "All.PttFrom";
  filename += Form("%.1f",ptTriggerMin); filename += "To"; 
  filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
  filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
  filename += Form("%.1f",ptAssociatedMax);  
  if(k2pMethod) filename += "_2pMethod";

  filename += "_";
  filename += Form("%.1f",psiMin); 
  filename += "-"; 
  filename += Form("%.1f",psiMax); 
  filename += ".root";  

  //Open the file
  TFile *f = TFile::Open(filename.Data());
  if((!f)||(!f->IsOpen())) {
    Printf("The file %s is not found. Aborting...",filename);
    return listBF;
  }
  //f->ls();
  
  //Raw balance function
  TH1D *gHistBalanceFunction = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunction"));
  gHistBalanceFunction->SetStats(kFALSE);
  gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
  gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
  gHistBalanceFunction->GetZaxis()->SetNdivisions(10);
  gHistBalanceFunction->GetXaxis()->SetTitleOffset(1.3);
  gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
  gHistBalanceFunction->GetZaxis()->SetTitleOffset(1.3);
  gHistBalanceFunction->GetXaxis()->SetTitle("#Delta #eta");
  gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (rad)");
  gHistBalanceFunction->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");

  //Shuffled balance function
  if(kShowShuffled) {
    TH1D *gHistBalanceFunctionShuffled = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionShuffled"));
    gHistBalanceFunctionShuffled->SetStats(kFALSE);
    gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionShuffled->GetZaxis()->SetNdivisions(10);
    gHistBalanceFunctionShuffled->GetXaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionShuffled->GetZaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionShuffled->GetXaxis()->SetTitle("#Delta #eta");
    gHistBalanceFunctionShuffled->GetYaxis()->SetTitle("#Delta #varphi (rad)");
    gHistBalanceFunctionShuffled->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
  }

  //Mixed balance function
  if(kShowMixed) {
    TH1D *gHistBalanceFunctionMixed = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionMixed"));
    gHistBalanceFunctionMixed->SetStats(kFALSE);
    gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionMixed->GetZaxis()->SetNdivisions(10);
    gHistBalanceFunctionMixed->GetXaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionMixed->GetZaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionMixed->GetXaxis()->SetTitle("#Delta #eta");
    gHistBalanceFunctionMixed->GetYaxis()->SetTitle("#Delta #varphi (rad)");
    gHistBalanceFunctionMixed->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
  }

  //Subtracted balance function
  if(kShowMixed) {
    TH1D *gHistBalanceFunctionSubtracted = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionSubtracted"));
    gHistBalanceFunctionSubtracted->SetStats(kFALSE);
    gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionSubtracted->GetZaxis()->SetNdivisions(10);
    gHistBalanceFunctionSubtracted->GetXaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionSubtracted->GetZaxis()->SetTitleOffset(1.3);
    gHistBalanceFunctionSubtracted->GetXaxis()->SetTitle("#Delta #eta");
    gHistBalanceFunctionSubtracted->GetYaxis()->SetTitle("#Delta #varphi (rad)");
    gHistBalanceFunctionSubtracted->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
  }

  TString pngName;
  
  TString centralityLatex = "Centrality: ";
  centralityLatex += centralityArray[gCentrality-1]; 
  centralityLatex += "%";

  TString psiLatex;
  if((psiMin == -0.5)&&(psiMax == 0.5))
    psiLatex = " -7.5^{o} < #varphi - #Psi_{2} < 7.5^{o}"; 
  else if((psiMin == 0.5)&&(psiMax == 1.5))
    psiLatex = " 37.5^{o} < #varphi - #Psi_{2} < 52.5^{o}"; 
  else if((psiMin == 1.5)&&(psiMax == 2.5))
    psiLatex = " 82.5^{o} < #varphi - #Psi_{2} < 97.5^{o}"; 
  else 
    psiLatex = " 0^{o} < #varphi - #Psi_{2} < 180^{o}"; 
 
  TString pttLatex = Form("%.1f",ptTriggerMin);
  pttLatex += " < p_{T}^{t} < "; pttLatex += Form("%.1f",ptTriggerMax);
  pttLatex += " GeV/c";

  TString ptaLatex = Form("%.1f",ptAssociatedMin);
  ptaLatex += " < p_{T}^{a} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
  ptaLatex += " GeV/c";

  TLatex *latexInfo1 = new TLatex();
  latexInfo1->SetNDC();
  latexInfo1->SetTextSize(0.045);
  latexInfo1->SetTextColor(1);

  //Draw the results
  TCanvas *c1 = new TCanvas("c1","Raw balance function 2D",0,0,600,500);
  c1->SetFillColor(10); c1->SetHighLightColor(10);
  c1->SetLeftMargin(0.17); c1->SetTopMargin(0.05);
  gHistBalanceFunction->SetTitle("");
  gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.4);
  gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
  //gHistBalanceFunction->GetXaxis()->SetRangeUser(-1.4,1.4); 
  gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
  gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (rad)");
  gHistBalanceFunction->DrawCopy("lego2");
  gPad->SetTheta(30); // default is 30
  gPad->SetPhi(-60); // default is 30
  gPad->Update();  

  latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
  latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
  latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
  latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());

  TString pngName = "BalanceFunction2D."; 
  pngName += "Centrality";
  pngName += gCentrality; 
  if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
  else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
  else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
  else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.PttFrom";
  else pngName += "All.PttFrom";  
  pngName += Form("%.1f",ptTriggerMin); pngName += "To"; 
  pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
  pngName += Form("%.1f",ptAssociatedMin); pngName += "To"; 
  pngName += Form("%.1f",ptAssociatedMax); 
  if(k2pMethod) pngName += "_2pMethod";
  pngName += ".png";

  c1->SaveAs(pngName.Data());

  if(kShowShuffled) {
    TCanvas *c2 = new TCanvas("c2","Shuffled balance function 2D",100,100,600,500);
    c2->SetFillColor(10); c2->SetHighLightColor(10);
    c2->SetLeftMargin(0.17); c2->SetTopMargin(0.05);
    gHistBalanceFunctionShuffled->SetTitle("Shuffled events");
    gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.4);
    gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionShuffled->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  

    latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
    latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
    latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
    latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
  }

  if(kShowMixed) {
    TCanvas *c3 = new TCanvas("c3","Mixed balance function 2D",200,200,600,500);
    c3->SetFillColor(10); c3->SetHighLightColor(10);
    c3->SetLeftMargin(0.17); c3->SetTopMargin(0.05);
    gHistBalanceFunctionMixed->SetTitle("Mixed events");
    gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.4);
    gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionMixed->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  

    latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
    latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
    latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
    latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
  }

  if(kShowMixed) {
    TCanvas *c4 = new TCanvas("c4","Subtracted balance function 2D",300,300,600,500);
    c4->SetFillColor(10); c4->SetHighLightColor(10);
    c4->SetLeftMargin(0.17); c4->SetTopMargin(0.05);
    gHistBalanceFunctionSubtracted->SetTitle("Subtracted balance function");
    gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.4);
    gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
    gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
    gHistBalanceFunctionSubtracted->DrawCopy("lego2");
    gPad->SetTheta(30); // default is 30
    gPad->SetPhi(-60); // default is 30
    gPad->Update();  

    latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
    latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
    latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
    latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
  }
}

//____________________________________________________________//
void drawProjections(TH2D *gHistBalanceFunction2D = 0x0,
		     Bool_t kProjectInEta = kFALSE,
		     Int_t binMin = 1,
		     Int_t binMax = 80,
		     Int_t gCentrality = 1,
		     Double_t psiMin = -0.5, 
		     Double_t psiMax = 3.5,
		     Double_t ptTriggerMin = -1.,
		     Double_t ptTriggerMax = -1.,
		     Double_t ptAssociatedMin = -1.,
		     Double_t ptAssociatedMax = -1.,
		     Bool_t k2pMethod = kTRUE,
		     TString eventClass = "Centrality",
		     Bool_t bRootMoments = kFALSE,
		     Bool_t kUseZYAM = kFALSE,
		     Bool_t bReduceRangeForMoments = kFALSE,
		     Bool_t bFWHM = kFALSE) {
  //Macro that draws the balance functions PROJECTIONS 
  //for each centrality bin for the different pT of trigger and 
  //associated particles
  TGaxis::SetMaxDigits(3);

  //first we need some libraries
  gSystem->Load("libTree");
  gSystem->Load("libGeom");
  gSystem->Load("libVMC");
  gSystem->Load("libXMLIO");
  gSystem->Load("libPhysics");

  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libAOD");

  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice.so");
  gSystem->Load("libEventMixing.so");
  gSystem->Load("libCORRFW.so");
  gSystem->Load("libPWGTools.so");
  gSystem->Load("libPWGCFebye.so");

  gStyle->SetOptStat(0);

  //Get the input file
  TString filename = "balanceFunction2D."; 
  if(eventClass == "Centrality"){
    filename += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
    filename += ".PsiAll.PttFrom";
  }
  else if(eventClass == "Multiplicity"){
    filename += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
    filename += ".PsiAll.PttFrom";
  }
  else{ // "EventPlane" (default)
    filename += "Centrality";
    filename += gCentrality; filename += ".Psi";
    if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
    else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
    else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
    else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.PttFrom";
    else filename += "All.PttFrom";
  }  
  filename += Form("%.1f",ptTriggerMin); filename += "To"; 
  filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
  filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
  filename += Form("%.1f",ptAssociatedMax); 
  if(k2pMethod) filename += "_2pMethod";

  filename += "_";
  filename += Form("%.1f",psiMin); 
  filename += "-"; 
  filename += Form("%.1f",psiMax);
  filename += ".root";

  //Open the file
  TFile *f = 0x0;
  if(!gHistBalanceFunction2D) {
    TFile::Open(filename.Data());
    if((!f)||(!f->IsOpen())) {
      Printf("The file %s is not found. Aborting...",filename);
      return listBF;
    }
    //f->ls();
  }

  //Latex
  TString centralityLatex = "Centrality: ";
  centralityLatex += centralityArray[gCentrality-1]; 
  centralityLatex += "%";

  TString psiLatex;
  if((psiMin == -0.5)&&(psiMax == 0.5))
    psiLatex = " -7.5^{o} < #varphi^{t} - #Psi_{2} < 7.5^{o}"; 
  else if((psiMin == 0.5)&&(psiMax == 1.5))
    psiLatex = " 37.5^{o} < #varphi^{t} - #Psi_{2} < 52.5^{o}"; 
  else if((psiMin == 1.5)&&(psiMax == 2.5))
    psiLatex = " 82.5^{o} < #varphi^{t} - #Psi_{2} < 97.5^{o}"; 
  else 
    psiLatex = " 0^{o} < #varphi^{t} - #Psi_{2} < 180^{o}"; 
 
  TString pttLatex = Form("%.1f",ptTriggerMin);
  pttLatex += " < p_{T,trig} < "; pttLatex += Form("%.1f",ptTriggerMax);
  pttLatex += " GeV/c";

  TString ptaLatex = Form("%.1f",ptAssociatedMin);
  ptaLatex += " < p_{T,assoc} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
  ptaLatex += " GeV/c";

  TLatex *latexInfo1 = new TLatex();
  latexInfo1->SetNDC();
  latexInfo1->SetTextSize(0.045);
  latexInfo1->SetTextColor(1);


  //============================================================//
  //Get subtracted and mixed balance function
  TH2D *gHistBalanceFunctionSubtracted2D = 0x0;
  TH2D *gHistBalanceFunctionMixed2D      = 0x0;
  if(!gHistBalanceFunction2D) {
    gHistBalanceFunctionSubtracted2D = (TH2D*)f->Get("gHistBalanceFunctionSubtracted");
    gHistBalanceFunctionMixed2D      = (TH2D*)f->Get("gHistBalanceFunctionMixed");
  }
  else {
    gHistBalanceFunctionSubtracted2D = dynamic_cast<TH2D*>(gHistBalanceFunction2D->Clone());
    gHistBalanceFunctionMixed2D = dynamic_cast<TH2D*>(gHistBalanceFunction2D->Clone());
  }

  TH1D *gHistBalanceFunctionSubtracted = NULL;
  TH1D *gHistBalanceFunctionMixed      = NULL;

  TH1D *gHistBalanceFunctionSubtracted_scale = NULL;
  TH1D *gHistBalanceFunctionMixed_scale      = NULL;

  if(kProjectInEta){
    gHistBalanceFunctionSubtracted = dynamic_cast<TH1D *>(gHistBalanceFunctionSubtracted2D->ProjectionX("gHistBalanceFunctionSubtractedEta",binMin,binMax));
    gHistBalanceFunctionSubtracted->Scale(gHistBalanceFunctionSubtracted2D->GetYaxis()->GetBinWidth(1));   // to remove normalization to phi bin width
    gHistBalanceFunctionMixed      = dynamic_cast<TH1D *>(gHistBalanceFunctionMixed2D->ProjectionX("gHistBalanceFunctionMixedEta",binMin,binMax));
    gHistBalanceFunctionMixed->Scale(gHistBalanceFunctionMixed2D->GetYaxis()->GetBinWidth(1));   // to remove normalization to phi bin width
    gHistBalanceFunctionSubtracted->SetTitle("B(#Delta#eta)");
    gHistBalanceFunctionMixed->SetTitle("B_{mix}(#Delta#eta)");  
  }
  else{
    gHistBalanceFunctionSubtracted = dynamic_cast<TH1D *>(gHistBalanceFunctionSubtracted2D->ProjectionY("gHistBalanceFunctionSubtractedPhi",binMin,binMax));
    gHistBalanceFunctionSubtracted->Scale(gHistBalanceFunctionSubtracted2D->GetXaxis()->GetBinWidth(1));   // to remove normalization to eta bin width
    gHistBalanceFunctionMixed      = dynamic_cast<TH1D *>(gHistBalanceFunctionMixed2D->ProjectionY("gHistBalanceFunctionMixedPhi",binMin,binMax));
    gHistBalanceFunctionMixed->Scale(gHistBalanceFunctionMixed2D->GetXaxis()->GetBinWidth(1));   // to remove normalization to eta bin width
    gHistBalanceFunctionSubtracted->SetTitle("B(#Delta#varphi)");
    gHistBalanceFunctionMixed->SetTitle("B_{mix}(#Delta#varphi)");  
  }

  gHistBalanceFunctionSubtracted->SetMarkerStyle(20);
  gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);

  gHistBalanceFunctionMixed->SetMarkerStyle(25);

  TCanvas *c1 = new TCanvas("c1","",0,0,600,500);
  c1->SetFillColor(10); 
  c1->SetHighLightColor(10);
  c1->SetLeftMargin(0.15);
  gHistBalanceFunctionSubtracted->DrawCopy("E");
  gHistBalanceFunctionMixed->DrawCopy("ESAME");
  
  legend = new TLegend(0.18,0.62,0.45,0.82,"","brNDC");
  legend->SetTextSize(0.045); 
  legend->SetTextFont(42); 
  legend->SetBorderSize(0);
  legend->SetFillStyle(0); 
  legend->SetFillColor(10);
  legend->SetMargin(0.25); 
  legend->SetShadowColor(10);
  legend->AddEntry(gHistBalanceFunctionSubtracted,"Data","lp");
  legend->AddEntry(gHistBalanceFunctionMixed,"Mixed data","lp");
  legend->Draw();
  
  Double_t sigmaGaus      = 0.;
  Double_t sigmaGausError = 0.;

  TString meanLatex, rmsLatex, skewnessLatex, kurtosisLatex;

  if(bRootMoments){

    // need to restrict to near side in case of dphi
    if(!kProjectInEta && !bReduceRangeForMoments) gHistBalanceFunctionSubtracted->GetXaxis()->SetRangeUser(-TMath::Pi()/2,TMath::Pi()/2);

   if(bReduceRangeForMoments){

     Double_t rangeReduced = 0.;

     if(kProjectInEta){
       if(ptTriggerMax>10){
	 //for 3<pT,assoc<8<pT,trig<15
	 rangeReduced = rangePbPbEtaHighMom;
       }
       else{
	 // default (for 2<pT,assoc<3<pT,trig<4)
	 rangeReduced = rangePbPbEtaMedMom;
       }
     }
     else{
       if(ptTriggerMax>10){
	 rangeReduced = rangePbPbPhiHighMom;
       }
       else{
	 rangeReduced = rangePbPbPhiMedMom;
       }
     }

      cout<<"Use reduced range = "<<rangeReduced<<endl;
      Int_t binLow  = gHistBalanceFunctionSubtracted->GetXaxis()->FindBin(-rangeReduced);
      Int_t binHigh = gHistBalanceFunctionSubtracted->GetXaxis()->FindBin(rangeReduced);
      gHistBalanceFunctionSubtracted->GetXaxis()->SetRange(binLow,binHigh);
    }

    meanLatex = "#mu = "; 
    meanLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetMean());
    meanLatex += " #pm "; 
    meanLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetMeanError());
    
    rmsLatex = "#sigma = "; 
    rmsLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetRMS());
    rmsLatex += " #pm "; 
    rmsLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetRMSError());
    
    skewnessLatex = "S = "; 
    skewnessLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetSkewness(1));
    skewnessLatex += " #pm "; 
    skewnessLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetSkewness(11));
    
    kurtosisLatex = "K = "; 
    kurtosisLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetKurtosis(1));
    kurtosisLatex += " #pm "; 
    kurtosisLatex += Form("%.3f",gHistBalanceFunctionSubtracted->GetKurtosis(11));
    
    Printf("ROOT Mean: %lf - Error: %lf",gHistBalanceFunctionSubtracted->GetMean(),gHistBalanceFunctionSubtracted->GetMeanError());
    Printf("ROOT RMS: %lf - Error: %lf",gHistBalanceFunctionSubtracted->GetRMS(),gHistBalanceFunctionSubtracted->GetRMSError());
    Printf("ROOT Skeweness: %lf - Error: %lf",gHistBalanceFunctionSubtracted->GetSkewness(1),gHistBalanceFunctionSubtracted->GetSkewness(11));
    Printf("ROOT Kurtosis: %lf - Error: %lf",gHistBalanceFunctionSubtracted->GetKurtosis(1),gHistBalanceFunctionSubtracted->GetKurtosis(11));

  
    // store in txt files
    TString meanFileName = filename;
    if(kProjectInEta) 
      meanFileName= "deltaEtaProjection_Mean.txt";
    //meanFileName.ReplaceAll(".root","_DeltaEtaProjection_Mean.txt");
    else              
      meanFileName = "deltaPhiProjection_Mean.txt";
      //meanFileName.ReplaceAll(".root","_DeltaPhiProjection_Mean.txt");
    ofstream fileMean(meanFileName.Data(),ios::app);
    fileMean << " " << gHistBalanceFunctionSubtracted->GetMean() << " " <<gHistBalanceFunctionSubtracted->GetMeanError()<<endl;
    fileMean.close();

    TString rmsFileName = filename;
    if(kProjectInEta) 
      rmsFileName = "deltaEtaProjection_Rms.txt";
      //rmsFileName.ReplaceAll(".root","_DeltaEtaProjection_Rms.txt");
    else              
      rmsFileName = "deltaPhiProjection_Rms.txt";
      //rmsFileName.ReplaceAll(".root","_DeltaPhiProjection_Rms.txt");
    ofstream fileRms(rmsFileName.Data(),ios::app);
    fileRms << " " << gHistBalanceFunctionSubtracted->GetRMS() << " " <<gHistBalanceFunctionSubtracted->GetRMSError()<<endl;
    //fileRms << " " << sigmaGaus << " " <<gHistBalanceFunctionSubtracted->GetRMSError()<<endl;  // just for testing
    fileRms.close();

    TString skewnessFileName = filename;
    if(kProjectInEta) 
      skewnessFileName = "deltaEtaProjection_Skewness.txt";
      //skewnessFileName.ReplaceAll(".root","_DeltaEtaProjection_Skewness.txt");
    else              
      skewnessFileName = "deltaPhiProjection_Skewness.txt";
    //skewnessFileName.ReplaceAll(".root","_DeltaPhiProjection_Skewness.txt");
    ofstream fileSkewness(skewnessFileName.Data(),ios::app);
    fileSkewness << " " << gHistBalanceFunctionSubtracted->GetSkewness(1) << " " <<gHistBalanceFunctionSubtracted->GetSkewness(11)<<endl;
    fileSkewness.close();

    TString kurtosisFileName = filename;
    if(kProjectInEta) 
      kurtosisFileName = "deltaEtaProjection_Kurtosis.txt";
      //kurtosisFileName.ReplaceAll(".root","_DeltaEtaProjection_Kurtosis.txt");
    else
      kurtosisFileName = "deltaPhiProjection_Kurtosis.txt";              
      //kurtosisFileName.ReplaceAll(".root","_DeltaPhiProjection_Kurtosis.txt");
    ofstream fileKurtosis(kurtosisFileName.Data(),ios::app);
    fileKurtosis << " " << gHistBalanceFunctionSubtracted->GetKurtosis(1) << " " <<gHistBalanceFunctionSubtracted->GetKurtosis(11)<<endl;
    fileKurtosis.close();

    if(!kProjectInEta) gHistBalanceFunctionSubtracted->GetXaxis()->SetRangeUser(-TMath::Pi()/2,3.*TMath::Pi()/2);
    else               gHistBalanceFunctionSubtracted->GetXaxis()->SetRangeUser(-1.6,1.6);
  }
  // calculate the moments by hand
  else{

    Double_t meanAnalytical, meanAnalyticalError;
    Double_t sigmaAnalytical, sigmaAnalyticalError;
    Double_t skewnessAnalytical, skewnessAnalyticalError;
    Double_t kurtosisAnalytical, kurtosisAnalyticalError;
    
    Int_t gDeltaEtaPhi = 2;
    if(kProjectInEta) gDeltaEtaPhi = 1;

    AliBalancePsi *bHelper = new AliBalancePsi;
    bHelper->GetMomentsAnalytical(gDeltaEtaPhi,gHistBalanceFunctionSubtracted,kUseZYAM,meanAnalytical,meanAnalyticalError,sigmaAnalytical,sigmaAnalyticalError,skewnessAnalytical,skewnessAnalyticalError,kurtosisAnalytical,kurtosisAnalyticalError);

    meanLatex = "#mu = "; 
    meanLatex += Form("%.3f",meanAnalytical);
    meanLatex += " #pm "; 
    meanLatex += Form("%.3f",meanAnalyticalError);
    
    rmsLatex = "#sigma = "; 
    rmsLatex += Form("%.3f",sigmaAnalytical);
    rmsLatex += " #pm "; 
    rmsLatex += Form("%.3f",sigmaAnalyticalError);
    
    skewnessLatex = "S = "; 
    skewnessLatex += Form("%.3f",skewnessAnalytical);
    skewnessLatex += " #pm "; 
    skewnessLatex += Form("%.3f",skewnessAnalyticalError);
    
    kurtosisLatex = "K = "; 
    kurtosisLatex += Form("%.3f",kurtosisAnalytical);
    kurtosisLatex += " #pm "; 
    kurtosisLatex += Form("%.3f",kurtosisAnalyticalError);
    Printf("Mean: %lf - Error: %lf",meanAnalytical, meanAnalyticalError);
    Printf("Sigma: %lf - Error: %lf",sigmaAnalytical, sigmaAnalyticalError);
    Printf("Skeweness: %lf - Error: %lf",skewnessAnalytical, skewnessAnalyticalError);
    Printf("Kurtosis: %lf - Error: %lf",kurtosisAnalytical, kurtosisAnalyticalError);

    // store in txt files
    TString meanFileName = filename;
    if(kProjectInEta) 
      meanFileName = "deltaEtaProjection_Mean.txt";
      //meanFileName.ReplaceAll(".root","_DeltaEtaProjection_Mean.txt");
    else              
      meanFileName = "deltaPhiProjection_Mean.txt";
      //meanFileName.ReplaceAll(".root","_DeltaPhiProjection_Mean.txt");
    ofstream fileMean(meanFileName.Data(),ios::app);
    fileMean << " " << meanAnalytical << " " <<meanAnalyticalError<<endl;
    fileMean.close();

    TString rmsFileName = filename;
    if(kProjectInEta) 
      rmsFileName = "deltaEtaProjection_Rms.txt";
      //rmsFileName.ReplaceAll(".root","_DeltaEtaProjection_Rms.txt");
    else              
      rmsFileName = "deltaPhiProjection_Rms.txt";
//rmsFileName.ReplaceAll(".root","_DeltaPhiProjection_Rms.txt");
    ofstream fileRms(rmsFileName.Data(),ios::app);
    fileRms << " " << sigmaAnalytical << " " <<sigmaAnalyticalError<<endl;
    fileRms.close();

    TString skewnessFileName = filename;
    if(kProjectInEta) 
      skewnessFileName = "deltaEtaProjection_Skewness.txt";
      //skewnessFileName.ReplaceAll(".root","_DeltaEtaProjection_Skewness.txt");
    else              
      skewnessFileName = "deltaPhiProjection_Skewness.txt";
      //skewnessFileName.ReplaceAll(".root","_DeltaPhiProjection_Skewness.txt");
    ofstream fileSkewness(skewnessFileName.Data(),ios::app);
    fileSkewness << " " << skewnessAnalytical << " " <<skewnessAnalyticalError<<endl;
    fileSkewness.close();

    TString kurtosisFileName = filename;
    if(kProjectInEta) 
      kurtosisFileName = "deltaEtaProjection_Kurtosis.txt";
      //kurtosisFileName.ReplaceAll(".root","_DeltaEtaProjection_Kurtosis.txt");
    else              
      kurtosisFileName = "deltaPhiProjection_Kurtosis.txt";
      //kurtosisFileName.ReplaceAll(".root","_DeltaPhiProjection_Kurtosis.txt");
    ofstream fileKurtosis(kurtosisFileName.Data(),ios::app);
    fileKurtosis << " " << kurtosisAnalytical << " " <<kurtosisAnalyticalError<<endl;
    fileKurtosis.close();
  }

  // Weighted mean as calculated for 1D analysis
  Double_t weightedMean, weightedMeanError;
  if(bReduceRangeForMoments){
    GetWeightedMean1D(gHistBalanceFunctionSubtracted,kProjectInEta,1,-1,weightedMean,weightedMeanError,rangeReduced);
  }
  else{
    GetWeightedMean1D(gHistBalanceFunctionSubtracted,kProjectInEta,1,-1,weightedMean,weightedMeanError,-1.);
  }
  Printf("Weighted Mean: %lf - Error: %lf",weightedMean, weightedMeanError);
 
  // store in txt files
  TString weightedMeanFileName = filename;
  if(kProjectInEta) 
    weightedMeanFileName = "deltaEtaProjection_WeightedMean.txt";
    //weightedMeanFileName.ReplaceAll(".root","_DeltaEtaProjection_WeightedMean.txt");
  else              
    weightedMeanFileName = "deltaPhiProjection_WeightedMean.txt";
    //weightedMeanFileName.ReplaceAll(".root","_DeltaPhiProjection_WeightedMean.txt");
  ofstream fileWeightedMean(weightedMeanFileName.Data(),ios::app);
  fileWeightedMean << " " << weightedMean << " " <<weightedMeanError<<endl;
  fileWeightedMean.close();

  TCanvas *c2 = new TCanvas("c2","",600,0,600,500);
  c2->SetFillColor(10); 
  c2->SetHighLightColor(10);
  c2->SetLeftMargin(0.15);
  gHistBalanceFunctionSubtracted->DrawCopy("E");

  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
  Double_t fwhm_spline = 0.;
  Double_t fwhmError = 0.;
  if (bFWHM){ 
    AliBalancePsi *bHelper_1 = new AliBalancePsi;
    bHelper_1->GetFWHM(kProjectInEta,gHistBalanceFunctionSubtracted,fwhm_spline,fwhmError);
    Printf("FWHM: %lf - Error: %lf",fwhm_spline, fwhmError);
    
    //store and in txt files FWHM
    TString sigmaFileName = filename;
    if(kProjectInEta) {
      sigmaFileName = "deltaEtaProjection_FWHM.txt"; 
    }
    else{
      sigmaFileName = "deltaPhiProjection_FWHM.txt"; 
    }    
    ofstream fileSigma(sigmaFileName.Data(),ios::app);
    fileSigma << " " << fwhm_spline << " " <<fwhmError<<endl;
    fileSigma.close();
  
    gHistBalanceFunctionSubtracted->SetLineColor(2);
    gHistBalanceFunctionSubtracted->SetMarkerColor(2);
    gHistBalanceFunctionSubtracted->Draw("SAME");
  }
  //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//
 
  TLatex *latex = new TLatex();
  latex->SetNDC();
  latex->SetTextSize(0.035);
  latex->SetTextColor(1);
  latex->DrawLatex(0.64,0.85,meanLatex.Data());
  latex->DrawLatex(0.64,0.81,rmsLatex.Data());
  latex->DrawLatex(0.64,0.77,skewnessLatex.Data());
  latex->DrawLatex(0.64,0.73,kurtosisLatex.Data());

  TString pngName = filename;
  if(kProjectInEta) pngName.ReplaceAll(".root","_DeltaEtaProjection.png");
  else              pngName.ReplaceAll(".root","_DeltaPhiProjection.png");

  c2->SaveAs(pngName.Data());

  TString outFileName = filename;
  if(kProjectInEta) outFileName.ReplaceAll(".root","_DeltaEtaProjection.root");
  else              outFileName.ReplaceAll(".root","_DeltaPhiProjection.root");
  TFile *fProjection = TFile::Open(outFileName.Data(),"recreate");  
  gHistBalanceFunctionSubtracted->Write();
  gHistBalanceFunctionMixed->Write();
  fProjection->Close();
}

//____________________________________________________________//
void drawBFPsi2DFromCorrelationFunctions(const char* lhcPeriod = "LHC10h",
					 Int_t gTrainNumber = 64,
					 const char* gCentralityEstimator = "V0M",
					 Int_t gBit = 128,
					 const char* gEventPlaneEstimator = "VZERO",
					 Int_t gCentrality = 1,
					 Double_t psiMin = -0.5, Double_t psiMax = 3.5,
					 Double_t vertexZMin = -10.,
					 Double_t vertexZMax = 10.,
					 Double_t ptTriggerMin = -1.,
					 Double_t ptTriggerMax = -1.,
					 Double_t ptAssociatedMin = -1.,
					 Double_t ptAssociatedMax = -1.,
					 TString eventClass = "Multiplicity",
					 Bool_t bRootMoments = kFALSE,
					 Bool_t bFullPhiForEtaProjection = kFALSE,
					 Bool_t bReduceRangeForMoments = kFALSE,
					 Bool_t bFWHM = kFALSE) {
  //Macro that draws the BF distributions for each centrality bin
  //for reaction plane dependent analysis
  //Author: Panos.Christakoglou@nikhef.nl
  TGaxis::SetMaxDigits(3);
  gStyle->SetPalette(55,0);

  //Get the input file
  TString filename = lhcPeriod; 
  if(lhcPeriod != ""){
    //filename += "/Train"; filename += gTrainNumber;
    filename +="/PttFrom";
    filename += Form("%.1f",ptTriggerMin); filename += "To"; 
    filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
    filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
    filename += Form("%.1f",ptAssociatedMax); 
    filename += "/correlationFunction.";
  }
  else{
    filename += "correlationFunction.";
  }
  if(eventClass == "Centrality"){
    filename += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
    filename += ".PsiAll.PttFrom";
  }
  else if(eventClass == "Multiplicity"){
    filename += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
    filename += ".PsiAll.PttFrom";
  }
  else{ // "EventPlane" (default)
    filename += "Centrality";
    filename += gCentrality; filename += ".Psi";
    if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
    else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
    else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
    else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.PttFrom";
    else filename += "All.PttFrom";
  }  
  filename += Form("%.1f",ptTriggerMin); filename += "To"; 
  filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
  filename += Form("%.1f",ptAssociatedMin); filename += "To"; 
  filename += Form("%.1f",ptAssociatedMax); 
  filename += "_";
  filename += Form("%.1f",psiMin);
  filename += "-";
  filename += Form("%.1f",psiMax);
  filename += ".root";  

  //Open the file
  TFile *f = TFile::Open(filename.Data());
  if((!f)||(!f->IsOpen())) {
    Printf("The file %s is not found. Aborting...",filename);
    return listBF;
  }
  //f->ls();

  TH2D *gHistPN = dynamic_cast<TH2D *>(f->Get("gHistPNCorrelationFunctions"));
  if(!gHistPN) return;
  TH2D *gHistNP = dynamic_cast<TH2D *>(f->Get("gHistNPCorrelationFunctions"));
  if(!gHistNP) return;
  TH2D *gHistPP = dynamic_cast<TH2D *>(f->Get("gHistPPCorrelationFunctions"));
  if(!gHistPP) return;
  TH2D *gHistNN = dynamic_cast<TH2D *>(f->Get("gHistNNCorrelationFunctions"));
  if(!gHistNN) return;

  // in order to get unzoomed (in older versions used smaller user ranger)
  Int_t binMinX = gHistPN->GetXaxis()->FindBin(gHistPN->GetXaxis()->GetXmin()+0.00001);
  Int_t binMaxX = gHistPN->GetXaxis()->FindBin(gHistPN->GetXaxis()->GetXmax()-0.00001);
  Int_t binMinY = gHistPN->GetYaxis()->FindBin(gHistPN->GetYaxis()->GetXmin()+0.00001);
  Int_t binMaxY = gHistPN->GetYaxis()->FindBin(gHistPN->GetYaxis()->GetXmax()-0.00001);
  gHistPN->GetXaxis()->SetRange(binMinX,binMaxX); gHistPN->GetYaxis()->SetRange(binMinY,binMaxY);
  gHistNP->GetXaxis()->SetRange(binMinX,binMaxX); gHistNP->GetYaxis()->SetRange(binMinY,binMaxY);
  gHistPP->GetXaxis()->SetRange(binMinX,binMaxX); gHistPP->GetYaxis()->SetRange(binMinY,binMaxY);
  gHistNN->GetXaxis()->SetRange(binMinX,binMaxX); gHistNN->GetYaxis()->SetRange(binMinY,binMaxY);

  gHistPN->Sumw2();
  gHistPP->Sumw2();
  gHistPN->Add(gHistPP,-1);
  gHistNP->Sumw2();
  gHistNN->Sumw2();
  gHistNP->Add(gHistNN,-1);
  gHistPN->Add(gHistNP);
  //gHistPN->Scale(0.5);//not needed anymore, since pT,assoc < pT,trig in all pT bins
  TH2D *gHistBalanceFunction2D = dynamic_cast<TH2D *>(gHistPN->Clone());
  gHistBalanceFunction2D->SetStats(kFALSE);
  gHistBalanceFunction2D->GetXaxis()->SetTitle("#Delta#eta");
  gHistBalanceFunction2D->GetYaxis()->SetTitle("#Delta#varphi (rad)");
  gHistBalanceFunction2D->GetZaxis()->SetTitle("B(#Delta#eta,#Delta#varphi)");

  //Draw the results
  TCanvas *c0 = new TCanvas("c0","Balance function 2D",0,0,600,500);
  c0->SetFillColor(10); c0->SetHighLightColor(10);
  c0->SetLeftMargin(0.17); c0->SetTopMargin(0.05);
  gHistBalanceFunction2D->SetTitle("");
  gHistBalanceFunction2D->GetZaxis()->SetTitleOffset(1.4);
  gHistBalanceFunction2D->GetZaxis()->SetNdivisions(10);
  gHistBalanceFunction2D->GetYaxis()->SetTitleOffset(1.4);
  gHistBalanceFunction2D->GetYaxis()->SetNdivisions(10);
  //gHistBalanceFunction2D->GetXaxis()->SetRangeUser(-1.4,1.4); 
  gHistBalanceFunction2D->GetXaxis()->SetNdivisions(10);
  gHistBalanceFunction2D->DrawCopy("lego2");
  gPad->SetTheta(30); // default is 30
  gPad->SetPhi(-60); // default is 30
  gPad->Update();  
 
  TString multLatex = Form("Multiplicity: %.1f - %.1f",psiMin,psiMax);

  TString pttLatex = Form("%.1f",ptTriggerMin);
  pttLatex += " < p_{T}^{t} < "; pttLatex += Form("%.1f",ptTriggerMax);
  pttLatex += " GeV/c";

  TString ptaLatex = Form("%.1f",ptAssociatedMin);
  ptaLatex += " < p_{T}^{a} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
  ptaLatex += " GeV/c";

  TLatex *latexInfo1 = new TLatex();
  latexInfo1->SetNDC();
  latexInfo1->SetTextSize(0.045);
  latexInfo1->SetTextColor(1);
  latexInfo1->DrawLatex(0.54,0.88,multLatex.Data());
  latexInfo1->DrawLatex(0.54,0.82,pttLatex.Data());
  latexInfo1->DrawLatex(0.54,0.76,ptaLatex.Data());

  TString pngName = "BalanceFunction2D."; 
  pngName += Form("%s: %.1f - %.1f",eventClass.Data(),psiMin,psiMax);
  pngName += ".PttFrom";  
  pngName += Form("%.1f",ptTriggerMin); pngName += "To"; 
  pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
  pngName += Form("%.1f",ptAssociatedMin); pngName += "To"; 
  pngName += Form("%.1f",ptAssociatedMax); 
  pngName += ".png";

  c0->SaveAs(pngName.Data());

 // do the full range for the projection on eta (for cross checking with published results)
 if(bFullPhiForEtaProjection){
   
   drawProjections(gHistBalanceFunction2D,
		   kTRUE,
		   1,72,
		   gCentrality,
		   psiMin,psiMax,
		   ptTriggerMin,ptTriggerMax,
		   ptAssociatedMin,ptAssociatedMax,
		   kTRUE,
		   eventClass.Data(),
		   bRootMoments,
		   kFALSE,
		   bReduceRangeForMoments,
		   bFWHM);
 }
 else{
   drawProjections(gHistBalanceFunction2D,
		   kTRUE,
		   1,36,
		   gCentrality,
		   psiMin,psiMax,
		   ptTriggerMin,ptTriggerMax,
		   ptAssociatedMin,ptAssociatedMax,
		   kTRUE,
		   eventClass.Data(),
		   bRootMoments,
		   kFALSE,
		   bReduceRangeForMoments,
		   bFWHM);
 }

  drawProjections(gHistBalanceFunction2D,
  		  kFALSE,
  		  1,80,
  		  gCentrality,
  		  psiMin,psiMax,
  		  ptTriggerMin,ptTriggerMax,
  		  ptAssociatedMin,ptAssociatedMax,
  		  kTRUE,
  		  eventClass.Data(),
  		  bRootMoments,
		  kFALSE,
		  bReduceRangeForMoments,
		  bFWHM);

  TString outFileName = filename;
  outFileName.ReplaceAll("correlationFunction","balanceFunction2D");
  gHistBalanceFunction2D->SetName("gHistBalanceFunctionSubtracted");
  TFile *fOut = TFile::Open(outFileName.Data(),"recreate");  
  gHistBalanceFunction2D->Write();
  fOut->Close();
  
}


//____________________________________________________________//
void mergeBFPsi2D(TString momDirectory = "./",
		  TString directory1 = "",
		  TString directory2 = "",
		  TString directory3 = "",
		  TString directory4 = "",
		  Int_t gCentrality = 1,
		  Double_t psiMin = -0.5, Double_t psiMax = 3.5,
		  TString  eventClass = "Centrality",
		  Double_t ptTriggerMin = -1.,
		  Double_t ptTriggerMax = -1.,
		  Double_t ptAssociatedMin = -1.,
		  Double_t ptAssociatedMax = -1.,
		  Bool_t bReduceRangeForMoments = kFALSE,
		  Bool_t bFWHM = kFALSE
) {
  //Macro that draws the BF distributions for each centrality bin
  //for reaction plane dependent analysis
  //Author: Panos.Christakoglou@nikhef.nl
  TGaxis::SetMaxDigits(3);
  gStyle->SetPalette(55,0);

  const Int_t nMaxDirectories = 4; // maximum number of directories to merge (set to 4 for now)
  TString sDirectory[nMaxDirectories];
  Int_t nDirectories = nMaxDirectories;

  TString sFileName[nMaxDirectories];
  TFile *fBF[nMaxDirectories];
  TH2D  *hBF[nMaxDirectories];
  Double_t entries[nMaxDirectories];

  TFile *fOut;
  TH2D  *hBFOut;
  Double_t entriesOut = 0.;

  // find out how many directories we have to merge
 if(directory1==""){
    nDirectories=0;
  }
  else if(directory2==""){
    nDirectories=1;
    sDirectory[0]=directory1;
  }
  else if(directory3==""){
    nDirectories=2;
    sDirectory[0]=directory1;
    sDirectory[1]=directory2;
  }
  else if(directory4==""){
    nDirectories=3;
    sDirectory[0]=directory1;
    sDirectory[1]=directory2;
    sDirectory[2]=directory3;
  }
  else{
    nDirectories=nMaxDirectories;
    sDirectory[0]=directory1;
    sDirectory[1]=directory2;
    sDirectory[2]=directory3;
    sDirectory[3]=directory4;
  }

 for(Int_t iDir = 0; iDir < nDirectories; iDir++){

   //Get the input file
   sFileName[iDir] = sDirectory[iDir];
   sFileName[iDir] += "/Centrality"; sFileName[iDir] += gCentrality;
   sFileName[iDir] += "/"; 
sFileName[iDir] += momDirectory;
   sFileName[iDir] += "/balanceFunction2D.";
   
  if(eventClass == "Centrality"){
    sFileName[iDir] += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
    sFileName[iDir] += ".PsiAll.PttFrom";
  }
  else if(eventClass == "Multiplicity"){
    sFileName[iDir] += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
    sFileName[iDir] += ".PsiAll.PttFrom";
  }
  else{ // "EventPlane" (default)
    sFileName[iDir] += "Centrality";
    sFileName[iDir] += gCentrality; sFileName[iDir] += ".Psi";
    if((psiMin == -0.5)&&(psiMax == 0.5)) sFileName[iDir] += "InPlane.Ptt";
    else if((psiMin == 0.5)&&(psiMax == 1.5)) sFileName[iDir] += "Intermediate.Ptt";
    else if((psiMin == 1.5)&&(psiMax == 2.5)) sFileName[iDir] += "OutOfPlane.Ptt";
    else if((psiMin == 2.5)&&(psiMax == 3.5)) sFileName[iDir] += "Rest.PttFrom";
    else sFileName[iDir] += "All.PttFrom";
  } 
  sFileName[iDir] += Form("%.1f",ptTriggerMin); sFileName[iDir] += "To"; 
  sFileName[iDir] += Form("%.1f",ptTriggerMax); sFileName[iDir] += "PtaFrom";
  sFileName[iDir] += Form("%.1f",ptAssociatedMin); sFileName[iDir] += "To"; 
  sFileName[iDir] += Form("%.1f",ptAssociatedMax); 
  sFileName[iDir] += "_";
  sFileName[iDir] += Form("%.1f",psiMin);
  sFileName[iDir] += "-";
  sFileName[iDir] += Form("%.1f",psiMax);
  sFileName[iDir] += ".root";  
  
  //Open the file
  fBF[iDir] = TFile::Open(sFileName[iDir].Data());
  if((!fBF[iDir])||(!fBF[iDir]->IsOpen())) {
    Printf("The file %s is not found. Not used...",sFileName[iDir]);
    continue;
  }
  //fBF[iDir]->ls();

  hBF[iDir]     = (TH2D*)fBF[iDir]->Get("gHistBalanceFunctionSubtracted");
  if(!hBF[iDir]) continue;
  entries[iDir] = (Double_t) hBF[iDir]->GetEntries();
  entriesOut += entries[iDir];
  cout<<" BF histogram "<<iDir<<" has "<<entries[iDir] <<" entries."<<endl;

  // scaling and adding (for average)
  hBF[iDir]->SetBit(TH1::kIsAverage);
  if(!hBFOut) hBFOut = (TH2D*)hBF[iDir]->Clone("gHistBalanceFunctionSubtractedOut");
  else hBFOut->Add(hBF[iDir]);
  
 }

 drawProjections(hBFOut,
		 kTRUE,
		 1,36,
		 gCentrality,
		 psiMin,psiMax,
		 ptTriggerMin,ptTriggerMax,
		 ptAssociatedMin,ptAssociatedMax,
		 kTRUE,
		 eventClass,
		 kTRUE,
		 kFALSE,
		 bReduceRangeForMoments,
		 bFWHM);

  drawProjections(hBFOut,
  		  kFALSE,
  		  1,80,
  		  gCentrality,
  		  psiMin,psiMax,
  		  ptTriggerMin,ptTriggerMax,
  		  ptAssociatedMin,ptAssociatedMax,
  		  kTRUE,
  		  eventClass.Data(),
  		  kTRUE,
		  kFALSE,
		  bReduceRangeForMoments,
		  bFWHM);

 // output
 TString outFileName = "balanceFunction2D.";
 
 if(eventClass == "Centrality"){
   outFileName += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
   outFileName += ".PsiAll.PttFrom";
 }
 else if(eventClass == "Multiplicity"){
   outFileName += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
   outFileName += ".PsiAll.PttFrom";
  }
 else{ // "EventPlane" (default)
   outFileName += "Centrality";
   outFileName += gCentrality; outFileName += ".Psi";
   if((psiMin == -0.5)&&(psiMax == 0.5)) outFileName += "InPlane.Ptt";
   else if((psiMin == 0.5)&&(psiMax == 1.5)) outFileName += "Intermediate.Ptt";
   else if((psiMin == 1.5)&&(psiMax == 2.5)) outFileName += "OutOfPlane.Ptt";
   else if((psiMin == 2.5)&&(psiMax == 3.5)) outFileName += "Rest.PttFrom";
   else outFileName += "All.PttFrom";
 } 
 outFileName += Form("%.1f",ptTriggerMin); outFileName += "To"; 
 outFileName += Form("%.1f",ptTriggerMax); outFileName += "PtaFrom";
 outFileName += Form("%.1f",ptAssociatedMin); outFileName += "To"; 
 outFileName += Form("%.1f",ptAssociatedMax); 
 outFileName += "_";
 outFileName += Form("%.1f",psiMin);
 outFileName += "-";
 outFileName += Form("%.1f",psiMax);
 outFileName += ".root";  
 
 hBFOut->SetName("gHistBalanceFunctionSubtracted");
 fBFOut = TFile::Open(outFileName.Data(),"recreate");  
 hBFOut->Write();
 fBFOut->Close();
 
}

//____________________________________________________________________//
void GetWeightedMean1D(TH1D *gHistBalance, Bool_t kProjectInEta = kTRUE, Int_t fStartBin = 1, Int_t fStopBin = -1, Double_t &WM, Double_t &WME,Double_t rangeReduced = -1.) {

  //Prints the calculated width of the BF and its error
  Double_t gSumXi = 0.0, gSumBi = 0.0, gSumBiXi = 0.0;
  Double_t gSumBiXi2 = 0.0, gSumBi2Xi2 = 0.0;
  Double_t gSumDeltaBi2 = 0.0, gSumXi2DeltaBi2 = 0.0;
  Double_t deltaBalP2 = 0.0, integral = 0.0;
  Double_t deltaErrorNew = 0.0;

  //Retrieve this variables from Histogram
  Int_t fNumberOfBins = gHistBalance->GetNbinsX();
  if(fStopBin > -1)   fNumberOfBins = fStopBin;
  Double_t fP2Step    = gHistBalance->GetBinWidth(1); // assume equal binning!
  Double_t currentBinCenter = 0.;

  for(Int_t i = fStartBin; i <= fNumberOfBins; i++) {

    // in order to recover the |abs| in the 1D analysis
    currentBinCenter = gHistBalance->GetBinCenter(i);
    if(kProjectInEta){
      if(currentBinCenter < 0) currentBinCenter = -currentBinCenter;
    }
    else{
      if(currentBinCenter < 0) currentBinCenter = -currentBinCenter;
      if(currentBinCenter > TMath::Pi()) currentBinCenter = 2 * TMath::Pi() - currentBinCenter;
    }

    if(rangeReduced > 0 && currentBinCenter > rangeReduced )
      continue;

    gSumXi += currentBinCenter;
    gSumBi += gHistBalance->GetBinContent(i);
    gSumBiXi += gHistBalance->GetBinContent(i)*currentBinCenter;
    gSumBiXi2 += gHistBalance->GetBinContent(i)*TMath::Power(currentBinCenter,2);
    gSumBi2Xi2 += TMath::Power(gHistBalance->GetBinContent(i),2)*TMath::Power(currentBinCenter,2);
    gSumDeltaBi2 +=  TMath::Power(gHistBalance->GetBinError(i),2);
    gSumXi2DeltaBi2 += TMath::Power(currentBinCenter,2) * TMath::Power(gHistBalance->GetBinError(i),2);
    
    deltaBalP2 += fP2Step*TMath::Power(gHistBalance->GetBinError(i),2);
    integral += fP2Step*gHistBalance->GetBinContent(i);
  }
  for(Int_t i = fStartBin; i < fNumberOfBins; i++)
    deltaErrorNew += gHistBalance->GetBinError(i)*(currentBinCenter*gSumBi - gSumBiXi)/TMath::Power(gSumBi,2);
  
  Double_t integralError = TMath::Sqrt(deltaBalP2);
  
  Double_t delta = gSumBiXi / gSumBi;
  Double_t deltaError = (gSumBiXi / gSumBi) * TMath::Sqrt(TMath::Power((TMath::Sqrt(gSumXi2DeltaBi2)/gSumBiXi),2) + TMath::Power((gSumDeltaBi2/gSumBi),2) );
  
  WM  = delta;
  WME = deltaError;
}

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