ROOT logo
/*
  .x ~/UliStyle.C
  .x ~/rootlogon.C
  gSystem->Load("libSTAT.so");
  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+")
  AliXRDPROOFtoolkit tool; 
  TChain * chainCosmic = tool.MakeChain("cosmic.txt","Track0",0,1000000);
  chainCosmic->Lookup();
  chainCosmic->SetProof(kTRUE);
  TChain * chainTr = tool.MakeChain("align.txt","Tracklet",0,10200);
  chainTr->Lookup();
  //chainTr->SetProof(kTRUE);
  //
  //
  //
  .L $ALICE_ROOT/TPC/CalibMacros/CalibAlign.C
  SetAlias();
  InitCutsAlign();
  MakeAlign();
  
*/
/*
#include "TMath.h"
#include "TFile.h"
#include "TLinearFitter.h"
#include "TChain.h"
#include "TTreeStream.h"
#include "TStatToolkit.h"
#include "TH2F.h"
#include "TLegend.h"
#include "TCut.h"
#include "TPad.h"
#include "AliTPCcalibAlign.h"
*/



AliTPCcalibAlign align;
TChain * chainTr;

void SetAlias(){
  //
  //
  //
  chainTr->SetAlias("dP0","tp1.fP[0]-tp2.fP[0]");
  chainTr->SetAlias("dP1","tp1.fP[1]-tp2.fP[1]");
  chainTr->SetAlias("dP2","tp1.fP[2]-tp2.fP[2]");
  chainTr->SetAlias("dP3","tp1.fP[3]-tp2.fP[3]");
  chainTr->SetAlias("dP4","tp1.fP[4]-tp2.fP[4]");
  //
  chainTr->SetAlias("sP0","sqrt(tp1.fC[0]+tp2.fC[0])");
  chainTr->SetAlias("sP1","sqrt(tp1.fC[2]+tp2.fC[2])");
  chainTr->SetAlias("sP2","sqrt(tp1.fC[5]+tp2.fC[5])");
  chainTr->SetAlias("sP3","sqrt(tp1.fC[9]+tp2.fC[9])");
  chainTr->SetAlias("sP4","sqrt(tp1.fC[14]+tp2.fC[14])");
  //
  chainTr->SetAlias("pP0","dP0/sP0");
  chainTr->SetAlias("pP1","dP1/sP1");
  chainTr->SetAlias("pP2","dP2/sP2");
  chainTr->SetAlias("pP3","dP3/sP3");
  //
  chainTr->SetAlias("side","(sign(tp1.fP[1])+0)");
  chainTr->SetAlias("dR","(1-abs(tp1.fP[1]/250.))");
  chainTr->SetAlias("ta0","(tp1.fP[2]+tp2.fP[2])*0.5");
  chainTr->SetAlias("ta1","(tp1.fP[3]+tp2.fP[3])*0.5");
  chainTr->SetAlias("ca","cos(tp1.fAlpha+0)");
  chainTr->SetAlias("sa","sin(tp1.fAlpha+0)");
  //
  chainTr->SetAlias("meanZ","(tp1.fP[1]+tp2.fP[1])*0.5");
  chainTr->SetAlias("vx1","(v1.fElements[0]+0)");
  chainTr->SetAlias("vy1","(v1.fElements[1]+0)");
  chainTr->SetAlias("vz1","(v1.fElements[2]+0)");
  chainTr->SetAlias("vdydx1","(v1.fElements[3]+0)");
  chainTr->SetAlias("vdzdx1","(v1.fElements[4]+0)");
  chainTr->SetAlias("vx2","(v2.fElements[0]+0)");
  chainTr->SetAlias("vy2","(v2.fElements[1]+0)");
  chainTr->SetAlias("vz2","(v2.fElements[2]+0)");
  chainTr->SetAlias("vdydx2","(v2.fElements[3]+0)");
  chainTr->SetAlias("vdzdx2","(v2.fElements[4]+0)");
  //
  //
  //
  chainTr->SetAlias("dx1","(AliTPCcalibAlign::SCorrect(0,0,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vx1)");
  chainTr->SetAlias("dy1","(AliTPCcalibAlign::SCorrect(0,1,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vy1)");
  chainTr->SetAlias("dz1","(AliTPCcalibAlign::SCorrect(0,2,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vz1)");
  chainTr->SetAlias("ddy1","(AliTPCcalibAlign::SCorrect(0,3,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdydx1)");
  chainTr->SetAlias("ddz1","(AliTPCcalibAlign::SCorrect(0,4,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdzdx1)");
  chainTr->SetAlias("ddy01","(AliTPCcalibAlign::SCorrect(0,5,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdydx1)");
  chainTr->SetAlias("ddz01","(AliTPCcalibAlign::SCorrect(0,6,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdzdx1)");


}


void InitCutsAlign(){
  // resolution cuts
  TCut cutS0("sqrt(tp2.fC[0]+tp2.fC[0])<0.2");
  TCut cutS1("sqrt(tp2.fC[2]+tp2.fC[2])<0.2");
  TCut cutS2("sqrt(tp2.fC[5]+tp2.fC[5])<0.01");
  TCut cutS3("sqrt(tp2.fC[9]+tp2.fC[9])<0.01");
  TCut cutS4("sqrt(tp2.fC[14]+tp2.fC[14])<0.5");
  TCut cutS=cutS0+cutS1+cutS2+cutS3+cutS4;
  //
  // parameters matching cuts
  TCut cutP0("abs(tp1.fP[0]-tp2.fP[0])<0.6");
  TCut cutP1("abs(tp1.fP[1]-tp2.fP[1])<0.6");
  TCut cutP2("abs(tp1.fP[2]-tp2.fP[2])<0.03");
  TCut cutP3("abs(tp1.fP[3]-tp2.fP[3])<0.03");
  TCut cutP=cutP0+cutP1+cutP2+cutP3;
  //
  TCut cutAll = cutS+cutP;
  chainTr->Draw(">>listELP",cutAll,"entryList");
  TEntryList *elist = (TEntryList*)gDirectory->Get("listELP");
  chainTr->SetEntryList(elist);
  
  TCut cutRun("1");
  TCut cutN120("1");

}

