ROOT logo
 
/* 
   //
   // 0. Make a calibration
   // 1. Make a laser scan list
   //    e.g in TPC workscape 
   find `pwd`/*/laserMean.root >laserScan.txt
   // 2. Define a reference data 
   rrunA=84469/; for a in `cat laserScan.txt`; do echo `pwd`/$rrunA/laserMean.root; done >laserScanRefA.txt
   rrunC=84469; for a in `cat laserScan.txt`; do echo `pwd`/$rrunC/laserMean.root; done >laserScanRefC.txt
   rrun=84469; for a in `cat laserScan.txt`; do echo `pwd`/$rrun/laserMean.root; done >laserScanRef.txt
										  // 
   //
   .x ~/rootlogon.C
   gSystem->Load("libANALYSIS");
   gSystem->Load("libTPCcalib"); 
   gSystem->Load("libSTAT.so");

   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
   gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
   .L $ALICE_ROOT/TPC/CalibMacros/CalibLaserVscan.C+

   AliXRDPROOFtoolkit tool;
   chain = tool.MakeChainRandom("laserScan.txt","Mean",0,10200);
   chain->Lookup();
   chainRef = tool.MakeChain("laserScanRef.txt","Mean",0,10200);
   chain->AddFriend(chainRef,"R") 
   chainRefA = tool.MakeChain("laserScanRefA.txt","Mean",0,10200);
   chain->AddFriend(chainRefA,"RA") 
   chainRefC = tool.MakeChain("laserScanRefC.txt","Mean",0,10200);
   chain->AddFriend(chainRefC,"RC") 
   //
   // MakeMeanBundle();
   // SaveResult();   
   //
   ReadRunSetup();
   ReadResult();
   
   MakeAnalysisBeam();
   TFile fbundle("scanDeltaBeam.root");
   chain->Draw("mphi:GetValueBundle(id,1)","isOK&&GetValueBundle(id,0)>3&&LTr.fSide==0","")
*/

#include <fstream>
#include "TFile.h"
#include "TMatrixD.h"
#include "TVectorD.h"

#include "TChain.h"
#include "TCut.h"
#include "TH1F.h"
#include "TObjArray.h"
#include "TProfile.h"
#include "TCanvas.h"
#include "TH1F.h"
#include "TGraph.h"
#include "TF1.h"
#include "TTreeStream.h"
#include "TLegend.h"
#include "AliTPCLaserTrack.h"
#include "AliTPCcalibDB.h"
#include "TStatToolkit.h"


TMatrixD matrixP4Corr(7,2);       // P4 correction for P0 - y position and P2 -snp(phi)
TMatrixD matrixP2RMSIROC(7,5);    // rms of second derivative IROC 
TMatrixD matrixP2RMSOROC(7,5);    // rms of second derivative OROC
// indexes - beam rod
//           rod 5 means all rods
//
TMatrixD matrixMeanBundle(336,6); // mean position/delta per bundle
TMatrixD matrixRMSBundle(336,6);  // rms of distribution
// indexes:
// 0 - number of entries
// 1 - dy
// 2 - dphi
// 3 - dp4
// 4 - dy0
// 5 - p0:p4 slope
//
map<int,TVectorD*> mapRunVoltage;             // run to voltage
// run#  -0 ggA 1- ggC 2- coA 3-coC 4-skA 5-skC
map<int,int> mapRunVgg;           // run to gating grid voltage
map<int,int> mapRunVskirt;        // 
map<int,int> mapRunVcover;        // 
TArrayI runlist(10000);
//
TChain * chain=0;
TObjArray apic;
//
//
TCut tA="isOK&&RA.isOK";
TCut tC="isOK&&RC.isOK";
TCut cA="eY.fElements<0.01&&RA.eY.fElements<0.01&&X.fElements>10&&RA.X.fElements>10";
TCut cC="eY.fElements<0.01&&RA.eY.fElements<0.01&&X.fElements>10&&RA.X.fElements>10";




Double_t GetValueBundle(Int_t id, Int_t type){
  //
  //
  return matrixMeanBundle(id,type);
}

Double_t GetP4Corr(Int_t id, Int_t value){
  AliTPCLaserTrack *ltrack =(AliTPCLaserTrack *) AliTPCLaserTrack::GetTracks()->At(id);
  Int_t beam = ltrack->GetBeam();
  return matrixP4Corr(beam,value);
}

Double_t GetDyBundle(Int_t id){
  Double_t dy = matrixMeanBundle(id,4);
  Double_t dx = matrixMeanBundle(id,5);
  AliTPCLaserTrack *ltrack =(AliTPCLaserTrack *) AliTPCLaserTrack::GetTracks()->At(id);
  Double_t p2 = ltrack->GetParameter()[2];
  Double_t delta = dy+dx*p2;
  return delta;
}

Double_t GetRMSBundle(Int_t id, Int_t type){
  //
  //
  return matrixRMSBundle(id,type);
}
Int_t GetVoltage(Int_t run, Int_t type){
  //
  // Get the voltage
  // run#  -0 ggA 1- ggC 2- coA 3-coC 4-skA 5-skC
  TVectorD *runVoltage = mapRunVoltage[run];
  if (!runVoltage) return -1;
  return (*runVoltage)[type];
}



void SaveResult(){
  TFile f("laserData.root","recreate");
  matrixMeanBundle.Write("matrixMeanBundle");
  matrixRMSBundle.Write("matrixRMSBundle");
  matrixP4Corr.Write("matrixP4Corr");
  matrixP2RMSIROC.Write("matrixP2RMSIROC");
  matrixP2RMSOROC.Write("matrixP2RMSOROC");
  f.Close();
}
void ReadResult(){
  AliTPCLaserTrack::LoadTracks();
  TFile f("laserData.root");
  matrixMeanBundle.Read("matrixMeanBundle");
  matrixRMSBundle.Read("matrixRMSBundle");
  matrixP4Corr.Read("matrixP4Corr");
  matrixP2RMSIROC.Read("matrixP2RMSIROC");
  matrixP2RMSOROC.Read("matrixP2RMSOROC");
  f.Close();
}

void ReadRunSetup(){
  ifstream in;
  in.open("runSetup.txt");
  TString objfile;
  string line;
  TObjArray *arr = 0;
  Int_t counter=0;
  
  while(in.good()) {
    //in >> objfile;
    getline(in,line);
    objfile=line;
    printf("%s\n",objfile.Data());
    arr = objfile.Tokenize(" ");
    if (!arr) continue;
    if (arr->GetEntries()>=7){
      Int_t run = atoi(arr->At(0)->GetName()); 
      Int_t vcover = atoi(arr->At(0)->GetName()); 
      Int_t vskirt = atoi(arr->At(1)->GetName()); 
      Int_t vgg = atoi(arr->At(3)->GetName()); 
      TVectorD * vsetup = new TVectorD(6);
      for (Int_t iv=0; iv<6; iv++){
	(*vsetup)[iv] = atoi(arr->At(iv+1)->GetName());
      }
      mapRunVoltage[run]=vsetup;
      mapRunVgg[run]=vgg;
      mapRunVskirt[run]=vskirt;
      mapRunVcover[run]=vcover;
      runlist[counter]=run;
      counter++;
    }
    delete arr;    
  }
  runlist[counter]=-1;
}





