ROOT logo
/*
  //Analysis of the output of AliTPCtaskPID.
  //3 6D histograms  - THnSparse created in the task:
  //TPC raw dEdx
  //TPC normalized dEdx (dEdx_rec/dNdx_mc)
  //TPC PID probabilities
  //
  //The values are binned in following variables:
  // Some of them are correlated - but THnSpase handle it  
  //                               ~ 14 MBy per object needed
  //
  // 0 - particle specie as defined in the AliPID - negatives+5 <0,9>
  // 1 - momenta - at the entrance of the TPC
  // 2 - tan lambda- fP[3]
  // 3 - betagamma
  // 4 - npoints
  // 5 - measurement - dEdx, dEdx/BB resp.  PID probability
  // 6 - BB



  .x ~/NimStyle.C
  .x ~/UliStyle.C
  .L $ALICE_ROOT/PWGPP/Macros/tpcPIDResol.C+
  Init();
  //
  // custom draw  GetProjection(THnSparse*his, Int_t i0, Int_t i1, Float_t type0, Float_t type1, Float_t p0, Float_t p1, Float_t eta0, Float_t eta1, Int_t ncl0, Int_t ncl1)
  GetProjection(fTPCsignalNorm,5,2,  -1,11,   5,10,  -1.4,1.4,   120,160,0,4)  ->ProfileX()->Draw();
  //

  //
  // predefined draw
  //                         0          1          2             4         6
  //1. SetRange -             part      p          eta           ncl       par 6
  SetRange(fTPCsignal,      0,10,    0.2,5,     -0.9,0.9,    120,160,  0,6);
  SetRange(fTPCsignalNorm,  0,10,    0.2,5,     -0.9,0.9,    120,160,  0,6);
  SetRange(fTPCr,           0,100,    0.2,5,     -0.9,0.9,    120,160,  0,10);
  
  //
  // Draw
  //
  DrawPIDpt();
  DrawSignalTypeBG();
  DrawSignalTypeMom();
  DrawNormSignalTypeBG();
  DrawNormSignalTypeMom();
  DrawNormSignalTypeBB();

*/
#include "TFile.h"
#include "THnSparse.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TF1.h"

#include "TLegend.h"
#include "TCanvas.h"

#include "AliPID.h"

Int_t kmicolors[10]={1,2,3,4,6,7,8,9,10,11};
Int_t kmimarkers[10]={21,22,23,24,25,26,27,28,29,30};



THnSparse * fTPCsignal     = 0;
THnSparse * fTPCsignalNorm = 0;
THnSparse * fTPCr = 0;
Float_t     fNorm=50;
TString selName;
Int_t version=0;

void Init(){
  TFile *f = new TFile("OutputPID.root");
  TObjArray *array= (TObjArray*)f->Get("tpcTaskPID");
  delete f;
  fTPCsignal     = (THnSparse*)array->At(0);
  fTPCsignalNorm = (THnSparse*)array->At(1);
  fTPCr          = (THnSparse*)array->At(2);

  fTPCsignal->GetAxis(5)->SetTitle("dEdx_{rec}");
  fTPCsignal->GetAxis(6)->SetTitle("dNdx_{mc}");
  fTPCsignal->GetAxis(5)->SetName("dEdx_{rec}");
  fTPCsignal->GetAxis(6)->SetName("dNdx_{mc}");

  fTPCsignalNorm->GetAxis(5)->SetTitle("dEdx_{rec}/dNdx_{mc}");
  fTPCsignalNorm->GetAxis(6)->SetTitle("dNdx_{mc}");
  fTPCsignalNorm->GetAxis(5)->SetName("dEdx_{rec}/dNdx_{mc}");
  fTPCsignalNorm->GetAxis(6)->SetName("dNdx_{mc}");
  new TCanvas("dEdx study");
}

void ResetRange(THnSparse* his){
  //
  // reset range to full
  for (Int_t idim=0;idim< his->GetNdimensions(); idim++){
    his->GetAxis(idim)->SetRange(0, his->GetAxis(idim)->GetNbins());
  }    
}

