ROOT logo
/* 
Example macro which shows how to use the AliBlastwaveFit code.
Prepared by F. Noferini (fnoferin@cern.ch)

It assume you have pi, K, proton spectra and v2 and it perform a global
blastwave fit in the selected pt range for the requested species.

Centrality is taken as an argument, while all the other options are set
in common variables.

Here: stat and syst errors considered.
*/

Bool_t kPiPlusSpectra=kTRUE; // request fit to pion spectra
Bool_t kKaPlusSpectra=kTRUE; // request fit to kaon spectra
Bool_t kPrPlusSpectra=kTRUE; // request fit to proton spectra
Bool_t kPiV2=kTRUE;          // request fit to pion v2
Bool_t kKaV2=kTRUE;          // request fit to kaon v2
Bool_t kPrV2=kTRUE;          // request fit to antiproton v2

Bool_t kCont = kFALSE;       // request the contour at the end (it needs time)

TH1D *hpiplus;
TH1D *hkaplus;
TH1D *hprplus;

TGraphAsymmErrors *gpiv2;
TGraphAsymmErrors *gkav2;
TGraphAsymmErrors *gprv2;

// particle masses
Float_t mPi = 1.39570000000000000e-01;
Float_t mKa = 4.93676999999999977e-01;
Float_t mPr = 9.38271999999999995e-01;

// centralities
Int_t cmin[] = {0,5,10,20,30,40,50,60,70,80};
Int_t cmax[] = {5,10,20,30,40,50,60,70,80,100};

// pt range for the fit
Float_t ptMinPi = 0.5;
Float_t ptMaxPi = 1.0;
Float_t ptMinKa = 0.2;
Float_t ptMaxKa = 1.2; // 1.5 in spectra group
Float_t ptMinPr = 0.3;
Float_t ptMaxPr = 1.7; // 3.0 in spectra group

Bool_t kLoaded = kFALSE;

TGraphErrors *getPtNqMass(Float_t ptnq,Int_t nq,Float_t mass,Int_t ncentr,TGraphAsymmErrors **g,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<ncentr;i++){   
    Float_t pt = ptnq * nq;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mass);
    Int_t j=0;
    while(g[i]->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = g[i]->GetX()[j-1];
    Float_t xmax = g[i]->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*g[i]->GetY()[j-1] + fr2*g[i]->GetY()[j];
    eval[i] = fr1*g[i]->GetEYlow()[j-1] + fr2*g[i]->GetEYlow()[j];

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) mass=%f n1=%f v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],mass,nq,ptnq,val[i],eval[i]);
  }

  TGraphErrors *gres = new TGraphErrors(ncentr,centr,val,ecentr,eval);
  return gres;
}

TGraphErrors *getPtNqMass(Float_t ptnq,Int_t nq,Float_t mass,Int_t ncentr,TGraphErrors **g,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<ncentr;i++){   
    Float_t pt = ptnq * nq;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mass);
    Int_t j=0;
    while(g[i]->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = g[i]->GetX()[j-1];
    Float_t xmax = g[i]->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*g[i]->GetY()[j-1] + fr2*g[i]->GetY()[j];
    eval[i] = fr1*g[i]->GetEY()[j-1] + fr2*g[i]->GetEY()[j];

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) mass=%f n1=%f v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],mass,nq,ptnq,val[i],eval[i]);
  }

  TGraphErrors *gres = new TGraphErrors(ncentr,centr,val,ecentr,eval);
  return gres;
}


TGraphErrors *getPtNqPi(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_pion_%02i_%02i.txt",cmin[i],cmax[i]);
    gpiv2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 2;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mPi);
    Int_t j=0;
    while(gpiv2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gpiv2->GetX()[j-1];
    Float_t xmax = gpiv2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gpiv2->GetY()[j-1] + fr2*gpiv2->GetY()[j];
    eval[i] = fr1*gpiv2->GetEYlow()[j-1] + fr2*gpiv2->GetEYlow()[j];

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) pion v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

TGraphErrors *getPtNqKa(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_kaon_%02i_%02i.txt",cmin[i],cmax[i]);
    gkav2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 2;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mKa);
    Int_t j=0;
    while(gkav2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gkav2->GetX()[j-1];
    Float_t xmax = gkav2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gkav2->GetY()[j-1] + fr2*gkav2->GetY()[j];
    eval[i] = fr1*gkav2->GetEYlow()[j-1] + fr2*gkav2->GetEYlow()[j];

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) kaon v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

TGraphErrors *getPtNqPr(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_antipr_%02i_%02i.txt",cmin[i],cmax[i]);
    gprv2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 3;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mPr);
    Int_t j=0;
    while(gprv2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gprv2->GetX()[j-1];
    Float_t xmax = gprv2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gprv2->GetY()[j-1] + fr2*gprv2->GetY()[j];
    eval[i] = fr1*gprv2->GetEYlow()[j-1] + fr2*gprv2->GetEYlow()[j];

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) antiproton v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

TGraphErrors *getPtNqMassV2Nq(Float_t ptnq,Int_t nq,Float_t mass,Int_t ncentr,TGraphAsymmErrors **g,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<ncentr;i++){   
    Float_t pt = ptnq * nq;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mass);
    Int_t j=0;
    while(g[i]->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = g[i]->GetX()[j-1];
    Float_t xmax = g[i]->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*g[i]->GetY()[j-1] + fr2*g[i]->GetY()[j];
    eval[i] = fr1*g[i]->GetEYlow()[j-1] + fr2*g[i]->GetEYlow()[j];

    val[i] /= nq;
    eval[i] /= nq;

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) mass=%f n1=%f v2/nq at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],mass,nq,ptnq,val[i],eval[i]);
  }

  TGraphErrors *gres = new TGraphErrors(ncentr,centr,val,ecentr,eval);
  return gres;
}

TGraphErrors *getPtNqMassV2Nq(Float_t ptnq,Int_t nq,Float_t mass,Int_t ncentr,TGraphErrors **g,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<ncentr;i++){   
    Float_t pt = ptnq * nq;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mass);
    Int_t j=0;
    while(g[i]->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = g[i]->GetX()[j-1];
    Float_t xmax = g[i]->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*g[i]->GetY()[j-1] + fr2*g[i]->GetY()[j];
    eval[i] = fr1*g[i]->GetEY()[j-1] + fr2*g[i]->GetEY()[j];

    val[i] /= nq;
    eval[i] /= nq;

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) mass=%f n1=%f v2/nq at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],mass,nq,ptnq,val[i],eval[i]);
  }

  TGraphErrors *gres = new TGraphErrors(ncentr,centr,val,ecentr,eval);
  return gres;
}


TGraphErrors *getPtNqPiV2Nq(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_pion_%02i_%02i.txt",cmin[i],cmax[i]);
    gpiv2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 2;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mPi);
    Int_t j=0;
    while(gpiv2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gpiv2->GetX()[j-1];
    Float_t xmax = gpiv2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gpiv2->GetY()[j-1]/2 + fr2*gpiv2->GetY()[j]/2;
    eval[i] = fr1*gpiv2->GetEYlow()[j-1]/2 + fr2*gpiv2->GetEYlow()[j]/2;

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) pion v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

TGraphErrors *getPtNqKaV2Nq(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_kaon_%02i_%02i.txt",cmin[i],cmax[i]);
    gkav2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 2;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mKa);

    Int_t j=0;
    while(gkav2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gkav2->GetX()[j-1];
    Float_t xmax = gkav2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gkav2->GetY()[j-1]/2 + fr2*gkav2->GetY()[j]/2;
    eval[i] = fr1*gkav2->GetEYlow()[j-1]/2 + fr2*gkav2->GetEYlow()[j]/2;

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) kaon v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

TGraphErrors *getPtNqPrV2Nq(Float_t ptnq,Bool_t mtflag=kFALSE){
  char name[200];

  Float_t centr[10],ecentr[10],val[10],eval[10];

  for(Int_t i=0;i<9;i++){
    sprintf(name,"v2/v2SP_antipr_%02i_%02i.txt",cmin[i],cmax[i]);
    gprv2 = GetGraphWithStat(name);
    Float_t pt = ptnq * 3;
    if(mtflag) pt = TMath::Sqrt(pt*pt +2*pt*mPr);
    Int_t j=0;
    while(gprv2->GetX()[j] < pt) j++;
    if(j==0) j = 1;
    Float_t xmin = gprv2->GetX()[j-1];
    Float_t xmax = gprv2->GetX()[j];
    Float_t fr1 = (pt - xmin)/(xmax-xmin);
    Float_t fr2 = (xmax - pt)/(xmax-xmin);

    val[i] = fr1*gprv2->GetY()[j-1]/3 + fr2*gprv2->GetY()[j]/3;
    eval[i] = fr1*gprv2->GetEYlow()[j-1]/3 + fr2*gprv2->GetEYlow()[j]/3;

    centr[i] = (cmin[i]+cmax[i])/2;
    ecentr[i] = 0;

    printf("%i-%i) antiproton v2 at pt/nq=%f -> %f +/- %f\n",cmin[i],cmax[i],ptnq,val[i],eval[i]);
  }

  TGraphErrors *g = new TGraphErrors(9,centr,val,ecentr,eval);
  return g;
}