void MakeAnalysisBeam(){
  //
  // 
  //
  TTreeSRedirector *pcstream = new TTreeSRedirector("scanDeltaBeam.root");
  TH1* phisP0=new TH1F("hhisP0","hhisP0",100,-5.,5.);
  TH1* phisP0X=new TH1F("hhisP0X","hhisP0X",100,-5.,5.);
  TH1* phisP2=new TH1F("hhisP2","hhisP2",100,-6,6);
  TH1* phisP4=new TH1F("hhisP4","hhisP4",100,-0.05,0.05);
  // second derivative
  TH1* phisP2IROC=new TH1F("hhisP2IROC","hhisPIROC",100,-2.,2.);
  TH1* phisP2OROC=new TH1F("hhisP2OROC","hhisPOROC",100,-2.,2.);
  //
  //
  //
  for (Int_t iside=0;iside<2;iside++){
    for (Int_t ibeam=0; ibeam<8; ibeam++){
      for (Int_t irun=0; irun<100; irun++){
	Int_t run =runlist[irun]; 
	if (run==-1) break;
	if (run==0) continue;
	Int_t vskirt = GetVoltage(run,1); 
	Int_t vcover = GetVoltage(run,2); 
	Int_t vgg    = GetVoltage(run,0); 
	//
	TCut cut = Form("isOK&&GetValueBundle(id,0)>3&&LTr.fSide==%d&&LTr.fBeam==%d&&run==%d", iside, ibeam,run);
	if (ibeam==7){
	  cut = Form("isOK&&GetValueBundle(id,0)>3&&LTr.fSide==%d&&run==%d", iside,run);
	}
	Int_t entries = chain->Draw("gp41-GetValueBundle(id,3)>>hhisP4",cut,"goff");	
	if (entries==0) continue;
	chain->Draw("10*(mphi-GetValueBundle(id,1)-GetP4Corr(id,0)*gp41)>>hhisP0",cut,"goff");
	chain->Draw("10*(mphi-GetDyBundle(id)-GetP4Corr(id,0)*gp41)>>hhisP0X",cut,"goff");
	chain->Draw("1000*(mphiP-GetValueBundle(id,2)-GetP4Corr(id,1)*gp41)>>hhisP2",cut,"goff");
	//
	printf("%d\t%d\t%d\t%f\t%f\t%d\n", iside, ibeam,run, phisP0X->GetMean(), phisP0X->GetRMS(), Int_t(phisP0X->GetEntries()));
	//
	chain->Draw("10*(mphi-GetValueBundle(id,1)-GetP4Corr(id,0)*gp41)>>hhisP0",cut,"goff");
	//
	chain->Draw("mPy2vP2In*100^2>>hhisP2IROC",cut,"goff");
	chain->Draw("mPy2vP2Out*100^2>>hhisP2OROC",cut,"goff");
	//
	//
	Double_t mp0  = phisP0->GetMean();
	Double_t mp0X = phisP0X->GetMean();
	Double_t mp2  = phisP2->GetMean();
	Double_t mp4  = phisP4->GetMean();
	Double_t mp2I = phisP2IROC->GetMean();
	Double_t mp2O = phisP2OROC->GetMean();
	Double_t sp0  = phisP0->GetRMS();
	Double_t sp0X = phisP0X->GetRMS();
	Double_t sp2  = phisP2->GetRMS();
	Double_t sp4  = phisP4->GetRMS();	  
	Double_t sp2I = phisP2IROC->GetRMS();
	Double_t sp2O = phisP2OROC->GetRMS();
	(*pcstream)<<"vScanBeam"<<
	  "side="<<iside<<
	  "run="<<run<<
	  "ibeam="<<ibeam<<
	  "vgg="<<vgg<<
	  "vskirt="<<vskirt<<
	  "vcover="<<vcover<<
	  "entries="<<entries<<
	  "mp0="<<mp0<<
	  "mp0X="<<mp0X<<
	  "mp2="<<mp2<<
	  "mp4="<<mp4<<
	  "mp2I="<<mp2I<<
	  "mp2O="<<mp2O<<
	  "sp0="<<sp0<<
	  "sp0X="<<sp0X<<
	  "sp2="<<sp2<<
	  "sp4="<<sp4<<
	  "sp2I="<<sp2I<<
	  "sp2O="<<sp2O<<
	  "\n";	
      }
    }
  }
  delete pcstream;
}




void MakeMeanBundle(){  
  //
  // 
  //
  AliTPCLaserTrack::LoadTracks();
  AliTPCLaserTrack *ltrack;
  TF1 * fp1 = 0;
  TCut ccut;
  TH1F * phisP0 = 0;
  TH1F * phisP2 = 0;
  TH1F * phisP4 = 0;
  //
  // get p4 corr
  //  
  for (Int_t ibeam=0; ibeam<7; ibeam++){
    Int_t entries0=chain->Draw("mphi:gp41",Form("isOK&&LTr.fBeam==%d",ibeam));
    TGraph gr0(entries0,chain->GetV2(),chain->GetV1());
    gr0.Draw();
    gr0.Fit("pol1","Q","Q");
    fp1 = gr0.GetFunction("pol1");
    matrixP4Corr(ibeam,0)=fp1->GetParameter(1);
    Int_t entries2=chain->Draw("mphiP:gp41",Form("isOK&&LTr.fBeam==%d",ibeam));
    TGraph gr2(entries2,chain->GetV2(),chain->GetV1());
    gr2.Draw();
    gr2.Fit("pol1","Q","Q");
    fp1 = gr2.GetFunction("pol1");
    matrixP4Corr(ibeam,1)=fp1->GetParameter(1);
  }
  //
  // get RMS of second derivative
  //
  phisP0= new TH1F("hisP0","hisP0",500,-1.,1.);
  for (Int_t irod=0; irod<5;irod++)
    for (Int_t ibeam=0; ibeam<7; ibeam++){
      //
      TCut cut=Form("isOK&&LTr.fBeam==%d&&LTr.fRod==%d",ibeam,irod);
      if (irod==5) cut=Form("isOK&&LTr.fBeam==%d",ibeam);
      chain->Draw("mPy2vP2In*100^2>>hisP0",cut);
      matrixP2RMSIROC(ibeam,irod) = phisP0->GetRMS();
      chain->Draw("mPy2vP2Out*100^2>>hisP0",cut);
      matrixP2RMSOROC(ibeam,irod) = phisP0->GetRMS();
  }
  delete phisP0;

  //
  // Get mean bundle position
  //
  for (Int_t id=0; id<336; id+=7){
    ltrack =(AliTPCLaserTrack *) AliTPCLaserTrack::GetTracks()->At(id);
    Int_t side   = ltrack->GetSide();
    Int_t rod    = ltrack->GetRod();
    Int_t bundle = ltrack->GetBundle();
    //    Int_t beam   = ltrack->GetBeam();
    ccut = Form("isOK&&LTr.fSide==%d&&LTr.fBundle==%d&&LTr.fRod==%d",side,bundle,rod);
    phisP0= new TH1F("hisP0","hisP0",500,-0.5,0.5);
    phisP2= new TH1F("hisP2","hisP2",500,-0.02,0.02);
    phisP4= new TH1F("hisP4","hisP4",500,-0.2,0.2);
    Int_t entries =chain->Draw("mphi",Form("isOK&&id==%d",id),"goff");
    chain->Draw("mphi-GetP4Corr(id,0)*gp41>>hisP0",ccut,"");
    chain->Draw("mphiP-GetP4Corr(id,1)*gp41>>hisP2",ccut,"");
    chain->Draw("gp41>>hisP4",ccut,"");
    Int_t entriesG =chain->Draw("mphi-GetP4Corr(id,0)*gp41:tan(asin(LTr.fP[2]))",ccut,"");
    if (entriesG<3) continue;
    TGraph gr(entriesG,chain->GetV2(),chain->GetV1());
    gr.Draw();
    gr.Fit("pol1","Q","Q");
    fp1 = gr.GetFunction("pol1");
    for (Int_t id2=0;id2<6; id2++){
      Int_t jd = id+id2;
      matrixMeanBundle(jd,0) = entries;
      matrixMeanBundle(jd,1) =phisP0->GetMean();
      matrixRMSBundle(jd,1) =phisP0->GetRMS();
      matrixMeanBundle(jd,2) =phisP2->GetMean();
      matrixRMSBundle(jd,2) =phisP2->GetRMS();
      matrixMeanBundle(jd,3) =phisP4->GetMean();
      matrixRMSBundle(jd,3) =phisP4->GetRMS();
      matrixMeanBundle(jd,4) = fp1->GetParameter(0);  // delta y
      matrixMeanBundle(jd,5) = fp1->GetParameter(1);  // delta x
    }
    //
    printf("%d\t%d\t%f\t%f\t%f\t%f\t%f\n",id,entries,matrixMeanBundle(id,1),matrixMeanBundle(id,2),matrixMeanBundle(id,3),matrixMeanBundle(id,4),matrixMeanBundle(id,5));
    printf("%d\t%d\t%f\t%f\t%f\n",id,entries,matrixRMSBundle(id,1),matrixRMSBundle(id,2),matrixRMSBundle(id,3));
    delete phisP0;
    delete phisP2;
    delete phisP4;
  }
}








void MakeGraphsdY(){
  //
  // Make delta Y pictures from voltage scan
  //
  TObjArray *aprofY = new TObjArray(14);
  for (Int_t ib=0;ib<14;ib++){
    TProfile *profY = new TProfile("py","py",100,0,150);
    chain->Draw("10*(mphi-GetValueBundle(id,1)):bz>>py",Form("isOK&&GetValueBundle(id,0)>3&&LTr.fSide==%d&&LTr.fBeam==%d",ib/7,ib%7),"prof");
    profY->SetName(Form("#DeltaY side %d beam %d",ib/7,ib%7));
    profY->SetTitle(Form("#DeltaY side %d beam %d",ib/7,ib%7));
    aprofY->AddAt(profY,ib);
    profY->SetMaximum(2.5);
    profY->SetMinimum(-2.5);
    profY->SetMarkerColor((ib%7)+1);
    profY->SetMarkerStyle((ib%7)+22);
    profY->SetMarkerSize(1.2);
    profY->SetXTitle("U_{gg} (V)");
    profY->SetYTitle("#Delta_{y} (mm)");
    profY->Fit("pol1");
  }
  TCanvas *cY = new TCanvas("deltaY","deltaY",900,600);
  cY->Divide(5,3);
  cY->Draw();
  {
    for (Int_t ib=0;ib<14;ib++){
      cY->cd(ib+1);   
      aprofY->At(ib)->Draw("p"); 
    }
  }
  cY->SaveAs("pic/deltaYlaserVscna.eps");
  cY->SaveAs("pic/deltaYlaserVscna.gif");
  apic.AddLast(cY);
}