void SetRange(THnSparse*his, Float_t type0, Float_t type1, Float_t p0, Float_t p1, Float_t eta0, Float_t eta1, Int_t ncl0, Int_t ncl1, Float_t p60, Float_t p61){
  //
  //
  //
  ResetRange(his);
  selName=Form("pic/p%f_%f_eta_%f_%f_ncl_%d_%d_p6_%f_%f",p0,p1,eta0,eta1,ncl0,ncl1,p60,p61);
  his->GetAxis(0)->SetRangeUser(type0,type1);
  his->GetAxis(1)->SetRangeUser(p0,p1);
  his->GetAxis(2)->SetRangeUser(eta0,eta1);
  his->GetAxis(4)->SetRangeUser(ncl0,ncl1);
  his->GetAxis(6)->SetRangeUser(p60,p61);
  version++;
}




TH2F* GetProjection(THnSparse*his, Int_t i0, Int_t i1, Float_t type0, Float_t type1, Float_t p0, Float_t p1, Float_t eta0, Float_t eta1, Int_t ncl0, Int_t ncl1, Float_t p60, Float_t p61){

  SetRange(his,  type0, type1,   p0, p1,  eta0,eta1 ,   ncl0, ncl1,   p60,p61);
  TH2F * res = (TH2F*) his->Projection(i0,i1);
  res->SetXTitle(his->GetAxis(i1)->GetTitle());
  res->SetYTitle(his->GetAxis(i0)->GetTitle());
  return res;
}

TH1F* GetProjection(THnSparse*his, Int_t i0, Float_t type0, Float_t type1, Float_t p0, Float_t p1, Float_t eta0, Float_t eta1, Int_t ncl0, Int_t ncl1, Float_t p60, Float_t p61){

  SetRange(his,  type0, type1,   p0, p1,  eta0,eta1 ,   ncl0, ncl1,   p60,p61);
  TH1F * res = (TH1F*) his->Projection(i0);
  res->SetXTitle(his->GetAxis(i0)->GetTitle());
  return res;
}



void DrawSignalTypeBG(){
  //
  //
  //
  //
  TObjArray array;
  TH2F *hisdEdxBG_part[10];
  TH1  *hisdEdxBG_partProfile[10];
  //  TH1  *hisdEdxBG_partFit[10];
  for (Int_t ipart=0;ipart<10;ipart++){  
    fTPCsignal->GetAxis(0)->SetRange(1+ipart, 1+ipart);
    hisdEdxBG_part[ipart] = (TH2F*)fTPCsignal->Projection(5,3);
    if (!hisdEdxBG_part[ipart]) continue;
    hisdEdxBG_partProfile[ipart]=(TH1F*)(hisdEdxBG_part[ipart]->ProfileX(Form("SignalTypeBG_%d_%dProf",ipart,version)));
    //    hisdEdxBG_partProfile[ipart]->SetName(;
    hisdEdxBG_partProfile[ipart]->SetMaximum(3);
    hisdEdxBG_partProfile[ipart]->SetXTitle("#beta#gamma");
    hisdEdxBG_partProfile[ipart]->SetYTitle("dEdx/MIP");
    hisdEdxBG_partProfile[ipart]->Scale(1/fNorm);
    hisdEdxBG_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisdEdxBG_partProfile[ipart]->SetMarkerStyle(22+ipart);
    delete hisdEdxBG_part[ipart];
  }
  if (gPad) gPad->SetLogx(kTRUE);
  hisdEdxBG_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<10;ipart++)  {
    hisdEdxBG_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisdEdxBG_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"_hisdEdxBG.gif");
  gPad->SaveAs(selName+"_hisdEdxBG.eps");
}

