ROOT logo
/*
  Formulas:

  z  = s* (z0 - vd*(t-t0))

  s  - side -1 and +1 
  t0 - time 0
  vd - nominal drift velocity
  zs - miscalibrated position

  zs = s*(z0 - vd*(1+vr)*(t-(t0+dt))
  vr  - relative change of the drift velocity
  dzt - vd*dt
  dr  = zz0-s*z
  ..
  ==>
  zs ~ z - s*vr*(z0-s*z)+s*dzt
  --------------------------------
  1. Correction function vr constant:


  dz = zs-z = -s*vr *(z0-s*z)+s*dzt         
  dzs/dl = dz/dl +s*s*vr*dz/dl 
  d(dz/dl) = vr*dz/dl 

*/


void Init(){

  gSystem->Load("libSTAT.so");
  TStatToolkit toolkit;
  Double_t chi2;
  TVectorD fitParam, fitParam1,fitParam2;
  TVectorD errParam, errParam1,errParam2;
  TMatrixD covMatrix,covMatrix1,covMatrix2;
  
  Int_t npoints;
  //
  TFile f("driftitsTPC.root");
  TTree * tree = (TTree*)f.Get("Test");
  tree->SetAlias("side","(-1+(pTPC.fP[1]>0)*2)");     //side
  tree->SetAlias("z","(pTPC.fP[1]+0.0)");     //z position
  tree->SetAlias("dr","(1-abs(pTPC.fP[1])/250.)");    //norm drift length
  tree->SetAlias("tl","(pTPC.fP[3]+pITS.fP[3])*0.5"); //tan lampbda
  tree->SetAlias("sa","sin(pTPC.fAlpha+0.)");         //sin alpha
  tree->SetAlias("ca","cos(pTPC.fAlpha+0.)");         //cos alpha
  
  tree->SetAlias("dz","(pTPC.fP[1]-pITS.fP[1])");      //z delta
  tree->SetAlias("dy","(pTPC.fP[0]-pITS.fP[0])");      //z delta
  tree->SetAlias("dtl","(pTPC.fP[3]-pITS.fP[3])");     //delta tan lampbda
  tree->SetAlias("etl","sqrt(pITS.fC[9]+0.)");         //error tan lampbda
  tree->SetAlias("ez","sqrt(pITS.fC[2]+0.)");          //error z
}



void InitCuts(){
  TCut cut0("abs(dy)<1&&abs(pTPC.fP[1])>10");
  //TCut cutOut="(side<0)"
  TCut cutA=cut0;
  TCut cut38009("run==38009");  // 524
  TCut cut38010("run==38010");  // 60
  TCut cut38286("run==38286");
  TCut cut38532("run==38532");
  TCut cut38576("run==38576");
  TCut cut38586("run==38586");
  TCut cut38591("run==38591");
  TCut cut45639("run==45639");
  TCut cut46993("run==46993");
  TCut cut47164("run==47164");
  TCut cut47175("run==47175");
  TCut cut47180("run==47180");
  TCut cut47274("run==47274");  
  TCut cutA = cut38591+cut0;
  TCut cut1 = "1";
  TCut cut2 = "1";
}

//
// variable array
//
npoints=0;
TVectorD vside;
TVectorD vz;
TVectorD vdr;
TVectorD vtl;
TVectorD vsa;
TVectorD vca;
TVectorD vdz;
TVectorD vdtl;
TVectorD vez;
TVectorD vetl;

TVectorD errors;


void FillVar(){
  //
  //
  npoints =tree->Draw("side",cutA+cut1+cut2);
  vside.ResizeTo(npoints);  vside.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("z",cutA+cut1+cut2);
  vz.ResizeTo(npoints);  vz.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("dr",cutA+cut1+cut2);
  vdr.ResizeTo(npoints);  vdr.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("tl",cutA+cut1+cut2);
  vtl.ResizeTo(npoints);  vtl.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("sa",cutA+cut1+cut2);
  vsa.ResizeTo(npoints);  vsa.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("ca",cutA+cut1+cut2);
  vca.ResizeTo(npoints);  vca.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("dz",cutA+cut1+cut2);
  vdz.ResizeTo(npoints);  vdz.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("dtl",cutA+cut1+cut2);
  vdtl.ResizeTo(npoints);  vdtl.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("ez",cutA+cut1+cut2);
  vez.ResizeTo(npoints);  vez.SetElements(tree->GetV1());
  //
  npoints =tree->Draw("etl*0.5",cutA+cut1+cut2);
  vetl.ResizeTo(npoints);  vetl.SetElements(tree->GetV1()); 
  //
  npoints = tree->Draw("run","run>0");
  Int_t *np=new Int_t[npoints]; for (Int_t i=0;i<npoints;i++) np[i]=tree->GetV1()[i];
  Int_t *nsort=new Int_t[npoints];
  Int_t nruns = toolkit.Freq(npoints,np,nsort,kTRUE); 
}