void MakeGraphsdP2(){
  //
  // Make delta Y pictures from voltage scan
  //
  TObjArray *aprofP2 = new TObjArray(14);
  for (Int_t ib=0;ib<14;ib++){
    TProfile *profP2 = new TProfile("pyP","pyP",100,0,150);
    chain->Draw("(mphiP-GetValueBundle(id,2)):bz>>pyP",Form("isOK&&GetValueBundle(id,0)>3&&LTr.fSide==%d&&LTr.fBeam==%d",ib/7,ib%7),"prof");
    profP2->SetName(Form("#Delta_{#phi} side %d beam %d",ib/7,ib%7));
    profP2->SetTitle(Form("#Delta_{#phi} side %d beam %d",ib/7,ib%7));
    aprofP2->AddAt(profP2,ib);
    profP2->SetMaximum(0.005);
    profP2->SetMinimum(-0.005);
    profP2->SetMarkerColor((ib%7)+1);
    profP2->SetMarkerStyle((ib%7)+22);
    profP2->SetMarkerSize(1.2);
    profP2->SetXTitle("U_{gg} (V)");
    profP2->SetYTitle("#Delta_{#phi}");
    profP2->Fit("pol1");
  }
  TCanvas *cP2 = new TCanvas("deltaP2","deltaP2",900,600);
  cP2->Divide(5,3);
  cP2->Draw();
  {
    for (Int_t ib=0;ib<14;ib++){
      cP2->cd(ib+1);   
      aprofP2->At(ib)->Draw("p"); 
    }
  }
  cP2->SaveAs("pic/deltaP2laserVscna.eps");
  cP2->SaveAs("pic/deltaP2laserVscna.gif");
  apic.AddLast(cP2);
}




void MakeGraphsP4(){
  //
  // Make delta Y pictures from voltage scan
  //
  TObjArray *aprofP4 = new TObjArray(14);
  for (Int_t ib=0;ib<14;ib++){
    TProfile *profP4 = new TProfile("pp4","pp4",100,0,150);
    chain->Draw("(gp41-GetValueBundle(id,3)):bz>>pp4",Form("isOK&&GetValueBundle(id,0)>3&&LTr.fSide==%d&&LTr.fBeam==%d",ib/7,ib%7),"prof");
    profP4->SetName(Form("1/p_{t} side %d beam %d",ib/7,ib%7));
    profP4->SetTitle(Form("1/p_{t} side %d beam %d",ib/7,ib%7));
    aprofP4->AddAt(profP4,ib);
    profP4->SetMaximum(0.025);
    profP4->SetMinimum(-0.025);
    profP4->SetMarkerColor((ib%7)+1);
    profP4->SetMarkerStyle((ib%7)+22);
    profP4->SetMarkerSize(1.2);
    profP4->SetXTitle("U_{gg} (V)");
    profP4->SetYTitle("1/p_{t} (GeV/c)");
    profP4->Fit("pol1");
  }
  TCanvas *cY = new TCanvas("P4","P4",900,600);
  cY->Divide(5,3);
  cY->Draw();
  {
    for (Int_t ib=0;ib<14;ib++){
      cY->cd(ib+1);   
      aprofP4->At(ib)->Draw("p"); 
    }
  }
  cY->SaveAs("pic/m1ptlaserVscna.eps");
  cY->SaveAs("pic/m1ptlaserVscna.gif");
  apic.AddLast(cY);
}


void MakePlotsP2GG(TCut ucut){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("10*sp2I/4:vgg","ibeam==7&&side==0"+ucut,"");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vgg","ibeam==7&&side==0"+ucut,"");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2I/4:vgg","ibeam==7&&side==1"+ucut,"");
  graph[2]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vgg","ibeam==7&&side==1"+ucut,"");
  graph[3]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<4; i++){
    graph[i]->GetXaxis()->SetTitle("U_{gg} (V)");
    graph[i]->GetYaxis()->SetTitle("Sagita (mm)");
    graph[i]->SetMinimum(0);
    graph[i]->SetMaximum(2.5);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan - Sagita on 50 cm");
  legend->AddEntry(graph[0],"IROC A side");
  legend->AddEntry(graph[1],"OROC A side");
  legend->AddEntry(graph[2],"IROC C side");
  legend->AddEntry(graph[3],"OROC C side");
  legend->Draw();
  gPad->SaveAs("pic/scansagita_Vgg.eps");
  gPad->SaveAs("pic/scansagita_Vgg.gif");
}





void MakePlotsP2Cover(TCut ucut){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("10*sp2I/4:vcover","ibeam==7&&side==0"+ucut,"");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vcover","ibeam==7&&side==0"+ucut,"");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2I/4:vcover","ibeam==7&&side==1"+ucut,"");
  graph[2]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vcover","ibeam==7&&side==1"+ucut,"");
  graph[3]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<4; i++){
    graph[i]->GetXaxis()->SetTitle("U_{cover} (V)");
    graph[i]->GetYaxis()->SetTitle("Sagita (mm)");
    graph[i]->SetMinimum(0.25);
    graph[i]->SetMaximum(0.7);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan - Sagita on 50 cm");
  legend->AddEntry(graph[0],"IROC A side");
  legend->AddEntry(graph[1],"OROC A side");
  legend->AddEntry(graph[2],"IROC C side");
  legend->AddEntry(graph[3],"OROC C side");
  legend->Draw();
  gPad->SaveAs("pic/scansagita_Cover.eps");
  gPad->SaveAs("pic/scansagita_Cover.gif");
}

void MakePlotsP2Skirt(TCut ucut){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("10*sp2I/4:vskirt","ibeam==7&&side==0"+ucut,"");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vskirt","ibeam==7&&side==0"+ucut,"");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2I/4:vskirt","ibeam==7&&side==1"+ucut,"");
  graph[2]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("10*sp2O/4:vskirt","ibeam==7&&side==1"+ucut,"");
  graph[3]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<4; i++){
    graph[i]->GetXaxis()->SetTitle("U_{skirt} (V)");
    graph[i]->GetYaxis()->SetTitle("Sagita (mm)");
    graph[i]->SetMinimum(0.25);
    graph[i]->SetMaximum(0.7);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan - Sagita on 50 cm");
  legend->AddEntry(graph[0],"IROC A side");
  legend->AddEntry(graph[1],"OROC A side");
  legend->AddEntry(graph[2],"IROC C side");
  legend->AddEntry(graph[3],"OROC C side");
  legend->Draw();
  gPad->SaveAs("pic/scansagita_Skirt.eps");
  gPad->SaveAs("pic/scansagita_Skirt.gif");
}




void MakePlotsdYGG(){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("sp0X:vgg","ibeam==7&&side==0","");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("sp0X:vgg","ibeam==7&&side==1","");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<2; i++){
    graph[i]->GetXaxis()->SetTitle("U_{gg} (V)");
    graph[i]->GetYaxis()->SetTitle("#sigma_{r#phi} (mm)");
    graph[i]->SetMinimum(0);
    graph[i]->SetMaximum(1);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan-#sigma_{r#phi}");
  legend->AddEntry(graph[0],"A side");
  legend->AddEntry(graph[1],"C side");
  legend->Draw();
  gPad->SaveAs("pic/scandy_Vgg.eps");
  gPad->SaveAs("pic/scandy_Vgg.gif");
}


void MakePlotsdYCover(TCut ucut){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("sp0X:vcover","ibeam==7&&side==0"+ucut,"");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("sp0X:vcover","ibeam==7&&side==1"+ucut,"");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<2; i++){
    graph[i]->GetXaxis()->SetTitle("U_{cover} (V)");
    graph[i]->GetYaxis()->SetTitle("#sigma_{r#phi} (mm)");
    graph[i]->SetMinimum(0);
    graph[i]->SetMaximum(0.75);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan-#sigma_{r#phi}");
  legend->AddEntry(graph[0],"A side");
  legend->AddEntry(graph[1],"C side");
  legend->Draw();
  gPad->SaveAs("pic/scandy_Vcover.eps");
  gPad->SaveAs("pic/scandy_Vcover.gif");
}