void DrawSignalTypeMom(){
  //
  //
  //
  TObjArray array;
  TH2F *hisdEdxMom_part[10];
  TH1  *hisdEdxMom_partProfile[10];
  //  TH1  *hisdEdxMom_partFit[10];
  for (Int_t ipart=0;ipart<10;ipart++){  
    fTPCsignal->GetAxis(0)->SetRange(1+ipart, 1+ipart);
    hisdEdxMom_part[ipart] = (TH2F*)fTPCsignal->Projection(5,1);
    if (!hisdEdxMom_part[ipart]) continue;
    hisdEdxMom_partProfile[ipart]=(TH1F*)(hisdEdxMom_part[ipart]->ProfileX(Form("SignalTypeMom_%d_%dProf",ipart,version)));
    
    hisdEdxMom_partProfile[ipart]->SetMaximum(5);
    hisdEdxMom_partProfile[ipart]->SetMinimum(0);
    hisdEdxMom_partProfile[ipart]->SetXTitle("p (GeV/c)");
    hisdEdxMom_partProfile[ipart]->SetYTitle("dEdx/MIP");
    hisdEdxMom_partProfile[ipart]->Scale(1/fNorm);
    hisdEdxMom_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisdEdxMom_partProfile[ipart]->SetMarkerStyle(22+ipart);
    delete hisdEdxMom_part[ipart];
  } 
  if (gPad) gPad->SetLogx(kTRUE);
  hisdEdxMom_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<10;ipart++)  {
    hisdEdxMom_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisdEdxMom_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"_hisdEdxMom.gif");
  gPad->SaveAs(selName+"_hisdEdxMom.eps");
}


void DrawNormSignalTypeBG(){
  //
  //
  //
  //
  TObjArray array;
  TH2F *hisdEdxNormBG_part[10];
  TH1  *hisdEdxNormBG_partProfile[10];
  //  TH1  *hisdEdxNormBG_partFit[10];
  for (Int_t ipart=0;ipart<10;ipart++){  
    fTPCsignalNorm->GetAxis(0)->SetRange(1+ipart, 1+ipart);
    hisdEdxNormBG_part[ipart] = (TH2F*)fTPCsignalNorm->Projection(5,3);
    if (!hisdEdxNormBG_part[ipart]) continue;
    hisdEdxNormBG_partProfile[ipart]=(TH1F*)(hisdEdxNormBG_part[ipart]->ProfileX(Form("NormSignalTypeBG_%d_%dProf",ipart,version)));
    //    hisdEdxNormBG_partProfile[ipart]->SetName(;
    hisdEdxNormBG_partProfile[ipart]->SetMaximum(1.5);
    hisdEdxNormBG_partProfile[ipart]->SetMinimum(0.5);
    hisdEdxNormBG_partProfile[ipart]->SetXTitle("#beta#gamma");
    hisdEdxNormBG_partProfile[ipart]->SetYTitle("dEdx/MIP");
    hisdEdxNormBG_partProfile[ipart]->Scale(1/fNorm);
    hisdEdxNormBG_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisdEdxNormBG_partProfile[ipart]->SetMarkerStyle(22+ipart);
    delete hisdEdxNormBG_part[ipart];
  }
  if (gPad) gPad->SetLogx(kTRUE);
  hisdEdxNormBG_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<10;ipart++)  {
    hisdEdxNormBG_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisdEdxNormBG_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"_hisdEdxNormBG.gif");
  gPad->SaveAs(selName+"_hisdEdxNormBG.eps");    
}


