ROOT logo
TFile *fo = NULL;
TF1 *fPsi = NULL;

Bool_t kLib = kFALSE;
Bool_t kVZEROrescorr = kTRUE; // VZERO resolution corrections
Bool_t kNUAcorr = kTRUE; // NUA corrections
Bool_t kNUOcorr = kFALSE; // Not Uniform Occupancy (TOF) corrections
Bool_t kPIDcorr = kFALSE; // PID corrections
Bool_t kFEEDcorr = kFALSE; // antiproton feed-down corrections
Bool_t kCleanMemory = kTRUE; // if kFALSE take care of the large numbers of TCanvases

TH1D *hNUO[8]; // NUO corrections

void LoadLib();
void extractFlowVZERO(Int_t icentr,const char *type="",Int_t arm=2,Float_t pTh=0.8,Bool_t isMC=kFALSE,Int_t addbin=0);
TProfile *extractFlowVZEROsingle(Int_t icentr,Int_t spec,Int_t arm=2,Bool_t isMC=kFALSE,Float_t pTh=0.9,Int_t addbin=0,const char *nameSp="",Float_t detMin=0,Float_t detMax=1,Int_t chMin=-1,Int_t chMax=1);
void compareTPCTOF(Int_t icentr,Int_t spec,Int_t arm=2,Float_t pTh=0.9,Int_t addbin=0);
void plotQApid(Int_t ic,Float_t pt,Int_t addbin=0);

void LoadLib(){
  if(! kLib){
    gSystem->Load("libVMC.so");
    gSystem->Load("libPhysics.so");
    gSystem->Load("libTree.so");
    gSystem->Load("libSTEERBase.so");
    gSystem->Load("libANALYSIS.so");
    gSystem->Load("libAOD.so");
    gSystem->Load("libESD.so");
    gSystem->Load("libANALYSIS.so");
    gSystem->Load("libANALYSISalice.so");
    gSystem->Load("libCORRFW.so");
    gSystem->Load("libNetx.so");
    gSystem->Load("libPWGflowBase.so");
    gSystem->Load("libPWGflowTasks.so");
    
    kLib = kTRUE;
  }
}