void MakePlotsdYSkirt(TCut ucut){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  TGraph *graph[4];
  Int_t  mstyle[4]={22,23,24,25};
  Int_t  mcolor[4]={2,3,4,6};
  Int_t entries=0;
  entries = treeScan->Draw("sp0X:vskirt","ibeam==7&&side==0"+ucut,"");
  graph[0]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  entries = treeScan->Draw("sp0X:vskirt","ibeam==7&&side==1"+ucut,"");
  graph[1]= new TGraph(entries, treeScan->GetV2(), treeScan->GetV1());
  
  for (Int_t i=0; i<2; i++){
    graph[i]->GetXaxis()->SetTitle("U_{skirt} (V)");
    graph[i]->GetYaxis()->SetTitle("#sigma_{r#phi} (mm)");
    graph[i]->SetMinimum(0);
    graph[i]->SetMaximum(0.75);
    graph[i]->SetMarkerStyle(mstyle[i]);
    graph[i]->SetMarkerSize(1);
    graph[i]->SetMarkerColor(mcolor[i]);
    if (i==0) graph[i]->Draw("ap");
    graph[i]->Draw("p");
  }
  TLegend *legend = new TLegend(0.45,0.70,0.9,0.9, "Voltage scan-#sigma_{r#phi}");
  legend->AddEntry(graph[0],"A side");
  legend->AddEntry(graph[1],"C side");
  legend->Draw();
  gPad->SaveAs("pic/scandy_Vskirt.eps");
  gPad->SaveAs("pic/scandy_Vskirt.gif");
}



void GetOptimalSetting(){
  //
  //
  //
  TFile fbundle("scanDeltaBeam.root");
  TTree * treeScan = (TTree*)fbundle.Get("vScanBeam");
  //
  Float_t meansp0X=0;
  Float_t meansp2I=0;
  Float_t meansp2O=0; 
  TH1F * his = new TH1F("hisDelta","hisDelta",300,0,1);
  treeScan->Draw("sp0X>>hisDelta","ibeam==7","");
  meansp0X = his->GetMean();
  treeScan->Draw("sp2I>>hisDelta","ibeam==7","");
  meansp2I = his->GetMean();
  treeScan->Draw("sp2O>>hisDelta","ibeam==7","");
  meansp2O = his->GetMean();
  //
  //
  //
  Int_t indexes[10000];
  for (Int_t iside=0;iside<2;iside++){
    printf("*************************************\n");
    printf("Side%d\tRun\tchi2\t\tVgg\tVskirt\tVcover\n",iside);

    Int_t entries  =  treeScan->Draw(Form("sp0X/%f+sp2I/%f+sp2O/%f:run",meansp0X,meansp2I,meansp2O),Form("ibeam==7&&side==%d",iside));
    TMath::Sort(entries,treeScan->GetV1(),indexes,kFALSE);
    for (Int_t i=0; i<entries; i++){
      Int_t index = indexes[i];
      Int_t run   = treeScan->GetV2()[index];
      Float_t chi2=treeScan->GetV1()[index];
      Float_t vgg = 
	printf("%d\t%d\t%f\t%d\t%d\t%d\n",iside,run, chi2,GetVoltage(run,0), GetVoltage(run,1),GetVoltage(run,2));
    }
  }

   for (Int_t iside=0;iside<2;iside++){
    printf("***********************\n");
    printf("Side%d\tRun\tchi2\t\tVgg\tVskirt\tVcover\n",iside);

    Int_t entries  =  treeScan->Draw(Form("sp2I/%f+sp2O/%f:run",meansp0X,meansp2I,meansp2O),Form("ibeam==7&&side==%d",iside));
    TMath::Sort(entries,treeScan->GetV1(),indexes,kFALSE);
    for (Int_t i=0; i<entries; i++){
      Int_t index = indexes[i];
      Int_t run   = treeScan->GetV2()[index];
      Float_t chi2=treeScan->GetV1()[index];
      Float_t vgg = 
	printf("%d\t%d\t%f\t%d\t%d\t%d\n",iside,run, chi2,GetVoltage(run,0), GetVoltage(run,1),GetVoltage(run,2));
    }
  }
}




void MakeAliases(){
  //
  // use table
  //
  chain->SetAlias("VggA","GetVoltage(run,0)");
  chain->SetAlias("VggC","GetVoltage(run,1)");
  chain->SetAlias("VcoA","GetVoltage(run,2)");
  chain->SetAlias("VcoC","GetVoltage(run,3)");
  chain->SetAlias("VskA","GetVoltage(run,4)");
  chain->SetAlias("VskC","GetVoltage(run,5)");
  //
  // cuts
  //
  chain->SetAlias("TisOK","mdEdx>5&&entries>400");
  chain->SetAlias("CisOK","nCl.fElements>entries*0.5&&eY.fElements<0.01");
  chain->SetAlias("ATisOK","RA.mdEdx>5&&RA.entries>400");
  chain->SetAlias("ACisOK","RA.nCl.fElements>RA.entries*0.5&&abs(RA.dY.fElements-dY.fElements)<0.3&&RA.eY.fElements<0.01");
  //
  // shortcuts
  //
  chain->SetAlias("lX","X.fElements");   //
  chain->SetAlias("tY","kY.fElements");   //
  chain->SetAlias("dE","sign(Y.fElements)*(tan(10*pi/180.)*X.fElements-abs(Y.fElements))");
  chain->SetAlias("RdY","(dY.fElements-RA.dY.fElements)");
  
  chain->SetAlias("dIF","lX-85.2");
  chain->SetAlias("dOF","245.8-lX");
  chain->SetAlias("dUtY","((GetVoltage(run,0)-GetVoltage(RA.run,0))/400.*tY)");
  //
  chain->SetAlias("cIF","dUtY/(1+dIF/13.0)");
  chain->SetAlias("cOF","dUtY/(1+dOF/22.0)");
  chain->SetAlias("cIF2","(dUtY*dIF/13.0)/((1.+dIF/13.0)^2)");
  chain->SetAlias("cOF2","(dUtY*dOF/22.0)/((1.+dOF/22.0)^2)");

  chain->SetAlias("cE","(GetVoltage(run,0)-GetVoltage(RA.run,0))/400.*sign(dE)/(1+(abs(dE)-1.55)/1.4)");
  chain->SetAlias("cE2","(GetVoltage(run,0)-GetVoltage(RA.run,0))/400.*sign(dE)*((abs(dE)-1.55)/1.4)/((1+(abs(dE)-1.55)/1.4)^2)");
}



void MakeAliasesBoth(){
  //
  // cuts - slect good tracks
  //
  chain->SetAlias("TisOK","mdEdx>5&&entries>400");
  chain->SetAlias("ATisOK","(LTr.fSide==0)*(RA.mdEdx>5&&RA.entries>500)");
  chain->SetAlias("CTisOK","(LTr.fSide==1)*(RC.mdEdx>5&&RC.entries>500)");
  //
  chain->Draw(">>run","TisOK&&(ATisOK||CTisOK)","entryList");
  TEntryList *elist = (TEntryList*)gDirectory->Get("run");
  chain->SetEntryList(elist);
  //
  //
  chain->SetAlias("CisOK","(nCl.fElements>entries*0.5&&eY.fElements<0.01)");
  chain->SetAlias("ACisOK","RA.nCl.fElements>RA.entries*0.5&&abs(RA.dY.fElements-dY.fElements)<0.3&&RA.eY.fElements<0.01");
  chain->SetAlias("CCisOK","RC.nCl.fElements>RC.entries*0.5&&abs(RC.dY.fElements-dY.fElements)<0.3&&abs(RC.dZ.fElements-dZ.fElements)<0.3&&RC.eY.fElements<0.01");


  //
  // voltage table
  //
  chain->SetAlias("Vgg","((LTr.fSide==0)*GetVoltage(run,0)+(LTr.fSide==1)*GetVoltage(run,1))");
  chain->SetAlias("VcoA","((LTr.fSide==0)*GetVoltage(run,2)+(LTr.fSide==1)*GetVoltage(run,3))");
  chain->SetAlias("VskA","((LTr.fSide==0)*GetVoltage(run,4)+(LTr.fSide==1)*GetVoltage(run,5))");
  
  chain->SetAlias("dVgg","(((LTr.fSide==0)*(GetVoltage(run,0)-GetVoltage(RA.run,0))+((LTr.fSide==0)*(GetVoltage(run,0)-GetVoltage(RA.run,0))))/400.)");
  //
  // shortcuts
  //
  chain->SetAlias("RdY","((LTr.fSide==0)*(dY.fElements-RA.dY.fElements)+(LTr.fSide==1)*(dY.fElements-RC.dY.fElements))");

  chain->SetAlias("drift","(1.-abs(LTr.fP[1]+0.)/250)");
  chain->SetAlias("lX","X.fElements");   //
  chain->SetAlias("tY","kY.fElements");   //
  chain->SetAlias("dE","sign(Y.fElements)*(tan(10*pi/180.)*X.fElements-abs(Y.fElements))");
  
  chain->SetAlias("dIF","lX-85.2");
  chain->SetAlias("dOF","245.8-lX");
  chain->SetAlias("dUtY","dVgg*tY");
  //
  //
  //
  chain->SetAlias("cIF","dUtY/(1+dIF/13.0)");
  chain->SetAlias("cOF","dUtY/(1+dOF/22.0)");
  chain->SetAlias("cIF2","(dUtY*dIF/13.0)/((1.+dIF/13.0)^2)");
  chain->SetAlias("cOF2","(dUtY*dOF/22.0)/((1.+dOF/22.0)^2)");

  chain->SetAlias("cE","dVgg*sign(dE)/(1+(abs(dE)-1.5)/1.3)");
  chain->SetAlias("cE2","dVgg*sign(dE)*((abs(dE)-1.5)/1.3)/((1+(abs(dE)-1.5)/1.3)^2)");

}
  