void FitI1(){
  //
  // Independent fit 1
  // 
  TString fstringTl1="";
  fstringTl1+="(side)++";
  fstringTl1+="(tl)++";
  fstringTl1+="side*(tl)++";  
  //
  //
  TString fstringZ1="";
  fstringZ1+="(side)++";
  fstringZ1+="(-side*(250.0-side*z))++";
  fstringZ1+="((250.-side*z))++";
  // systematic  shift
  fstringZ1+="sa++";   
  fstringZ1+="ca++";
  fstringZ1+="side*sa++";
  fstringZ1+="side*ca++";
  //
  TString *strTl1 = toolkit.FitPlane(tree,"dtl:etl",fstringTl1->Data(), cutA+cut1, chi2,npoints,fitParam,covMatrix);
  strTl1->Tokenize("+")->Print();
  printf("Tl1: Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
  tree->SetAlias("fitTl1",strTl1->Data());
  tree->Draw("dtl-fitTl1",cutA+cut1);
  //
  TString *strZ1 = toolkit.FitPlane(tree,"dz:ez",fstringZ1->Data(), cutA+cut1, chi2,npoints,fitParam,covMatrix);
  strZ1->Tokenize("+")->Print();
  printf("Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
  tree->SetAlias("fitZ1",strZ1->Data());
  tree->Draw("dz-fitZ1",cutA+cut1);
  cut1 =  "abs(dz-fitZ1)<2  && abs(dtl-fitTl1)<0.02";
}

void Fit2I(){
  //
  // Independent fit
  //
  TString fstringTl2="";
  fstringTl2+="(side)++";
  fstringTl2+="(tl)++";
  fstringTl2+="(side*tl)++";
  //
  fstringTl2+="(sa)++";
  fstringTl2+="(side*sa)++";
  fstringTl2+="(ca)++";
  fstringTl2+="(side*ca)++";
  //
  fstringTl2+="(sa*tl)++";
  fstringTl2+="(side*sa*tl)++";
  fstringTl2+="(ca*tl)++";
  fstringTl2+="(side*ca*tl)++";
  //
  //
  //
  //
  TString fstringZ2="";
  fstringZ2+="(side)++";
  fstringZ2+="(-side*(250.0-side*z))++";
  fstringZ2+="((250.-side*z))++";
  // systematic  shift
  fstringZ2+="sa++";   
  fstringZ2+="ca++";
  fstringZ2+="side*sa++";
  fstringZ2+="side*ca++";
  //

  TString *strTl2 = toolkit.FitPlane(tree,"dtl:etl",fstringTl2->Data(), cutA+cut1+cut2, chi2,npoints,fitParam,covMatrix);
  strTl2->Tokenize("+")->Print();
  printf("Tl2: Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
  tree->SetAlias("fitTl2",strTl2->Data());
  tree->Draw("dtl-fitTl2",cutA+cut1);
  //
  TString *strZ2 = toolkit.FitPlane(tree,"dz:ez",fstringZ2->Data(), cutA+cut1+cut2, chi2,npoints,fitParam,covMatrix);
  strZ2->Tokenize("+")->Print();
  printf("Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
  tree->SetAlias("fitZ2",strZ2->Data());
  tree->Draw("dz-fitZ2",cutA+cut1);
  cut2 =  "abs(dz-fitZ2)<2  && abs(dtl-fitTl2)<0.02"; 
}


void Fit1(){
  //
  //  
  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt         
  //  dzs/dl = dz/dl +s*s*vr*dz/dl 
  //  d(dz/dl) = vr*dz/dl 
  TLinearFitter fitter1(5, "hyp4");
  // parameters
  // 0 - P3   offset
  // 1 - P1   offset
  // 2 - vdr  factor
  //
  // 3 - side offset P3
  // 4 - side offset P1

  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt = [1] + [2]*(-s*(z0-s*z))+ [4]*s         
  //  d(dz/dl) = vr*dz/dl               = [0] + [2]*dz/dl        + [3]*s

  Double_t xxx[100];
  for (Int_t i=0;i<npoints;i++){
    for (Int_t jc =0;jc<10;jc++) xxx[jc]=0;
    // P1
    xxx[0] = 1;
    xxx[1] = -vside[i]*(250.0-vside[i]*vz[i]);
    xxx[3] = vside[i];
    fitter1.AddPoint(xxx,vdz[i],vez[i]);
    for (Int_t jc =0;jc<10;jc++) xxx[jc]=0;
    xxx[1] = vtl[i];
    xxx[2] = vside[i];
    fitter1.AddPoint(xxx,vdtl[i],vetl[i]);
  }
  fitter1.Eval();
  fitter1.GetParameters(fitParam1);  
  fitter1.GetErrors(errParam1);  
  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt = [1] + [2]*(-s*(z0-s*z))+ [4]*s         
  //  d(dz/dl) = vr*dz/dl               = [0] + [2]*dz/dl        + [3]*s

  TString fstrP1f1 ="";
  TString fstrP3f1 ="";
  fstrP1f1+=fitParam1[1];fstrP1f1+="-side*(250.0-side*z)*(";fstrP1f1+=fitParam1[2];
  fstrP1f1+=")+side*("; fstrP1f1+=fitParam1[4]; fstrP1f1+=")";
  //
  fstrP3f1+=fitParam1[0];fstrP3f1+="+tl*(";fstrP3f1+=fitParam1[2];
  fstrP3f1+=")+side*("; fstrP3f1+=fitParam1[3]; fstrP3f1+=")";
  //
  tree->SetAlias("fP1f1",fstrP1f1->Data());
  tree->SetAlias("fP3f1",fstrP3f1->Data());
  //
}



void Fit2(){
  //
  //  
  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt         
  //  dzs/dl = dz/dl +s*s*vr*dz/dl 
  //  d(dz/dl) = vr*dz/dl 
  TLinearFitter fitter2(7, "hyp6");
  // parameters
  // 0 - P3   offset
  // 1 - P1   offset
  // 2 - vdr  factor
  //
  // 3 - side offset P3
  // 4 - side offset P1
  //
  // 5 - vdr difference -A side - C side
  // 6 - vdr gradient   -sin(alpha)*tl dependence 


  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt = [1] + [2]*(-s*(z0-s*z))+ [4]*s +[5]* (-s*s*(z0-s*z))      
  //  dz+= [6]*(-s*(z0-s*z))*sa
  //    
  //  d(dz/dl) = vr*dz/dl               = [0] + [2]*dz/dl        + [3]*s +[5]* s*dz/dl
  //   d(dz/dl)+= [6]*dz/dl*sa
  Double_t xxx[100];
  for (Int_t i=0;i<npoints;i++){
    for (Int_t jc =0;jc<10;jc++) xxx[jc]=0;
    // P1
    xxx[0] = 1;
    xxx[1] = -vside[i]*(250.0-vside[i]*vz[i]);
    xxx[3] = vside[i];
    xxx[4] = -vside[i]*vside[i]*(250.0-vside[i]*vz[i]);
    xxx[5] = -vside[i]*(250.0-vside[i]*vz[i])*vsa[i];
    fitter2.AddPoint(xxx,vdz[i],vez[i]);
    //P3
    for (Int_t jc =0;jc<10;jc++) xxx[jc]=0;
    xxx[1] = vtl[i];
    xxx[2] = vside[i];
    xxx[4] = vside[i]*vtl[i];
    xxx[5] = vtl[i]*vsa[i];
    fitter2.AddPoint(xxx,vdtl[i],vetl[i]);
  }
  fitter2.Eval();
  fitter2.GetParameters(fitParam2);  
  fitter2.GetErrors(errParam2);
  //  dz = zs-z = -s*vr *(z0-s*z)+s*dzt = [1] + [2]*(-s*(z0-s*z))+ [4]*s +[5]* (-s*s*(z0-s*z))      
  //  dz+= [6]*(-s*(z0-s*z))*sa
  //    
  //  d(dz/dl) = vr*dz/dl               = [0] + [2]*dz/dl        + [3]*s +[5]* s*dz/dl
  //   d(dz/dl)+= [6]*dz/dl*sa


  TString fstrP1f2 ="";
  TString fstrP3f2 ="";
  fstrP1f2+=fitParam2[1];fstrP1f2+="-side*(250.0-side*z)*(";fstrP1f2+=fitParam2[2];
  fstrP1f2+=")+side*("; fstrP1f2+=fitParam2[4];
  fstrP1f2+=")-side*side*(250.0-side*z)*("; fstrP1f2+=fitParam2[5];
  fstrP1f2+=")-side*(250.0-side*z)*sa*tl*(";fstrP1f2+=fitParam2[6];fstrP1f2+=")";
  //
  fstrP3f2+=fitParam2[0];fstrP3f2+="+tl*(";fstrP3f2+=fitParam2[2];
  fstrP3f2+=")+side*("; fstrP3f2+=fitParam2[3];
  fstrP3f2+=")+side*tl*("; fstrP3f2+=fitParam2[5];
  fstrP3f2+=")*tl*sa*("; fstrP3f2+=fitParam2[6];fstrP3f2+=")";
 
  //
  tree->SetAlias("fP1f2",fstrP1f2->Data());
  tree->SetAlias("fP3f2",fstrP3f2->Data());
  //
}






















TString fstringP3="";
fstringP3+="tl++";
fstringP3+="sa++";
fstringP3+="ca++";
fstringP3+="side*tl++";
fstringP3+="side*sa++";
fstringP3+="side*ca++";

TString *strP3 = toolkit.FitPlane(tree,"dtl:etl",fstringP3->Data(), cutA+cut38009, chi2,npoints,fitParam,covMatrix);
strP3->Tokenize("+")->Print();
printf("Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
tree->SetAlias("fitP3",strP3->Data());
tree->Draw("dtl-fitP3",cut0+cut38009);



TString fstringP3="";
//
fstringP3+="side++";
fstringP3+="tl*(run<40000)++";
fstringP3+="tl*(abs(run-45600)<200)++";
fstringP3+="tl*(run>46000)++";
//
fstringP3+="sa++";
fstringP3+="ca++";
fstringP3+="sa*tl++";
fstringP3+="ca*tl++";
//
fstringP3+="side*tl++";
fstringP3+="side*sa++";
fstringP3+="side*ca++";
fstringP3+="side*sa*tl++";
fstringP3+="side*ca*tl++";



TString *strP3 = toolkit.FitPlane(tree,"dtl:etl",fstringP3->Data(), cutA, chi2,npoints,fitParam,covMatrix);
strP3->Tokenize("+")->Print();
printf("Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
tree->SetAlias("fitP3",strP3->Data());
tree->Draw("dtl-fitP3",cut0);



TString fstringP1="";
//
fstringP1+="side++";
fstringP1+="dr*(run<40000)++";
fstringP1+="dr*(abs(run-45600)<200)++";
fstringP1+="dr*(run>46000)++";
fstringP1+="side*dr*(run<40000)++";
fstringP1+="side*dr*(abs(run-45600)<200)++";
fstringP1+="side*dr*(run>46000)++";
//
fstringP1+="tl*(run<40000)++";
fstringP1+="tl*(abs(run-45600)<200)++";
fstringP1+="tl*(run>46000)++";
fstringP1+="side*tl*(run<40000)++";
fstringP1+="side*tl*(abs(run-45600)<200)++";
fstringP1+="side*tl*(run>46000)++";
//
fstringP1+="sa++";
fstringP1+="ca++";
fstringP1+="sa*tl++";
fstringP1+="ca*tl++";
//
fstringP1+="side*sa++";
fstringP1+="side*ca++";
fstringP1+="side*sa*tl++";
fstringP1+="side*ca*tl++";

TCut cuttl="abs(dtl-fitP3)<0.02"

TString *strP1 = toolkit.FitPlane(tree,"dz",fstringP1->Data(),cuttl+cutA, chi2,npoints,fitParam,covMatrix);
strP1->Tokenize("+")->Print();
printf("Chi2/npoints = %f\n",TMath::Sqrt(chi2/npoints));
tree->SetAlias("fitP1",strP1->Data());
tree->Draw("dz-fitP1",cuttl+cut0);

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