void DrawNormSignalTypeMom(){
  //
  //
  //
  //
  //
  TObjArray array;
  TH2F *hisdEdxNormMom_part[10];
  TH1  *hisdEdxNormMom_partProfile[10];
  //  TH1  *hisdEdxNormMom_partFit[10];
  for (Int_t ipart=0;ipart<10;ipart++){  
    fTPCsignalNorm->GetAxis(0)->SetRange(1+ipart, 1+ipart);
    hisdEdxNormMom_part[ipart] = (TH2F*)fTPCsignalNorm->Projection(5,1);
    if (!hisdEdxNormMom_part[ipart]) continue;
    hisdEdxNormMom_partProfile[ipart]=(TH1F*)(hisdEdxNormMom_part[ipart]->ProfileX(Form("NormSignalTypeMom_%d_%dProf",ipart,version)));
    hisdEdxNormMom_partProfile[ipart]->Scale(1/fNorm);
    hisdEdxNormMom_partProfile[ipart]->SetMaximum(1.5);
    hisdEdxNormMom_partProfile[ipart]->SetMinimum(0.5);
    hisdEdxNormMom_partProfile[ipart]->SetXTitle("p (GeV/c)");
    hisdEdxNormMom_partProfile[ipart]->SetYTitle("dEdx_{rec}/dNdx_{mc}");
    hisdEdxNormMom_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisdEdxNormMom_partProfile[ipart]->SetMarkerStyle(22+ipart);
    delete hisdEdxNormMom_part[ipart];
  }
  if (gPad) gPad->SetLogx(kTRUE);
  hisdEdxNormMom_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<10;ipart++)  {
    hisdEdxNormMom_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisdEdxNormMom_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"_hisdEdxNormMom.gif");
  gPad->SaveAs(selName+"_hisdEdxNormMom.eps");  
}



void DrawNormSignalTypeBB(){
  //
  //
  //
  //
  //
  TObjArray array;
  TH2F *hisdEdxNormBG_part[10];
  TH1  *hisdEdxNormBG_partProfile[10];
  //  TH1  *hisdEdxNormBG_partFit[10];
  Double_t itypes[10];
  Double_t ival[10];
  Double_t ierr[10];
  for (Int_t ipart=0;ipart<10;ipart++){  
    fTPCsignalNorm->GetAxis(0)->SetRange(1+ipart, 1+ipart);
    hisdEdxNormBG_part[ipart] = (TH2F*)fTPCsignalNorm->Projection(5,6);
    if (!hisdEdxNormBG_part[ipart]) continue;
    hisdEdxNormBG_partProfile[ipart]=(TH1F*)(hisdEdxNormBG_part[ipart]->ProfileX(Form("NormSignalTypeBB_%d_%dProf",ipart,version)));
    hisdEdxNormBG_partProfile[ipart]->Scale(1/fNorm);
    hisdEdxNormBG_partProfile[ipart]->SetMaximum(1.5);
    hisdEdxNormBG_partProfile[ipart]->SetMinimum(0.9);
    hisdEdxNormBG_partProfile[ipart]->SetXTitle("dNdx_{mc}");
    hisdEdxNormBG_partProfile[ipart]->SetYTitle("dEdx_{rec}/dNdx_{mc}");
    hisdEdxNormBG_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisdEdxNormBG_partProfile[ipart]->SetMarkerStyle(22+ipart);
    itypes[ipart]=ipart;
    itypes[ipart]=0;
    itypes[ipart]=0;
    if (ipart%5!=0) {
      hisdEdxNormBG_partProfile[ipart]->Fit("pol1","q","",1,2);
      if (hisdEdxNormBG_partProfile[ipart]->GetFunction("pol1")){
	ival[ipart]= hisdEdxNormBG_partProfile[ipart]->GetFunction("pol1")->GetParameter(1);
	ierr[ipart]= hisdEdxNormBG_partProfile[ipart]->GetFunction("pol1")->GetParError(1);
      }
    }
    printf("%d\t\t%s%f\t%f\n",ipart,AliPID::ParticleName(ipart%5), ival[ipart], ierr[ipart]);
    delete hisdEdxNormBG_part[ipart];
  }
  if (gPad) gPad->SetLogx(kFALSE);
  hisdEdxNormBG_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<10;ipart++)  {
    hisdEdxNormBG_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisdEdxNormBG_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"_hisdEdxNormBG.gif");
  gPad->SaveAs(selName+"_hisdEdxNormBG.eps");  
}