void extractFlowVZERO(Int_t icentr,const char *type,Int_t arm,Float_t pTh,Bool_t isMC,Int_t addbin){
  LoadLib();

  char name[100];
  snprintf(name,100,"AnalysisResults%s.root",type);
  if(!fo) fo = new TFile(name);

  new TCanvas();

  Int_t cMin[] = {0,5,10,20,30,40,50,60,70};
  Int_t cMax[] = {5,10,20,30,40,50,60,70,80};

  if(kNUOcorr){ // Compute correction for NUO in TOF
    compareTPCTOF(icentr,0,arm,pTh,addbin);
//     compareTPCTOF(icentr,1,arm,pTh,addbin);
//     compareTPCTOF(icentr,2,arm,pTh,addbin);
//     compareTPCTOF(icentr,3,arm,pTh,addbin);
//     compareTPCTOF(icentr,4,arm,pTh,addbin);
  }

  TProfile *pAll;
  pAll=extractFlowVZEROsingle(icentr,0,arm,0,pTh,addbin,"all",0,1);
  pAll->SetMarkerStyle(24);
  TProfile *pPiTOF,*pPiTPC,*pPiTPC2;
  pPiTOF=extractFlowVZEROsingle(icentr,1,arm,0,pTh,addbin,"piTOF",1,1);
  pPiTPC=extractFlowVZEROsingle(icentr,1,arm,0,pTh,addbin,"piTPC",0,0);
  pPiTPC2=extractFlowVZEROsingle(icentr,1,arm,0,pTh,addbin,"piTPC2",2,2);
  pPiTPC->Add(pPiTPC2);

  TH1D *hPi = pPiTOF->ProjectionX("hPi");
  hPi->SetLineColor(4);
  hPi->SetMarkerColor(4);
  hPi->SetMarkerStyle(20);
  for(Int_t i=1;i <=hPi->GetNbinsX();i++){
    Float_t x = hPi->GetBinCenter(i);
    if(x < 0.2){
      hPi->SetBinContent(i,0);
      hPi->SetBinError(i,0);
    }
    else if(x < 0.5){
      hPi->SetBinContent(i,pPiTPC->GetBinContent(i));
      hPi->SetBinError(i,pPiTPC->GetBinError(i));      
    }
    else{
      if(kNUOcorr){
	hPi->SetBinContent(i,pPiTOF->GetBinContent(i) + hNUO[0]->GetBinContent(i));
	hPi->SetBinError(i,pPiTOF->GetBinError(i));      
      }
      else{
	hPi->SetBinContent(i,pPiTOF->GetBinContent(i));
	hPi->SetBinError(i,pPiTOF->GetBinError(i));      
      }
    }
  }

  TProfile *pElTOF,*pElTPC,*pElTPC2;
  pElTOF=extractFlowVZEROsingle(icentr,4,arm,0,pTh,addbin,"piTOF",1,1);
  pElTPC=extractFlowVZEROsingle(icentr,4,arm,0,pTh,addbin,"piTPC",0,0);
  pElTPC2=extractFlowVZEROsingle(icentr,4,arm,0,pTh,addbin,"piTPC2",2,2);
  pElTPC->Add(pElTPC2);

  TH1D *hEl = pElTOF->ProjectionX("hEl");
  hEl->SetLineColor(6);
  hEl->SetMarkerColor(6);
  hEl->SetMarkerStyle(20);
  for(Int_t i=1;i <=hEl->GetNbinsX();i++){
    Float_t x = hEl->GetBinCenter(i);
    if(x < 0.2){
      hEl->SetBinContent(i,0);
      hEl->SetBinError(i,0);
    }
    else if(x < 0.3){
      hEl->SetBinContent(i,pElTPC->GetBinContent(i));
      hEl->SetBinError(i,pElTPC->GetBinError(i));      
    }
    else{
      if(kNUOcorr){
	hEl->SetBinContent(i,pElTOF->GetBinContent(i) + hNUO[0]->GetBinContent(i));
	hEl->SetBinError(i,pElTOF->GetBinError(i));      
      }
      else{
	hEl->SetBinContent(i,pElTOF->GetBinContent(i));
	hEl->SetBinError(i,pElTOF->GetBinError(i));      
      }
    }
  }

  TProfile *pKTOF,*pKTPC,*pKTPC2;
  pKTOF=extractFlowVZEROsingle(icentr,2,arm,0,pTh,addbin,"kaTOF",1,1);
  pKTPC=extractFlowVZEROsingle(icentr,2,arm,0,pTh,addbin,"kaTPC",0,0);
  pKTPC2=extractFlowVZEROsingle(icentr,2,arm,0,pTh,addbin,"kaTPC2",2,2);
  pKTPC->Add(pKTPC2);

  TH1D *hK = pKTOF->ProjectionX("hKa");
  hK->SetLineColor(1);
  hK->SetMarkerColor(1);
  hK->SetMarkerStyle(21);
  for(Int_t i=1;i <=hK->GetNbinsX();i++){
    Float_t x = hK->GetBinCenter(i);
    if(x < 0.25){
      hK->SetBinContent(i,0);
      hK->SetBinError(i,0);
    }
    else if(x < 0.45){
      hK->SetBinContent(i,pKTPC->GetBinContent(i));
      hK->SetBinError(i,pKTPC->GetBinError(i));      
    }
    else{
      if(kNUOcorr){
	hK->SetBinContent(i,pKTOF->GetBinContent(i) + hNUO[0]->GetBinContent(i));
	hK->SetBinError(i,pKTOF->GetBinError(i));      
      }
      else{
	hK->SetBinContent(i,pKTOF->GetBinContent(i));
	hK->SetBinError(i,pKTOF->GetBinError(i));      
      }
    }
  }

  TProfile *pPrTOF,*pPrTOF2,*pPrTPC,*pPrTPC2;
  pPrTOF=extractFlowVZEROsingle(icentr,3,arm,0,pTh,addbin,"prTOF",1,1,-1,-1);
  pPrTOF2=extractFlowVZEROsingle(icentr,3,arm,0,pTh,addbin,"prTOF2",1,1,-1,1);
  pPrTPC=extractFlowVZEROsingle(icentr,3,arm,0,pTh,addbin,"prTPC",0,0,-1,-1);
  pPrTPC2=extractFlowVZEROsingle(icentr,3,arm,0,pTh,addbin,"prTPC2",2,2,-1,-1);
  pPrTPC->Add(pPrTPC2);

  TH1D *hPr = pPrTOF->ProjectionX("hPr");
  hPr->SetLineColor(2);
  hPr->SetMarkerColor(2);
  hPr->SetMarkerStyle(22);
  for(Int_t i=1;i <=hPr->GetNbinsX();i++){
    Float_t x = hPr->GetBinCenter(i);
    if(x < 0.3){
      hPr->SetBinContent(i,0);
      hPr->SetBinError(i,0);
    }
    else if(x < 1.0){
      hPr->SetBinContent(i,pPrTPC->GetBinContent(i));
      hPr->SetBinError(i,pPrTPC->GetBinError(i));      
    }
    else{
      if(x < 3){
	if(kNUOcorr){
	  hPr->SetBinContent(i,pPrTOF->GetBinContent(i) + hNUO[0]->GetBinContent(i));
	  hPr->SetBinError(i,pPrTOF->GetBinError(i));      
	}
	else{
	  hPr->SetBinContent(i,pPrTOF->GetBinContent(i));
	  hPr->SetBinError(i,pPrTOF->GetBinError(i));      
	}
      }
      else{
	if(kNUOcorr){
	  hPr->SetBinContent(i,pPrTOF2->GetBinContent(i) + hNUO[0]->GetBinContent(i));
	  hPr->SetBinError(i,pPrTOF2->GetBinError(i));      
	}
	else{
	  hPr->SetBinContent(i,pPrTOF2->GetBinContent(i));
	  hPr->SetBinError(i,pPrTOF2->GetBinError(i));      
	}
      }
    }
  }
  
  pAll->Draw();
  hPi->Draw("SAME");
  hK->Draw("SAME");
  hPr->Draw("SAME");


  char name[100];


  // PID correction
  if(kPIDcorr){
    TFile *fPidTOF = new TFile("$ALICE_ROOT/PWGCF/FLOW/other/BayesianPIDcontTPCTOF.root");
    TFile *fPidTPC = new TFile("$ALICE_ROOT/PWGCF/FLOW/other/BayesianPIDcontTPC.root");
    // pi histos
    sprintf(name,"Pi_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiPi=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pi_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiEl=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pi_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiKa=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pi_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiPr=(TH1D *) fPidTOF->Get(name);
    TH1D *hPidAll = new TH1D(*hPidPiPi);
    hPidAll->Add(hPidPiKa);
    hPidAll->Add(hPidPiPr);
    hPidAll->Add(hPidPiEl);
    hPidPiPi->Divide(hPidAll);
    hPidPiKa->Divide(hPidAll);
    hPidPiPr->Divide(hPidAll);
    hPidPiEl->Divide(hPidAll);

    sprintf(name,"Pi_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiPiTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pi_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiElTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pi_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiKaTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pi_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPiPrTPC=(TH1D *) fPidTPC->Get(name);
    hPidAll->Reset();
    hPidAll->Add(hPidPiPiTPC);
    hPidAll->Add(hPidPiKaTPC);
    hPidAll->Add(hPidPiPrTPC);
    hPidAll->Add(hPidPiElTPC);
    hPidPiPiTPC->Divide(hPidAll);
    hPidPiKaTPC->Divide(hPidAll);
    hPidPiPrTPC->Divide(hPidAll);
    hPidPiElTPC->Divide(hPidAll);

    // K histos
    sprintf(name,"Ka_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaPi=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Ka_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaEl=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Ka_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaKa=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Ka_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaPr=(TH1D *) fPidTOF->Get(name);
    hPidAll->Reset();
    hPidAll->Add(hPidKaPi);
    hPidAll->Add(hPidKaKa);
    hPidAll->Add(hPidKaPr);
    hPidAll->Add(hPidKaEl);
    hPidKaPi->Divide(hPidAll);
    hPidKaKa->Divide(hPidAll);
    hPidKaPr->Divide(hPidAll);
    hPidKaEl->Divide(hPidAll);

    sprintf(name,"Ka_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaPiTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Ka_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaElTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Ka_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaKaTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Ka_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidKaPrTPC=(TH1D *) fPidTPC->Get(name);
    hPidAll->Reset();
    hPidAll->Add(hPidKaPiTPC);
    hPidAll->Add(hPidKaKaTPC);
    hPidAll->Add(hPidKaPrTPC);
    hPidAll->Add(hPidKaElTPC);
    hPidKaPiTPC->Divide(hPidAll);
    hPidKaKaTPC->Divide(hPidAll);
    hPidKaPrTPC->Divide(hPidAll);
    hPidKaElTPC->Divide(hPidAll);

    // pr histos
    sprintf(name,"Pr_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrPi=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pr_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrEl=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pr_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrKa=(TH1D *) fPidTOF->Get(name);
    sprintf(name,"Pr_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrPr=(TH1D *) fPidTOF->Get(name);
    hPidAll->Reset();
    hPidAll->Add(hPidPrPi);
    hPidAll->Add(hPidPrKa);
    hPidAll->Add(hPidPrPr);
    hPidAll->Add(hPidPrEl);
    hPidPrPi->Divide(hPidAll);
    hPidPrKa->Divide(hPidAll);
    hPidPrPr->Divide(hPidAll);
    hPidPrEl->Divide(hPidAll);

    sprintf(name,"Pr_IDas_Picentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrPiTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pr_IDas_Elcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrElTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pr_IDas_Kacentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrKaTPC=(TH1D *) fPidTPC->Get(name);
    sprintf(name,"Pr_IDas_Prcentr%i_pth%4.2f",icentr,pTh);
    TH1D *hPidPrPrTPC=(TH1D *) fPidTPC->Get(name);
    hPidAll->Reset();
    hPidAll->Add(hPidPrPiTPC);
    hPidAll->Add(hPidPrKaTPC);
    hPidAll->Add(hPidPrPrTPC);
    hPidAll->Add(hPidPrElTPC);
    hPidPrPiTPC->Divide(hPidAll);
    hPidPrKaTPC->Divide(hPidAll);
    hPidPrPrTPC->Divide(hPidAll);
    hPidPrElTPC->Divide(hPidAll);
 
    for(Int_t k=1;k <=hPi->GetNbinsX();k++){
      Float_t pt = hPi->GetBinCenter(k);
      Float_t xPi=hPi->GetBinContent(k)*hPidPiPi->Interpolate(pt) + hK->GetBinContent(k)*hPidPiKa->Interpolate(pt) + hPr->GetBinContent(k)*hPidPiPr->Interpolate(pt) + hEl->GetBinContent(k)*hPidPiEl->Interpolate(pt);
      if(pt < 0.5)
	xPi=hPi->GetBinContent(k)*hPidPiPiTPC->Interpolate(pt) + hK->GetBinContent(k)*hPidPiKaTPC->Interpolate(pt) + hPr->GetBinContent(k)*hPidPiPrTPC->Interpolate(pt) + hEl->GetBinContent(k)*hPidPiElTPC->Interpolate(pt);
      Float_t xKa=hPi->GetBinContent(k)*hPidKaPi->Interpolate(pt) + hK->GetBinContent(k)*hPidKaKa->Interpolate(pt) + hPr->GetBinContent(k)*hPidKaPr->Interpolate(pt) + hEl->GetBinContent(k)*hPidKaEl->Interpolate(pt);
      if(pt < 0.45)
	xKa=hPi->GetBinContent(k)*hPidKaPiTPC->Interpolate(pt) + hK->GetBinContent(k)*hPidKaKaTPC->Interpolate(pt) + hPr->GetBinContent(k)*hPidKaPrTPC->Interpolate(pt) + hEl->GetBinContent(k)*hPidKaElTPC->Interpolate(pt);
      Float_t xPr=hPi->GetBinContent(k)*hPidPrPi->Interpolate(pt) + hK->GetBinContent(k)*hPidPrKa->Interpolate(pt) + hPr->GetBinContent(k)*hPidPrPr->Interpolate(pt) + hEl->GetBinContent(k)*hPidPrEl->Interpolate(pt);
      if(pt < 1)
	xPr=hPi->GetBinContent(k)*hPidPrPiTPC->Interpolate(pt) + hK->GetBinContent(k)*hPidPrKaTPC->Interpolate(pt) + hPr->GetBinContent(k)*hPidPrPrTPC->Interpolate(pt) + hEl->GetBinContent(k)*hPidPrElTPC->Interpolate(pt);

      hPi->SetBinContent(k,hPi->GetBinContent(k)*2 - xPi);
      hK->SetBinContent(k,hK->GetBinContent(k)*2 - xKa);
      hPr->SetBinContent(k,hPr->GetBinContent(k)*2 - xPr);    
    }
  }


  // antiproton Feed down
  TProfile *pFromLambda = extractFlowVZEROsingle(icentr,11,arm,0,pTh,addbin,"pFromLambda",1,1);
  TProfile *piFromK = extractFlowVZEROsingle(icentr,12,arm,0,pTh,addbin,"piFromK",1,1,1,1);
  TProfile *pFromLambda2 = extractFlowVZEROsingle(icentr,11,arm,0,0.6,addbin,"pFromLambdanoPID",0,1);
  TProfile *piFromK2 = extractFlowVZEROsingle(icentr,12,arm,0,0.6,addbin,"piFromKnoPID",0,1);
  TProfile *piFromK3 = extractFlowVZEROsingle(icentr,12,arm,0,0.6,addbin,"piFromKnoPIDtof",1,1);

  TH1D *hFeedSyst = NULL;

  if(kFEEDcorr){
    hFeedSyst = new TH1D(*hPr);
    hFeedSyst->SetName("hFeedSyst");
    hFeedSyst->Reset();
    for(Int_t k=1;k <=hPr->GetNbinsX();k++){
      Float_t contam = 3.23174e-01 * TMath::Exp(- 9.46743e-01 *  hPr->GetBinCenter(k));
      Float_t corr = contam * pFromLambda->GetBinContent(k)/(1-contam);
      Float_t corrErr = contam * pFromLambda->GetBinError(k)/(1-contam);
      Float_t value = hPr->GetBinContent(k)/(1-contam) - corr;
      Float_t valueErr = hPr->GetBinError(k)/(1-contam);

      hFeedSyst->SetBinContent(k,hPr->GetBinContent(k) - value);
      hFeedSyst->SetBinContent(k,sqrt(corrErr*corrErr + valueErr*valueErr - hPr->GetBinError(k)*hPr->GetBinError(k)));

      hPr->SetBinContent(k,value);
      hPr->SetBinError(k,sqrt(corrErr*corrErr + valueErr*valueErr));

    }
    hFeedSyst->Divide(hPr);
  }
    
  // write output
  snprintf(name,100,"results%03i-%03iv%i_pTh%3.1f%s.root",cMin[icentr],cMax[icentr+addbin],arm,pTh,type);
  TFile *fout = new TFile(name,"RECREATE");
  pAll->ProjectionX()->Write();
  hPi->Write();
  hK->Write();
  hPr->Write();
  if(isMC){
    TH1D *pTmp = extractFlowVZEROsingle(icentr,0,arm,1,pTh,addbin,"allMC",1,1,-1,1)->ProjectionX();
    pTmp->SetLineColor(6);
    pTmp->SetMarkerColor(6);
    pTmp->SetMarkerStyle(24);
    pTmp->Write();
    pTmp = extractFlowVZEROsingle(icentr,1,arm,1,pTh,addbin,"piMC",1,1,-1,1)->ProjectionX();
    pTmp->SetLineColor(4);
    pTmp->SetMarkerColor(4);
    pTmp->SetMarkerStyle(24);
    pTmp->Write();
    pTmp = extractFlowVZEROsingle(icentr,2,arm,1,pTh,addbin,"kaMC",1,1,-1,1)->ProjectionX();
    pTmp->SetLineColor(1);
    pTmp->SetMarkerColor(1);
    pTmp->SetMarkerStyle(25);
    pTmp->Write();
    pTmp = extractFlowVZEROsingle(icentr,3,arm,1,pTh,addbin,"prMC",1,1,-1,-1)->ProjectionX();
    pTmp->SetLineColor(2);
    pTmp->SetMarkerColor(2);
    pTmp->SetMarkerStyle(26);
    pTmp->Write();
  }
  extractFlowVZEROsingle(icentr,2,arm,0,pTh,addbin,"kProf")->Write();
  extractFlowVZEROsingle(icentr,9,arm,0,pTh,addbin,"ks",0,1,1,1)->Write();
  extractFlowVZEROsingle(icentr,9,arm,0,pTh,addbin,"ksMy",0,1,-1,-1)->Write();
  extractFlowVZEROsingle(icentr,10,arm,0,pTh,addbin,"lambda")->Write();
  pFromLambda->Write();
  piFromK->Write();
  pFromLambda2->Write();
  piFromK2->Write();
  piFromK3->Write();
  if(hFeedSyst) hFeedSyst->Write();
  fout->Close();
}

TProfile *extractFlowVZEROsingle(Int_t icentr,Int_t spec,Int_t arm,Bool_t isMC,Float_t pTh,Int_t addbin,const char *nameSp,Float_t detMin,Float_t detMax,Int_t chMin,Int_t chMax){
  LoadLib();

  pTh += 0.00001;

  // NUA correction currently are missing
  char name[100];
  char stringa[200];

  snprintf(name,100,"AnalysisResults.root");
  if(!fo) fo = new TFile(name);
  snprintf(name,100,"contVZEROv%i",arm);
  TList *cont = (TList *) fo->Get(name);

  cont->ls();

  Float_t xMin[5] = {icentr/*centrality bin*/,chMin/*charge*/,pTh/*prob*/,-TMath::Pi()/arm/*Psi*/,detMin/*PID mask*/};
  Float_t xMax[5] = {icentr+addbin,chMax,1.0,TMath::Pi()/arm,detMax};

  cont->ls();

  TProfile *p1 = cont->At(2);
  TProfile *p2 = cont->At(3);
  TProfile *p3 = cont->At(4);

  TH2F *hPsi2DA = cont->At(5);
  TH2F *hPsi2DC = cont->At(6);

  TH1D *hPsiA = hPsi2DA->ProjectionY("PsiA",icentr+1,icentr+addbin+1);
  TH1D *hPsiC = hPsi2DC->ProjectionY("PsiC",icentr+1,icentr+addbin+1);

  if(!fPsi) fPsi = new TF1("fPsi","pol0",-TMath::Pi()/arm,TMath::Pi()/arm);
  hPsiA->Fit(fPsi,"0");
  Float_t offsetA = fPsi->GetParameter(0);
  hPsiC->Fit(fPsi,"0");
  Float_t offsetC = fPsi->GetParameter(0);

  Int_t nbinPsi = hPsiA->GetNbinsX();

  Float_t *NUAcorrA = new Float_t[nbinPsi];
  Float_t *NUAcorrC = new Float_t[nbinPsi];

  for(Int_t i=0;i < nbinPsi;i++){
    NUAcorrA[i] = offsetA/(hPsiA->GetBinContent(i+1));
    NUAcorrC[i] = offsetC/(hPsiC->GetBinContent(i+1));
  }

  Float_t res1=0,res2=0,res3=0; 
  Float_t eres1=0,eres2=0,eres3=0; 

  for(Int_t i = icentr; i <= icentr+addbin;i++){
    if(p1->GetBinError(i+1)){
      eres1 += 1./p1->GetBinError(i+1)/p1->GetBinError(i+1);
      res1 += p1->GetBinContent(i+1)/p1->GetBinError(i+1)/p1->GetBinError(i+1);      
    }
    if(p2->GetBinError(i+1)){
      eres2 += 1./p2->GetBinError(i+1)/p2->GetBinError(i+1);
      res2 += p2->GetBinContent(i+1)/p2->GetBinError(i+1)/p2->GetBinError(i+1);      
    }
    if(p3->GetBinError(i+1)){
      eres3 += 1./p3->GetBinError(i+1)/p3->GetBinError(i+1);
      res3 += p3->GetBinContent(i+1)/p3->GetBinError(i+1)/p3->GetBinError(i+1);      
    }
  }

  res1 /= eres1;
  res2 /= eres2;
  res3 /= eres3;
  
  eres1 = sqrt(1./eres1);
  eres2 = sqrt(1./eres2);
  eres3 = sqrt(1./eres3);

  AliFlowVZEROResults *a = (AliFlowVZEROResults *) cont->At(0);
  AliFlowVZEROResults *b = (AliFlowVZEROResults *) cont->At(1);
  TProfile *pp,*pp2;
  if(kNUAcorr){ // with NUA corrections
    pp = a->GetV2reweight(spec,xMin,xMax,3,NUAcorrA);
    pp2 = b->GetV2reweight(spec,xMin,xMax,3,NUAcorrC);
  }
  else{
    pp = a->GetV2(spec,xMin,xMax);
    pp2 = b->GetV2(spec,xMin,xMax);
  }
  
  Float_t scaling = sqrt(res1*res3/res2);
  if(kVZEROrescorr){
    pp->Scale(1./scaling);
  }

  Float_t err1_2 = eres1*eres1/res1/res1/4 +
    eres2*eres2/res2/res2/4 +
    eres3*eres3/res3/res3/4;
  Float_t err2_2 = err1_2;
  err1_2 /= scaling*scaling;
  printf("resolution V0A = %f +/- %f\n",scaling,err1_2);
  scaling = sqrt(res2*res3/res1);
  err2_2 /= scaling*scaling;
  if(kVZEROrescorr){
    pp2->Scale(1./scaling);
  }
  printf("resolution V0C =%f +/- %f\n",scaling,err2_2);

  pp->SetName("V0A");
  pp2->SetName("V0C");

  if(! kCleanMemory){
    new TCanvas();  
    pp->Draw();
    pp2->Draw("SAME");
  }

  TProfile *pData = new TProfile(*pp);
  pData->Add(pp2);
  snprintf(stringa,100,"%sData",nameSp);
  pData->SetName(stringa);

  TProfile *pMc = NULL;
  
  TProfile *ppMC;
  TProfile *ppMC2;
  
  if(isMC){
    snprintf(name,100,"contVZEROmc");
    cont = (TList *) fo->Get(name);
    cont->ls();
    if(arm == 2){
      AliFlowVZEROResults *c = (AliFlowVZEROResults *) cont->At(0);
      if(! kCleanMemory) c->GetV2(spec,xMin,xMax)->Draw("SAME");
    }
    AliFlowVZEROResults *cA;
    if(fo->Get("contVZEROv2")) cA = (AliFlowVZEROResults *) cont->At(1+2*(arm==3));
    else cA = (AliFlowVZEROResults *) cont->At(0);
    AliFlowVZEROResults *cC;
    if(fo->Get("contVZEROv2")) cC = (AliFlowVZEROResults *) cont->At(2+2*(arm==3));
    else cC = (AliFlowVZEROResults *) cont->At(1);

    TProfile *p1mc = cont->At(5+3*(arm==3));
    TProfile *p2mc = cont->At(6+3*(arm==3));
    TProfile *p3mc = cont->At(7+3*(arm==3));

    Float_t resMC1=0,resMC2=0,resMC3=0; 
    Float_t eresMC1=0,eresMC2=0,eresMC3=0; 

    for(Int_t i = icentr; i <= icentr+addbin;i++){
      if(p1mc->GetBinError(i+1)){
	eresMC1 += 1./p1mc->GetBinError(i+1)/p1mc->GetBinError(i+1);
	resMC1 += p1mc->GetBinContent(i+1)/p1mc->GetBinError(i+1)/p1mc->GetBinError(i+1);      
      }
      if(p2mc->GetBinError(i+1)){
	eresMC2 += 1./p2mc->GetBinError(i+1)/p2mc->GetBinError(i+1);
	resMC2 += p2mc->GetBinContent(i+1)/p2mc->GetBinError(i+1)/p2mc->GetBinError(i+1);      
      }
      if(p3mc->GetBinError(i+1)){
	eresMC3 += 1./p3mc->GetBinError(i+1)/p3mc->GetBinError(i+1);
	resMC3 += p3mc->GetBinContent(i+1)/p3mc->GetBinError(i+1)/p3mc->GetBinError(i+1);      
      }
    }
    
    resMC1 /= eresMC1;
    resMC2 /= eresMC2;
    resMC3 /= eresMC3;
    
    eresMC1 = sqrt(1./eresMC1);
    eresMC2 = sqrt(1./eresMC2);
    eresMC3 = sqrt(1./eresMC3);

    ppMC = cA->GetV2(spec,xMin,xMax);
    ppMC2 = cC->GetV2(spec,xMin,xMax);
    
    scaling = sqrt(resMC1*resMC3/resMC2);
    ppMC->Scale(1./scaling);
  
    err1_2 = eresMC1*eresMC1/resMC1/resMC1/4 +
      eresMC2*eresMC2/resMC2/resMC2/4 +
      eresMC3*eresMC3/resMC3/resMC3/4;
    err2_2 = err1_2;
    err1_2 /= scaling*scaling;
    printf("resolution V0A (MC) = %f +/- %f\n",scaling,err1_2);
    scaling = sqrt(resMC2*resMC3/resMC1);
    err2_2 /= scaling*scaling;
    ppMC2->Scale(1./scaling);
    printf("resolution V0C (MC) =%f +/- %f\n",scaling,err2_2);

    ppMC->SetName("V0Amc");
    ppMC2->SetName("V0Cmc");

    if(! kCleanMemory){
      ppMC->Draw("SAME");
      ppMC2->Draw("SAME");
    }

    pMc = new TProfile(*ppMC);
    pMc->Add(ppMC2);
    snprintf(stringa,100,"%sMC",nameSp);
    pMc->SetName(stringa);
    pMc->SetLineColor(2);
  }

  if(! kCleanMemory){
    new TCanvas();  
    pData->Draw();
  }
  if(pMc && !kCleanMemory){
    pMc->Draw("SAME");
    TH1D *hData = pData->ProjectionX();
    TH1D *hMc = pMc->ProjectionX();
    hData->Divide(hMc);
    new TCanvas();  
    hData->Draw();
  }

  delete[] NUAcorrA;
  delete[] NUAcorrC;

  if(kCleanMemory){
    if(pp) delete pp;
    if(pp2) delete pp2;
    if(ppMC) delete ppMC;
    if(ppMC2) delete ppMC2;
  }

  delete cont;

  if(isMC) return pMc;
  return pData;
}
void compareTPCTOF(Int_t icentr,Int_t spec,Int_t arm,Float_t pTh,Int_t addbin){
  LoadLib();
  Float_t ptMaxFit[8] = {20,0.7,0.55,1.2,2,2,2,2};

  TProfile *pTPC = extractFlowVZEROsingle(icentr,spec,arm,0,pTh,addbin,"TPC",0,0,-1,-1+2*(spec!=3)); // TPC && !TOF (TPC PID)
  TProfile *pTPC2 = extractFlowVZEROsingle(icentr,spec,arm,0,pTh,addbin,"TPCextra",2,2,-1,-1+2*(spec!=3)); //TPC && TOF (TPC PID)

  TProfile *pTOF = extractFlowVZEROsingle(icentr,spec,arm,0,pTh,addbin,"TOF",1,1,-1,-1+2*(spec!=3)); //TPC && TOF (TPC&TOF PID)

  if(spec > 0) pTPC->Add(pTPC2);
  else pTPC->Add(pTOF);

  char name[100];
  snprintf(name,100,"NUO_%i",spec);

  hNUO[spec] = pTPC->ProjectionX(name);
  hNUO[spec]->Add(pTOF,-1);

  if(spec && hNUO[0]) hNUO[spec]->Add(hNUO[0],-1);

  if(! kCleanMemory){
    new TCanvas();
    pTPC->Draw();
    pTOF->Draw("SAME");

    new TCanvas();  
    pTPC->SetLineColor(1);
    pTOF->SetLineColor(2);
  }

  hNUO[spec]->Draw();

  if(kCleanMemory){
    if(pTPC) delete pTPC;
    if(pTPC2) delete pTPC2;
    if(pTOF) delete pTOF;
  }
}

void plotQApid(Int_t ic,Float_t pt,Int_t addbin){
  char name[100];
  char stringa[200];
  LoadLib();

  snprintf(name,100,"AnalysisResults.root");
  if(!fo) fo = new TFile(name);
  snprintf(name,100,"contVZEROv2");
  TList *cont = (TList *) fo->Get(name);
  AliFlowVZEROResults *pidqa = cont->FindObject("qaPID");
  Float_t xval[2] = {2.,pt+0.00001};
  Float_t xval2[2] = {2.+addbin,pt+0.00001};

  TProfile *proTPCpi = pidqa->GetV2(0,xval,xval2);
  TProfile *proTOFpi = pidqa->GetV2(1,xval,xval2);
  TProfile *proTPCka = pidqa->GetV2(2,xval,xval2);
  TProfile *proTOFka = pidqa->GetV2(3,xval,xval2);
  TProfile *proTPCpr = pidqa->GetV2(4,xval,xval2);
  TProfile *proTOFpr = pidqa->GetV2(5,xval,xval2);

  proTPCpi->SetName("hPiTPC");
  proTOFpi->SetName("hPiTOF");
  proTPCka->SetName("hKaTPC");
  proTOFka->SetName("hKaTOF");
  proTPCpr->SetName("hPrTPC");
  proTOFpr->SetName("hPrTOF");
  
  proTPCpi->GetXaxis()->SetTitle("dE/dx - dE/dx_{calc}^{#pi} (a.u)");
  proTOFpi->GetXaxis()->SetTitle("t_{tof} - t_{calc}^{#pi} (ps)");
  proTPCka->GetXaxis()->SetTitle("dE/dx - dE/dx_{calc}^{K} (a.u)");
  proTOFka->GetXaxis()->SetTitle("t_{tof} - t_{calc}^{K} (ps)");
  proTPCpr->GetXaxis()->SetTitle("dE/dx - dE/dx_{calc}^{p} (a.u)");
  proTOFpr->GetXaxis()->SetTitle("t_{tof} - t_{calc}^{p} (ps)");

  TCanvas *c = new TCanvas("cVproj","cVproj");
  c->Divide(2,3);
  c->cd(1);
  proTPCpi->Draw();
  c->cd(2);
  proTOFpi->Draw();
  c->cd(3);
  proTPCka->Draw();
  c->cd(4);
  proTOFka->Draw();
  c->cd(5);
  proTPCpr->Draw();
  c->cd(6);
  proTOFpr->Draw();
}
 extractFlowVZERO.C:1
 extractFlowVZERO.C:2
 extractFlowVZERO.C:3
 extractFlowVZERO.C:4
 extractFlowVZERO.C:5
 extractFlowVZERO.C:6
 extractFlowVZERO.C:7
 extractFlowVZERO.C:8
 extractFlowVZERO.C:9
 extractFlowVZERO.C:10
 extractFlowVZERO.C:11
 extractFlowVZERO.C:12
 extractFlowVZERO.C:13
 extractFlowVZERO.C:14
 extractFlowVZERO.C:15
 extractFlowVZERO.C:16
 extractFlowVZERO.C:17
 extractFlowVZERO.C:18
 extractFlowVZERO.C:19
 extractFlowVZERO.C:20
 extractFlowVZERO.C:21
 extractFlowVZERO.C:22
 extractFlowVZERO.C:23
 extractFlowVZERO.C:24
 extractFlowVZERO.C:25
 extractFlowVZERO.C:26
 extractFlowVZERO.C:27
 extractFlowVZERO.C:28
 extractFlowVZERO.C:29
 extractFlowVZERO.C:30
 extractFlowVZERO.C:31
 extractFlowVZERO.C:32
 extractFlowVZERO.C:33
 extractFlowVZERO.C:34
 extractFlowVZERO.C:35
 extractFlowVZERO.C:36
 extractFlowVZERO.C:37
 extractFlowVZERO.C:38
 extractFlowVZERO.C:39
 extractFlowVZERO.C:40
 extractFlowVZERO.C:41
 extractFlowVZERO.C:42
 extractFlowVZERO.C:43
 extractFlowVZERO.C:44
 extractFlowVZERO.C:45
 extractFlowVZERO.C:46
 extractFlowVZERO.C:47
 extractFlowVZERO.C:48
 extractFlowVZERO.C:49
 extractFlowVZERO.C:50
 extractFlowVZERO.C:51
 extractFlowVZERO.C:52
 extractFlowVZERO.C:53
 extractFlowVZERO.C:54
 extractFlowVZERO.C:55
 extractFlowVZERO.C:56
 extractFlowVZERO.C:57
 extractFlowVZERO.C:58
 extractFlowVZERO.C:59
 extractFlowVZERO.C:60
 extractFlowVZERO.C:61
 extractFlowVZERO.C:62
 extractFlowVZERO.C:63
 extractFlowVZERO.C:64
 extractFlowVZERO.C:65
 extractFlowVZERO.C:66
 extractFlowVZERO.C:67
 extractFlowVZERO.C:68
 extractFlowVZERO.C:69
 extractFlowVZERO.C:70
 extractFlowVZERO.C:71
 extractFlowVZERO.C:72
 extractFlowVZERO.C:73
 extractFlowVZERO.C:74
 extractFlowVZERO.C:75
 extractFlowVZERO.C:76
 extractFlowVZERO.C:77
 extractFlowVZERO.C:78
 extractFlowVZERO.C:79
 extractFlowVZERO.C:80
 extractFlowVZERO.C:81
 extractFlowVZERO.C:82
 extractFlowVZERO.C:83
 extractFlowVZERO.C:84
 extractFlowVZERO.C:85
 extractFlowVZERO.C:86
 extractFlowVZERO.C:87
 extractFlowVZERO.C:88
 extractFlowVZERO.C:89
 extractFlowVZERO.C:90
 extractFlowVZERO.C:91
 extractFlowVZERO.C:92
 extractFlowVZERO.C:93
 extractFlowVZERO.C:94
 extractFlowVZERO.C:95
 extractFlowVZERO.C:96
 extractFlowVZERO.C:97
 extractFlowVZERO.C:98
 extractFlowVZERO.C:99
 extractFlowVZERO.C:100
 extractFlowVZERO.C:101
 extractFlowVZERO.C:102
 extractFlowVZERO.C:103
 extractFlowVZERO.C:104
 extractFlowVZERO.C:105
 extractFlowVZERO.C:106
 extractFlowVZERO.C:107
 extractFlowVZERO.C:108
 extractFlowVZERO.C:109
 extractFlowVZERO.C:110
 extractFlowVZERO.C:111
 extractFlowVZERO.C:112
 extractFlowVZERO.C:113
 extractFlowVZERO.C:114
 extractFlowVZERO.C:115
 extractFlowVZERO.C:116
 extractFlowVZERO.C:117
 extractFlowVZERO.C:118
 extractFlowVZERO.C:119
 extractFlowVZERO.C:120
 extractFlowVZERO.C:121
 extractFlowVZERO.C:122
 extractFlowVZERO.C:123
 extractFlowVZERO.C:124
 extractFlowVZERO.C:125
 extractFlowVZERO.C:126
 extractFlowVZERO.C:127
 extractFlowVZERO.C:128
 extractFlowVZERO.C:129
 extractFlowVZERO.C:130
 extractFlowVZERO.C:131
 extractFlowVZERO.C:132
 extractFlowVZERO.C:133
 extractFlowVZERO.C:134
 extractFlowVZERO.C:135
 extractFlowVZERO.C:136
 extractFlowVZERO.C:137
 extractFlowVZERO.C:138
 extractFlowVZERO.C:139
 extractFlowVZERO.C:140
 extractFlowVZERO.C:141
 extractFlowVZERO.C:142
 extractFlowVZERO.C:143
 extractFlowVZERO.C:144
 extractFlowVZERO.C:145
 extractFlowVZERO.C:146
 extractFlowVZERO.C:147
 extractFlowVZERO.C:148
 extractFlowVZERO.C:149
 extractFlowVZERO.C:150
 extractFlowVZERO.C:151
 extractFlowVZERO.C:152
 extractFlowVZERO.C:153
 extractFlowVZERO.C:154
 extractFlowVZERO.C:155
 extractFlowVZERO.C:156
 extractFlowVZERO.C:157
 extractFlowVZERO.C:158
 extractFlowVZERO.C:159
 extractFlowVZERO.C:160
 extractFlowVZERO.C:161
 extractFlowVZERO.C:162
 extractFlowVZERO.C:163
 extractFlowVZERO.C:164
 extractFlowVZERO.C:165
 extractFlowVZERO.C:166
 extractFlowVZERO.C:167
 extractFlowVZERO.C:168
 extractFlowVZERO.C:169
 extractFlowVZERO.C:170
 extractFlowVZERO.C:171
 extractFlowVZERO.C:172
 extractFlowVZERO.C:173
 extractFlowVZERO.C:174
 extractFlowVZERO.C:175
 extractFlowVZERO.C:176
 extractFlowVZERO.C:177
 extractFlowVZERO.C:178
 extractFlowVZERO.C:179
 extractFlowVZERO.C:180
 extractFlowVZERO.C:181
 extractFlowVZERO.C:182
 extractFlowVZERO.C:183
 extractFlowVZERO.C:184
 extractFlowVZERO.C:185
 extractFlowVZERO.C:186
 extractFlowVZERO.C:187
 extractFlowVZERO.C:188
 extractFlowVZERO.C:189
 extractFlowVZERO.C:190
 extractFlowVZERO.C:191
 extractFlowVZERO.C:192
 extractFlowVZERO.C:193
 extractFlowVZERO.C:194
 extractFlowVZERO.C:195
 extractFlowVZERO.C:196
 extractFlowVZERO.C:197
 extractFlowVZERO.C:198
 extractFlowVZERO.C:199
 extractFlowVZERO.C:200
 extractFlowVZERO.C:201
 extractFlowVZERO.C:202
 extractFlowVZERO.C:203
 extractFlowVZERO.C:204
 extractFlowVZERO.C:205
 extractFlowVZERO.C:206
 extractFlowVZERO.C:207
 extractFlowVZERO.C:208
 extractFlowVZERO.C:209
 extractFlowVZERO.C:210
 extractFlowVZERO.C:211
 extractFlowVZERO.C:212
 extractFlowVZERO.C:213
 extractFlowVZERO.C:214
 extractFlowVZERO.C:215
 extractFlowVZERO.C:216
 extractFlowVZERO.C:217
 extractFlowVZERO.C:218
 extractFlowVZERO.C:219
 extractFlowVZERO.C:220
 extractFlowVZERO.C:221
 extractFlowVZERO.C:222
 extractFlowVZERO.C:223
 extractFlowVZERO.C:224
 extractFlowVZERO.C:225
 extractFlowVZERO.C:226
 extractFlowVZERO.C:227
 extractFlowVZERO.C:228
 extractFlowVZERO.C:229
 extractFlowVZERO.C:230
 extractFlowVZERO.C:231
 extractFlowVZERO.C:232
 extractFlowVZERO.C:233
 extractFlowVZERO.C:234
 extractFlowVZERO.C:235
 extractFlowVZERO.C:236
 extractFlowVZERO.C:237
 extractFlowVZERO.C:238
 extractFlowVZERO.C:239
 extractFlowVZERO.C:240
 extractFlowVZERO.C:241
 extractFlowVZERO.C:242
 extractFlowVZERO.C:243
 extractFlowVZERO.C:244
 extractFlowVZERO.C:245
 extractFlowVZERO.C:246
 extractFlowVZERO.C:247
 extractFlowVZERO.C:248
 extractFlowVZERO.C:249
 extractFlowVZERO.C:250
 extractFlowVZERO.C:251
 extractFlowVZERO.C:252
 extractFlowVZERO.C:253
 extractFlowVZERO.C:254
 extractFlowVZERO.C:255
 extractFlowVZERO.C:256
 extractFlowVZERO.C:257
 extractFlowVZERO.C:258
 extractFlowVZERO.C:259
 extractFlowVZERO.C:260
 extractFlowVZERO.C:261
 extractFlowVZERO.C:262
 extractFlowVZERO.C:263
 extractFlowVZERO.C:264
 extractFlowVZERO.C:265
 extractFlowVZERO.C:266
 extractFlowVZERO.C:267
 extractFlowVZERO.C:268
 extractFlowVZERO.C:269
 extractFlowVZERO.C:270
 extractFlowVZERO.C:271
 extractFlowVZERO.C:272
 extractFlowVZERO.C:273
 extractFlowVZERO.C:274
 extractFlowVZERO.C:275
 extractFlowVZERO.C:276
 extractFlowVZERO.C:277
 extractFlowVZERO.C:278
 extractFlowVZERO.C:279
 extractFlowVZERO.C:280
 extractFlowVZERO.C:281
 extractFlowVZERO.C:282
 extractFlowVZERO.C:283
 extractFlowVZERO.C:284
 extractFlowVZERO.C:285
 extractFlowVZERO.C:286
 extractFlowVZERO.C:287
 extractFlowVZERO.C:288
 extractFlowVZERO.C:289
 extractFlowVZERO.C:290
 extractFlowVZERO.C:291
 extractFlowVZERO.C:292
 extractFlowVZERO.C:293
 extractFlowVZERO.C:294
 extractFlowVZERO.C:295
 extractFlowVZERO.C:296
 extractFlowVZERO.C:297
 extractFlowVZERO.C:298
 extractFlowVZERO.C:299
 extractFlowVZERO.C:300
 extractFlowVZERO.C:301
 extractFlowVZERO.C:302
 extractFlowVZERO.C:303
 extractFlowVZERO.C:304
 extractFlowVZERO.C:305
 extractFlowVZERO.C:306
 extractFlowVZERO.C:307
 extractFlowVZERO.C:308
 extractFlowVZERO.C:309
 extractFlowVZERO.C:310
 extractFlowVZERO.C:311
 extractFlowVZERO.C:312
 extractFlowVZERO.C:313
 extractFlowVZERO.C:314
 extractFlowVZERO.C:315
 extractFlowVZERO.C:316
 extractFlowVZERO.C:317
 extractFlowVZERO.C:318
 extractFlowVZERO.C:319
 extractFlowVZERO.C:320
 extractFlowVZERO.C:321
 extractFlowVZERO.C:322
 extractFlowVZERO.C:323
 extractFlowVZERO.C:324
 extractFlowVZERO.C:325
 extractFlowVZERO.C:326
 extractFlowVZERO.C:327
 extractFlowVZERO.C:328
 extractFlowVZERO.C:329
 extractFlowVZERO.C:330
 extractFlowVZERO.C:331
 extractFlowVZERO.C:332
 extractFlowVZERO.C:333
 extractFlowVZERO.C:334
 extractFlowVZERO.C:335
 extractFlowVZERO.C:336
 extractFlowVZERO.C:337
 extractFlowVZERO.C:338
 extractFlowVZERO.C:339
 extractFlowVZERO.C:340
 extractFlowVZERO.C:341
 extractFlowVZERO.C:342
 extractFlowVZERO.C:343
 extractFlowVZERO.C:344
 extractFlowVZERO.C:345
 extractFlowVZERO.C:346
 extractFlowVZERO.C:347
 extractFlowVZERO.C:348
 extractFlowVZERO.C:349
 extractFlowVZERO.C:350
 extractFlowVZERO.C:351
 extractFlowVZERO.C:352
 extractFlowVZERO.C:353
 extractFlowVZERO.C:354
 extractFlowVZERO.C:355
 extractFlowVZERO.C:356
 extractFlowVZERO.C:357
 extractFlowVZERO.C:358
 extractFlowVZERO.C:359
 extractFlowVZERO.C:360
 extractFlowVZERO.C:361
 extractFlowVZERO.C:362
 extractFlowVZERO.C:363
 extractFlowVZERO.C:364
 extractFlowVZERO.C:365
 extractFlowVZERO.C:366
 extractFlowVZERO.C:367
 extractFlowVZERO.C:368
 extractFlowVZERO.C:369
 extractFlowVZERO.C:370
 extractFlowVZERO.C:371
 extractFlowVZERO.C:372
 extractFlowVZERO.C:373
 extractFlowVZERO.C:374
 extractFlowVZERO.C:375
 extractFlowVZERO.C:376
 extractFlowVZERO.C:377
 extractFlowVZERO.C:378
 extractFlowVZERO.C:379
 extractFlowVZERO.C:380
 extractFlowVZERO.C:381
 extractFlowVZERO.C:382
 extractFlowVZERO.C:383
 extractFlowVZERO.C:384
 extractFlowVZERO.C:385
 extractFlowVZERO.C:386
 extractFlowVZERO.C:387
 extractFlowVZERO.C:388
 extractFlowVZERO.C:389
 extractFlowVZERO.C:390
 extractFlowVZERO.C:391
 extractFlowVZERO.C:392
 extractFlowVZERO.C:393
 extractFlowVZERO.C:394
 extractFlowVZERO.C:395
 extractFlowVZERO.C:396
 extractFlowVZERO.C:397
 extractFlowVZERO.C:398
 extractFlowVZERO.C:399
 extractFlowVZERO.C:400
 extractFlowVZERO.C:401
 extractFlowVZERO.C:402
 extractFlowVZERO.C:403
 extractFlowVZERO.C:404
 extractFlowVZERO.C:405
 extractFlowVZERO.C:406
 extractFlowVZERO.C:407
 extractFlowVZERO.C:408
 extractFlowVZERO.C:409
 extractFlowVZERO.C:410
 extractFlowVZERO.C:411
 extractFlowVZERO.C:412
 extractFlowVZERO.C:413
 extractFlowVZERO.C:414
 extractFlowVZERO.C:415
 extractFlowVZERO.C:416
 extractFlowVZERO.C:417
 extractFlowVZERO.C:418
 extractFlowVZERO.C:419
 extractFlowVZERO.C:420
 extractFlowVZERO.C:421
 extractFlowVZERO.C:422
 extractFlowVZERO.C:423
 extractFlowVZERO.C:424
 extractFlowVZERO.C:425
 extractFlowVZERO.C:426
 extractFlowVZERO.C:427
 extractFlowVZERO.C:428
 extractFlowVZERO.C:429
 extractFlowVZERO.C:430
 extractFlowVZERO.C:431
 extractFlowVZERO.C:432
 extractFlowVZERO.C:433
 extractFlowVZERO.C:434
 extractFlowVZERO.C:435
 extractFlowVZERO.C:436
 extractFlowVZERO.C:437
 extractFlowVZERO.C:438
 extractFlowVZERO.C:439
 extractFlowVZERO.C:440
 extractFlowVZERO.C:441
 extractFlowVZERO.C:442
 extractFlowVZERO.C:443
 extractFlowVZERO.C:444
 extractFlowVZERO.C:445
 extractFlowVZERO.C:446
 extractFlowVZERO.C:447
 extractFlowVZERO.C:448
 extractFlowVZERO.C:449
 extractFlowVZERO.C:450
 extractFlowVZERO.C:451
 extractFlowVZERO.C:452
 extractFlowVZERO.C:453
 extractFlowVZERO.C:454
 extractFlowVZERO.C:455
 extractFlowVZERO.C:456
 extractFlowVZERO.C:457
 extractFlowVZERO.C:458
 extractFlowVZERO.C:459
 extractFlowVZERO.C:460
 extractFlowVZERO.C:461
 extractFlowVZERO.C:462
 extractFlowVZERO.C:463
 extractFlowVZERO.C:464
 extractFlowVZERO.C:465
 extractFlowVZERO.C:466
 extractFlowVZERO.C:467
 extractFlowVZERO.C:468
 extractFlowVZERO.C:469
 extractFlowVZERO.C:470
 extractFlowVZERO.C:471
 extractFlowVZERO.C:472
 extractFlowVZERO.C:473
 extractFlowVZERO.C:474
 extractFlowVZERO.C:475
 extractFlowVZERO.C:476
 extractFlowVZERO.C:477
 extractFlowVZERO.C:478
 extractFlowVZERO.C:479
 extractFlowVZERO.C:480
 extractFlowVZERO.C:481
 extractFlowVZERO.C:482
 extractFlowVZERO.C:483
 extractFlowVZERO.C:484
 extractFlowVZERO.C:485
 extractFlowVZERO.C:486
 extractFlowVZERO.C:487
 extractFlowVZERO.C:488
 extractFlowVZERO.C:489
 extractFlowVZERO.C:490
 extractFlowVZERO.C:491
 extractFlowVZERO.C:492
 extractFlowVZERO.C:493
 extractFlowVZERO.C:494
 extractFlowVZERO.C:495
 extractFlowVZERO.C:496
 extractFlowVZERO.C:497
 extractFlowVZERO.C:498
 extractFlowVZERO.C:499
 extractFlowVZERO.C:500
 extractFlowVZERO.C:501
 extractFlowVZERO.C:502
 extractFlowVZERO.C:503
 extractFlowVZERO.C:504
 extractFlowVZERO.C:505
 extractFlowVZERO.C:506
 extractFlowVZERO.C:507
 extractFlowVZERO.C:508
 extractFlowVZERO.C:509
 extractFlowVZERO.C:510
 extractFlowVZERO.C:511
 extractFlowVZERO.C:512
 extractFlowVZERO.C:513
 extractFlowVZERO.C:514
 extractFlowVZERO.C:515
 extractFlowVZERO.C:516
 extractFlowVZERO.C:517
 extractFlowVZERO.C:518
 extractFlowVZERO.C:519
 extractFlowVZERO.C:520
 extractFlowVZERO.C:521
 extractFlowVZERO.C:522
 extractFlowVZERO.C:523
 extractFlowVZERO.C:524
 extractFlowVZERO.C:525
 extractFlowVZERO.C:526
 extractFlowVZERO.C:527
 extractFlowVZERO.C:528
 extractFlowVZERO.C:529
 extractFlowVZERO.C:530
 extractFlowVZERO.C:531
 extractFlowVZERO.C:532
 extractFlowVZERO.C:533
 extractFlowVZERO.C:534
 extractFlowVZERO.C:535
 extractFlowVZERO.C:536
 extractFlowVZERO.C:537
 extractFlowVZERO.C:538
 extractFlowVZERO.C:539
 extractFlowVZERO.C:540
 extractFlowVZERO.C:541
 extractFlowVZERO.C:542
 extractFlowVZERO.C:543
 extractFlowVZERO.C:544
 extractFlowVZERO.C:545
 extractFlowVZERO.C:546
 extractFlowVZERO.C:547
 extractFlowVZERO.C:548
 extractFlowVZERO.C:549
 extractFlowVZERO.C:550
 extractFlowVZERO.C:551
 extractFlowVZERO.C:552
 extractFlowVZERO.C:553
 extractFlowVZERO.C:554
 extractFlowVZERO.C:555
 extractFlowVZERO.C:556
 extractFlowVZERO.C:557
 extractFlowVZERO.C:558
 extractFlowVZERO.C:559
 extractFlowVZERO.C:560
 extractFlowVZERO.C:561
 extractFlowVZERO.C:562
 extractFlowVZERO.C:563
 extractFlowVZERO.C:564
 extractFlowVZERO.C:565
 extractFlowVZERO.C:566
 extractFlowVZERO.C:567
 extractFlowVZERO.C:568
 extractFlowVZERO.C:569
 extractFlowVZERO.C:570
 extractFlowVZERO.C:571
 extractFlowVZERO.C:572
 extractFlowVZERO.C:573
 extractFlowVZERO.C:574
 extractFlowVZERO.C:575
 extractFlowVZERO.C:576
 extractFlowVZERO.C:577
 extractFlowVZERO.C:578
 extractFlowVZERO.C:579
 extractFlowVZERO.C:580
 extractFlowVZERO.C:581
 extractFlowVZERO.C:582
 extractFlowVZERO.C:583
 extractFlowVZERO.C:584
 extractFlowVZERO.C:585
 extractFlowVZERO.C:586
 extractFlowVZERO.C:587
 extractFlowVZERO.C:588
 extractFlowVZERO.C:589
 extractFlowVZERO.C:590
 extractFlowVZERO.C:591
 extractFlowVZERO.C:592
 extractFlowVZERO.C:593
 extractFlowVZERO.C:594
 extractFlowVZERO.C:595
 extractFlowVZERO.C:596
 extractFlowVZERO.C:597
 extractFlowVZERO.C:598
 extractFlowVZERO.C:599
 extractFlowVZERO.C:600
 extractFlowVZERO.C:601
 extractFlowVZERO.C:602
 extractFlowVZERO.C:603
 extractFlowVZERO.C:604
 extractFlowVZERO.C:605
 extractFlowVZERO.C:606
 extractFlowVZERO.C:607
 extractFlowVZERO.C:608
 extractFlowVZERO.C:609
 extractFlowVZERO.C:610
 extractFlowVZERO.C:611
 extractFlowVZERO.C:612
 extractFlowVZERO.C:613
 extractFlowVZERO.C:614
 extractFlowVZERO.C:615
 extractFlowVZERO.C:616
 extractFlowVZERO.C:617
 extractFlowVZERO.C:618
 extractFlowVZERO.C:619
 extractFlowVZERO.C:620
 extractFlowVZERO.C:621
 extractFlowVZERO.C:622
 extractFlowVZERO.C:623
 extractFlowVZERO.C:624
 extractFlowVZERO.C:625
 extractFlowVZERO.C:626
 extractFlowVZERO.C:627
 extractFlowVZERO.C:628
 extractFlowVZERO.C:629
 extractFlowVZERO.C:630
 extractFlowVZERO.C:631
 extractFlowVZERO.C:632
 extractFlowVZERO.C:633
 extractFlowVZERO.C:634
 extractFlowVZERO.C:635
 extractFlowVZERO.C:636
 extractFlowVZERO.C:637
 extractFlowVZERO.C:638
 extractFlowVZERO.C:639
 extractFlowVZERO.C:640
 extractFlowVZERO.C:641
 extractFlowVZERO.C:642
 extractFlowVZERO.C:643
 extractFlowVZERO.C:644
 extractFlowVZERO.C:645
 extractFlowVZERO.C:646
 extractFlowVZERO.C:647
 extractFlowVZERO.C:648
 extractFlowVZERO.C:649
 extractFlowVZERO.C:650
 extractFlowVZERO.C:651
 extractFlowVZERO.C:652
 extractFlowVZERO.C:653
 extractFlowVZERO.C:654
 extractFlowVZERO.C:655
 extractFlowVZERO.C:656
 extractFlowVZERO.C:657
 extractFlowVZERO.C:658
 extractFlowVZERO.C:659
 extractFlowVZERO.C:660
 extractFlowVZERO.C:661
 extractFlowVZERO.C:662
 extractFlowVZERO.C:663
 extractFlowVZERO.C:664
 extractFlowVZERO.C:665
 extractFlowVZERO.C:666
 extractFlowVZERO.C:667
 extractFlowVZERO.C:668
 extractFlowVZERO.C:669
 extractFlowVZERO.C:670
 extractFlowVZERO.C:671
 extractFlowVZERO.C:672
 extractFlowVZERO.C:673
 extractFlowVZERO.C:674
 extractFlowVZERO.C:675
 extractFlowVZERO.C:676
 extractFlowVZERO.C:677
 extractFlowVZERO.C:678
 extractFlowVZERO.C:679
 extractFlowVZERO.C:680
 extractFlowVZERO.C:681
 extractFlowVZERO.C:682
 extractFlowVZERO.C:683
 extractFlowVZERO.C:684
 extractFlowVZERO.C:685
 extractFlowVZERO.C:686
 extractFlowVZERO.C:687
 extractFlowVZERO.C:688
 extractFlowVZERO.C:689
 extractFlowVZERO.C:690
 extractFlowVZERO.C:691
 extractFlowVZERO.C:692
 extractFlowVZERO.C:693
 extractFlowVZERO.C:694
 extractFlowVZERO.C:695
 extractFlowVZERO.C:696
 extractFlowVZERO.C:697
 extractFlowVZERO.C:698
 extractFlowVZERO.C:699
 extractFlowVZERO.C:700
 extractFlowVZERO.C:701
 extractFlowVZERO.C:702
 extractFlowVZERO.C:703
 extractFlowVZERO.C:704
 extractFlowVZERO.C:705
 extractFlowVZERO.C:706
 extractFlowVZERO.C:707
 extractFlowVZERO.C:708
 extractFlowVZERO.C:709
 extractFlowVZERO.C:710
 extractFlowVZERO.C:711
 extractFlowVZERO.C:712
 extractFlowVZERO.C:713
 extractFlowVZERO.C:714
 extractFlowVZERO.C:715
 extractFlowVZERO.C:716
 extractFlowVZERO.C:717
 extractFlowVZERO.C:718
 extractFlowVZERO.C:719
 extractFlowVZERO.C:720
 extractFlowVZERO.C:721
 extractFlowVZERO.C:722
 extractFlowVZERO.C:723
 extractFlowVZERO.C:724
 extractFlowVZERO.C:725
 extractFlowVZERO.C:726
 extractFlowVZERO.C:727
 extractFlowVZERO.C:728
 extractFlowVZERO.C:729
 extractFlowVZERO.C:730
 extractFlowVZERO.C:731
 extractFlowVZERO.C:732
 extractFlowVZERO.C:733