void MakeAlign(){
  
  align.ProcessTree(chainTr);
  align.EvalFitters();
  align.MakeTree("alignTree.root");
  align.SetInstance(&align);
}
 
void MakeCompareAlign(){
  //
  //
  //
  TFile falignTreeNoMag("/lustre_alpha/alice/miranov/rec/LHC08d/nomag/alignTree.root");
  TTree * treeAlignNoMag = (TTree*)falignTreeNoMag.Get("Align");
  TFile falignTree("alignTree.root");
  TTree * treeAlign = (TTree*)falignTree.Get("Align");
  treeAlign->AddFriend(treeAlignNoMag,"NoMag");
  treeAlignNoMag->SetMarkerStyle(26);
  treeAlign->SetMarkerStyle(25);
}

TMatrixD * arrayAlign[72];
TMatrixD * arrayAlignTmp[72];

void ClearMatrices(){
  //
  //
  for (Int_t i=0;i<72; i++) {
    TMatrixD * mat = new TMatrixD(4,4);
    mat->UnitMatrix();
    arrayAlign[i]=mat;
    arrayAlignTmp[i]=(TMatrixD*)(mat->Clone());
  }

}

void GlobalAlign(){
  //
  // Global Align
  //
  TTreeSRedirector *cstream = new TTreeSRedirector("galign.root");

  for (Int_t iter=0; iter<10;iter++){
    printf("Iter=\t%d\n",iter);
    for (Int_t is0=0;is0<72; is0++) {
      //
      TMatrixD  *mati0 = arrayAlign[is0];
      TMatrixD matDiff(4,4);
      Double_t sumw=0;      
      for (Int_t is1=0;is1<72; is1++) {
	Bool_t invers=kFALSE;
	const TMatrixD *mat = align.GetTransformation(is0,is1,0); 
	if (!mat){
	  invers=kTRUE;
	  mat = align.GetTransformation(is1,is0,0); 
	}
	if (!mat) continue;
	Double_t weight=1;
	if  ( (is1%18-is0%18)!=0) weight*=0.3;
	if (is1/36>is0/36) weight*=2./3.; 
	if (is1/36<is0/36) weight*=1./3.;
	//
	//
	TMatrixD matT = *mat;	
	if (invers)  matT.Invert();
	matDiff+=weight*(*(arrayAlign[is1]))*matT;
	sumw+=weight;
	(*cstream)<<"LAlign"<<
	  "iter="<<iter<<
	  "s0="<<is0<<
	  "m6.="<<arrayAlign[is0]<<
	  "\n";

      }
      if (sumw>0){
	matDiff*=1/sumw;
	(*arrayAlignTmp[is0]) = matDiff;
      }
    }
    for (Int_t is0=0;is0<72; is0++) {
      (*arrayAlign[is0]) = (*arrayAlignTmp[is0]);
      //      TMatrixD * matM1=  align.GetTransformation(is0,36+(is0+35)%36,0);
      //TMatrixD * mat  =  align.GetTransformation(is0,36+(is0+36)%36,0);
      //TMatrixD * matP1=  align.GetTransformation(is0,36+(is0+37)%36,0);
      //
      (*cstream)<<"GAlign"<<
	"iter="<<iter<<
	"s0="<<is0<<
	"m6.="<<arrayAlign[is0]<<
	"\n";
    }    
  }
  delete cstream;
}