void MakeFit(){

  Int_t  ntracks=3000000;
  TStatToolkit toolkit;
  Double_t chi2=0;
  Int_t    npoints=0;
  TVectorD fitParam;
  TMatrixD covMatrix;
  TString fstring="";
  fstring+="cIF++";
  fstring+="cIF2++";
  fstring+="cOF++";
  fstring+="cOF2++";
  fstring+="cE++";
  fstring+="cE2++";
  TCut cutA="LTr.fBeam>-1&&CisOK&&(ACisOK||CCisOK)";

  TString * strA = TStatToolkit::FitPlane(chain,"RdY", fstring.Data(),cutA, chi2,npoints,fitParam,covMatrix,-1.,0, ntracks);
  chain->SetAlias("fdY",strA->Data());
  
  printf("sqrt(Chi2/npoints)=%f\n",TMath::Sqrt(chi2/npoints));
  chain->Draw("RdY-fdY",cutA);
  

  TF1 fe("fe","[0]/(1+(x-[2])/[1])",2,10);
  fe.SetParameters(0.4,1,1.5);
  

}


   
//Examples:
// chain->Draw("RdY:(GetVoltage(run,0)-GetVoltage(RA.run,0))*tY/(1+dIF/10.)","TisOK&&ATisOK&&CisOK&&ACisOK&&LTr.fBundle>0&&LTr.fBeam!=3&&dIF<30","",10000) 




 CalibLaserVscan.C:1
 CalibLaserVscan.C:2
 CalibLaserVscan.C:3
 CalibLaserVscan.C:4
 CalibLaserVscan.C:5
 CalibLaserVscan.C:6
 CalibLaserVscan.C:7
 CalibLaserVscan.C:8
 CalibLaserVscan.C:9
 CalibLaserVscan.C:10
 CalibLaserVscan.C:11
 CalibLaserVscan.C:12
 CalibLaserVscan.C:13
 CalibLaserVscan.C:14
 CalibLaserVscan.C:15
 CalibLaserVscan.C:16
 CalibLaserVscan.C:17
 CalibLaserVscan.C:18
 CalibLaserVscan.C:19
 CalibLaserVscan.C:20
 CalibLaserVscan.C:21
 CalibLaserVscan.C:22
 CalibLaserVscan.C:23
 CalibLaserVscan.C:24
 CalibLaserVscan.C:25
 CalibLaserVscan.C:26
 CalibLaserVscan.C:27
 CalibLaserVscan.C:28
 CalibLaserVscan.C:29
 CalibLaserVscan.C:30
 CalibLaserVscan.C:31
 CalibLaserVscan.C:32
 CalibLaserVscan.C:33
 CalibLaserVscan.C:34
 CalibLaserVscan.C:35
 CalibLaserVscan.C:36
 CalibLaserVscan.C:37
 CalibLaserVscan.C:38
 CalibLaserVscan.C:39
 CalibLaserVscan.C:40
 CalibLaserVscan.C:41
 CalibLaserVscan.C:42
 CalibLaserVscan.C:43
 CalibLaserVscan.C:44
 CalibLaserVscan.C:45
 CalibLaserVscan.C:46
 CalibLaserVscan.C:47
 CalibLaserVscan.C:48
 CalibLaserVscan.C:49
 CalibLaserVscan.C:50
 CalibLaserVscan.C:51
 CalibLaserVscan.C:52
 CalibLaserVscan.C:53
 CalibLaserVscan.C:54
 CalibLaserVscan.C:55
 CalibLaserVscan.C:56
 CalibLaserVscan.C:57
 CalibLaserVscan.C:58
 CalibLaserVscan.C:59
 CalibLaserVscan.C:60
 CalibLaserVscan.C:61
 CalibLaserVscan.C:62
 CalibLaserVscan.C:63
 CalibLaserVscan.C:64
 CalibLaserVscan.C:65
 CalibLaserVscan.C:66
 CalibLaserVscan.C:67
 CalibLaserVscan.C:68
 CalibLaserVscan.C:69
 CalibLaserVscan.C:70
 CalibLaserVscan.C:71
 CalibLaserVscan.C:72
 CalibLaserVscan.C:73
 CalibLaserVscan.C:74
 CalibLaserVscan.C:75
 CalibLaserVscan.C:76
 CalibLaserVscan.C:77
 CalibLaserVscan.C:78
 CalibLaserVscan.C:79
 CalibLaserVscan.C:80
 CalibLaserVscan.C:81
 CalibLaserVscan.C:82
 CalibLaserVscan.C:83
 CalibLaserVscan.C:84
 CalibLaserVscan.C:85
 CalibLaserVscan.C:86
 CalibLaserVscan.C:87
 CalibLaserVscan.C:88
 CalibLaserVscan.C:89
 CalibLaserVscan.C:90
 CalibLaserVscan.C:91
 CalibLaserVscan.C:92
 CalibLaserVscan.C:93
 CalibLaserVscan.C:94
 CalibLaserVscan.C:95
 CalibLaserVscan.C:96
 CalibLaserVscan.C:97
 CalibLaserVscan.C:98
 CalibLaserVscan.C:99
 CalibLaserVscan.C:100
 CalibLaserVscan.C:101
 CalibLaserVscan.C:102
 CalibLaserVscan.C:103
 CalibLaserVscan.C:104
 CalibLaserVscan.C:105
 CalibLaserVscan.C:106
 CalibLaserVscan.C:107
 CalibLaserVscan.C:108
 CalibLaserVscan.C:109
 CalibLaserVscan.C:110
 CalibLaserVscan.C:111
 CalibLaserVscan.C:112
 CalibLaserVscan.C:113
 CalibLaserVscan.C:114
 CalibLaserVscan.C:115
 CalibLaserVscan.C:116
 CalibLaserVscan.C:117
 CalibLaserVscan.C:118
 CalibLaserVscan.C:119
 CalibLaserVscan.C:120
 CalibLaserVscan.C:121
 CalibLaserVscan.C:122
 CalibLaserVscan.C:123
 CalibLaserVscan.C:124
 CalibLaserVscan.C:125
 CalibLaserVscan.C:126
 CalibLaserVscan.C:127
 CalibLaserVscan.C:128
 CalibLaserVscan.C:129
 CalibLaserVscan.C:130
 CalibLaserVscan.C:131
 CalibLaserVscan.C:132
 CalibLaserVscan.C:133
 CalibLaserVscan.C:134
 CalibLaserVscan.C:135
 CalibLaserVscan.C:136
 CalibLaserVscan.C:137
 CalibLaserVscan.C:138
 CalibLaserVscan.C:139
 CalibLaserVscan.C:140
 CalibLaserVscan.C:141
 CalibLaserVscan.C:142
 CalibLaserVscan.C:143
 CalibLaserVscan.C:144
 CalibLaserVscan.C:145
 CalibLaserVscan.C:146
 CalibLaserVscan.C:147
 CalibLaserVscan.C:148
 CalibLaserVscan.C:149
 CalibLaserVscan.C:150
 CalibLaserVscan.C:151
 CalibLaserVscan.C:152
 CalibLaserVscan.C:153
 CalibLaserVscan.C:154
 CalibLaserVscan.C:155
 CalibLaserVscan.C:156
 CalibLaserVscan.C:157
 CalibLaserVscan.C:158
 CalibLaserVscan.C:159
 CalibLaserVscan.C:160
 CalibLaserVscan.C:161
 CalibLaserVscan.C:162
 CalibLaserVscan.C:163
 CalibLaserVscan.C:164
 CalibLaserVscan.C:165
 CalibLaserVscan.C:166
 CalibLaserVscan.C:167
 CalibLaserVscan.C:168
 CalibLaserVscan.C:169
 CalibLaserVscan.C:170
 CalibLaserVscan.C:171
 CalibLaserVscan.C:172
 CalibLaserVscan.C:173
 CalibLaserVscan.C:174
 CalibLaserVscan.C:175
 CalibLaserVscan.C:176
 CalibLaserVscan.C:177
 CalibLaserVscan.C:178
 CalibLaserVscan.C:179
 CalibLaserVscan.C:180
 CalibLaserVscan.C:181
 CalibLaserVscan.C:182
 CalibLaserVscan.C:183
 CalibLaserVscan.C:184
 CalibLaserVscan.C:185
 CalibLaserVscan.C:186
 CalibLaserVscan.C:187
 CalibLaserVscan.C:188
 CalibLaserVscan.C:189
 CalibLaserVscan.C:190
 CalibLaserVscan.C:191
 CalibLaserVscan.C:192
 CalibLaserVscan.C:193
 CalibLaserVscan.C:194
 CalibLaserVscan.C:195
 CalibLaserVscan.C:196
 CalibLaserVscan.C:197
 CalibLaserVscan.C:198
 CalibLaserVscan.C:199
 CalibLaserVscan.C:200
 CalibLaserVscan.C:201
 CalibLaserVscan.C:202
 CalibLaserVscan.C:203
 CalibLaserVscan.C:204
 CalibLaserVscan.C:205
 CalibLaserVscan.C:206
 CalibLaserVscan.C:207
 CalibLaserVscan.C:208
 CalibLaserVscan.C:209
 CalibLaserVscan.C:210
 CalibLaserVscan.C:211
 CalibLaserVscan.C:212
 CalibLaserVscan.C:213
 CalibLaserVscan.C:214
 CalibLaserVscan.C:215
 CalibLaserVscan.C:216
 CalibLaserVscan.C:217
 CalibLaserVscan.C:218
 CalibLaserVscan.C:219
 CalibLaserVscan.C:220
 CalibLaserVscan.C:221
 CalibLaserVscan.C:222
 CalibLaserVscan.C:223
 CalibLaserVscan.C:224
 CalibLaserVscan.C:225
 CalibLaserVscan.C:226
 CalibLaserVscan.C:227
 CalibLaserVscan.C:228
 CalibLaserVscan.C:229
 CalibLaserVscan.C:230
 CalibLaserVscan.C:231
 CalibLaserVscan.C:232
 CalibLaserVscan.C:233
 CalibLaserVscan.C:234
 CalibLaserVscan.C:235
 CalibLaserVscan.C:236
 CalibLaserVscan.C:237
 CalibLaserVscan.C:238
 CalibLaserVscan.C:239
 CalibLaserVscan.C:240
 CalibLaserVscan.C:241
 CalibLaserVscan.C:242
 CalibLaserVscan.C:243
 CalibLaserVscan.C:244
 CalibLaserVscan.C:245
 CalibLaserVscan.C:246
 CalibLaserVscan.C:247
 CalibLaserVscan.C:248
 CalibLaserVscan.C:249
 CalibLaserVscan.C:250
 CalibLaserVscan.C:251
 CalibLaserVscan.C:252
 CalibLaserVscan.C:253
 CalibLaserVscan.C:254
 CalibLaserVscan.C:255
 CalibLaserVscan.C:256
 CalibLaserVscan.C:257
 CalibLaserVscan.C:258
 CalibLaserVscan.C:259
 CalibLaserVscan.C:260
 CalibLaserVscan.C:261
 CalibLaserVscan.C:262
 CalibLaserVscan.C:263
 CalibLaserVscan.C:264
 CalibLaserVscan.C:265
 CalibLaserVscan.C:266
 CalibLaserVscan.C:267
 CalibLaserVscan.C:268
 CalibLaserVscan.C:269
 CalibLaserVscan.C:270
 CalibLaserVscan.C:271
 CalibLaserVscan.C:272
 CalibLaserVscan.C:273
 CalibLaserVscan.C:274
 CalibLaserVscan.C:275
 CalibLaserVscan.C:276
 CalibLaserVscan.C:277
 CalibLaserVscan.C:278
 CalibLaserVscan.C:279
 CalibLaserVscan.C:280
 CalibLaserVscan.C:281
 CalibLaserVscan.C:282
 CalibLaserVscan.C:283
 CalibLaserVscan.C:284
 CalibLaserVscan.C:285
 CalibLaserVscan.C:286
 CalibLaserVscan.C:287
 CalibLaserVscan.C:288
 CalibLaserVscan.C:289
 CalibLaserVscan.C:290
 CalibLaserVscan.C:291
 CalibLaserVscan.C:292
 CalibLaserVscan.C:293
 CalibLaserVscan.C:294
 CalibLaserVscan.C:295
 CalibLaserVscan.C:296
 CalibLaserVscan.C:297
 CalibLaserVscan.C:298
 CalibLaserVscan.C:299
 CalibLaserVscan.C:300
 CalibLaserVscan.C:301
 CalibLaserVscan.C:302
 CalibLaserVscan.C:303
 CalibLaserVscan.C:304
 CalibLaserVscan.C:305
 CalibLaserVscan.C:306
 CalibLaserVscan.C:307
 CalibLaserVscan.C:308
 CalibLaserVscan.C:309
 CalibLaserVscan.C:310
 CalibLaserVscan.C:311
 CalibLaserVscan.C:312
 CalibLaserVscan.C:313
 CalibLaserVscan.C:314
 CalibLaserVscan.C:315
 CalibLaserVscan.C:316
 CalibLaserVscan.C:317
 CalibLaserVscan.C:318
 CalibLaserVscan.C:319
 CalibLaserVscan.C:320
 CalibLaserVscan.C:321
 CalibLaserVscan.C:322
 CalibLaserVscan.C:323
 CalibLaserVscan.C:324
 CalibLaserVscan.C:325
 CalibLaserVscan.C:326
 CalibLaserVscan.C:327
 CalibLaserVscan.C:328
 CalibLaserVscan.C:329
 CalibLaserVscan.C:330
 CalibLaserVscan.C:331
 CalibLaserVscan.C:332
 CalibLaserVscan.C:333
 CalibLaserVscan.C:334
 CalibLaserVscan.C:335
 CalibLaserVscan.C:336
 CalibLaserVscan.C:337
 CalibLaserVscan.C:338
 CalibLaserVscan.C:339
 CalibLaserVscan.C:340
 CalibLaserVscan.C:341
 CalibLaserVscan.C:342
 CalibLaserVscan.C:343
 CalibLaserVscan.C:344
 CalibLaserVscan.C:345
 CalibLaserVscan.C:346
 CalibLaserVscan.C:347
 CalibLaserVscan.C:348
 CalibLaserVscan.C:349
 CalibLaserVscan.C:350
 CalibLaserVscan.C:351
 CalibLaserVscan.C:352
 CalibLaserVscan.C:353
 CalibLaserVscan.C:354
 CalibLaserVscan.C:355
 CalibLaserVscan.C:356
 CalibLaserVscan.C:357
 CalibLaserVscan.C:358
 CalibLaserVscan.C:359
 CalibLaserVscan.C:360
 CalibLaserVscan.C:361
 CalibLaserVscan.C:362
 CalibLaserVscan.C:363
 CalibLaserVscan.C:364
 CalibLaserVscan.C:365
 CalibLaserVscan.C:366
 CalibLaserVscan.C:367
 CalibLaserVscan.C:368
 CalibLaserVscan.C:369
 CalibLaserVscan.C:370
 CalibLaserVscan.C:371
 CalibLaserVscan.C:372
 CalibLaserVscan.C:373
 CalibLaserVscan.C:374
 CalibLaserVscan.C:375
 CalibLaserVscan.C:376
 CalibLaserVscan.C:377
 CalibLaserVscan.C:378
 CalibLaserVscan.C:379
 CalibLaserVscan.C:380
 CalibLaserVscan.C:381
 CalibLaserVscan.C:382
 CalibLaserVscan.C:383
 CalibLaserVscan.C:384
 CalibLaserVscan.C:385
 CalibLaserVscan.C:386
 CalibLaserVscan.C:387
 CalibLaserVscan.C:388
 CalibLaserVscan.C:389
 CalibLaserVscan.C:390
 CalibLaserVscan.C:391
 CalibLaserVscan.C:392
 CalibLaserVscan.C:393
 CalibLaserVscan.C:394
 CalibLaserVscan.C:395
 CalibLaserVscan.C:396
 CalibLaserVscan.C:397
 CalibLaserVscan.C:398
 CalibLaserVscan.C:399
 CalibLaserVscan.C:400
 CalibLaserVscan.C:401
 CalibLaserVscan.C:402
 CalibLaserVscan.C:403
 CalibLaserVscan.C:404
 CalibLaserVscan.C:405
 CalibLaserVscan.C:406
 CalibLaserVscan.C:407
 CalibLaserVscan.C:408
 CalibLaserVscan.C:409
 CalibLaserVscan.C:410
 CalibLaserVscan.C:411
 CalibLaserVscan.C:412
 CalibLaserVscan.C:413
 CalibLaserVscan.C:414
 CalibLaserVscan.C:415
 CalibLaserVscan.C:416
 CalibLaserVscan.C:417
 CalibLaserVscan.C:418
 CalibLaserVscan.C:419
 CalibLaserVscan.C:420
 CalibLaserVscan.C:421
 CalibLaserVscan.C:422
 CalibLaserVscan.C:423
 CalibLaserVscan.C:424
 CalibLaserVscan.C:425
 CalibLaserVscan.C:426
 CalibLaserVscan.C:427
 CalibLaserVscan.C:428
 CalibLaserVscan.C:429
 CalibLaserVscan.C:430
 CalibLaserVscan.C:431
 CalibLaserVscan.C:432
 CalibLaserVscan.C:433
 CalibLaserVscan.C:434
 CalibLaserVscan.C:435
 CalibLaserVscan.C:436
 CalibLaserVscan.C:437
 CalibLaserVscan.C:438
 CalibLaserVscan.C:439
 CalibLaserVscan.C:440
 CalibLaserVscan.C:441
 CalibLaserVscan.C:442
 CalibLaserVscan.C:443
 CalibLaserVscan.C:444
 CalibLaserVscan.C:445
 CalibLaserVscan.C:446
 CalibLaserVscan.C:447
 CalibLaserVscan.C:448
 CalibLaserVscan.C:449
 CalibLaserVscan.C:450
 CalibLaserVscan.C:451
 CalibLaserVscan.C:452
 CalibLaserVscan.C:453
 CalibLaserVscan.C:454
 CalibLaserVscan.C:455
 CalibLaserVscan.C:456
 CalibLaserVscan.C:457
 CalibLaserVscan.C:458
 CalibLaserVscan.C:459
 CalibLaserVscan.C:460
 CalibLaserVscan.C:461
 CalibLaserVscan.C:462
 CalibLaserVscan.C:463
 CalibLaserVscan.C:464
 CalibLaserVscan.C:465
 CalibLaserVscan.C:466
 CalibLaserVscan.C:467
 CalibLaserVscan.C:468
 CalibLaserVscan.C:469
 CalibLaserVscan.C:470
 CalibLaserVscan.C:471
 CalibLaserVscan.C:472
 CalibLaserVscan.C:473
 CalibLaserVscan.C:474
 CalibLaserVscan.C:475
 CalibLaserVscan.C:476
 CalibLaserVscan.C:477
 CalibLaserVscan.C:478
 CalibLaserVscan.C:479
 CalibLaserVscan.C:480
 CalibLaserVscan.C:481
 CalibLaserVscan.C:482
 CalibLaserVscan.C:483
 CalibLaserVscan.C:484
 CalibLaserVscan.C:485
 CalibLaserVscan.C:486
 CalibLaserVscan.C:487
 CalibLaserVscan.C:488
 CalibLaserVscan.C:489
 CalibLaserVscan.C:490
 CalibLaserVscan.C:491
 CalibLaserVscan.C:492
 CalibLaserVscan.C:493
 CalibLaserVscan.C:494
 CalibLaserVscan.C:495
 CalibLaserVscan.C:496
 CalibLaserVscan.C:497
 CalibLaserVscan.C:498
 CalibLaserVscan.C:499
 CalibLaserVscan.C:500
 CalibLaserVscan.C:501
 CalibLaserVscan.C:502
 CalibLaserVscan.C:503
 CalibLaserVscan.C:504
 CalibLaserVscan.C:505
 CalibLaserVscan.C:506
 CalibLaserVscan.C:507
 CalibLaserVscan.C:508
 CalibLaserVscan.C:509
 CalibLaserVscan.C:510
 CalibLaserVscan.C:511
 CalibLaserVscan.C:512
 CalibLaserVscan.C:513
 CalibLaserVscan.C:514
 CalibLaserVscan.C:515
 CalibLaserVscan.C:516
 CalibLaserVscan.C:517
 CalibLaserVscan.C:518
 CalibLaserVscan.C:519
 CalibLaserVscan.C:520
 CalibLaserVscan.C:521
 CalibLaserVscan.C:522
 CalibLaserVscan.C:523
 CalibLaserVscan.C:524
 CalibLaserVscan.C:525
 CalibLaserVscan.C:526
 CalibLaserVscan.C:527
 CalibLaserVscan.C:528
 CalibLaserVscan.C:529
 CalibLaserVscan.C:530
 CalibLaserVscan.C:531
 CalibLaserVscan.C:532
 CalibLaserVscan.C:533
 CalibLaserVscan.C:534
 CalibLaserVscan.C:535
 CalibLaserVscan.C:536
 CalibLaserVscan.C:537
 CalibLaserVscan.C:538
 CalibLaserVscan.C:539
 CalibLaserVscan.C:540
 CalibLaserVscan.C:541
 CalibLaserVscan.C:542
 CalibLaserVscan.C:543
 CalibLaserVscan.C:544
 CalibLaserVscan.C:545
 CalibLaserVscan.C:546
 CalibLaserVscan.C:547
 CalibLaserVscan.C:548
 CalibLaserVscan.C:549
 CalibLaserVscan.C:550
 CalibLaserVscan.C:551
 CalibLaserVscan.C:552
 CalibLaserVscan.C:553
 CalibLaserVscan.C:554
 CalibLaserVscan.C:555
 CalibLaserVscan.C:556
 CalibLaserVscan.C:557
 CalibLaserVscan.C:558
 CalibLaserVscan.C:559
 CalibLaserVscan.C:560
 CalibLaserVscan.C:561
 CalibLaserVscan.C:562
 CalibLaserVscan.C:563
 CalibLaserVscan.C:564
 CalibLaserVscan.C:565
 CalibLaserVscan.C:566
 CalibLaserVscan.C:567
 CalibLaserVscan.C:568
 CalibLaserVscan.C:569
 CalibLaserVscan.C:570
 CalibLaserVscan.C:571
 CalibLaserVscan.C:572
 CalibLaserVscan.C:573
 CalibLaserVscan.C:574
 CalibLaserVscan.C:575
 CalibLaserVscan.C:576
 CalibLaserVscan.C:577
 CalibLaserVscan.C:578
 CalibLaserVscan.C:579
 CalibLaserVscan.C:580
 CalibLaserVscan.C:581
 CalibLaserVscan.C:582
 CalibLaserVscan.C:583
 CalibLaserVscan.C:584
 CalibLaserVscan.C:585
 CalibLaserVscan.C:586
 CalibLaserVscan.C:587
 CalibLaserVscan.C:588
 CalibLaserVscan.C:589
 CalibLaserVscan.C:590
 CalibLaserVscan.C:591
 CalibLaserVscan.C:592
 CalibLaserVscan.C:593
 CalibLaserVscan.C:594
 CalibLaserVscan.C:595
 CalibLaserVscan.C:596
 CalibLaserVscan.C:597
 CalibLaserVscan.C:598
 CalibLaserVscan.C:599
 CalibLaserVscan.C:600
 CalibLaserVscan.C:601
 CalibLaserVscan.C:602
 CalibLaserVscan.C:603
 CalibLaserVscan.C:604
 CalibLaserVscan.C:605
 CalibLaserVscan.C:606
 CalibLaserVscan.C:607
 CalibLaserVscan.C:608
 CalibLaserVscan.C:609
 CalibLaserVscan.C:610
 CalibLaserVscan.C:611
 CalibLaserVscan.C:612
 CalibLaserVscan.C:613
 CalibLaserVscan.C:614
 CalibLaserVscan.C:615
 CalibLaserVscan.C:616
 CalibLaserVscan.C:617
 CalibLaserVscan.C:618
 CalibLaserVscan.C:619
 CalibLaserVscan.C:620
 CalibLaserVscan.C:621
 CalibLaserVscan.C:622
 CalibLaserVscan.C:623
 CalibLaserVscan.C:624
 CalibLaserVscan.C:625
 CalibLaserVscan.C:626
 CalibLaserVscan.C:627
 CalibLaserVscan.C:628
 CalibLaserVscan.C:629
 CalibLaserVscan.C:630
 CalibLaserVscan.C:631
 CalibLaserVscan.C:632
 CalibLaserVscan.C:633
 CalibLaserVscan.C:634
 CalibLaserVscan.C:635
 CalibLaserVscan.C:636
 CalibLaserVscan.C:637
 CalibLaserVscan.C:638
 CalibLaserVscan.C:639
 CalibLaserVscan.C:640
 CalibLaserVscan.C:641
 CalibLaserVscan.C:642
 CalibLaserVscan.C:643
 CalibLaserVscan.C:644
 CalibLaserVscan.C:645
 CalibLaserVscan.C:646
 CalibLaserVscan.C:647
 CalibLaserVscan.C:648
 CalibLaserVscan.C:649
 CalibLaserVscan.C:650
 CalibLaserVscan.C:651
 CalibLaserVscan.C:652
 CalibLaserVscan.C:653
 CalibLaserVscan.C:654
 CalibLaserVscan.C:655
 CalibLaserVscan.C:656
 CalibLaserVscan.C:657
 CalibLaserVscan.C:658
 CalibLaserVscan.C:659
 CalibLaserVscan.C:660
 CalibLaserVscan.C:661
 CalibLaserVscan.C:662
 CalibLaserVscan.C:663
 CalibLaserVscan.C:664
 CalibLaserVscan.C:665
 CalibLaserVscan.C:666
 CalibLaserVscan.C:667
 CalibLaserVscan.C:668
 CalibLaserVscan.C:669
 CalibLaserVscan.C:670
 CalibLaserVscan.C:671
 CalibLaserVscan.C:672
 CalibLaserVscan.C:673
 CalibLaserVscan.C:674
 CalibLaserVscan.C:675
 CalibLaserVscan.C:676
 CalibLaserVscan.C:677
 CalibLaserVscan.C:678
 CalibLaserVscan.C:679
 CalibLaserVscan.C:680
 CalibLaserVscan.C:681
 CalibLaserVscan.C:682
 CalibLaserVscan.C:683
 CalibLaserVscan.C:684
 CalibLaserVscan.C:685
 CalibLaserVscan.C:686
 CalibLaserVscan.C:687
 CalibLaserVscan.C:688
 CalibLaserVscan.C:689
 CalibLaserVscan.C:690
 CalibLaserVscan.C:691
 CalibLaserVscan.C:692
 CalibLaserVscan.C:693
 CalibLaserVscan.C:694
 CalibLaserVscan.C:695
 CalibLaserVscan.C:696
 CalibLaserVscan.C:697
 CalibLaserVscan.C:698
 CalibLaserVscan.C:699
 CalibLaserVscan.C:700
 CalibLaserVscan.C:701
 CalibLaserVscan.C:702
 CalibLaserVscan.C:703
 CalibLaserVscan.C:704
 CalibLaserVscan.C:705
 CalibLaserVscan.C:706
 CalibLaserVscan.C:707
 CalibLaserVscan.C:708
 CalibLaserVscan.C:709
 CalibLaserVscan.C:710
 CalibLaserVscan.C:711
 CalibLaserVscan.C:712
 CalibLaserVscan.C:713
 CalibLaserVscan.C:714
 CalibLaserVscan.C:715
 CalibLaserVscan.C:716
 CalibLaserVscan.C:717
 CalibLaserVscan.C:718
 CalibLaserVscan.C:719
 CalibLaserVscan.C:720
 CalibLaserVscan.C:721
 CalibLaserVscan.C:722
 CalibLaserVscan.C:723
 CalibLaserVscan.C:724
 CalibLaserVscan.C:725
 CalibLaserVscan.C:726
 CalibLaserVscan.C:727
 CalibLaserVscan.C:728
 CalibLaserVscan.C:729
 CalibLaserVscan.C:730
 CalibLaserVscan.C:731
 CalibLaserVscan.C:732
 CalibLaserVscan.C:733
 CalibLaserVscan.C:734
 CalibLaserVscan.C:735
 CalibLaserVscan.C:736
 CalibLaserVscan.C:737
 CalibLaserVscan.C:738
 CalibLaserVscan.C:739
 CalibLaserVscan.C:740
 CalibLaserVscan.C:741
 CalibLaserVscan.C:742
 CalibLaserVscan.C:743
 CalibLaserVscan.C:744
 CalibLaserVscan.C:745
 CalibLaserVscan.C:746
 CalibLaserVscan.C:747
 CalibLaserVscan.C:748
 CalibLaserVscan.C:749
 CalibLaserVscan.C:750
 CalibLaserVscan.C:751
 CalibLaserVscan.C:752
 CalibLaserVscan.C:753
 CalibLaserVscan.C:754
 CalibLaserVscan.C:755
 CalibLaserVscan.C:756
 CalibLaserVscan.C:757
 CalibLaserVscan.C:758
 CalibLaserVscan.C:759
 CalibLaserVscan.C:760
 CalibLaserVscan.C:761
 CalibLaserVscan.C:762
 CalibLaserVscan.C:763
 CalibLaserVscan.C:764
 CalibLaserVscan.C:765
 CalibLaserVscan.C:766
 CalibLaserVscan.C:767
 CalibLaserVscan.C:768
 CalibLaserVscan.C:769
 CalibLaserVscan.C:770
 CalibLaserVscan.C:771
 CalibLaserVscan.C:772
 CalibLaserVscan.C:773
 CalibLaserVscan.C:774
 CalibLaserVscan.C:775
 CalibLaserVscan.C:776
 CalibLaserVscan.C:777
 CalibLaserVscan.C:778
 CalibLaserVscan.C:779
 CalibLaserVscan.C:780
 CalibLaserVscan.C:781
 CalibLaserVscan.C:782
 CalibLaserVscan.C:783
 CalibLaserVscan.C:784
 CalibLaserVscan.C:785
 CalibLaserVscan.C:786
 CalibLaserVscan.C:787
 CalibLaserVscan.C:788
 CalibLaserVscan.C:789
 CalibLaserVscan.C:790
 CalibLaserVscan.C:791
 CalibLaserVscan.C:792
 CalibLaserVscan.C:793
 CalibLaserVscan.C:794
 CalibLaserVscan.C:795
 CalibLaserVscan.C:796
 CalibLaserVscan.C:797
 CalibLaserVscan.C:798
 CalibLaserVscan.C:799
 CalibLaserVscan.C:800
 CalibLaserVscan.C:801
 CalibLaserVscan.C:802
 CalibLaserVscan.C:803
 CalibLaserVscan.C:804
 CalibLaserVscan.C:805
 CalibLaserVscan.C:806
 CalibLaserVscan.C:807
 CalibLaserVscan.C:808
 CalibLaserVscan.C:809
 CalibLaserVscan.C:810
 CalibLaserVscan.C:811
 CalibLaserVscan.C:812
 CalibLaserVscan.C:813
 CalibLaserVscan.C:814
 CalibLaserVscan.C:815
 CalibLaserVscan.C:816
 CalibLaserVscan.C:817
 CalibLaserVscan.C:818
 CalibLaserVscan.C:819
 CalibLaserVscan.C:820
 CalibLaserVscan.C:821
 CalibLaserVscan.C:822
 CalibLaserVscan.C:823
 CalibLaserVscan.C:824
 CalibLaserVscan.C:825
 CalibLaserVscan.C:826
 CalibLaserVscan.C:827
 CalibLaserVscan.C:828
 CalibLaserVscan.C:829
 CalibLaserVscan.C:830
 CalibLaserVscan.C:831
 CalibLaserVscan.C:832
 CalibLaserVscan.C:833
 CalibLaserVscan.C:834
 CalibLaserVscan.C:835
 CalibLaserVscan.C:836
 CalibLaserVscan.C:837
 CalibLaserVscan.C:838
 CalibLaserVscan.C:839
 CalibLaserVscan.C:840
 CalibLaserVscan.C:841
 CalibLaserVscan.C:842
 CalibLaserVscan.C:843
 CalibLaserVscan.C:844
 CalibLaserVscan.C:845
 CalibLaserVscan.C:846
 CalibLaserVscan.C:847
 CalibLaserVscan.C:848
 CalibLaserVscan.C:849
 CalibLaserVscan.C:850
 CalibLaserVscan.C:851
 CalibLaserVscan.C:852
 CalibLaserVscan.C:853
 CalibLaserVscan.C:854
 CalibLaserVscan.C:855
 CalibLaserVscan.C:856
 CalibLaserVscan.C:857
 CalibLaserVscan.C:858
 CalibLaserVscan.C:859
 CalibLaserVscan.C:860
 CalibLaserVscan.C:861
 CalibLaserVscan.C:862
 CalibLaserVscan.C:863
 CalibLaserVscan.C:864
 CalibLaserVscan.C:865
 CalibLaserVscan.C:866
 CalibLaserVscan.C:867
 CalibLaserVscan.C:868
 CalibLaserVscan.C:869
 CalibLaserVscan.C:870
 CalibLaserVscan.C:871
 CalibLaserVscan.C:872
 CalibLaserVscan.C:873
 CalibLaserVscan.C:874
 CalibLaserVscan.C:875
 CalibLaserVscan.C:876
 CalibLaserVscan.C:877
 CalibLaserVscan.C:878
 CalibLaserVscan.C:879
 CalibLaserVscan.C:880
 CalibLaserVscan.C:881
 CalibLaserVscan.C:882
 CalibLaserVscan.C:883
 CalibLaserVscan.C:884
 CalibLaserVscan.C:885
 CalibLaserVscan.C:886
 CalibLaserVscan.C:887
 CalibLaserVscan.C:888
 CalibLaserVscan.C:889
 CalibLaserVscan.C:890
 CalibLaserVscan.C:891
 CalibLaserVscan.C:892
 CalibLaserVscan.C:893
 CalibLaserVscan.C:894
 CalibLaserVscan.C:895
 CalibLaserVscan.C:896
 CalibLaserVscan.C:897
 CalibLaserVscan.C:898
 CalibLaserVscan.C:899
 CalibLaserVscan.C:900
 CalibLaserVscan.C:901
 CalibLaserVscan.C:902
 CalibLaserVscan.C:903