drawBWfit(Int_t ic=2,Float_t Tfo=0.1,Float_t s2=0.057,Float_t meanRho=0.8,Float_t rho_2=0.025,Float_t gamma=1.1,Float_t ptmin=0,Float_t ptmax=10){
  if(! kLoaded) LoadLib();
  char name[200];
  TFile *f = new TFile("SPECTRA_COMB_20120809_default.root");
  if(f){
    sprintf(name,"cent%i_pion_plus",ic);
    hpiplus = (TH1D *) f->Get(name);
    
    if(! hpiplus) kPiPlusSpectra = kFALSE; 
    
    sprintf(name,"cent%i_kaon_plus",ic);
    hkaplus = (TH1D *) f->Get(name);
    
    if(! hkaplus) kKaPlusSpectra = kFALSE; 
    
    sprintf(name,"cent%i_proton_plus",ic);
    hprplus = (TH1D *) f->Get(name);
 
    if(! hprplus) kPrPlusSpectra = kFALSE; 
  }

  TCanvas *csp = new TCanvas("cspectra","cspectra");
  csp->cd()->SetLogy();
  const char *optdraw = "P";
  if(hpiplus){ hpiplus->Draw(optdraw); optdraw="P,SAME";}
  if(hkaplus){ hkaplus->Draw(optdraw); optdraw="P,SAME";}
  if(hprplus){ hprplus->Draw(optdraw); optdraw="P,SAME";}
  
  if(hpiplus){
    hpiplus->GetXaxis()->SetRange(1,40);
    hpiplus->SetMarkerStyle(20);
    hpiplus->SetMarkerColor(4);
    hpiplus->SetLineColor(4);
  }
  if(hkaplus){
    hkaplus->SetMarkerStyle(21);
    hkaplus->SetMarkerColor(1);
    hkaplus->SetLineColor(1);
  }
  if(hprplus){
    hprplus->SetMarkerStyle(22);
    hprplus->SetMarkerColor(2);
    hprplus->SetLineColor(2);
  }

  // Get v2
  sprintf(name,"v2/v2SP_pion_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gpiv2 = GetGraphWithStat(name);
  if(! gpiv2) kPiV2 = kFALSE;
  sprintf(name,"v2/v2SP_kaon_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gkav2 = GetGraphWithStat(name);
  if(! gkav2) kKaV2 = kFALSE;
  sprintf(name,"v2/v2SP_antipr_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gprv2 = GetGraphWithStat(name);
  if(! gprv2) kPrV2 = kFALSE;

  TCanvas *cv2 = new TCanvas("cv2","cv2");
  optdraw = "AP";
  if(gpiv2){ gpiv2->Draw(optdraw); optdraw="P";}
  if(gkav2){ gkav2->Draw(optdraw); optdraw="P";}
  if(gprv2){ gprv2->Draw(optdraw); optdraw="P";}

  if(gpiv2){
    gpiv2->GetXaxis()->SetRange(1,40);
    gpiv2->SetMarkerStyle(20);
    gpiv2->SetMarkerColor(4);
    gpiv2->SetLineColor(4);
    gpiv2->SetMaximum(0.2);
    gpiv2->SetMinimum(0.);
  }
  if(gkav2){
    gkav2->SetMarkerStyle(21);
    gkav2->SetMarkerColor(1);
    gkav2->SetLineColor(1);
    gkav2->SetMaximum(0.2);
    gkav2->SetMinimum(0.);
  }
  if(gprv2){
    gprv2->SetMarkerStyle(22);
    gprv2->SetMarkerColor(2);
    gprv2->SetLineColor(2);
    gprv2->SetMaximum(0.2);
    gprv2->SetMinimum(0.);
  }

  // initialize fitter
  AliBlastwaveFit2D *bw[3];
  bw[0] = new AliBlastwaveFit2D("pions",mPi);
  bw[0]->SetMinPt(ptMinPi);
  bw[0]->SetMaxPt(ptMaxPi);

  bw[1] = new AliBlastwaveFit2D("kaons",mKa);
  bw[1]->SetMinPt(ptMinKa);
  bw[1]->SetMaxPt(ptMaxKa);

  bw[2] = new AliBlastwaveFit2D("protons",mPr);
  bw[2]->SetMinPt(ptMinPr);
  bw[2]->SetMaxPt(ptMaxPr);

  AliBlastwaveFit2D *bwExt[3];
  bwExt[0] = new AliBlastwaveFit2D("pions",mPi);
  bwExt[0]->SetMinPt(ptMinPi);
  bwExt[0]->SetMaxPt(ptMaxPi);

  bwExt[1] = new AliBlastwaveFit2D("kaons",mKa);
  bwExt[1]->SetMinPt(ptMinKa);
  bwExt[1]->SetMaxPt(ptMaxKa);

  bwExt[2] = new AliBlastwaveFit2D("protons",mPr);
  bwExt[2]->SetMinPt(ptMinPr);
  bwExt[2]->SetMaxPt(ptMaxPr);


  if(kPiPlusSpectra) bw[0]->SetSpectrumObj(hpiplus);
  if(kPiV2) bw[0]->SetV2Obj(gpiv2);
  if(kKaPlusSpectra) bw[1]->SetSpectrumObj(hkaplus);
  if(kKaV2) bw[1]->SetV2Obj(gkav2);
  if(kPrPlusSpectra) bw[2]->SetSpectrumObj(hprplus);
  if(kPrV2) bw[2]->SetV2Obj(gprv2);

  if(kPiPlusSpectra) bwExt[0]->SetSpectrumObj(hpiplus);
  if(kPiV2) bwExt[0]->SetV2Obj(gpiv2);
  if(kKaPlusSpectra) bwExt[1]->SetSpectrumObj(hkaplus);
  if(kKaV2) bwExt[1]->SetV2Obj(gkav2);
  if(kPrPlusSpectra) bwExt[2]->SetSpectrumObj(hprplus);
  if(kPrV2) bwExt[2]->SetV2Obj(gprv2);

  for(Int_t i=0;i < 3;i++){
    bw[i]->SetParameter(0,Tfo);
    bw[i]->SetParameter(1,s2);
    bw[i]->SetParameter(2,meanRho);
    bw[i]->SetParameter(3,rho_2);
    bw[i]->SetParameter(4,gamma);

    bwExt[i]->SetParameter(0,Tfo);
    bwExt[i]->SetParameter(1,s2);
    bwExt[i]->SetParameter(2,meanRho);
    bwExt[i]->SetParameter(3,rho_2);
    bwExt[i]->SetParameter(4,gamma);
  }
  csp->cd();
  if(hpiplus){
    bw[0]->SetNormalization();
    bw[0]->GetSpectraFit()->SetRange(ptMinPi,ptMaxPi);
    bw[0]->GetSpectraFit()->Draw("SAME");
    bw[0]->GetSpectraFit()->SetLineColor(4);

    bwExt[0]->SetNormalization();
    bwExt[0]->GetSpectraFit()->SetRange(0,3);
    bwExt[0]->GetSpectraFit()->Draw("SAME");
    bwExt[0]->GetSpectraFit()->SetLineColor(4);
    bwExt[0]->GetSpectraFit()->SetLineStyle(2);
  }
  if(hkaplus){
    bw[1]->SetNormalization();
    bw[1]->GetSpectraFit()->SetRange(ptMinKa,ptMaxKa);
    bw[1]->GetSpectraFit()->Draw("SAME");
    bw[1]->GetSpectraFit()->SetLineColor(1);

    bwExt[1]->SetNormalization();
    bwExt[1]->GetSpectraFit()->SetRange(0,3);
    bwExt[1]->GetSpectraFit()->Draw("SAME");
    bwExt[1]->GetSpectraFit()->SetLineColor(1);
    bwExt[1]->GetSpectraFit()->SetLineStyle(2);
  }
  if(hprplus){
    bw[2]->SetNormalization();
    bw[2]->GetSpectraFit()->SetRange(ptMinPr,ptMaxPr);
    bw[2]->GetSpectraFit()->Draw("SAME");
    bw[2]->GetSpectraFit()->SetLineColor(2);

    bwExt[2]->SetNormalization();
    bwExt[2]->GetSpectraFit()->SetRange(0,3);
    bwExt[2]->GetSpectraFit()->Draw("SAME");
    bwExt[2]->GetSpectraFit()->SetLineColor(2);
    bwExt[2]->GetSpectraFit()->SetLineStyle(2);
  }
  cv2->cd();
  if(gpiv2){
    if(! hpiplus) bw[0]->SetNormalization();
    bw[0]->GetV2Fit()->SetRange(ptMinPi,ptMaxPi);
    bw[0]->GetV2Fit()->Draw("SAME");
    bw[0]->GetV2Fit()->SetLineColor(4);

    if(! hpiplus) bwExt[0]->SetNormalization();
    bwExt[0]->GetV2Fit()->SetRange(0,3);
    bwExt[0]->GetV2Fit()->Draw("SAME");
    bwExt[0]->GetV2Fit()->SetLineColor(4);
    bwExt[0]->GetV2Fit()->SetLineStyle(2);
  }
  if(gkav2){
    if(! hkaplus) bw[1]->SetNormalization();
    bw[1]->GetV2Fit()->SetRange(ptMinKa,ptMaxKa);
    bw[1]->GetV2Fit()->Draw("SAME");
    bw[1]->GetV2Fit()->SetLineColor(1);

    if(! hkaplus) bwExt[1]->SetNormalization();
    bwExt[1]->GetV2Fit()->SetRange(0,3);
    bwExt[1]->GetV2Fit()->Draw("SAME");
    bwExt[1]->GetV2Fit()->SetLineColor(1);
    bwExt[1]->GetV2Fit()->SetLineStyle(2);
  }
  if(gprv2){
    if(! hprplus) bw[0]->SetNormalization();
    bw[2]->GetV2Fit()->SetRange(ptMinPr,ptMaxPr);
    bw[2]->GetV2Fit()->Draw("SAME");
    bw[2]->GetV2Fit()->SetLineColor(2);

    if(! hprplus) bwExt[0]->SetNormalization();
    bwExt[2]->GetV2Fit()->SetRange(0,3);
    bwExt[2]->GetV2Fit()->Draw("SAME");
    bwExt[2]->GetV2Fit()->SetLineColor(2);
    bwExt[2]->GetV2Fit()->SetLineStyle(2);
  }

  Float_t numPi=0;
  Float_t denPi=0;
  Float_t numKa=0;
  Float_t denKa=0;
  Float_t numPr=0;
  Float_t denPr=0;

  for(Int_t i=0;i < 100;i++){
    Float_t x = 0.1*(i+0.5);

    if(x < ptmin || x > ptmax) continue;

    if(hpiplus && gpiv2){
      numPi += bwExt[0]->GetV2Fit()->Eval(x) * bwExt[0]->GetSpectraFit()->Eval(x);
      denPi += bwExt[0]->GetSpectraFit()->Eval(x);
    }
    if(hkaplus && gkav2){
      numKa += bwExt[1]->GetV2Fit()->Eval(x) * bwExt[1]->GetSpectraFit()->Eval(x);
      denKa += bwExt[1]->GetSpectraFit()->Eval(x);
    }
    if(hprplus && gprv2){
      numPr += bwExt[2]->GetV2Fit()->Eval(x) * bwExt[2]->GetSpectraFit()->Eval(x);
      denPr += bwExt[2]->GetSpectraFit()->Eval(x);
    }
  }

  if(denPi) printf("v2 integrated Pi = %f\n",numPi/denPi);
  if(denKa) printf("v2 integrated Ka = %f\n",numKa/denKa);
  if(denPr) printf("v2 integrated Pr = %f\n",numPr/denPr);
}

fitblastwave(Int_t ic=2){

  if(! kLoaded) LoadLib();

  char name[200];

  // Get Spectra
  TFile *f = new TFile("spectracomb.root");
  if(f){
    sprintf(name,"cent%i_pion_plus",ic);
    hpiplus = (TH1D *) f->Get(name);
    
    if(! hpiplus) kPiPlusSpectra = kFALSE; 
    
    sprintf(name,"cent%i_kaon_plus",ic);
    hkaplus = (TH1D *) f->Get(name);
    
    if(! hkaplus) kKaPlusSpectra = kFALSE; 
    
    sprintf(name,"cent%i_proton_plus",ic);
    hprplus = (TH1D *) f->Get(name);
 
    if(! hprplus) kPrPlusSpectra = kFALSE; 
  }

  TCanvas *csp = new TCanvas("cspectra","cspectra");
  csp->Divide(3,1);
  csp->cd(1)->SetLogy();
  if(hpiplus) hpiplus->Draw();
  csp->cd(2)->SetLogy();
  if(hkaplus) hkaplus->Draw();
  csp->cd(3)->SetLogy();
  if(hprplus) hprplus->Draw();

  // Get v2
  sprintf(name,"v2/v2SP_pion_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gpiv2 = GetGraph(name);
  if(! gpiv2) kPiV2 = kFALSE;
  sprintf(name,"v2/v2SP_kaon_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gkav2 = GetGraph(name);
  if(! gkav2) kKaV2 = kFALSE;
  sprintf(name,"v2/v2SP_antipr_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gprv2 = GetGraph(name);
  if(! gprv2) kPrV2 = kFALSE;

  TCanvas *cv2 = new TCanvas("cv2","cv2");
  cv2->Divide(3,1);
  cv2->cd(1);
  if(gpiv2) gpiv2->Draw("AP");
  cv2->cd(2);
  if(gkav2) gkav2->Draw("AP");
  cv2->cd(3);
  if(gprv2) gprv2->Draw("AP");

  // initialize fitter
  AliBlastwaveFit2D *bwPi = new AliBlastwaveFit2D("pions",mPi);
  bwPi->SetMinPt(ptMinPi);
  bwPi->SetMaxPt(ptMaxPi);

  AliBlastwaveFit2D *bwKa = new AliBlastwaveFit2D("kaons",mKa);
  bwKa->SetMinPt(ptMinKa);
  bwKa->SetMaxPt(ptMaxKa);

  AliBlastwaveFit2D *bwPr = new AliBlastwaveFit2D("protons",mPr);
  bwPr->SetMinPt(ptMinPr);
  bwPr->SetMaxPt(ptMaxPr);

  if(kPiPlusSpectra) bwPi->SetSpectrumObj(hpiplus);
  if(kPiV2) bwPi->SetV2Obj(gpiv2);
  if(kKaPlusSpectra) bwKa->SetSpectrumObj(hkaplus);
  if(kKaV2) bwKa->SetV2Obj(gkav2);
  if(kPrPlusSpectra) bwPr->SetSpectrumObj(hprplus);
  if(kPrV2) bwPr->SetV2Obj(gprv2);

  AliBlastwaveFitter *fitter = new AliBlastwaveFitter("fitterBW");
  fitter->AddFitFunction(bwPi);
  fitter->AddFitFunction(bwKa);
  fitter->AddFitFunction(bwPr);

  // go to fit
  fitter->PrepareToFit(); // initialize the fitter object
  fitter->Fit();          // perform the fit (it will take some time)

  // Draw fit
  if(hpiplus){
    csp->cd(1);
    bwPi->GetSpectraFit()->Draw("SAME");
  }
  if(hkaplus){
    csp->cd(2);
    bwKa->GetSpectraFit()->Draw("SAME");
  }
  if(hprplus){
    csp->cd(3);
    bwPr->GetSpectraFit()->Draw("SAME");
  }

  if(gpiv2){
    cv2->cd(1);
    bwPi->GetV2Fit()->Draw("SAME");
  }
  if(gkav2){
    cv2->cd(2);
    bwKa->GetV2Fit()->Draw("SAME");
  }
  if(gprv2){
    cv2->cd(3);
    bwPr->GetV2Fit()->Draw("SAME");
  }

  // Print some outputs
  printf("Chi2 = %f\n",fitter->GetChi2());
  printf("N.D.G.F. = %f\n",fitter->GetNDGF());
  printf("<beta> = %f\n",bwPi->GetMeanBeta());

  // Do the contour if requested
  if(kCont){
    TCanvas *cCont = new TCanvas("cContour","cContour");
    cCont->Divide(3,1);
    cCont->cd(1);
    TGraph *gCont1 = fitter->DoContour(50,2,0,1); // rho and T
    gCont1->Draw("AP");
    cCont->cd(2);
    TGraph *gCont2 = fitter->DoContourBetaT(50,2,0,1); // beta and T
    gCont2->Draw("AP");
    cCont->cd(3);
    TGraph *gCont3 = fitter->DoContour(50,1,3,1); // s2 and rho2
    gCont3->Draw("AP");
  }
}

LoadLib(){
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libTree.so");
  gSystem->Load("libMinuit.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libPWGCFflowBW.so");
  kLoaded = kTRUE;

  Int_t check = gROOT->LoadMacro("v2All.C");
  
  printf("INSTRUCTIONS:\n");
  printf("official results in txt format in v2 paper svn repo (in case of problem ask to Carlos Perez)\n");
  printf("notice that v2s for pi, K and p are read in txt format assuming that the values are in ./v2/ dir\n");
  printf("pi, K and p spectra are read from root file for blastwave fit\n");
  printf("other species v2s are loaded from v2All.C macro\n");
  printf("v2All.C available in https://twiki.cern.ch/twiki/bin/viewauth/ALICE/FlowPAGQM2012talkIdentified\n\n");
  if(check){
    printf("press enter to continue\n");
    getchar();
  }
}


TGraphAsymmErrors *GetGraph(const char *filename){
  char name[200];

  sprintf(name,"cat %s|grep -v BinCenter >/tmp/tempov2",filename);

  system(name);

  Float_t x,y,statLow,statHigh,systLow,systHigh;

  Int_t np=0;
  Double_t pt[100],pterr[100],v2[100],v2errLow[100],v2errHigh[100];

  FILE *f = fopen("/tmp/tempov2","r");
  while(fscanf(f,"%f %f %f %f %f %f",&x,&y,&statHigh,&statLow,&systHigh,&systLow) == 6){
    pt[np] = x;
    pterr[np] = 0;
    v2[np] = y;
    v2errLow[np] = TMath::Sqrt(/*statLow*statLow +*/ systLow*systLow);
    v2errHigh[np] = TMath::Sqrt(/*statHigh*statHigh +*/ systHigh*systHigh);
    if(x > 0.2 && x < 6.0) np++;
  }
  fclose(f);

  TGraphAsymmErrors *g = new TGraphAsymmErrors(np,pt,v2,pterr,pterr,v2errLow,v2errHigh);

  return g;
}

TGraphAsymmErrors *GetGraphWithStat(const char *filename){
  char name[200];

  sprintf(name,"cat %s|grep -v BinCenter >/tmp/tempov2",filename);

  system(name);

  Float_t x,y,statLow,statHigh,systLow,systHigh;

  Int_t np=0;
  Double_t pt[100],pterr[100],v2[100],v2errLow[100],v2errHigh[100];

  FILE *f = fopen("/tmp/tempov2","r");
  while(fscanf(f,"%f %f %f %f %f %f",&x,&y,&statHigh,&statLow,&systHigh,&systLow) == 6){
    pt[np] = x;
    pterr[np] = 0;
    v2[np] = y;
    v2errLow[np] = TMath::Sqrt(statLow*statLow + systLow*systLow);
    v2errHigh[np] = TMath::Sqrt(statHigh*statHigh + systHigh*systHigh);
    if(x > 0.2 && x < 6.0) np++;
  }
  fclose(f);

  TGraphAsymmErrors *g = new TGraphAsymmErrors(np,pt,v2,pterr,pterr,v2errLow,v2errHigh);

  return g;
}


Float_t ComputePiV2int(Int_t ic=2,Float_t xmin=0,Float_t xmax=20){

  Float_t v2Av = 0.02;
  
  if(ic==1) v2Av = 0.035;
  else if(ic==2) v2Av = 0.048464;
  else if(ic==3) v2Av = 0.06;
  else if(ic==4) v2Av = 0.07;
  else if(ic==5) v2Av = 0.07;
  else if(ic==6) v2Av = 0.07;
  else if(ic==7) v2Av = 0.06;
  else if(ic==8) v2Av = 0.05;

  if(! kLoaded) LoadLib();

  char name[200];

  TGraphAsymmErrors *gHP;

  if(ic == 0) gHP = v2PionAlex0005();
  else if(ic == 1) gHP = v2PionAlex0510();
  else if(ic == 2) gHP = v2PionAlex1020();
  else if(ic == 3) gHP = v2PionAlex2030();
  else if(ic == 4) gHP = v2PionAlex3040();
  else if(ic == 5) gHP = v2PionAlex4050();
  else if(ic == 6) gHP = v2PionAlex5060();
  else if(ic == 7) gHP = v2PionAlex6070();
  else if(ic == 8) gHP = v2PionAlex7080();

  // Get Spectra
  TFile *f = new TFile("spectracomb.root");
  if(f){
    sprintf(name,"cent%i_pion_plus",ic);
    hpiplus = (TH1D *) f->Get(name);
    
    if(! hpiplus) return 0.0; 
  }


  TCanvas *csp = new TCanvas("cpiSpectra","cpiSpectra");
  hpiplus->Draw();

  // Get v2
  sprintf(name,"v2/v2SP_pion_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gpiv2 = GetGraph(name);
  if(! gpiv2) return 0.0;
  

  TCanvas *cv2 = new TCanvas("cpiV2","cpiV2");
  gpiv2->Draw("AP");
  
  // initialize fitter
  AliBlastwaveFit2D *bwPi = new AliBlastwaveFit2D("pionsSp",mPi);
  bwPi->SetMinPt(0.1);
  bwPi->SetMaxPt(1.5);

  AliBlastwaveFit2D *bwPi2 = new AliBlastwaveFit2D("pionsV2",mPi);
  bwPi2->SetMinPt(0.2);
  bwPi2->SetMaxPt(1.0);

  AliBlastwaveFitSpectra *bwPi3 = new AliBlastwaveFitSpectra("pionsSpHP",mPi); // use only spectra function to avoid overwriting of other fit (parameters are static memebers)
  bwPi3->SetMinPt(1.5);
  bwPi3->SetMaxPt(3.0);

  bwPi->SetSpectrumObj(hpiplus);

  bwPi2->SetV2Obj(gpiv2);

  bwPi3->SetSpectrumObj(hpiplus);

  AliBlastwaveFitter *fitter = new AliBlastwaveFitter("fitterPion");
  fitter->AddFitFunction(bwPi);
  fitter->AddFitFunction(bwPi2);

  AliBlastwaveFitter *fitter2 = new AliBlastwaveFitter("fitterPion2");
  fitter2->AddFitFunction(bwPi3);

  TF1 *fitSP, *fitV2, *fitSP2;

  // go to fit
  if(xmin < 0.2){
    fitter->PrepareToFit(); // initialize the fitter object
    fitter->Fit();          // perform the fit (it will take some time)
 
  // Print some outputs
    printf("Chi2 = %f\n",fitter->GetChi2());
    printf("N.D.G.F. = %f\n",fitter->GetNDGF());
    printf("<beta> = %f\n",bwPi->GetMeanBeta());
  
  //  fitter2->PrepareToFit(); // initialize the fitter object
  //   fitter2->Fit();          // perform the fit (it will take some time)
    fitSP = bwPi->GetSpectraFit();
    fitV2 = bwPi2->GetV2Fit();
    fitSP2 = NULL;//bwPi3->GetSpectraFit();

//   printf("2)Chi2 = %f\n",fitter2->GetChi2());
//   printf("2)N.D.G.F. = %f\n",fitter2->GetNDGF());
//   printf("2)<beta> = %f\n",bwPi3->GetMeanBeta());

  // Draw fit
    csp->cd();
    fitSP->Draw("SAME");
    //   fitSP2->Draw("SAME");
    cv2->cd();
    fitV2->Draw("SAME");
  }
//   fitSP->SetRange(0.0001,1.3);
//   fitSP2->SetRange(1.5,6);
//   fitV2->SetRange(0.0001,1);
  
  Float_t num = 0;
  Float_t den = 0;
  Float_t errSp = 0;

  Float_t num1 = 0;
  Float_t den1 = 0;

  Float_t num2 = 0;
  Float_t den2 = 0;

  Float_t num3 = 0;
  Float_t den3 = 0;

  Float_t num4 = 0;
  Float_t den4 = 0;

  Float_t num5 = 0;
  Float_t den5 = 0;

  Float_t num6 = 0;
  Float_t den6 = 0;

  Float_t xpt[500];
  Float_t ypt[500];
  Float_t ypt1[500];
  Float_t ypt2[500];
  Int_t npt=0;

  for(Int_t i=0;i<10;i++){ // form 0 to 0.2
    Float_t x1 = i*0.02;
    Float_t x2 = (i+1)*0.02;
    Float_t xm = (x1+x2)*0.5;
    
    if(xm > xmin){
      Float_t yield = fitSP->Integral(x1,x2);
      Float_t v2 = fitV2->Eval(xm);
    
      xpt[npt] = xm;
      ypt[npt] = fitSP->Eval(xm);
      ypt1[npt] = ypt[npt]*(1 + 0.0202/0.2 + 0.03 * 0.2);
      ypt2[npt] = ypt[npt]*(1 - 0.0202/0.2 - 0.03 * 0.2);
      npt++;

      den += yield;
      num += yield * v2;

      errSp +=  (0.0202/0.2 + 0.03 * 0.2) * yield * TMath::Abs(v2 - v2Av);
      
      den1 += yield*(1 + 0.0202/0.2 + 0.03 * 0.2);
      num1 += yield*(1 + 0.0202/0.2 + 0.03 * 0.2) * v2 * (1 - 0.05);
      
      den2 += yield*(1 - 0.0202/0.2 - 0.03 * 0.2);
      num2 += yield*(1 - 0.0202/0.2 - 0.03 * 0.2) * v2 * (1 + 0.05);

      den3 += yield;
      num3 += yield* v2 * (1 - 0.05);
      
      den4 += yield;
      num4 += yield* v2 * (1 + 0.05);

      den5 += yield*(1 + 0.0202/0.2 + 0.03 * 0.2);
      num5 += yield*(1 + 0.0202/0.2 + 0.03 * 0.2) * v2;
      
      den6 += yield*(1 - 0.0202/0.2 - 0.03 * 0.2);
      num6 += yield*(1 - 0.0202/0.2 - 0.03 * 0.2) * v2;
    }
  }
  
  for(Int_t i=0; i < gpiv2->GetN();i++){
    Float_t x = gpiv2->GetX()[i];

    Float_t frSyst = 1 - 2*hpiplus->Integral(1,hpiplus->FindBin(x))/hpiplus->Integral();

    if(x > TMath::Max(0.2,xmin) && x < TMath::Min(xmax,6.0)){
      Float_t binwidth = 0.05;
      if(x < 3) binwidth = 0.05;
      else if(x < 4) binwidth = 0.1;
      else binwidth = 0.2;

      Float_t yield = hpiplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hpiplus->GetBinError(hpiplus->FindBin(x)) / hpiplus->GetBinContent(hpiplus->FindBin(x));
      Float_t v2 = gpiv2->GetY()[i];
      Float_t v2err1 = gpiv2->GetEYlow()[i];
      Float_t v2err2 = gpiv2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hpiplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      den += yield;
      num += yield * v2;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);

      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f\n",x+binwidth,num/den);
    }
  }

  gpiv2 = gHP;
  for(Int_t i=0; i < gpiv2->GetN();i++){
    Float_t x = gpiv2->GetX()[i];

    Float_t frSyst = 1 - 2*hpiplus->Integral(1,hpiplus->FindBin(x))/hpiplus->Integral();

    if(x > TMath::Max(6.0,xmin) && x < xmax){
      Float_t binwidth = 0.05;
      if(x < 8) binwidth = 0.5;
      else if(x < 13) binwidth = 1;
      else binwidth = 2;

      Float_t yield = hpiplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hpiplus->GetBinError(hpiplus->FindBin(x)) / hpiplus->GetBinContent(hpiplus->FindBin(x));
      Float_t v2 = gpiv2->GetY()[i];
      Float_t v2err1 = gpiv2->GetEYlow()[i];
      Float_t v2err2 = gpiv2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hpiplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      den += yield;
      num += yield * v2;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);
      
      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f\n",x+binwidth,num/den);
    }
  }

  printf("Integrated flow for pions (0 < p_T < 20 GeV/c) = %f\n",num/den);
  printf("Syst. = %f\n",(num2/den2 - num1/den1)/2);
  printf("Syst. High = %f\n",(num2/den2 - num/den));
  printf("Syst. Low = %f\n",(num/den - num1/den1));
  Float_t systV2 = (num4/den4 - num3/den3)/2;
  printf("Syst. Only v2 = %f\n",systV2);
  Float_t systSp = (num6/den6 - num5/den5)/2;
  printf("Syst. Only spectra = %f\n",systSp);
  printf("Syst. Only spectra (2nd estimate) = %f\n",errSp/den);
  printf("Syst. Combined = %f\n",TMath::Sqrt(systV2*systV2 + systSp*systSp));
  printf("Yield = %f\n",den);

  new TCanvas("cSpectraComp","cSpectraComp");
  TGraph *gpiSp = new TGraph(npt,xpt,ypt);
  TGraph *gpiSp1 = new TGraph(npt,xpt,ypt1);
  TGraph *gpiSp2 = new TGraph(npt,xpt,ypt2);

  gpiSp->SetMarkerStyle(20);
  gpiSp1->SetMarkerStyle(20);
  gpiSp2->SetMarkerStyle(20);
  gpiSp1->SetMarkerColor(2);
  gpiSp2->SetMarkerColor(4);
  gpiSp1->SetLineColor(2);
  gpiSp2->SetLineColor(4);
  gpiSp->Draw("AP");
  gpiSp1->Draw("P");
  gpiSp2->Draw("P");
  hpiplus->Draw("SAME");

}

Float_t ComputeKaV2int(Int_t ic=2,Float_t xmin=0,Float_t xmax=20){
  Float_t v2Av = 0.025;
  
  if(ic==1) v2Av = 0.045;
  else if(ic==2) v2Av = 0.06;
  else if(ic==3) v2Av = 0.083;
  else if(ic==4) v2Av = 0.095;
  else if(ic==5) v2Av = 0.095;
  else if(ic==6) v2Av = 0.095;
  else if(ic==7) v2Av = 0.09;
  else if(ic==8) v2Av = 0.075;

  if(! kLoaded) LoadLib();

  char name[200];

  TGraphAsymmErrors *gHP; // just to loop on bin (but not used)

  if(ic == 0) gHP = v2AntiprotonAlex0005();
  else if(ic == 1) gHP = v2AntiprotonAlex0510();
  else if(ic == 2) gHP = v2AntiprotonAlex1020();
  else if(ic == 3) gHP = v2AntiprotonAlex2030();
  else if(ic == 4) gHP = v2AntiprotonAlex3040();
  else if(ic == 5) gHP = v2AntiprotonAlex4050();
  else if(ic == 6) gHP = v2AntiprotonAlex5060();
  else if(ic == 7) gHP = v2AntiprotonAlex6070();
  else if(ic == 8) gHP = v2AntiprotonAlex7080();

  // Get Spectra
  TFile *f = new TFile("spectracomb.root");
  if(f){
    sprintf(name,"cent%i_kaon_plus",ic);
    hkaplus = (TH1D *) f->Get(name);
    
    if(! hkaplus) return 0.0; 
  }


  TCanvas *csp = new TCanvas("ckaSpectra","ckaSpectra");
  hkaplus->Draw();

  // Get v2
  sprintf(name,"v2/v2SP_kaon_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gkav2 = GetGraph(name);
  if(! gkav2) return 0.0;
  

  TCanvas *cv2 = new TCanvas("ckaV2","ckaV2");
  gkav2->Draw("AP");
  
  // initialize fitter
  AliBlastwaveFit2D *bwKa = new AliBlastwaveFit2D("kaonsSp",mKa);
  bwKa->SetMinPt(0.2);
  bwKa->SetMaxPt(0.8);

  AliBlastwaveFit2D *bwKa2 = new AliBlastwaveFit2D("kaonsV2",mKa);
  bwKa2->SetMinPt(0.25);
  bwKa2->SetMaxPt(1.0);


  AliBlastwaveFitSpectra *bwKa3 = new AliBlastwaveFitSpectra("kaonsSpHP",mKa); // use only spectra function to avoid overwriting of other fit (parameters are static memebers)
  bwKa3->SetMinPt(1.5);
  bwKa3->SetMaxPt(3.0);

  bwKa->SetSpectrumObj(hkaplus);

  bwKa2->SetV2Obj(gkav2);

  bwKa3->SetSpectrumObj(hkaplus);

  AliBlastwaveFitter *fitter = new AliBlastwaveFitter("fitterKaon");
  fitter->AddFitFunction(bwKa);
  fitter->AddFitFunction(bwKa2);

  AliBlastwaveFitter *fitter2 = new AliBlastwaveFitter("fitterKaon2");
  fitter2->AddFitFunction(bwKa3);

  TF1 *fitSP, *fitV2, *fitSP2;
  // go to fit
  if(xmin < 0.25){
    fitter->PrepareToFit(); // initialize the fitter object
    fitter->Fit();          // perform the fit (it will take some time)
    
  // Print some outputs
    printf("Chi2 = %f\n",fitter->GetChi2());
    printf("N.D.G.F. = %f\n",fitter->GetNDGF());
    printf("<beta> = %f\n",bwKa->GetMeanBeta());

//   fitter2->PrepareToFit(); // initialize the fitter object
//   fitter2->Fit();          // perform the fit (it will take some time)

    TF1 *fitSP = bwKa->GetSpectraFit();
    TF1 *fitV2 = bwKa2->GetV2Fit();
    TF1 *fitSP2 = bwKa3->GetSpectraFit();

    printf("2)Chi2 = %f\n",fitter2->GetChi2());
    printf("2)N.D.G.F. = %f\n",fitter2->GetNDGF());
    printf("2)<beta> = %f\n",bwKa3->GetMeanBeta());
    
    // Draw fit
    csp->cd();
    fitSP->Draw("SAME");
    fitSP2->Draw("SAME");
    cv2->cd();
    fitV2->Draw("SAME");
    
    fitSP->SetRange(0.0001,1.3);
    fitSP2->SetRange(1.5,6);
    fitV2->SetRange(0.0001,1);
  }

  Float_t num = 0;
  Float_t den = 0;
  Float_t errSp = 0;

  Float_t num1 = 0;
  Float_t den1 = 0;

  Float_t num2 = 0;
  Float_t den2 = 0;

  Float_t num3 = 0;
  Float_t den3 = 0;

  Float_t num4 = 0;
  Float_t den4 = 0;

  Float_t num5 = 0;
  Float_t den5 = 0;

  Float_t num6 = 0;
  Float_t den6 = 0;

  Float_t xpt[500];
  Float_t ypt[500];
  Float_t ypt1[500];
  Float_t ypt2[500];
  Int_t npt=0;

  Float_t errHP=0;

  for(Int_t i=0;i<10;i++){ // form 0 to 0.2
    Float_t x1 = i*0.025;
    Float_t x2 = (i+1)*0.025;
    Float_t xm = (x1+x2)*0.5;

    if(xm > xmin){
      Float_t yield = hkaplus->Interpolate(xm) * 0.025;//fitSP->Integral(x1,x2);
      Float_t v2 = fitV2->Eval(xm);

      xpt[npt] = xm;
      ypt[npt] = fitSP->Eval(xm);
      ypt1[npt] = ypt[npt]*(1 + 0.0215/0.25 + 0.05 * 0.25);
      ypt2[npt] = ypt[npt]*(1 - 0.0215/0.25 - 0.05 * 0.25);
      npt++;

      den += yield;
      num += yield * v2;
      
      errSp +=  (0.0215/0.25 + 0.05 * 0.25) * yield * TMath::Abs(v2 - v2Av);
      
      den1 += yield*(1 + 0.0215/0.25 + 0.05 * 0.25);
      num1 += yield*(1 + 0.0215/0.25 + 0.05 * 0.25) * v2 * (1 - 0.1);
      
      den2 += yield*(1 - 0.0215/0.25 - 0.05 * 0.25);
      num2 += yield*(1 - 0.0215/0.25 - 0.05 * 0.25) * v2 * (1 + 0.1);    

      den3 += yield;
      num3 += yield* v2 * (1 - 0.1);
      
      den4 += yield;
      num4 += yield* v2 * (1 + 0.1);    

      den5 += yield*(1 + 0.0215/0.25 + 0.05 * 0.25);
      num5 += yield*(1 + 0.0215/0.25 + 0.05 * 0.25) * v2;
      
      den6 += yield*(1 - 0.0215/0.25 - 0.05 * 0.25);
      num6 += yield*(1 - 0.0215/0.25 - 0.05 * 0.25) * v2;    
    }
  }

  for(Int_t i=0; i < gkav2->GetN();i++){
    Float_t x = gkav2->GetX()[i];
    Float_t frSyst = 1 - 2*hkaplus->Integral(1,hkaplus->FindBin(x))/hkaplus->Integral();
  
    if(x > TMath::Max(0.25,xmin) && x < TMath::Min(xmax,6.0)){
      Float_t binwidth = 0.05;
      if(x < 3) binwidth = 0.05;
      else if(x < 4) binwidth = 0.1;
      else binwidth = 0.2;

      Float_t yield = hkaplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hkaplus->GetBinError(hkaplus->FindBin(x)) / hkaplus->GetBinContent(hkaplus->FindBin(x));
      Float_t v2 = gkav2->GetY()[i];
      Float_t v2err1 = gkav2->GetEYlow()[i];
      Float_t v2err2 = gkav2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hkaplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      errHP = v2;

      den += yield;
      num += yield * v2;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);

      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f\n",x+binwidth,num/den);
    }
  }

  gkav2 = gHP;
  for(Int_t i=0; i < gkav2->GetN();i++){
    Float_t x = gkav2->GetX()[i];

    Float_t frSyst = 1 - 2*hkaplus->Integral(1,hkaplus->FindBin(x))/hkaplus->Integral();

    if(x > TMath::Max(6.0,xmin) && x < xmax){
      Float_t binwidth = 0.05;
      if(x < 8) binwidth = 0.5;
      else if(x < 13) binwidth = 1;
      else binwidth = 2;

      Float_t yield = hkaplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hkaplus->GetBinError(hkaplus->FindBin(x)) / hkaplus->GetBinContent(hkaplus->FindBin(x));
      Float_t v2 = errHP/2;//gkav2->GetY()[i];
      Float_t v2err1 = 0;//gkav2->GetEYlow()[i];
      Float_t v2err2 = errHP;//gkav2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hkaplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      den += yield;
      num += yield * 0.0;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);

      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f\n",x+binwidth,num/den);
    }
  }

  printf("Integrated flow for kaons (0 < p_T < 20 GeV/c) = %f\n",num/den);
  printf("Syst. = %f\n",(num2/den2 - num1/den1)/2);
  printf("Syst. High = %f\n",(num2/den2 - num/den));
  printf("Syst. Low = %f\n",(num/den - num1/den1));
  Float_t systV2 = (num4/den4 - num3/den3)/2;
  printf("Syst. Only v2 = %f\n",systV2);
  Float_t systSp = (num6/den6 - num5/den5)/2;
  printf("Syst. Only spectra = %f\n",systSp);
  printf("Syst. Only spectra (2nd estimate) = %f\n",errSp/den);
  printf("Syst. Combined = %f\n",TMath::Sqrt(systV2*systV2 + systSp*systSp));
  printf("Yield = %f\n",den);

  new TCanvas("cSpectraComp","cSpectraComp");
  TGraph *gkaSp = new TGraph(npt,xpt,ypt);
  TGraph *gkaSp1 = new TGraph(npt,xpt,ypt1);
  TGraph *gkaSp2 = new TGraph(npt,xpt,ypt2);

  gkaSp->SetMarkerStyle(20);
  gkaSp1->SetMarkerStyle(20);
  gkaSp2->SetMarkerStyle(20);
  gkaSp1->SetMarkerColor(2);
  gkaSp2->SetMarkerColor(4);
  gkaSp1->SetLineColor(2);
  gkaSp2->SetLineColor(4);
  gkaSp->Draw("AP");
  gkaSp1->Draw("P");
  gkaSp2->Draw("P");
  hkaplus->Draw("SAME");
}

Float_t ComputePrV2int(Int_t ic=2,Float_t xmin=0,Float_t xmax=20){
  Float_t v2Av = 0.025;
  
  if(ic==1) v2Av = 0.045;
  else if(ic==2) v2Av = 0.07;
  else if(ic==3) v2Av = 0.09;
  else if(ic==4) v2Av = 0.1;
  else if(ic==5) v2Av = 0.11;
  else if(ic==6) v2Av = 0.11;
  else if(ic==7) v2Av = 0.1;
  else if(ic==8) v2Av = 0.09;

  if(! kLoaded) LoadLib();

  char name[200];

  TGraphAsymmErrors *gHP;

  if(ic == 0) gHP = v2AntiprotonAlex0005();
  else if(ic == 1) gHP = v2AntiprotonAlex0510();
  else if(ic == 2) gHP = v2AntiprotonAlex1020();
  else if(ic == 3) gHP = v2AntiprotonAlex2030();
  else if(ic == 4) gHP = v2AntiprotonAlex3040();
  else if(ic == 5) gHP = v2AntiprotonAlex4050();
  else if(ic == 6) gHP = v2AntiprotonAlex5060();
  else if(ic == 7) gHP = v2AntiprotonAlex6070();
  else if(ic == 8) gHP = v2AntiprotonAlex7080();
  // Get Spectra
  TFile *f = new TFile("spectracomb.root");
  if(f){
    sprintf(name,"cent%i_proton_plus",ic);
    hprplus = (TH1D *) f->Get(name);
    
    if(! hprplus) return 0.0; 
  }


  TCanvas *csp = new TCanvas("cprSpectra","cprSpectra");
  hprplus->Draw();

  // Get v2
  sprintf(name,"v2/v2SP_antipr_%02i_%02i.txt",cmin[ic],cmax[ic]);
  gprv2 = GetGraph(name);
  if(! gprv2) return 0.0;
  

  TCanvas *cv2 = new TCanvas("cprV2","cprV2");
  gprv2->Draw("AP");
  
  // initialize fitter
  AliBlastwaveFit2D *bwPr = new AliBlastwaveFit2D("antiprotonsSp",mPr);
  bwPr->SetMinPt(0.3);
  bwPr->SetMaxPt(1.2);

  AliBlastwaveFit2D *bwPr2 = new AliBlastwaveFit2D("antiprotonsV2",mPr);
  bwPr2->SetMinPt(0.3);
  bwPr2->SetMaxPt(2.0);

  AliBlastwaveFitSpectra *bwPr3 = new AliBlastwaveFitSpectra("antiprotonsSpHP",mPr); // use only spectra function to avoid overwriting of other fit (parameters are static memebers)
  bwPr3->SetMinPt(2.5);
  bwPr3->SetMaxPt(4.5);

  bwPr->SetSpectrumObj(hprplus);

  bwPr2->SetV2Obj(gprv2);

  bwPr3->SetSpectrumObj(hprplus);

  AliBlastwaveFitter *fitter = new AliBlastwaveFitter("fitterProton");
  fitter->AddFitFunction(bwPr);
  fitter->AddFitFunction(bwPr2);

  AliBlastwaveFitter *fitter2 = new AliBlastwaveFitter("fitterProton2");
  fitter2->AddFitFunction(bwPr3);

  TF1 *fitSP, *fitV2,*fitSP2;

  // go to fit
  if(xmin < 0.3){
    fitter->PrepareToFit(); // initialize the fitter object
    fitter->Fit();          // perform the fit (it will take some time)
    
    // Print some outputs
    printf("Chi2 = %f\n",fitter->GetChi2());
    printf("N.D.G.F. = %f\n",fitter->GetNDGF());
    printf("<beta> = %f\n",bwPr->GetMeanBeta());
    
    //   fitter2->PrepareToFit(); // initialize the fitter object
    //   fitter2->Fit();          // perform the fit (it will take some time)
    
    fitSP = bwPr->GetSpectraFit();
    fitV2 = bwPr2->GetV2Fit();
    fitSP2 = bwPr3->GetSpectraFit();

    printf("2)Chi2 = %f\n",fitter2->GetChi2());
    printf("2)N.D.G.F. = %f\n",fitter2->GetNDGF());
    printf("2)<beta> = %f\n",bwPr3->GetMeanBeta());

    // Draw fit
    csp->cd();
    fitSP->Draw("SAME");
    fitSP2->Draw("SAME");
    cv2->cd();
    fitV2->Draw("SAME");
    
    fitSP->SetRange(0.0001,1.2);
    fitSP2->SetRange(2.5,6);
    fitV2->SetRange(0.0001,2);
  }

  Float_t num = 0;
  Float_t den = 0;
  Float_t errSp = 0;

  Float_t num1 = 0;
  Float_t den1 = 0;

  Float_t num2 = 0;
  Float_t den2 = 0;

  Float_t num3 = 0;
  Float_t den3 = 0;

  Float_t num4 = 0;
  Float_t den4 = 0;

  Float_t num5 = 0;
  Float_t den5 = 0;

  Float_t num6 = 0;
  Float_t den6 = 0;

  Float_t xpt[500];
  Float_t ypt[500];
  Float_t ypt1[500];
  Float_t ypt2[500];
  Int_t npt=0;

  for(Int_t i=0;i<10;i++){ // form 0 to 0.2
    Float_t x1 = i*0.03;
    Float_t x2 = (i+1)*0.03;
    Float_t xm = (x1+x2)*0.5;

    if(xm > xmin){
      Float_t yield = fitSP->Integral(x1,x2);
      Float_t v2 = fitV2->Eval(xm);

      xpt[npt] = xm;
      ypt[npt] = fitSP->Eval(xm);
      ypt1[npt] = ypt[npt]*(1 + 0.064/0.3 + 0.0083 * 0.3 * 0.3);
      ypt2[npt] = ypt[npt]*(1 - 0.064/0.3 - 0.0083 * 0.3 * 0.3);
      npt++;

      den += yield;
      num += yield * v2;
      
      errSp +=  (0.064/0.3 + 0.0083 * 0.3 * 0.3) * yield * TMath::Abs(v2 - v2Av);


      den1 += yield*(1 + 0.064/0.3 + 0.0083 * 0.3 * 0.3);
      num1 += yield*(1 + 0.064/0.3 + 0.0083 * 0.3 * 0.3) * v2 * (1 - 0.2);
      
      den2 += yield*(1 - 0.064/0.3 - 0.0083 * 0.3 * 0.3);
      num2 += yield*(1 - 0.064/0.3 - 0.0083 * 0.3 * 0.3) * v2 * (1 + 0.2);

      den3 += yield;
      num3 += yield * v2 * (1 - 0.2);
      
      den4 += yield;
      num4 += yield * v2 * (1 + 0.2);

      den5 += yield*(1 + 0.064/0.3 + 0.0083 * 0.3 * 0.3);
      num5 += yield*(1 + 0.064/0.3 + 0.0083 * 0.3 * 0.3) * v2;
      
      den6 += yield*(1 - 0.064/0.3 - 0.0083 * 0.3 * 0.3);
      num6 += yield*(1 - 0.064/0.3 - 0.0083 * 0.3 * 0.3) * v2;

      printf("pt<%f) v2int = %f (DeltaV2 = %f, yield = %f) (err=%f)\n",x2,num/den,(num2/den2 - num1/den1),den,errSp/den);

    }
  }

  printf("yieldMinExtrapolatedLowPt = %f -- yieldMaxExtrapolatedLowPt = %f\n",den1,den2);

  for(Int_t i=0; i < gprv2->GetN();i++){
    Float_t x = gprv2->GetX()[i];
    Float_t frSyst = 1 - 2*hprplus->Integral(1,hprplus->FindBin(x))/hprplus->Integral();

    if(x > TMath::Max(0.3,xmin) && x < TMath::Min(xmax,6.0)){
      Float_t binwidth = 0.05;
      if(x < 3) binwidth = 0.05;
      else if(x < 4) binwidth = 0.1;
      else binwidth = 0.2;

      Float_t yield = hprplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hprplus->GetBinError(hprplus->FindBin(x)) / hprplus->GetBinContent(hprplus->FindBin(x));
      Float_t v2 = gprv2->GetY()[i];
      Float_t v2err1 = gprv2->GetEYlow()[i];
      Float_t v2err2 = gprv2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hprplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      den += yield;
      num += yield * v2;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);

      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f (DeltaV2 = %f, yield = %f) (err=%f)\n",x+binwidth,num/den,(num2/den2 - num1/den1),den,errSp/den);
    }
  }

  gprv2 = gHP;
  for(Int_t i=0; i < gprv2->GetN();i++){
    Float_t x = gprv2->GetX()[i];

    Float_t frSyst = 1 - 2*hprplus->Integral(1,hprplus->FindBin(x))/hprplus->Integral();

    if(x > TMath::Max(6.0,xmin) && x < xmax){
      Float_t binwidth = 0.05;
      if(x < 8) binwidth = 0.5;
      else if(x < 13) binwidth = 1;
      else binwidth = 2;

      Float_t yield = hprplus->Interpolate(x) * 2 * binwidth;
      Float_t yielderr = hprplus->GetBinError(hprplus->FindBin(x)) / hprplus->GetBinContent(hprplus->FindBin(x));
      Float_t v2 = gprv2->GetY()[i];
      Float_t v2err1 = gprv2->GetEYlow()[i];
      Float_t v2err2 = gprv2->GetEYhigh()[i];

      xpt[npt] = x;
      ypt[npt] = hprplus->Interpolate(x);
      ypt1[npt] = ypt[npt]*(1 + frSyst*yielderr);
      ypt2[npt] = ypt[npt]*(1 - frSyst*yielderr);
      npt++;

      den += yield;
      num += yield * v2;

      errSp +=  yielderr * yield * TMath::Abs(v2 - v2Av);

      den1 += yield*(1 + frSyst*yielderr);
      num1 += yield*(1 + frSyst*yielderr) * v2 * (1 - v2err1/v2);

      den2 += yield*(1 - frSyst*yielderr);
      num2 += yield*(1 - frSyst*yielderr) * v2 * (1 + v2err2/v2);

      den3 += yield;
      num3 += yield* v2 * (1 - v2err1/v2);

      den4 += yield;
      num4 += yield* v2 * (1 + v2err2/v2);

      den5 += yield*(1 + frSyst*yielderr);
      num5 += yield*(1 + frSyst*yielderr) * v2;

      den6 += yield*(1 - frSyst*yielderr);
      num6 += yield*(1 - frSyst*yielderr) * v2;

      printf("pt<%f) v2int = %f (%f)\n",x+binwidth,num/den,errSp/den);
    }
  }

  printf("Integrated flow for antiprotons (0 < p_T < 20 GeV/c) = %f\n",num/den);
  printf("Syst. = %f\n",(num2/den2 - num1/den1)/2);
  printf("Syst. High = %f\n",(num2/den2 - num/den));
  printf("Syst. Low = %f\n",(num/den - num1/den1));
  Float_t systV2 = (num4/den4 - num3/den3)/2;
  printf("Syst. Only v2 = %f\n",systV2);
  Float_t systSp = (num6/den6 - num5/den5)/2;
  printf("Syst. Only spectra = %f\n",systSp);
  printf("Syst. Only spectra (2nd estimate) = %f\n",errSp/den);
  printf("Syst. Combined = %f\n",TMath::Sqrt(systV2*systV2 + systSp*systSp));
  printf("Yield = %f\n",den);

  new TCanvas("cSpectraComp","cSpectraComp");
  TGraph *gprSp = new TGraph(npt,xpt,ypt);
  TGraph *gprSp1 = new TGraph(npt,xpt,ypt1);
  TGraph *gprSp2 = new TGraph(npt,xpt,ypt2);

  gprSp->SetMarkerStyle(20);
  gprSp1->SetMarkerStyle(20);
  gprSp2->SetMarkerStyle(20);
  gprSp1->SetMarkerColor(2);
  gprSp2->SetMarkerColor(4);
  gprSp1->SetLineColor(2);
  gprSp2->SetLineColor(4);
  gprSp->Draw("AP");
  gprSp1->Draw("P");
  gprSp2->Draw("P");
  hprplus->Draw("SAME");
}

drawAllMtNq(Float_t pt=0.5){
  if(! kLoaded) LoadLib();
  char title[200];

  TLegend *leg = new TLegend(pt,0.15,0.8,0.5);
  leg->SetFillStyle(0);

  TGraphErrors *ge = getPtNqPiV2Nq(pt,1);
  ge->Draw("AP");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(4);
  ge->SetLineColor(4);

  ge->SetMinimum(0);
  ge->SetMaximum(0.1);

  sprintf(title,"v_{2}/n_{q} for KE_{T}/n_{q} = %4.2f GeV/#it{c};centrality (%);v_{2}/n_{q}",pt);
  ge->SetTitle(title);

  leg->AddEntry(ge,"#pi","lp");

  ge = getPtNqKaV2Nq(pt,1);
  ge->Draw("P");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(1);
  ge->SetLineColor(1);
  leg->AddEntry(ge,"K","lp");
 
  ge = getPtNqPrV2Nq(pt,1);
  ge->Draw("P");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(2);
  ge->SetLineColor(2);
  leg->AddEntry(ge,"#bar{p}","lp");


  TGraphErrors *g[9];
  TGraphAsymmErrors *ga[9];
  g[0]=Lv2_05_SPVZE();
  g[1]=Lv2_510_SPVZE();
  g[2]=Lv2_1020_SPVZE();
  g[3]=Lv2_2030_SPVZE();
  g[4]=Lv2_3040_SPVZE();
  ge = getPtNqMassV2Nq(pt,3,1.115,5,g,1);
  ge->Draw("P");
  ge->SetLineColor(8);
  ge->SetMarkerColor(8);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Lambda","lp");

  g[0]=Kv2_05_SPVZE();
  g[1]=Kv2_510_SPVZE();
  g[2]=Kv2_1020_SPVZE();
  g[3]=Kv2_2030_SPVZE();
  g[4]=Kv2_3040_SPVZE();
  ge = getPtNqMassV2Nq(pt,2,0.493,5,g,1);
  ge->Draw("P");
  ge->SetLineColor(6);
  ge->SetMarkerColor(6);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"K^{0}_{s}","lp");

  ga[0] = v2Xi0510();
  ga[1] = v2Xi0510();
  ga[2] = v2Xi1020();
  ga[3] = v2Xi2030();
  ga[4] = v2Xi3040();
  ga[5] = v2Xi4050();
  ga[6] = v2Xi5060();

  ge = getPtNqMassV2Nq(pt,3,1.321,7,ga,1);
  ge->Draw("P");
  ge->SetLineColor(33);
  ge->SetMarkerColor(33);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Xi","lp");
  ge->RemovePoint(0);

  ga[0] = v2Omega0510();
  ga[1] = v2Omega0510();
  ga[2] = v2Omega1020();
  ga[3] = v2Omega2030();
  ga[4] = v2Omega3040();
  ga[5] = v2Omega4050();
  ga[6] = v2Omega5060();

  ge = getPtNqMassV2Nq(pt,3,1.672,7,ga,1);
  ge->Draw("P");
  ge->SetLineColor(11);
  ge->SetMarkerColor(11);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Omega","lp");
  ge->RemovePoint(0);

  ga[0] = v2SPPhi1020();
  ga[1] = v2SPPhi1020();
  ga[2] = v2SPPhi1020();
  ga[3] = v2SPPhi2030();
  ga[4] = v2SPPhi3040();
  ga[5] = v2SPPhi4050();
  ga[6] = v2SPPhi5060();

  ge = getPtNqMassV2Nq(pt,2,1.0194,7,ga,1);
  ge->Draw("P");
  ge->SetLineColor(13);
  ge->SetMarkerColor(13);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#phi","lp");
  leg->Draw("SAME");
  ge->RemovePoint(1);
  ge->RemovePoint(0);

}

drawAllPtNq(Float_t pt=0.5){
  if(! kLoaded) LoadLib();
  char title[200];

  TLegend *leg = new TLegend(pt,0.15,0.8,0.5);
  leg->SetFillStyle(0);

  TGraphErrors *ge = getPtNqPiV2Nq(pt,0);
  ge->Draw("AP");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(4);
  ge->SetLineColor(4);

  ge->SetMinimum(0);
  ge->SetMaximum(0.1);

  sprintf(title,"v_{2}/n_{q} for p_{T}/n_{q} = %4.2f GeV/#it{c};centrality (%);v_{2}/n_{q}",pt);
  ge->SetTitle(title);

  leg->AddEntry(ge,"#pi","lp");

  ge = getPtNqKaV2Nq(pt,0);
  ge->Draw("P");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(1);
  ge->SetLineColor(1);
  leg->AddEntry(ge,"K","lp");
 
  ge = getPtNqPrV2Nq(pt,0);
  ge->Draw("P");
  ge->SetMarkerStyle(20);
  ge->SetMarkerColor(2);
  ge->SetLineColor(2);
  leg->AddEntry(ge,"#bar{p}","lp");


  TGraphErrors *g[9];
  TGraphAsymmErrors *ga[9];
  g[0]=Lv2_05_SPVZE();
  g[1]=Lv2_510_SPVZE();
  g[2]=Lv2_1020_SPVZE();
  g[3]=Lv2_2030_SPVZE();
  g[4]=Lv2_3040_SPVZE();
  ge = getPtNqMassV2Nq(pt,3,1.115,5,g,0);
  ge->Draw("P");
  ge->SetLineColor(8);
  ge->SetMarkerColor(8);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Lambda","lp");

  g[0]=Kv2_05_SPVZE();
  g[1]=Kv2_510_SPVZE();
  g[2]=Kv2_1020_SPVZE();
  g[3]=Kv2_2030_SPVZE();
  g[4]=Kv2_3040_SPVZE();
  ge = getPtNqMassV2Nq(pt,2,0.493,5,g,0);
  ge->Draw("P");
  ge->SetLineColor(6);
  ge->SetMarkerColor(6);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"K^{0}_{s}","lp");

  ga[0] = v2Xi0510();
  ga[1] = v2Xi0510();
  ga[2] = v2Xi1020();
  ga[3] = v2Xi2030();
  ga[4] = v2Xi3040();
  ga[5] = v2Xi4050();
  ga[6] = v2Xi5060();

  ge = getPtNqMassV2Nq(pt,3,1.321,7,ga,0);
  ge->Draw("P");
  ge->SetLineColor(33);
  ge->SetMarkerColor(33);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Xi","lp");
  ge->RemovePoint(0);

  ga[0] = v2Omega0510();
  ga[1] = v2Omega0510();
  ga[2] = v2Omega1020();
  ga[3] = v2Omega2030();
  ga[4] = v2Omega3040();
  ga[5] = v2Omega4050();
  ga[6] = v2Omega5060();

  ge = getPtNqMassV2Nq(pt,3,1.672,7,ga,0);
  ge->Draw("P");
  ge->SetLineColor(11);
  ge->SetMarkerColor(11);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#Omega","lp");
  ge->RemovePoint(0);

  ga[0] = v2SPPhi1020();
  ga[1] = v2SPPhi1020();
  ga[2] = v2SPPhi1020();
  ga[3] = v2SPPhi2030();
  ga[4] = v2SPPhi3040();
  ga[5] = v2SPPhi4050();
  ga[6] = v2SPPhi5060();

  ge = getPtNqMassV2Nq(pt,2,1.0194,7,ga,0);
  ge->Draw("P");
  ge->SetLineColor(13);
  ge->SetMarkerColor(13);
  ge->SetMarkerStyle(20);
  leg->AddEntry(ge,"#phi","lp");
  leg->Draw("SAME");

  ge->RemovePoint(1);
  ge->RemovePoint(0);

}

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