void MakeGlobalCorr(){
  //
  //
  //
  TStatToolkit toolkit;
  Double_t chi2=0;
  Int_t    npoints=0;
  TVectorD fitParam;
  TMatrixD covMatrix;
  TVectorD chi2V(5);
  //
  TString fstring="";
  fstring+="side++";
  //
  fstring+="dR++";
  fstring+="dR*dR++";
  fstring+="dR*sa++";
  fstring+="dR*ca++";
  fstring+="ta0++";
  fstring+="ta1++";
  //
  fstring+="dR*side++";
  fstring+="dR*dR*side++";
  fstring+="dR*sa*side++";
  fstring+="dR*ca*side++";
  fstring+="ta0*side++";
  fstring+="ta1*side++";

  TString * strP0 = TStatToolkit::FitPlane(chainTr,"dP0:sP0", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
  chi2V[0]=TMath::Sqrt(chi2/npoints);
  chainTr->SetAlias("corrP0",strP0->Data());

  TString * strP1 = TStatToolkit::FitPlane(chainTr,"dP1:sP1", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
  chi2V[1]=TMath::Sqrt(chi2/npoints);
  chainTr->SetAlias("corrP1",strP1->Data());

  TString * strP2 = TStatToolkit::FitPlane(chainTr,"dP2:sP2", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
  chi2V[2]=TMath::Sqrt(chi2/npoints);
  chainTr->SetAlias("corrP2",strP2->Data());

  TString * strP3 = TStatToolkit::FitPlane(chainTr,"dP3:sP3", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
  chi2V[3]=TMath::Sqrt(chi2/npoints);
  chainTr->SetAlias("corrP3",strP3->Data());

  TString * strP4 = TStatToolkit::FitPlane(chainTr,"dP4:sP4", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
  chi2V[4]=TMath::Sqrt(chi2/npoints);
  chainTr->SetAlias("corrP4",strP4->Data());
}

void P0resolZ(){
  //
  //
  //
  TH2F * hdP0Z = new TH2F("hdP0Z","hdP0Z",10,-250,250,100,-0.5,0.5);
  TH2F * hdP0ZNoCor = new TH2F("hdP0ZNoCor","hdP0ZNoCor",10,-250,250,100,-0.5,0.5);
  chainTr->Draw("(dP0-corrP0)/sqrt(2.):meanZ>>hdP0Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP0-0)/sqrt(2.):meanZ>>hdP0ZNoCor",""+cutRun+cutS+cutN120,"");
  
  hdP0Z->FitSlicesY();
  hdP0ZNoCor->FitSlicesY();
  hdP0Z_2->SetMinimum(0);
  hdP0Z_2->SetXTitle("Z position (cm)");
  hdP0Z_2->SetYTitle("#sigma_{y} (cm)");
  hdP0Z_2->SetMarkerStyle(25);
  hdP0ZNoCor_2->SetMarkerStyle(26);
  hdP0Z_2->Draw();
  hdP0ZNoCor_2->Draw("same");  
  gPad->SaveAs("picAlign/SigmaY_z.gif");
  gPad->SaveAs("picAlign/SigmaY_z.eps");
  //
  hdP0ZNoCor_1->SetXTitle("Z position (cm)");
  hdP0ZNoCor_1->SetYTitle("#Delta{y} (cm)");
  hdP0Z_1->SetMarkerStyle(25);
  hdP0ZNoCor_1->SetMarkerStyle(26);
  hdP0ZNoCor_1->Draw("");  
  hdP0Z_1->Draw("same");
  gPad->SaveAs("picAlign/DeltaY_z.gif");
  gPad->SaveAs("picAlign/DeltaY_z.eps");
  //
  //
  TH2F * hdPP0Z = new TH2F("hdPP0Z","hdPP0Z",8,-200,200,50,-5.05,5.05);
  TH2F * hncdPP0Z = new TH2F("hncdPP0Z","hncdPP0Z",8,-200,200,50,-5.05,5.05);
  chainTr->Draw("(dP0-corrP0)/sP0:meanZ>>hdPP0Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP0-0)/sP0:meanZ>>hncdPP0Z",""+cutRun+cutS+cutN120,"");
  hdPP0Z->FitSlicesY();
  hncdPP0Z->FitSlicesY();
  hdPP0Z_2->SetMarkerStyle(25);
  hncdPP0Z_2->SetMarkerStyle(26);
  hdPP0Z_2->SetMinimum(0);
  hdPP0Z_2->SetXTitle("Z position (cm)");
  hdPP0Z_2->SetYTitle("#sigma y (Unit) ");
  hdPP0Z_2->Draw();
  hncdPP0Z_2->Draw("same");
  gPad->SaveAs("picAlign/PullY_z.gif");
  gPad->SaveAs("picAlign/PullY_z.eps");
}

void P1resolZ(){
  //
  //
  //
  TH2F * hdP1Z = new TH2F("hdP1Z","hdP1Z",10,-250,250,100,-0.2,0.2);
  TH2F * hdP1ZNoCor = new TH2F("hdP1ZNoCor","hdP1ZNoCor",10,-250,250,100,-0.2,0.2);
  chainTr->Draw("(dP1-corrP1)/sqrt(2.):meanZ>>hdP1Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP1-0)/sqrt(2.):meanZ>>hdP1ZNoCor",""+cutRun+cutS+cutN120,"");
  
  hdP1Z->FitSlicesY();
  hdP1ZNoCor->FitSlicesY();
  hdP1Z_2->SetMinimum(0);
  hdP1Z_2->SetXTitle("Z position (cm)");
  hdP1Z_2->SetYTitle("#sigma_{z} (cm)");
  hdP1Z_2->SetMarkerStyle(25);
  hdP1ZNoCor_2->SetMarkerStyle(26);
  hdP1Z_2->Draw();
  hdP1ZNoCor_2->Draw("same");  
  gPad->SaveAs("picAlign/SigmaZ_z.gif");
  gPad->SaveAs("picAlign/SigmaZ_z.eps");
  //
  hdP1ZNoCor_1->SetXTitle("Z position (cm)");
  hdP1ZNoCor_1->SetYTitle("#Delta{z} (cm)");
  hdP1Z_1->SetMarkerStyle(25);
  hdP1ZNoCor_1->SetMarkerStyle(26);
  hdP1ZNoCor_1->Draw("");  
  hdP1Z_1->Draw("same");
  gPad->SaveAs("picAlign/DeltaZ_z.gif");
  gPad->SaveAs("picAlign/DeltaZ_z.eps");
  //
  //
  TH2F * hdPP1Z = new TH2F("hdPP1Z","hdPP1Z",8,-200,200,50,-5.05,5.05);
  TH2F * hncdPP1Z = new TH2F("hncdPP1Z","hncdPP1Z",8,-200,200,50,-5.05,5.05);
  chainTr->Draw("(dP1-corrP1)/sP1:meanZ>>hdPP1Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP1-0)/sP1:meanZ>>hncdPP1Z",""+cutRun+cutS+cutN120,"");
  hdPP1Z->FitSlicesY();
  hncdPP1Z->FitSlicesY();
  hdPP1Z_2->SetMarkerStyle(25);
  hncdPP1Z_2->SetMarkerStyle(26);
  hdPP1Z_2->SetMinimum(0);
  hdPP1Z_2->SetXTitle("Z position (cm)");
  hdPP1Z_2->SetYTitle("#sigma z (Unit) ");
  hdPP1Z_2->Draw();
  hncdPP1Z_2->Draw("same");
  gPad->SaveAs("picAlign/PullZ_z.gif");
  gPad->SaveAs("picAlign/PullZ_z.eps");
}


void P4resolZ(){
  //
  //
  //
  TH2F * hdP4Z = new TH2F("hdP4Z","hdP4Z",10,-250,250,100,-0.4,0.4);
  TH2F * hdP4ZNoCor = new TH2F("hdP4ZNoCor","hdP4ZNoCor",10,-250,250,100,-0.4,0.4);
  chainTr->Draw("(dP4-corrP4)/sqrt(2.):meanZ>>hdP4Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP4-0)/sqrt(2.):meanZ>>hdP4ZNoCor",""+cutRun+cutS+cutN120,"");
  
  hdP4Z->FitSlicesY();
  hdP4ZNoCor->FitSlicesY();
  hdP4Z_2->SetMinimum(0);
  hdP4Z_2->SetXTitle("Z position (cm)");
  hdP4Z_2->SetYTitle("#sigma_{1/pt} (1/GeV)");
  hdP4Z_2->SetMarkerStyle(25);
  hdP4ZNoCor_2->SetMarkerStyle(26);
  hdP4Z_2->Draw();
  hdP4ZNoCor_2->Draw("same");  
  gPad->SaveAs("picAlign/SigmaP4_z.gif");
  gPad->SaveAs("picAlign/SigmaP4_z.eps");
  //
  hdP4ZNoCor_1->SetXTitle("Z position (cm)");
  hdP4ZNoCor_1->SetYTitle("#Delta_{1/p_{t}} (1/GeV)");
  hdP4Z_1->SetMarkerStyle(25);
  hdP4ZNoCor_1->SetMarkerStyle(26);
  hdP4ZNoCor_1->Draw("");  
  hdP4Z_1->Draw("same");
  gPad->SaveAs("picAlign/DeltaP4_z.gif");
  gPad->SaveAs("picAlign/DeltaP4_z.eps");
  //
  //
  TH2F * hdPP4Z = new TH2F("hdPP4Z","hdPP4Z",8,-200,200,50,-5.05,5.05);
  TH2F * hncdPP4Z = new TH2F("hncdPP4Z","hncdPP4Z",8,-200,200,50,-5.05,5.05);
  chainTr->Draw("(dP4-corrP4)/sP4:meanZ>>hdPP4Z",""+cutRun+cutS+cutN120,"");
  chainTr->Draw("(dP4-0)/sP4:meanZ>>hncdPP4Z",""+cutRun+cutS+cutN120,"");
  hdPP4Z->FitSlicesY();
  hncdPP4Z->FitSlicesY();
  hdPP4Z_2->SetMarkerStyle(25);
  hncdPP4Z_2->SetMarkerStyle(26);
  hdPP4Z_2->SetMinimum(0);
  hdPP4Z_2->SetXTitle("Z position (cm)");
  hdPP4Z_2->SetYTitle("#sigma 1/p_{t} (Unit) ");
  hdPP4Z_2->Draw();
  hncdPP4Z_2->Draw("same");
  gPad->SaveAs("picAlign/PullP4_z.gif");
  gPad->SaveAs("picAlign/PullP4_z.eps");
}





void MakeFit(){
  //
  //
  //
  TChain *chainTracklet=chainTr;
  AliTPCcalibAlign align;
  //
  TVectorD * vec1 = 0;
  TVectorD * vec2 = 0;
  AliExternalTrackParam * tp1 = 0;
  AliExternalTrackParam * tp2 = 0;  
  Int_t      s1 = 0;
  Int_t      s2 = 0;
  {
    for (Int_t i=0; i< elist->GetN(); i++){
      //for (Int_t i=0; i<100000; i++){
      chainTracklet->GetBranch("tp1.")->SetAddress(&tp1);
      chainTracklet->GetBranch("tp2.")->SetAddress(&tp2);
      chainTracklet->GetBranch("v1.")->SetAddress(&vec1);
      chainTracklet->GetBranch("v2.")->SetAddress(&vec2);
      chainTracklet->GetBranch("s1")->SetAddress(&s1);
      chainTracklet->GetBranch("s2")->SetAddress(&s2);      
      chainTracklet->GetEntry(i);
      if (i%100==0) printf("%d\t%d\t%d\t\n",i, s1,s2);
      //vec1.Print();
      TLinearFitter * fitter = align.GetOrMakeFitter6(s1,s2);
      if (fitter) align.Process6(vec1->GetMatrixArray(),vec2->GetMatrixArray(),fitter);
    }
  }
}


// chainTr->Scan("vy1:AliTPCcalibAlign::SCorrect(0,1,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)","","",100); 

void MakePlot(){
  //
  chainTr->Draw("vy2-vy1:s1>>hisdYNoCor(36,0,36,100,-0.3,0.3)","abs(s2-s1-36)<1","",40000);
  chainTr->Draw("vy2-vy1-dy1:s1>>hisdYCor(36,0,36,100,-0.3,0.3)","abs(s2-s1-36)<1","",40000);
  hisdYCor->FitSlicesY();
  hisdYNoCor->FitSlicesY();
  hisdYCor_1->Draw("");

}


void dPhi(){
  //
  //
  //  
  treeAlign->Draw("1000*m6.fElements[4]","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#phi} (mrad)");
  gPad->SaveAs("picAlign/mag5dPhi.eps");
  gPad->SaveAs("picAlign/mag5dPhi.gif");
  //
  treeAlignNoMag->Draw("1000*m6.fElements[4]","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#phi} (mrad)");
  gPad->SaveAs("picAlign/nomagdPhi.eps");
  gPad->SaveAs("picAlign/nomagdPhi.gif");
  //
  //
  //
  treeAlign->Draw("1000*(m6.fElements[4]-NoMag.m6.fElements[4])","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#phi} (mrad)");
  gPad->SaveAs("picAlign/diffnomagmag5dPhi.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dPhi.gif");
  //
}


void dTheta(){
  //
  //
  //  
  treeAlign->Draw("1000*m6.fElements[8]","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#theta} (mrad)");
  gPad->SaveAs("picAlign/mag5dTheta.eps");
  gPad->SaveAs("picAlign/mag5dTheta.gif");
  //
  treeAlignNoMag->Draw("1000*m6.fElements[8]","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#theta} (mrad)");
  gPad->SaveAs("picAlign/nomagdTheta.eps");
  gPad->SaveAs("picAlign/nomagdTheta.gif");
  //
  //
  //
  treeAlign->Draw("1000*(m6.fElements[8]-NoMag.m6.fElements[8])","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{#theta} (mrad)");
  gPad->SaveAs("picAlign/diffnomagmag5dTheta.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dTheta.gif");
  //
  //
  treeAlign->Draw("1000*(m6.fElements[8]):s1","s2==s1+36&&nphi>100");
  htemp->SetYTitle("#Delta_{#theta} (mrad)");
  htemp->SetXTitle("Sector number");
  treeAlignNoMag->Draw("1000*(m6.fElements[8]):s1","s2==s1+36&&nphi>100","same");
  gPad->SaveAs("picAlign/diffnomagmag5dTheta_s1.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dTheta_s1.gif");
  //
}



void dZ(){
  //
  //
  //  
  treeAlign->Draw("dz","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Z} (cm)");
  gPad->SaveAs("picAlign/mag5dZ.eps");
  gPad->SaveAs("picAlign/mag5dZ.gif");
  //
  treeAlignNoMag->Draw("dz","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Z} (cm)");
  gPad->SaveAs("picAlign/nomagdZ.eps");
  gPad->SaveAs("picAlign/nomagdZ.gif");
  //
  //
  //
  treeAlign->Draw("(dz-NoMag.dz)","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Z} (cm)");
  gPad->SaveAs("picAlign/diffnomagmag5dZ.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dZ.gif");
  //
  //
  treeAlign->Draw("dz:s1","s2==s1+36&&nphi>100");
  htemp->SetYTitle("#Delta_{Z} (cm)");
  htemp->SetXTitle("Sector number");
  treeAlignNoMag->Draw("dz:s1","s2==s1+36&&nphi>100","same");
  gPad->SaveAs("picAlign/diffnomagmag5dZ_s1.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dZ_s1.gif");
  //
}

void dY(){
  //
  //
  //  
  treeAlign->Draw("dy","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Y} (cm)");
  gPad->SaveAs("picAlign/mag5dY.eps");
  gPad->SaveAs("picAlign/mag5dY.gif");
  //
  treeAlignNoMag->Draw("dy","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Y} (cm)");
  gPad->SaveAs("picAlign/nomagdY.eps");
  gPad->SaveAs("picAlign/nomagdY.gif");
  //
  //
  //
  treeAlign->Draw("(dy-NoMag.dy)","s2==s1+36&&nphi>100");
  htemp->SetXTitle("#Delta_{Y} (cm)");
  gPad->SaveAs("picAlign/diffnomagmag5dY.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dY.gif");
  //
  //
  treeAlign->Draw("dy:s1","s2==s1+36&&nphi>100");
  htemp->SetYTitle("#Delta_{Y} (cm)");
  htemp->SetXTitle("Sector number");
  treeAlignNoMag->Draw("dy:s1","s2==s1+36&&nphi>100","same");
  gPad->SaveAs("picAlign/diffnomagmag5dY_s1.eps");
  gPad->SaveAs("picAlign/diffnomagmag5dY_s1.gif");
  //
}









 CalibAlign.C:1
 CalibAlign.C:2
 CalibAlign.C:3
 CalibAlign.C:4
 CalibAlign.C:5
 CalibAlign.C:6
 CalibAlign.C:7
 CalibAlign.C:8
 CalibAlign.C:9
 CalibAlign.C:10
 CalibAlign.C:11
 CalibAlign.C:12
 CalibAlign.C:13
 CalibAlign.C:14
 CalibAlign.C:15
 CalibAlign.C:16
 CalibAlign.C:17
 CalibAlign.C:18
 CalibAlign.C:19
 CalibAlign.C:20
 CalibAlign.C:21
 CalibAlign.C:22
 CalibAlign.C:23
 CalibAlign.C:24
 CalibAlign.C:25
 CalibAlign.C:26
 CalibAlign.C:27
 CalibAlign.C:28
 CalibAlign.C:29
 CalibAlign.C:30
 CalibAlign.C:31
 CalibAlign.C:32
 CalibAlign.C:33
 CalibAlign.C:34
 CalibAlign.C:35
 CalibAlign.C:36
 CalibAlign.C:37
 CalibAlign.C:38
 CalibAlign.C:39
 CalibAlign.C:40
 CalibAlign.C:41
 CalibAlign.C:42
 CalibAlign.C:43
 CalibAlign.C:44
 CalibAlign.C:45
 CalibAlign.C:46
 CalibAlign.C:47
 CalibAlign.C:48
 CalibAlign.C:49
 CalibAlign.C:50
 CalibAlign.C:51
 CalibAlign.C:52
 CalibAlign.C:53
 CalibAlign.C:54
 CalibAlign.C:55
 CalibAlign.C:56
 CalibAlign.C:57
 CalibAlign.C:58
 CalibAlign.C:59
 CalibAlign.C:60
 CalibAlign.C:61
 CalibAlign.C:62
 CalibAlign.C:63
 CalibAlign.C:64
 CalibAlign.C:65
 CalibAlign.C:66
 CalibAlign.C:67
 CalibAlign.C:68
 CalibAlign.C:69
 CalibAlign.C:70
 CalibAlign.C:71
 CalibAlign.C:72
 CalibAlign.C:73
 CalibAlign.C:74
 CalibAlign.C:75
 CalibAlign.C:76
 CalibAlign.C:77
 CalibAlign.C:78
 CalibAlign.C:79
 CalibAlign.C:80
 CalibAlign.C:81
 CalibAlign.C:82
 CalibAlign.C:83
 CalibAlign.C:84
 CalibAlign.C:85
 CalibAlign.C:86
 CalibAlign.C:87
 CalibAlign.C:88
 CalibAlign.C:89
 CalibAlign.C:90
 CalibAlign.C:91
 CalibAlign.C:92
 CalibAlign.C:93
 CalibAlign.C:94
 CalibAlign.C:95
 CalibAlign.C:96
 CalibAlign.C:97
 CalibAlign.C:98
 CalibAlign.C:99
 CalibAlign.C:100
 CalibAlign.C:101
 CalibAlign.C:102
 CalibAlign.C:103
 CalibAlign.C:104
 CalibAlign.C:105
 CalibAlign.C:106
 CalibAlign.C:107
 CalibAlign.C:108
 CalibAlign.C:109
 CalibAlign.C:110
 CalibAlign.C:111
 CalibAlign.C:112
 CalibAlign.C:113
 CalibAlign.C:114
 CalibAlign.C:115
 CalibAlign.C:116
 CalibAlign.C:117
 CalibAlign.C:118
 CalibAlign.C:119
 CalibAlign.C:120
 CalibAlign.C:121
 CalibAlign.C:122
 CalibAlign.C:123
 CalibAlign.C:124
 CalibAlign.C:125
 CalibAlign.C:126
 CalibAlign.C:127
 CalibAlign.C:128
 CalibAlign.C:129
 CalibAlign.C:130
 CalibAlign.C:131
 CalibAlign.C:132
 CalibAlign.C:133
 CalibAlign.C:134
 CalibAlign.C:135
 CalibAlign.C:136
 CalibAlign.C:137
 CalibAlign.C:138
 CalibAlign.C:139
 CalibAlign.C:140
 CalibAlign.C:141
 CalibAlign.C:142
 CalibAlign.C:143
 CalibAlign.C:144
 CalibAlign.C:145
 CalibAlign.C:146
 CalibAlign.C:147
 CalibAlign.C:148
 CalibAlign.C:149
 CalibAlign.C:150
 CalibAlign.C:151
 CalibAlign.C:152
 CalibAlign.C:153
 CalibAlign.C:154
 CalibAlign.C:155
 CalibAlign.C:156
 CalibAlign.C:157
 CalibAlign.C:158
 CalibAlign.C:159
 CalibAlign.C:160
 CalibAlign.C:161
 CalibAlign.C:162
 CalibAlign.C:163
 CalibAlign.C:164
 CalibAlign.C:165
 CalibAlign.C:166
 CalibAlign.C:167
 CalibAlign.C:168
 CalibAlign.C:169
 CalibAlign.C:170
 CalibAlign.C:171
 CalibAlign.C:172
 CalibAlign.C:173
 CalibAlign.C:174
 CalibAlign.C:175
 CalibAlign.C:176
 CalibAlign.C:177
 CalibAlign.C:178
 CalibAlign.C:179
 CalibAlign.C:180
 CalibAlign.C:181
 CalibAlign.C:182
 CalibAlign.C:183
 CalibAlign.C:184
 CalibAlign.C:185
 CalibAlign.C:186
 CalibAlign.C:187
 CalibAlign.C:188
 CalibAlign.C:189
 CalibAlign.C:190
 CalibAlign.C:191
 CalibAlign.C:192
 CalibAlign.C:193
 CalibAlign.C:194
 CalibAlign.C:195
 CalibAlign.C:196
 CalibAlign.C:197
 CalibAlign.C:198
 CalibAlign.C:199
 CalibAlign.C:200
 CalibAlign.C:201
 CalibAlign.C:202
 CalibAlign.C:203
 CalibAlign.C:204
 CalibAlign.C:205
 CalibAlign.C:206
 CalibAlign.C:207
 CalibAlign.C:208
 CalibAlign.C:209
 CalibAlign.C:210
 CalibAlign.C:211
 CalibAlign.C:212
 CalibAlign.C:213
 CalibAlign.C:214
 CalibAlign.C:215
 CalibAlign.C:216
 CalibAlign.C:217
 CalibAlign.C:218
 CalibAlign.C:219
 CalibAlign.C:220
 CalibAlign.C:221
 CalibAlign.C:222
 CalibAlign.C:223
 CalibAlign.C:224
 CalibAlign.C:225
 CalibAlign.C:226
 CalibAlign.C:227
 CalibAlign.C:228
 CalibAlign.C:229
 CalibAlign.C:230
 CalibAlign.C:231
 CalibAlign.C:232
 CalibAlign.C:233
 CalibAlign.C:234
 CalibAlign.C:235
 CalibAlign.C:236
 CalibAlign.C:237
 CalibAlign.C:238
 CalibAlign.C:239
 CalibAlign.C:240
 CalibAlign.C:241
 CalibAlign.C:242
 CalibAlign.C:243
 CalibAlign.C:244
 CalibAlign.C:245
 CalibAlign.C:246
 CalibAlign.C:247
 CalibAlign.C:248
 CalibAlign.C:249
 CalibAlign.C:250
 CalibAlign.C:251
 CalibAlign.C:252
 CalibAlign.C:253
 CalibAlign.C:254
 CalibAlign.C:255
 CalibAlign.C:256
 CalibAlign.C:257
 CalibAlign.C:258
 CalibAlign.C:259
 CalibAlign.C:260
 CalibAlign.C:261
 CalibAlign.C:262
 CalibAlign.C:263
 CalibAlign.C:264
 CalibAlign.C:265
 CalibAlign.C:266
 CalibAlign.C:267
 CalibAlign.C:268
 CalibAlign.C:269
 CalibAlign.C:270
 CalibAlign.C:271
 CalibAlign.C:272
 CalibAlign.C:273
 CalibAlign.C:274
 CalibAlign.C:275
 CalibAlign.C:276
 CalibAlign.C:277
 CalibAlign.C:278
 CalibAlign.C:279
 CalibAlign.C:280
 CalibAlign.C:281
 CalibAlign.C:282
 CalibAlign.C:283
 CalibAlign.C:284
 CalibAlign.C:285
 CalibAlign.C:286
 CalibAlign.C:287
 CalibAlign.C:288
 CalibAlign.C:289
 CalibAlign.C:290
 CalibAlign.C:291
 CalibAlign.C:292
 CalibAlign.C:293
 CalibAlign.C:294
 CalibAlign.C:295
 CalibAlign.C:296
 CalibAlign.C:297
 CalibAlign.C:298
 CalibAlign.C:299
 CalibAlign.C:300
 CalibAlign.C:301
 CalibAlign.C:302
 CalibAlign.C:303
 CalibAlign.C:304
 CalibAlign.C:305
 CalibAlign.C:306
 CalibAlign.C:307
 CalibAlign.C:308
 CalibAlign.C:309
 CalibAlign.C:310
 CalibAlign.C:311
 CalibAlign.C:312
 CalibAlign.C:313
 CalibAlign.C:314
 CalibAlign.C:315
 CalibAlign.C:316
 CalibAlign.C:317
 CalibAlign.C:318
 CalibAlign.C:319
 CalibAlign.C:320
 CalibAlign.C:321
 CalibAlign.C:322
 CalibAlign.C:323
 CalibAlign.C:324
 CalibAlign.C:325
 CalibAlign.C:326
 CalibAlign.C:327
 CalibAlign.C:328
 CalibAlign.C:329
 CalibAlign.C:330
 CalibAlign.C:331
 CalibAlign.C:332
 CalibAlign.C:333
 CalibAlign.C:334
 CalibAlign.C:335
 CalibAlign.C:336
 CalibAlign.C:337
 CalibAlign.C:338
 CalibAlign.C:339
 CalibAlign.C:340
 CalibAlign.C:341
 CalibAlign.C:342
 CalibAlign.C:343
 CalibAlign.C:344
 CalibAlign.C:345
 CalibAlign.C:346
 CalibAlign.C:347
 CalibAlign.C:348
 CalibAlign.C:349
 CalibAlign.C:350
 CalibAlign.C:351
 CalibAlign.C:352
 CalibAlign.C:353
 CalibAlign.C:354
 CalibAlign.C:355
 CalibAlign.C:356
 CalibAlign.C:357
 CalibAlign.C:358
 CalibAlign.C:359
 CalibAlign.C:360
 CalibAlign.C:361
 CalibAlign.C:362
 CalibAlign.C:363
 CalibAlign.C:364
 CalibAlign.C:365
 CalibAlign.C:366
 CalibAlign.C:367
 CalibAlign.C:368
 CalibAlign.C:369
 CalibAlign.C:370
 CalibAlign.C:371
 CalibAlign.C:372
 CalibAlign.C:373
 CalibAlign.C:374
 CalibAlign.C:375
 CalibAlign.C:376
 CalibAlign.C:377
 CalibAlign.C:378
 CalibAlign.C:379
 CalibAlign.C:380
 CalibAlign.C:381
 CalibAlign.C:382
 CalibAlign.C:383
 CalibAlign.C:384
 CalibAlign.C:385
 CalibAlign.C:386
 CalibAlign.C:387
 CalibAlign.C:388
 CalibAlign.C:389
 CalibAlign.C:390
 CalibAlign.C:391
 CalibAlign.C:392
 CalibAlign.C:393
 CalibAlign.C:394
 CalibAlign.C:395
 CalibAlign.C:396
 CalibAlign.C:397
 CalibAlign.C:398
 CalibAlign.C:399
 CalibAlign.C:400
 CalibAlign.C:401
 CalibAlign.C:402
 CalibAlign.C:403
 CalibAlign.C:404
 CalibAlign.C:405
 CalibAlign.C:406
 CalibAlign.C:407
 CalibAlign.C:408
 CalibAlign.C:409
 CalibAlign.C:410
 CalibAlign.C:411
 CalibAlign.C:412
 CalibAlign.C:413
 CalibAlign.C:414
 CalibAlign.C:415
 CalibAlign.C:416
 CalibAlign.C:417
 CalibAlign.C:418
 CalibAlign.C:419
 CalibAlign.C:420
 CalibAlign.C:421
 CalibAlign.C:422
 CalibAlign.C:423
 CalibAlign.C:424
 CalibAlign.C:425
 CalibAlign.C:426
 CalibAlign.C:427
 CalibAlign.C:428
 CalibAlign.C:429
 CalibAlign.C:430
 CalibAlign.C:431
 CalibAlign.C:432
 CalibAlign.C:433
 CalibAlign.C:434
 CalibAlign.C:435
 CalibAlign.C:436
 CalibAlign.C:437
 CalibAlign.C:438
 CalibAlign.C:439
 CalibAlign.C:440
 CalibAlign.C:441
 CalibAlign.C:442
 CalibAlign.C:443
 CalibAlign.C:444
 CalibAlign.C:445
 CalibAlign.C:446
 CalibAlign.C:447
 CalibAlign.C:448
 CalibAlign.C:449
 CalibAlign.C:450
 CalibAlign.C:451
 CalibAlign.C:452
 CalibAlign.C:453
 CalibAlign.C:454
 CalibAlign.C:455
 CalibAlign.C:456
 CalibAlign.C:457
 CalibAlign.C:458
 CalibAlign.C:459
 CalibAlign.C:460
 CalibAlign.C:461
 CalibAlign.C:462
 CalibAlign.C:463
 CalibAlign.C:464
 CalibAlign.C:465
 CalibAlign.C:466
 CalibAlign.C:467
 CalibAlign.C:468
 CalibAlign.C:469
 CalibAlign.C:470
 CalibAlign.C:471
 CalibAlign.C:472
 CalibAlign.C:473
 CalibAlign.C:474
 CalibAlign.C:475
 CalibAlign.C:476
 CalibAlign.C:477
 CalibAlign.C:478
 CalibAlign.C:479
 CalibAlign.C:480
 CalibAlign.C:481
 CalibAlign.C:482
 CalibAlign.C:483
 CalibAlign.C:484
 CalibAlign.C:485
 CalibAlign.C:486
 CalibAlign.C:487
 CalibAlign.C:488
 CalibAlign.C:489
 CalibAlign.C:490
 CalibAlign.C:491
 CalibAlign.C:492
 CalibAlign.C:493
 CalibAlign.C:494
 CalibAlign.C:495
 CalibAlign.C:496
 CalibAlign.C:497
 CalibAlign.C:498
 CalibAlign.C:499
 CalibAlign.C:500
 CalibAlign.C:501
 CalibAlign.C:502
 CalibAlign.C:503
 CalibAlign.C:504
 CalibAlign.C:505
 CalibAlign.C:506
 CalibAlign.C:507
 CalibAlign.C:508
 CalibAlign.C:509
 CalibAlign.C:510
 CalibAlign.C:511
 CalibAlign.C:512
 CalibAlign.C:513
 CalibAlign.C:514
 CalibAlign.C:515
 CalibAlign.C:516
 CalibAlign.C:517
 CalibAlign.C:518
 CalibAlign.C:519
 CalibAlign.C:520
 CalibAlign.C:521
 CalibAlign.C:522
 CalibAlign.C:523
 CalibAlign.C:524
 CalibAlign.C:525
 CalibAlign.C:526
 CalibAlign.C:527
 CalibAlign.C:528
 CalibAlign.C:529
 CalibAlign.C:530
 CalibAlign.C:531
 CalibAlign.C:532
 CalibAlign.C:533
 CalibAlign.C:534
 CalibAlign.C:535
 CalibAlign.C:536
 CalibAlign.C:537
 CalibAlign.C:538
 CalibAlign.C:539
 CalibAlign.C:540
 CalibAlign.C:541
 CalibAlign.C:542
 CalibAlign.C:543
 CalibAlign.C:544
 CalibAlign.C:545
 CalibAlign.C:546
 CalibAlign.C:547
 CalibAlign.C:548
 CalibAlign.C:549
 CalibAlign.C:550
 CalibAlign.C:551
 CalibAlign.C:552
 CalibAlign.C:553
 CalibAlign.C:554
 CalibAlign.C:555
 CalibAlign.C:556
 CalibAlign.C:557
 CalibAlign.C:558
 CalibAlign.C:559
 CalibAlign.C:560
 CalibAlign.C:561
 CalibAlign.C:562
 CalibAlign.C:563
 CalibAlign.C:564
 CalibAlign.C:565
 CalibAlign.C:566
 CalibAlign.C:567
 CalibAlign.C:568
 CalibAlign.C:569
 CalibAlign.C:570
 CalibAlign.C:571
 CalibAlign.C:572
 CalibAlign.C:573
 CalibAlign.C:574
 CalibAlign.C:575
 CalibAlign.C:576
 CalibAlign.C:577
 CalibAlign.C:578
 CalibAlign.C:579
 CalibAlign.C:580
 CalibAlign.C:581
 CalibAlign.C:582
 CalibAlign.C:583
 CalibAlign.C:584
 CalibAlign.C:585
 CalibAlign.C:586
 CalibAlign.C:587
 CalibAlign.C:588
 CalibAlign.C:589
 CalibAlign.C:590
 CalibAlign.C:591
 CalibAlign.C:592
 CalibAlign.C:593
 CalibAlign.C:594
 CalibAlign.C:595
 CalibAlign.C:596
 CalibAlign.C:597