ROOT logo
////////////////////////////////////////////////////////////
// GenerateTPCTOFnsigma.C                                 //
// creates a histogram of the TPC+TOF nsigma distribution //
// written by John Groh                                   //
////////////////////////////////////////////////////////////

void GenerateTPCTOFnsigma()
{
  //-------------------------------------------
  // Get TPC+TOF nsigma projections from data -
  //-------------------------------------------
  const Int_t nPart = 3;
  TString Particle[nPart] = {"Pion","Kaon","Proton"};
  const Int_t Color[nPart] = {(Int_t)kBlack, (Int_t)kRed, (Int_t)kBlue};
  const Int_t nPt = 6;
  const Float_t Pt[nPt] = {0.6, 1.0, 1.4, 1.8, 2.2, 2.6};

  // open file and get histo manager
  TFile * fin = TFile::Open("output/No_Outliers/AnResDATATrain12_NoOutliers.root");
  TDirectoryFile * dir = (TDirectoryFile*)fin->Get("OutputAODSpectraTask_Data_Cent30to40_QVec0.0to100.0_Eta-0.8to0.8_3.0SigmaPID_TrBit1024");
  AliSpectraAODHistoManager * hman = (AliSpectraAODHistoManager*)dir->Get("SpectraHistos");

  // get nsigma projections
  TH2F * hTPCTOFnsigmaDATA[nPart];
  TH1F * hTPCTOFnsigmaDATAProj[nPart][nPt];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      // get 2d histo
      hTPCTOFnsigmaDATA[ipart] = (TH2F*)((TH2F*)hman->GetNSigHistogram(Form("hHistNSig%sPtTPCTOF",Particle[ipart].Data())))->Clone();
      for (Int_t ipt=0; ipt<nPt; ipt++)
	{
	  // project it for the given pt bin
	  hTPCTOFnsigmaDATAProj[ipart][ipt] = (TH1F*)hTPCTOFnsigmaDATA[ipart]->ProjectionY(Form("%ss - p_{T} = %.1f GeV/c",Particle[ipart].Data(),Pt[ipt]),
											   hTPCTOFnsigmaDATA[ipart]->GetXaxis()->FindBin(Pt[ipt]),
											   hTPCTOFnsigmaDATA[ipart]->GetXaxis()->FindBin(Pt[ipt]));
	}
    }

  //-----------------------------------------------
  // Create TPC+TOF nsigma distribution histogram -
  //-----------------------------------------------
  // file for saving histogram
  TFile * fout = new TFile("TPCTOFnsigma.root","RECREATE");

  // TPC nsigma distributions - just  gaussians
  TF1 * fTPCnsigma[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      fTPCnsigma[ipart] = new TF1("fTPCnsigma","gaus",-25,25);
      fTPCnsigma[ipart]->SetParameter(0,1); // normalization
    }
  fTPCnsigma[0]->SetParameter(1,0.0); // pion mean
  fTPCnsigma[0]->SetParameter(2,0.98); // pion sigma
  fTPCnsigma[1]->SetParameter(1,-0.1); // kaon mean
  fTPCnsigma[1]->SetParameter(2,0.98); // kaon sigma
  fTPCnsigma[2]->SetParameter(1,0.2); // proton mean
  fTPCnsigma[2]->SetParameter(2,0.72); // proton sigma

  // TOF nsigma distributions
  gROOT->LoadMacro("/opt/alice/aliroot/trunk/src/PWGLF/SPECTRA/PiKaPr/TOF/PbPb276/macros/TOFsignal.C");
  TF1 *fTOFnsigma[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      fTOFnsigma[ipart] = new TF1(Form("fTOFnsigma_%s",Particle[ipart].Data()), TOFsignal, -25, 25, 4);
      fTOFnsigma[ipart]->SetParameter(0,1.0); // normalization
      fTOFnsigma[ipart]->SetParameter(3, 1.0); // tail
    }
  fTOFnsigma[0]->SetParameter(1, 0.0); // pion mean
  fTOFnsigma[0]->SetParameter(2, 1.02); // pion sigma
  fTOFnsigma[1]->SetParameter(1, -0.04); // kaon mean
  fTOFnsigma[1]->SetParameter(2, 1.05); // kaon sigma
  fTOFnsigma[2]->SetParameter(1, -0.18); // proton mean
  fTOFnsigma[2]->SetParameter(2, 0.82); // proton sigma

  
  // combined TPC+TOF nsigma distributions
  //  // to ensure that the binning is the same I'm copying an actual nsigma projection and emptying it before doing anything
  TH1F * hTPCTOFnsigma[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      //hTPCTOFnsigma[ipart] = (TH1F*)hTPCTOFnsigmaDATAProj[0][0]->Clone();
      //hTPCTOFnsigma[ipart]->Reset();
      hTPCTOFnsigma[ipart] = new TH1F("","",1000,0,25);
      hTPCTOFnsigma[ipart]->SetName(Form("hTPCTOFnsigma%s",Particle[ipart].Data()));
      hTPCTOFnsigma[ipart]->SetTitle("Predicted NSigma distributions (TPC+TOF);n#sigma;");
      
      for (Int_t i=0; i<1000000; i++)
	{
	  // get random numbers from the nsig distributions
	  Float_t TPCpoint = fTPCnsigma[ipart]->GetRandom(-25,25);
	  Float_t TOFpoint = fTOFnsigma[ipart]->GetRandom(-25,25);
	  
	  // add them in quadrature and divide by root 2
	  Float_t TPCTOFcomb = TMath::Sqrt( (TMath::Power(TPCpoint,2) + TMath::Power(TOFpoint,2))/2 );
	  
	  // fill hTPCTOFnsigma w/ this
	  hTPCTOFnsigma[ipart]->Fill(TPCTOFcomb);
	}
      
      // normalize it
      Float_t integral = hTPCTOFnsigma[ipart]->Integral(hTPCTOFnsigma[ipart]->FindBin(0),hTPCTOFnsigma[ipart]->FindBin(20));
      hTPCTOFnsigma[ipart]->Scale(1./integral);
    }
  
  // draw  them
  TCanvas * cTPCTOFnsigmaPredicted = new TCanvas("cTPCTOFnsigmaPredicted","cTPCTOFnsigmaPredicted");
  gPad->SetLogy();
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      hTPCTOFnsigma[ipart]->GetXaxis()->SetTitle("n#sigma");
      hTPCTOFnsigma[ipart]->GetXaxis()->SetRangeUser(-5,20);
      hTPCTOFnsigma[ipart]->SetLineColor(Color[ipart]);
      if (ipart == 0)
	{
	  hTPCTOFnsigma[ipart]->DrawCopy("hist");
	  TLegend * lTPCTOFnsigma = new TLegend(.69,.69,.99,.99);
	  lTPCTOFnsigma->SetFillColor(0);
	}     
      else hTPCTOFnsigma[ipart]->DrawCopy("histsame");
      lTPCTOFnsigma->AddEntry(hTPCTOFnsigma[ipart],Form("%ss",Particle[ipart].Data()),"l");
    }
  lTPCTOFnsigma->DrawClone();

  // do the same for MC
  // TPC nsigma distributions - just  gaussians
  TF1 * fTPCnsigmaMC[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      fTPCnsigmaMC[ipart] = new TF1("fTPCnsigmaMC","gaus",-25,25);
      fTPCnsigmaMC[ipart]->SetParameter(0,1); // normalization
    }
  fTPCnsigmaMC[0]->SetParameter(1,-0.03); // pion mean
  fTPCnsigmaMC[0]->SetParameter(2,1.38); // pion sigma
  fTPCnsigmaMC[1]->SetParameter(1,0.14); // kaon mean
  fTPCnsigmaMC[1]->SetParameter(2,1.27); // kaon sigma
  fTPCnsigmaMC[2]->SetParameter(1,-0.17); // proton mean
  fTPCnsigmaMC[2]->SetParameter(2,1.03); // proton sigma

  // TOF nsigma distributions
  //gROOT->LoadMacro("/opt/alice/aliroot/trunk/src/PWGLF/SPECTRA/PiKaPr/TOF/PbPb276/macros/TOFsignal.C");
  TF1 *fTOFnsigmaMC[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      fTOFnsigmaMC[ipart] = new TF1(Form("fTOFnsigmaMC_%s",Particle[ipart].Data()), TOFsignal, -25, 25, 4);
      fTOFnsigmaMC[ipart]->SetParameter(0,1.0); // normalization
      fTOFnsigmaMC[ipart]->SetParameter(3, 1.0); // tail
    }
  fTOFnsigmaMC[0]->SetParameter(1, -0.01); // pion mean
  fTOFnsigmaMC[0]->SetParameter(2, 0.94); // pion sigma
  fTOFnsigmaMC[1]->SetParameter(1, 0.02); // kaon mean
  fTOFnsigmaMC[1]->SetParameter(2, 0.84); // kaon sigma
  fTOFnsigmaMC[2]->SetParameter(1, 0.04); // proton mean
  fTOFnsigmaMC[2]->SetParameter(2, 0.66); // proton sigma

  
  // combined TPC+TOF nsigma distributions
  //  // to ensure that the binning is the same I'm copying an actual nsigma projection and emptying it before doing anything
  TH1F * hTPCTOFnsigmaMC[nPart];
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      //hTPCTOFnsigmaMC[ipart] = (TH1F*)hTPCTOFnsigmaMCDATAProj[0][0]->Clone();
      //hTPCTOFnsigmaMC[ipart]->Reset();
      hTPCTOFnsigmaMC[ipart] = new TH1F("","",1000,0,25);
      hTPCTOFnsigmaMC[ipart]->SetName(Form("hTPCTOFnsigmaMC%s",Particle[ipart].Data()));
      hTPCTOFnsigmaMC[ipart]->SetTitle("Predicted NSigma distributions (TPC+TOF);n#sigma;");
      
      for (Int_t i=0; i<1000000; i++)
	{
	  // get random numbers from the nsig distributions
	  Float_t TPCpoint = fTPCnsigmaMC[ipart]->GetRandom(-25,25);
	  Float_t TOFpoint = fTOFnsigmaMC[ipart]->GetRandom(-25,25);
	  
	  // add them in quadrature and divide by root 2
	  Float_t TPCTOFcomb = TMath::Sqrt( (TMath::Power(TPCpoint,2) + TMath::Power(TOFpoint,2))/2 );
	  
	  // fill hTPCTOFnsigmaMC w/ this
	  hTPCTOFnsigmaMC[ipart]->Fill(TPCTOFcomb);
	}
      
      // normalize it
      Float_t integral = hTPCTOFnsigmaMC[ipart]->Integral(hTPCTOFnsigmaMC[ipart]->FindBin(0),hTPCTOFnsigmaMC[ipart]->FindBin(20));
      hTPCTOFnsigmaMC[ipart]->Scale(1./integral);
    }
  
  // draw  them
  TCanvas * cTPCTOFnsigmaPredictedMC = new TCanvas("cTPCTOFnsigmaPredictedMC","cTPCTOFnsigmaPredictedMC");
  gPad->SetLogy();
  for (Int_t ipart=0; ipart<nPart; ipart++)
    {
      hTPCTOFnsigmaMC[ipart]->GetXaxis()->SetTitle("n#sigma");
      hTPCTOFnsigmaMC[ipart]->GetXaxis()->SetRangeUser(-5,20);
      hTPCTOFnsigmaMC[ipart]->SetLineColor(Color[ipart]);
      if (ipart == 0)
	{
	  hTPCTOFnsigmaMC[ipart]->DrawCopy("hist");
	  TLegend * lTPCTOFnsigmaMC = new TLegend(.69,.69,.99,.99);
	  lTPCTOFnsigmaMC->SetFillColor(0);
	}     
      else hTPCTOFnsigmaMC[ipart]->DrawCopy("histsame");
      lTPCTOFnsigmaMC->AddEntry(hTPCTOFnsigmaMC[ipart],Form("%ss",Particle[ipart].Data()),"l");
    }
  lTPCTOFnsigmaMC->DrawClone();
  

  
  //---------------------------------------------------------------------------------------------------
  // Compare to the actual TPC+TOF nsigma distributions for different pt bins and different particles -
  //---------------------------------------------------------------------------------------------------
  TCanvas * cCompareToData[nPt];
  Int_t xPos = 50; // for canvas positioning
  Int_t yPos = 25; // for canvas positioning
  TH1F * hRatio[nPart][nPt];
  for (Int_t ipt=0; ipt<nPt; ipt++)
    {
      cCompareToData[ipt] = new TCanvas(Form("cCompareToData_%.1fPt",Pt[ipt]),Form("cCompareToData_%.1fPt",Pt[ipt]),xPos += 50, yPos += 25, 700, 500);
      cCompareToData[ipt]->Divide(3,2);
      
      // direct comparison of the histograms
      for (Int_t ipart=0; ipart<nPart; ipart++)
	{
	  cCompareToData[ipt]->cd(ipart+1);
	  gPad->SetLogy();

	  // draw histo from data
	  hTPCTOFnsigmaDATAProj[ipart][ipt]->SetLineColor(Color[ipart]);
	  hTPCTOFnsigmaDATAProj[ipart][ipt]->SetTitle(Form("TPC+TOF n#sigma for %ss at p_{T} = %.1f GeV/c;n#sigma;",Particle[ipart].Data(),Pt[ipt]));
	  hTPCTOFnsigmaDATAProj[ipart][ipt]->GetXaxis()->SetRangeUser(-5,10);
	  hTPCTOFnsigmaDATAProj[ipart][ipt]->DrawCopy("hist");

	  // scale generated histo and draw it as well
	  Float_t maxDATA = -1;

	  for (Int_t ibin=hTPCTOFnsigmaDATAProj[ipart][ipt]->FindBin(0); ibin<hTPCTOFnsigmaDATAProj[ipart][ipt]->FindBin(1.5); ibin++)
	    {
	      if (hTPCTOFnsigmaDATAProj[ipart][ipt]->GetBinContent(ibin) > maxDATA) maxDATA = hTPCTOFnsigmaDATAProj[ipart][ipt]->GetBinContent(ibin);
	    }
	  hTPCTOFnsigma[ipart]->Scale(maxDATA / hTPCTOFnsigma[ipart]->GetMaximum());
	  hTPCTOFnsigma[ipart]->SetLineColor(kGreen+2);
	  hTPCTOFnsigma[ipart]->DrawCopy("histsame");

	  // legend
	  TLegend * lCompareToData = new TLegend(.6,.8,.95,.92);
	  lCompareToData->SetFillColor(0);
	  lCompareToData->AddEntry(hTPCTOFnsigmaDATAProj[ipart][ipt],"Data","l");
	  lCompareToData->AddEntry(hTPCTOFnsigma[ipart],"Predicted","l");
	  lCompareToData->DrawClone();
	}

      // ratios of the histograms
      for (Int_t ipart=0; ipart<nPart; ipart++)
	{
	  cCompareToData[ipt]->cd(ipart+1+nPart);
	  
	  // compute the ratio
	  hRatio[ipart][ipt] = (TH1F*)hTPCTOFnsigmaDATAProj[ipart][ipt]->Clone();
	  hRatio[ipart][ipt]->Divide(hTPCTOFnsigma[ipart]);
	  hRatio[ipart][ipt]->SetName("Data/Predicted");
	  hRatio[ipart][ipt]->SetTitle("Data/Predicted;n#sigma;");
	  hRatio[ipart][ipt]->SetLineColor(Color[ipart]);
	  hRatio[ipart][ipt]->GetXaxis()->SetRangeUser(0,3);
	  //	  hRatio[ipart][ipt]->GetYaxis()->SetRangeUser(-2,10);
	  hRatio[ipart][ipt]->DrawCopy("hist");
	}
    }
  

  /*
  // crazy experiment: see if I can get a TF1 with the full convolution
  TF1 *fTOFnsig=new TF1("fTOFnsig","(x <= ([3]+[1])) * [0] *TMath::Gaus(x,[1],[2])+(x>([3]+[1]))*[0]*TMath::Gaus([3]+[1],[1],[2])*TMath::Exp(-([3])*(x-[3]-[1])/([2]*[2]))",0,25);
  fTOFnsig->SetParameter(0,1);
  fTOFnsig->SetParameter(1,1);
  fTOFnsig->SetParameter(2,1);
  fTOFnsig->SetParameter(3,3);

  TF1 * fTPCnsig = new TF1("fTPCnsig","gaus",0,25);
  fTPCnsig->SetParameter(0,1);
  fTPCnsig->SetParameter(1,0);
  fTPCnsig->SetParameter(2,1);

  TF1 * fTPCTOFnsig = new TF1("fTPCTOFnsig","TMath::Sqrt( (TMath::Power(fTPCnsigma,2) + TMath::Power(fTOFnsig,2))/2 )",0,25);

  //  TCanvas * c1 = new TCanvas();
  hTPCTOFnsigma->Fit(fTPCTOFnsig,"NM","",0,3);
  fTPCTOFnsig->DrawCopy("same");

  Float_t integralOfFit = fTPCTOFnsig->Integral(0,3);
  cout << "The integral is " << integralOfFit << endl;

  Float_t integralOfHist = hTPCTOFnsigma->Integral(hTPCTOFnsigma->FindBin(0), hTPCTOFnsigma->FindBin(3));
  cout << "The integral of the histo is " << integralOfHist << endl;
  */

  
  // print to a pdf for easy viewing
  cTPCTOFnsigmaPredicted->Print("TPCTOFnsigma.pdf(","pdf");
  for (Int_t ipt=0; ipt<nPt; ipt++)
    {
      if (ipt == nPt-1) cCompareToData[ipt]->Print("TPCTOFnsigma.pdf)","pdf");
      else cCompareToData[ipt]->Print("TPCTOFnsigma.pdf","pdf");
    }
  
  // save it all to file
  fout->cd();
  cTPCTOFnsigmaPredicted->Write();
  cTPCTOFnsigmaPredictedMC->Write();
  for (Int_t ipt=0; ipt<nPt; ipt++) cCompareToData[ipt]->Write();
  fout->Close();
}
 GenerateTPCTOFnsigma.C:1
 GenerateTPCTOFnsigma.C:2
 GenerateTPCTOFnsigma.C:3
 GenerateTPCTOFnsigma.C:4
 GenerateTPCTOFnsigma.C:5
 GenerateTPCTOFnsigma.C:6
 GenerateTPCTOFnsigma.C:7
 GenerateTPCTOFnsigma.C:8
 GenerateTPCTOFnsigma.C:9
 GenerateTPCTOFnsigma.C:10
 GenerateTPCTOFnsigma.C:11
 GenerateTPCTOFnsigma.C:12
 GenerateTPCTOFnsigma.C:13
 GenerateTPCTOFnsigma.C:14
 GenerateTPCTOFnsigma.C:15
 GenerateTPCTOFnsigma.C:16
 GenerateTPCTOFnsigma.C:17
 GenerateTPCTOFnsigma.C:18
 GenerateTPCTOFnsigma.C:19
 GenerateTPCTOFnsigma.C:20
 GenerateTPCTOFnsigma.C:21
 GenerateTPCTOFnsigma.C:22
 GenerateTPCTOFnsigma.C:23
 GenerateTPCTOFnsigma.C:24
 GenerateTPCTOFnsigma.C:25
 GenerateTPCTOFnsigma.C:26
 GenerateTPCTOFnsigma.C:27
 GenerateTPCTOFnsigma.C:28
 GenerateTPCTOFnsigma.C:29
 GenerateTPCTOFnsigma.C:30
 GenerateTPCTOFnsigma.C:31
 GenerateTPCTOFnsigma.C:32
 GenerateTPCTOFnsigma.C:33
 GenerateTPCTOFnsigma.C:34
 GenerateTPCTOFnsigma.C:35
 GenerateTPCTOFnsigma.C:36
 GenerateTPCTOFnsigma.C:37
 GenerateTPCTOFnsigma.C:38
 GenerateTPCTOFnsigma.C:39
 GenerateTPCTOFnsigma.C:40
 GenerateTPCTOFnsigma.C:41
 GenerateTPCTOFnsigma.C:42
 GenerateTPCTOFnsigma.C:43
 GenerateTPCTOFnsigma.C:44
 GenerateTPCTOFnsigma.C:45
 GenerateTPCTOFnsigma.C:46
 GenerateTPCTOFnsigma.C:47
 GenerateTPCTOFnsigma.C:48
 GenerateTPCTOFnsigma.C:49
 GenerateTPCTOFnsigma.C:50
 GenerateTPCTOFnsigma.C:51
 GenerateTPCTOFnsigma.C:52
 GenerateTPCTOFnsigma.C:53
 GenerateTPCTOFnsigma.C:54
 GenerateTPCTOFnsigma.C:55
 GenerateTPCTOFnsigma.C:56
 GenerateTPCTOFnsigma.C:57
 GenerateTPCTOFnsigma.C:58
 GenerateTPCTOFnsigma.C:59
 GenerateTPCTOFnsigma.C:60
 GenerateTPCTOFnsigma.C:61
 GenerateTPCTOFnsigma.C:62
 GenerateTPCTOFnsigma.C:63
 GenerateTPCTOFnsigma.C:64
 GenerateTPCTOFnsigma.C:65
 GenerateTPCTOFnsigma.C:66
 GenerateTPCTOFnsigma.C:67
 GenerateTPCTOFnsigma.C:68
 GenerateTPCTOFnsigma.C:69
 GenerateTPCTOFnsigma.C:70
 GenerateTPCTOFnsigma.C:71
 GenerateTPCTOFnsigma.C:72
 GenerateTPCTOFnsigma.C:73
 GenerateTPCTOFnsigma.C:74
 GenerateTPCTOFnsigma.C:75
 GenerateTPCTOFnsigma.C:76
 GenerateTPCTOFnsigma.C:77
 GenerateTPCTOFnsigma.C:78
 GenerateTPCTOFnsigma.C:79
 GenerateTPCTOFnsigma.C:80
 GenerateTPCTOFnsigma.C:81
 GenerateTPCTOFnsigma.C:82
 GenerateTPCTOFnsigma.C:83
 GenerateTPCTOFnsigma.C:84
 GenerateTPCTOFnsigma.C:85
 GenerateTPCTOFnsigma.C:86
 GenerateTPCTOFnsigma.C:87
 GenerateTPCTOFnsigma.C:88
 GenerateTPCTOFnsigma.C:89
 GenerateTPCTOFnsigma.C:90
 GenerateTPCTOFnsigma.C:91
 GenerateTPCTOFnsigma.C:92
 GenerateTPCTOFnsigma.C:93
 GenerateTPCTOFnsigma.C:94
 GenerateTPCTOFnsigma.C:95
 GenerateTPCTOFnsigma.C:96
 GenerateTPCTOFnsigma.C:97
 GenerateTPCTOFnsigma.C:98
 GenerateTPCTOFnsigma.C:99
 GenerateTPCTOFnsigma.C:100
 GenerateTPCTOFnsigma.C:101
 GenerateTPCTOFnsigma.C:102
 GenerateTPCTOFnsigma.C:103
 GenerateTPCTOFnsigma.C:104
 GenerateTPCTOFnsigma.C:105
 GenerateTPCTOFnsigma.C:106
 GenerateTPCTOFnsigma.C:107
 GenerateTPCTOFnsigma.C:108
 GenerateTPCTOFnsigma.C:109
 GenerateTPCTOFnsigma.C:110
 GenerateTPCTOFnsigma.C:111
 GenerateTPCTOFnsigma.C:112
 GenerateTPCTOFnsigma.C:113
 GenerateTPCTOFnsigma.C:114
 GenerateTPCTOFnsigma.C:115
 GenerateTPCTOFnsigma.C:116
 GenerateTPCTOFnsigma.C:117
 GenerateTPCTOFnsigma.C:118
 GenerateTPCTOFnsigma.C:119
 GenerateTPCTOFnsigma.C:120
 GenerateTPCTOFnsigma.C:121
 GenerateTPCTOFnsigma.C:122
 GenerateTPCTOFnsigma.C:123
 GenerateTPCTOFnsigma.C:124
 GenerateTPCTOFnsigma.C:125
 GenerateTPCTOFnsigma.C:126
 GenerateTPCTOFnsigma.C:127
 GenerateTPCTOFnsigma.C:128
 GenerateTPCTOFnsigma.C:129
 GenerateTPCTOFnsigma.C:130
 GenerateTPCTOFnsigma.C:131
 GenerateTPCTOFnsigma.C:132
 GenerateTPCTOFnsigma.C:133
 GenerateTPCTOFnsigma.C:134
 GenerateTPCTOFnsigma.C:135
 GenerateTPCTOFnsigma.C:136
 GenerateTPCTOFnsigma.C:137
 GenerateTPCTOFnsigma.C:138
 GenerateTPCTOFnsigma.C:139
 GenerateTPCTOFnsigma.C:140
 GenerateTPCTOFnsigma.C:141
 GenerateTPCTOFnsigma.C:142
 GenerateTPCTOFnsigma.C:143
 GenerateTPCTOFnsigma.C:144
 GenerateTPCTOFnsigma.C:145
 GenerateTPCTOFnsigma.C:146
 GenerateTPCTOFnsigma.C:147
 GenerateTPCTOFnsigma.C:148
 GenerateTPCTOFnsigma.C:149
 GenerateTPCTOFnsigma.C:150
 GenerateTPCTOFnsigma.C:151
 GenerateTPCTOFnsigma.C:152
 GenerateTPCTOFnsigma.C:153
 GenerateTPCTOFnsigma.C:154
 GenerateTPCTOFnsigma.C:155
 GenerateTPCTOFnsigma.C:156
 GenerateTPCTOFnsigma.C:157
 GenerateTPCTOFnsigma.C:158
 GenerateTPCTOFnsigma.C:159
 GenerateTPCTOFnsigma.C:160
 GenerateTPCTOFnsigma.C:161
 GenerateTPCTOFnsigma.C:162
 GenerateTPCTOFnsigma.C:163
 GenerateTPCTOFnsigma.C:164
 GenerateTPCTOFnsigma.C:165
 GenerateTPCTOFnsigma.C:166
 GenerateTPCTOFnsigma.C:167
 GenerateTPCTOFnsigma.C:168
 GenerateTPCTOFnsigma.C:169
 GenerateTPCTOFnsigma.C:170
 GenerateTPCTOFnsigma.C:171
 GenerateTPCTOFnsigma.C:172
 GenerateTPCTOFnsigma.C:173
 GenerateTPCTOFnsigma.C:174
 GenerateTPCTOFnsigma.C:175
 GenerateTPCTOFnsigma.C:176
 GenerateTPCTOFnsigma.C:177
 GenerateTPCTOFnsigma.C:178
 GenerateTPCTOFnsigma.C:179
 GenerateTPCTOFnsigma.C:180
 GenerateTPCTOFnsigma.C:181
 GenerateTPCTOFnsigma.C:182
 GenerateTPCTOFnsigma.C:183
 GenerateTPCTOFnsigma.C:184
 GenerateTPCTOFnsigma.C:185
 GenerateTPCTOFnsigma.C:186
 GenerateTPCTOFnsigma.C:187
 GenerateTPCTOFnsigma.C:188
 GenerateTPCTOFnsigma.C:189
 GenerateTPCTOFnsigma.C:190
 GenerateTPCTOFnsigma.C:191
 GenerateTPCTOFnsigma.C:192
 GenerateTPCTOFnsigma.C:193
 GenerateTPCTOFnsigma.C:194
 GenerateTPCTOFnsigma.C:195
 GenerateTPCTOFnsigma.C:196
 GenerateTPCTOFnsigma.C:197
 GenerateTPCTOFnsigma.C:198
 GenerateTPCTOFnsigma.C:199
 GenerateTPCTOFnsigma.C:200
 GenerateTPCTOFnsigma.C:201
 GenerateTPCTOFnsigma.C:202
 GenerateTPCTOFnsigma.C:203
 GenerateTPCTOFnsigma.C:204
 GenerateTPCTOFnsigma.C:205
 GenerateTPCTOFnsigma.C:206
 GenerateTPCTOFnsigma.C:207
 GenerateTPCTOFnsigma.C:208
 GenerateTPCTOFnsigma.C:209
 GenerateTPCTOFnsigma.C:210
 GenerateTPCTOFnsigma.C:211
 GenerateTPCTOFnsigma.C:212
 GenerateTPCTOFnsigma.C:213
 GenerateTPCTOFnsigma.C:214
 GenerateTPCTOFnsigma.C:215
 GenerateTPCTOFnsigma.C:216
 GenerateTPCTOFnsigma.C:217
 GenerateTPCTOFnsigma.C:218
 GenerateTPCTOFnsigma.C:219
 GenerateTPCTOFnsigma.C:220
 GenerateTPCTOFnsigma.C:221
 GenerateTPCTOFnsigma.C:222
 GenerateTPCTOFnsigma.C:223
 GenerateTPCTOFnsigma.C:224
 GenerateTPCTOFnsigma.C:225
 GenerateTPCTOFnsigma.C:226
 GenerateTPCTOFnsigma.C:227
 GenerateTPCTOFnsigma.C:228
 GenerateTPCTOFnsigma.C:229
 GenerateTPCTOFnsigma.C:230
 GenerateTPCTOFnsigma.C:231
 GenerateTPCTOFnsigma.C:232
 GenerateTPCTOFnsigma.C:233
 GenerateTPCTOFnsigma.C:234
 GenerateTPCTOFnsigma.C:235
 GenerateTPCTOFnsigma.C:236
 GenerateTPCTOFnsigma.C:237
 GenerateTPCTOFnsigma.C:238
 GenerateTPCTOFnsigma.C:239
 GenerateTPCTOFnsigma.C:240
 GenerateTPCTOFnsigma.C:241
 GenerateTPCTOFnsigma.C:242
 GenerateTPCTOFnsigma.C:243
 GenerateTPCTOFnsigma.C:244
 GenerateTPCTOFnsigma.C:245
 GenerateTPCTOFnsigma.C:246
 GenerateTPCTOFnsigma.C:247
 GenerateTPCTOFnsigma.C:248
 GenerateTPCTOFnsigma.C:249
 GenerateTPCTOFnsigma.C:250
 GenerateTPCTOFnsigma.C:251
 GenerateTPCTOFnsigma.C:252
 GenerateTPCTOFnsigma.C:253
 GenerateTPCTOFnsigma.C:254
 GenerateTPCTOFnsigma.C:255
 GenerateTPCTOFnsigma.C:256
 GenerateTPCTOFnsigma.C:257
 GenerateTPCTOFnsigma.C:258
 GenerateTPCTOFnsigma.C:259
 GenerateTPCTOFnsigma.C:260
 GenerateTPCTOFnsigma.C:261
 GenerateTPCTOFnsigma.C:262
 GenerateTPCTOFnsigma.C:263
 GenerateTPCTOFnsigma.C:264
 GenerateTPCTOFnsigma.C:265
 GenerateTPCTOFnsigma.C:266
 GenerateTPCTOFnsigma.C:267
 GenerateTPCTOFnsigma.C:268
 GenerateTPCTOFnsigma.C:269
 GenerateTPCTOFnsigma.C:270
 GenerateTPCTOFnsigma.C:271
 GenerateTPCTOFnsigma.C:272
 GenerateTPCTOFnsigma.C:273
 GenerateTPCTOFnsigma.C:274
 GenerateTPCTOFnsigma.C:275
 GenerateTPCTOFnsigma.C:276
 GenerateTPCTOFnsigma.C:277
 GenerateTPCTOFnsigma.C:278
 GenerateTPCTOFnsigma.C:279
 GenerateTPCTOFnsigma.C:280
 GenerateTPCTOFnsigma.C:281
 GenerateTPCTOFnsigma.C:282
 GenerateTPCTOFnsigma.C:283
 GenerateTPCTOFnsigma.C:284
 GenerateTPCTOFnsigma.C:285
 GenerateTPCTOFnsigma.C:286
 GenerateTPCTOFnsigma.C:287
 GenerateTPCTOFnsigma.C:288
 GenerateTPCTOFnsigma.C:289
 GenerateTPCTOFnsigma.C:290
 GenerateTPCTOFnsigma.C:291
 GenerateTPCTOFnsigma.C:292
 GenerateTPCTOFnsigma.C:293
 GenerateTPCTOFnsigma.C:294
 GenerateTPCTOFnsigma.C:295
 GenerateTPCTOFnsigma.C:296
 GenerateTPCTOFnsigma.C:297
 GenerateTPCTOFnsigma.C:298
 GenerateTPCTOFnsigma.C:299
 GenerateTPCTOFnsigma.C:300
 GenerateTPCTOFnsigma.C:301
 GenerateTPCTOFnsigma.C:302
 GenerateTPCTOFnsigma.C:303
 GenerateTPCTOFnsigma.C:304
 GenerateTPCTOFnsigma.C:305
 GenerateTPCTOFnsigma.C:306
 GenerateTPCTOFnsigma.C:307
 GenerateTPCTOFnsigma.C:308
 GenerateTPCTOFnsigma.C:309