void DrawPIDpt(){
  //
  //
  //
  //
  TObjArray array;
  TH2F *hisPIDMCRCSame_part[10];
  TH1  *hisPIDMCRCSame_partProfile[10];

  //  TH1  *hisPIDMCRCSame_partFit[10];
  for (Int_t ipart=0;ipart<5;ipart++){  
    fTPCr->GetAxis(0)->SetRange(1+ipart,1+ipart);
    fTPCr->GetAxis(6)->SetRange(1+ipart,1+ipart);
    hisPIDMCRCSame_part[ipart] = (TH2F*)fTPCr->Projection(5,1);
    if (!hisPIDMCRCSame_part[ipart]) continue;
    hisPIDMCRCSame_partProfile[ipart]=(hisPIDMCRCSame_part[ipart]->ProfileX(Form("PIDpt_%d_%dProf",ipart,version)));
    hisPIDMCRCSame_partProfile[ipart]->SetDirectory(0);
    hisPIDMCRCSame_partProfile[ipart]->SetMaximum(1.0);
    hisPIDMCRCSame_partProfile[ipart]->SetMinimum(0.0);
    hisPIDMCRCSame_partProfile[ipart]->SetXTitle("p (GeV/c)");
    hisPIDMCRCSame_partProfile[ipart]->SetYTitle("TPCr");
    hisPIDMCRCSame_partProfile[ipart]->SetMarkerColor(kmicolors[ipart%5]);
    hisPIDMCRCSame_partProfile[ipart]->SetMarkerStyle(22+ipart);
    delete hisPIDMCRCSame_part[ipart];
  }
  if (gPad) gPad->SetLogx(kTRUE);
  hisPIDMCRCSame_partProfile[0]->Draw("");
  TLegend * legend = new TLegend(.7,.7, .99, .99, "TPC dEdx");
  for (Int_t ipart=0;ipart<5;ipart++)  {
    hisPIDMCRCSame_partProfile[ipart]->Draw("same");
    legend->AddEntry(hisPIDMCRCSame_partProfile[ipart],AliPID::ParticleName(ipart%5),"p");
  }
  legend->Draw();
  gPad->SaveAs(selName+"pidPIDMCRCSame.gif");
  gPad->SaveAs(selName+"pidPIDMCRCSame.eps");    
}


/*


TObjArray arr;   
TH2F * his = (TH2F*) GetProjection(fTPCsignalNorm,5,1 , 7,7,   0.2,5,  -0.6,0.6,   130,160,0.5,1.3);
his->FitSlicesY(0,0,-1,0,"QNR",&arr)
  TH1F * hsigma = (TH1F*)arr.At(2);
TH1F * hmean = (TH1F*)arr.At(1);
hsigma->Divide(hmean);
hsigma->Scale(100);
hsigma->SetMaximum(10);
hsigma->SetMinimum(0.0);
hsigma->SetMarkerStyle(22);
hsigma->SetYTitle("#sigma_{dEdx}/dEdx (%)");
hsigma->Draw();
gPad->SaveAs("pic/resoldEdx_pt.eps");
gPad->SaveAs("pic/resoldEdx_pt.gif");


*/
/*
  TObjArray arr;   
  TH2F * his = (TH2F*) GetProjection(fTPCsignalNorm,5,2 , 7,7,   0.6,1,  -0.9,0.9,   0,160,0,1.3);
  his->FitSlicesY(0,0,-1,0,"QNR",&arr)
  TH1F * hsigma = (TH1F*)arr.At(2);
  TH1F * hmean = (TH1F*)arr.At(1);
  hsigma->Divide(hmean);
  hsigma->Scale(100);
  hsigma->SetMaximum(10);
  hsigma->SetMinimum(0.0);
  hsigma->SetMarkerStyle(22);
  hsigma->SetYTitle("#sigma_{dEdx}/dEdx (%)");
  hsigma->Draw();
  gPad->SaveAs("pic/resoldEdx_theta.eps");
  gPad->SaveAs("pic/resoldEdx_theta.gif");

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