4 gSystem->Load("libSTAT.so");
5 gSystem->Load("libANALYSIS");
6 gSystem->Load("libTPCcalib");
7 gSystem->Load("libSTAT.so");
8 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
12 gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
13 AliXRDPROOFtoolkit tool;
14 TChain * chainCosmic = tool.MakeChain("cosmic.txt","Track0",0,1000000);
15 chainCosmic->Lookup();
16 chainCosmic->SetProof(kTRUE);
17 TChain * chainTr = tool.MakeChain("align.txt","Tracklet",0,10200);
19 //chainTr->SetProof(kTRUE);
23 .L $ALICE_ROOT/TPC/CalibMacros/CalibAlign.C
32 #include "TLinearFitter.h"
34 #include "TTreeStream.h"
35 #include "TStatToolkit.h"
40 #include "AliTPCcalibAlign.h"
45 AliTPCcalibAlign align;
52 chainTr->SetAlias("dP0","tp1.fP[0]-tp2.fP[0]");
53 chainTr->SetAlias("dP1","tp1.fP[1]-tp2.fP[1]");
54 chainTr->SetAlias("dP2","tp1.fP[2]-tp2.fP[2]");
55 chainTr->SetAlias("dP3","tp1.fP[3]-tp2.fP[3]");
56 chainTr->SetAlias("dP4","tp1.fP[4]-tp2.fP[4]");
58 chainTr->SetAlias("sP0","sqrt(tp1.fC[0]+tp2.fC[0])");
59 chainTr->SetAlias("sP1","sqrt(tp1.fC[2]+tp2.fC[2])");
60 chainTr->SetAlias("sP2","sqrt(tp1.fC[5]+tp2.fC[5])");
61 chainTr->SetAlias("sP3","sqrt(tp1.fC[9]+tp2.fC[9])");
62 chainTr->SetAlias("sP4","sqrt(tp1.fC[14]+tp2.fC[14])");
64 chainTr->SetAlias("pP0","dP0/sP0");
65 chainTr->SetAlias("pP1","dP1/sP1");
66 chainTr->SetAlias("pP2","dP2/sP2");
67 chainTr->SetAlias("pP3","dP3/sP3");
69 chainTr->SetAlias("side","(sign(tp1.fP[1])+0)");
70 chainTr->SetAlias("dR","(1-abs(tp1.fP[1]/250.))");
71 chainTr->SetAlias("ta0","(tp1.fP[2]+tp2.fP[2])*0.5");
72 chainTr->SetAlias("ta1","(tp1.fP[3]+tp2.fP[3])*0.5");
73 chainTr->SetAlias("ca","cos(tp1.fAlpha+0)");
74 chainTr->SetAlias("sa","sin(tp1.fAlpha+0)");
76 chainTr->SetAlias("meanZ","(tp1.fP[1]+tp2.fP[1])*0.5");
77 chainTr->SetAlias("vx1","(v1.fElements[0]+0)");
78 chainTr->SetAlias("vy1","(v1.fElements[1]+0)");
79 chainTr->SetAlias("vz1","(v1.fElements[2]+0)");
80 chainTr->SetAlias("vdydx1","(v1.fElements[3]+0)");
81 chainTr->SetAlias("vdzdx1","(v1.fElements[4]+0)");
82 chainTr->SetAlias("vx2","(v2.fElements[0]+0)");
83 chainTr->SetAlias("vy2","(v2.fElements[1]+0)");
84 chainTr->SetAlias("vz2","(v2.fElements[2]+0)");
85 chainTr->SetAlias("vdydx2","(v2.fElements[3]+0)");
86 chainTr->SetAlias("vdzdx2","(v2.fElements[4]+0)");
90 chainTr->SetAlias("dx1","(AliTPCcalibAlign::SCorrect(0,0,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vx1)");
91 chainTr->SetAlias("dy1","(AliTPCcalibAlign::SCorrect(0,1,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vy1)");
92 chainTr->SetAlias("dz1","(AliTPCcalibAlign::SCorrect(0,2,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vz1)");
93 chainTr->SetAlias("ddy1","(AliTPCcalibAlign::SCorrect(0,3,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdydx1)");
94 chainTr->SetAlias("ddz1","(AliTPCcalibAlign::SCorrect(0,4,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdzdx1)");
95 chainTr->SetAlias("ddy01","(AliTPCcalibAlign::SCorrect(0,5,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdydx1)");
96 chainTr->SetAlias("ddz01","(AliTPCcalibAlign::SCorrect(0,6,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)-vdzdx1)");
102 void InitCutsAlign(){
104 TCut cutS0("sqrt(tp2.fC[0]+tp2.fC[0])<0.2");
105 TCut cutS1("sqrt(tp2.fC[2]+tp2.fC[2])<0.2");
106 TCut cutS2("sqrt(tp2.fC[5]+tp2.fC[5])<0.01");
107 TCut cutS3("sqrt(tp2.fC[9]+tp2.fC[9])<0.01");
108 TCut cutS4("sqrt(tp2.fC[14]+tp2.fC[14])<0.5");
109 TCut cutS=cutS0+cutS1+cutS2+cutS3+cutS4;
111 // parameters matching cuts
112 TCut cutP0("abs(tp1.fP[0]-tp2.fP[0])<0.6");
113 TCut cutP1("abs(tp1.fP[1]-tp2.fP[1])<0.6");
114 TCut cutP2("abs(tp1.fP[2]-tp2.fP[2])<0.03");
115 TCut cutP3("abs(tp1.fP[3]-tp2.fP[3])<0.03");
116 TCut cutP=cutP0+cutP1+cutP2+cutP3;
118 TCut cutAll = cutS+cutP;
119 chainTr->Draw(">>listELP",cutAll,"entryList");
120 TEntryList *elist = (TEntryList*)gDirectory->Get("listELP");
121 chainTr->SetEntryList(elist);
130 align.ProcessTree(chainTr);
132 align.MakeTree("alignTree.root");
133 align.SetInstance(&align);
136 void MakeCompareAlign(){
140 TFile falignTreeNoMag("/lustre_alpha/alice/miranov/rec/LHC08d/nomag/alignTree.root");
141 TTree * treeAlignNoMag = (TTree*)falignTreeNoMag.Get("Align");
142 TFile falignTree("alignTree.root");
143 TTree * treeAlign = (TTree*)falignTree.Get("Align");
144 treeAlign->AddFriend(treeAlignNoMag,"NoMag");
145 treeAlignNoMag->SetMarkerStyle(26);
146 treeAlign->SetMarkerStyle(25);
149 TMatrixD * arrayAlign[72];
150 TMatrixD * arrayAlignTmp[72];
152 void ClearMatrices(){
155 for (Int_t i=0;i<72; i++) {
156 TMatrixD * mat = new TMatrixD(4,4);
159 arrayAlignTmp[i]=(TMatrixD*)(mat->Clone());
168 TTreeSRedirector *cstream = new TTreeSRedirector("galign.root");
170 for (Int_t iter=0; iter<10;iter++){
171 printf("Iter=\t%d\n",iter);
172 for (Int_t is0=0;is0<72; is0++) {
174 TMatrixD *mati0 = arrayAlign[is0];
175 TMatrixD matDiff(4,4);
177 for (Int_t is1=0;is1<72; is1++) {
178 Bool_t invers=kFALSE;
179 const TMatrixD *mat = align.GetTransformation(is0,is1,0);
182 mat = align.GetTransformation(is1,is0,0);
186 if ( (is1%18-is0%18)!=0) weight*=0.3;
187 if (is1/36>is0/36) weight*=2./3.;
188 if (is1/36<is0/36) weight*=1./3.;
191 TMatrixD matT = *mat;
192 if (invers) matT.Invert();
193 matDiff+=weight*(*(arrayAlign[is1]))*matT;
195 (*cstream)<<"LAlign"<<
198 "m6.="<<arrayAlign[is0]<<
204 (*arrayAlignTmp[is0]) = matDiff;
207 for (Int_t is0=0;is0<72; is0++) {
208 (*arrayAlign[is0]) = (*arrayAlignTmp[is0]);
209 // TMatrixD * matM1= align.GetTransformation(is0,36+(is0+35)%36,0);
210 //TMatrixD * mat = align.GetTransformation(is0,36+(is0+36)%36,0);
211 //TMatrixD * matP1= align.GetTransformation(is0,36+(is0+37)%36,0);
213 (*cstream)<<"GAlign"<<
216 "m6.="<<arrayAlign[is0]<<
227 void MakeGlobalCorr(){
231 TStatToolkit toolkit;
248 fstring+="dR*side++";
249 fstring+="dR*dR*side++";
250 fstring+="dR*sa*side++";
251 fstring+="dR*ca*side++";
252 fstring+="ta0*side++";
253 fstring+="ta1*side++";
255 TString * strP0 = TStatToolkit::FitPlane(chainTr,"dP0:sP0", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
256 chi2V[0]=TMath::Sqrt(chi2/npoints);
257 chainTr->SetAlias("corrP0",strP0->Data());
259 TString * strP1 = TStatToolkit::FitPlane(chainTr,"dP1:sP1", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
260 chi2V[1]=TMath::Sqrt(chi2/npoints);
261 chainTr->SetAlias("corrP1",strP1->Data());
263 TString * strP2 = TStatToolkit::FitPlane(chainTr,"dP2:sP2", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
264 chi2V[2]=TMath::Sqrt(chi2/npoints);
265 chainTr->SetAlias("corrP2",strP2->Data());
267 TString * strP3 = TStatToolkit::FitPlane(chainTr,"dP3:sP3", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
268 chi2V[3]=TMath::Sqrt(chi2/npoints);
269 chainTr->SetAlias("corrP3",strP3->Data());
271 TString * strP4 = TStatToolkit::FitPlane(chainTr,"dP4:sP4", fstring.Data(),cutS, chi2,npoints,fitParam,covMatrix);
272 chi2V[4]=TMath::Sqrt(chi2/npoints);
273 chainTr->SetAlias("corrP4",strP4->Data());
280 TH2F * hdP0Z = new TH2F("hdP0Z","hdP0Z",10,-250,250,100,-0.5,0.5);
281 TH2F * hdP0ZNoCor = new TH2F("hdP0ZNoCor","hdP0ZNoCor",10,-250,250,100,-0.5,0.5);
282 chainTr->Draw("(dP0-corrP0)/sqrt(2.):meanZ>>hdP0Z",""+cutRun+cutS+cutN120,"");
283 chainTr->Draw("(dP0-0)/sqrt(2.):meanZ>>hdP0ZNoCor",""+cutRun+cutS+cutN120,"");
286 hdP0ZNoCor->FitSlicesY();
287 hdP0Z_2->SetMinimum(0);
288 hdP0Z_2->SetXTitle("Z position (cm)");
289 hdP0Z_2->SetYTitle("#sigma_{y} (cm)");
290 hdP0Z_2->SetMarkerStyle(25);
291 hdP0ZNoCor_2->SetMarkerStyle(26);
293 hdP0ZNoCor_2->Draw("same");
294 gPad->SaveAs("picAlign/SigmaY_z.gif");
295 gPad->SaveAs("picAlign/SigmaY_z.eps");
297 hdP0ZNoCor_1->SetXTitle("Z position (cm)");
298 hdP0ZNoCor_1->SetYTitle("#Delta{y} (cm)");
299 hdP0Z_1->SetMarkerStyle(25);
300 hdP0ZNoCor_1->SetMarkerStyle(26);
301 hdP0ZNoCor_1->Draw("");
302 hdP0Z_1->Draw("same");
303 gPad->SaveAs("picAlign/DeltaY_z.gif");
304 gPad->SaveAs("picAlign/DeltaY_z.eps");
307 TH2F * hdPP0Z = new TH2F("hdPP0Z","hdPP0Z",8,-200,200,50,-5.05,5.05);
308 TH2F * hncdPP0Z = new TH2F("hncdPP0Z","hncdPP0Z",8,-200,200,50,-5.05,5.05);
309 chainTr->Draw("(dP0-corrP0)/sP0:meanZ>>hdPP0Z",""+cutRun+cutS+cutN120,"");
310 chainTr->Draw("(dP0-0)/sP0:meanZ>>hncdPP0Z",""+cutRun+cutS+cutN120,"");
311 hdPP0Z->FitSlicesY();
312 hncdPP0Z->FitSlicesY();
313 hdPP0Z_2->SetMarkerStyle(25);
314 hncdPP0Z_2->SetMarkerStyle(26);
315 hdPP0Z_2->SetMinimum(0);
316 hdPP0Z_2->SetXTitle("Z position (cm)");
317 hdPP0Z_2->SetYTitle("#sigma y (Unit) ");
319 hncdPP0Z_2->Draw("same");
320 gPad->SaveAs("picAlign/PullY_z.gif");
321 gPad->SaveAs("picAlign/PullY_z.eps");
328 TH2F * hdP1Z = new TH2F("hdP1Z","hdP1Z",10,-250,250,100,-0.2,0.2);
329 TH2F * hdP1ZNoCor = new TH2F("hdP1ZNoCor","hdP1ZNoCor",10,-250,250,100,-0.2,0.2);
330 chainTr->Draw("(dP1-corrP1)/sqrt(2.):meanZ>>hdP1Z",""+cutRun+cutS+cutN120,"");
331 chainTr->Draw("(dP1-0)/sqrt(2.):meanZ>>hdP1ZNoCor",""+cutRun+cutS+cutN120,"");
334 hdP1ZNoCor->FitSlicesY();
335 hdP1Z_2->SetMinimum(0);
336 hdP1Z_2->SetXTitle("Z position (cm)");
337 hdP1Z_2->SetYTitle("#sigma_{z} (cm)");
338 hdP1Z_2->SetMarkerStyle(25);
339 hdP1ZNoCor_2->SetMarkerStyle(26);
341 hdP1ZNoCor_2->Draw("same");
342 gPad->SaveAs("picAlign/SigmaZ_z.gif");
343 gPad->SaveAs("picAlign/SigmaZ_z.eps");
345 hdP1ZNoCor_1->SetXTitle("Z position (cm)");
346 hdP1ZNoCor_1->SetYTitle("#Delta{z} (cm)");
347 hdP1Z_1->SetMarkerStyle(25);
348 hdP1ZNoCor_1->SetMarkerStyle(26);
349 hdP1ZNoCor_1->Draw("");
350 hdP1Z_1->Draw("same");
351 gPad->SaveAs("picAlign/DeltaZ_z.gif");
352 gPad->SaveAs("picAlign/DeltaZ_z.eps");
355 TH2F * hdPP1Z = new TH2F("hdPP1Z","hdPP1Z",8,-200,200,50,-5.05,5.05);
356 TH2F * hncdPP1Z = new TH2F("hncdPP1Z","hncdPP1Z",8,-200,200,50,-5.05,5.05);
357 chainTr->Draw("(dP1-corrP1)/sP1:meanZ>>hdPP1Z",""+cutRun+cutS+cutN120,"");
358 chainTr->Draw("(dP1-0)/sP1:meanZ>>hncdPP1Z",""+cutRun+cutS+cutN120,"");
359 hdPP1Z->FitSlicesY();
360 hncdPP1Z->FitSlicesY();
361 hdPP1Z_2->SetMarkerStyle(25);
362 hncdPP1Z_2->SetMarkerStyle(26);
363 hdPP1Z_2->SetMinimum(0);
364 hdPP1Z_2->SetXTitle("Z position (cm)");
365 hdPP1Z_2->SetYTitle("#sigma z (Unit) ");
367 hncdPP1Z_2->Draw("same");
368 gPad->SaveAs("picAlign/PullZ_z.gif");
369 gPad->SaveAs("picAlign/PullZ_z.eps");
377 TH2F * hdP4Z = new TH2F("hdP4Z","hdP4Z",10,-250,250,100,-0.4,0.4);
378 TH2F * hdP4ZNoCor = new TH2F("hdP4ZNoCor","hdP4ZNoCor",10,-250,250,100,-0.4,0.4);
379 chainTr->Draw("(dP4-corrP4)/sqrt(2.):meanZ>>hdP4Z",""+cutRun+cutS+cutN120,"");
380 chainTr->Draw("(dP4-0)/sqrt(2.):meanZ>>hdP4ZNoCor",""+cutRun+cutS+cutN120,"");
383 hdP4ZNoCor->FitSlicesY();
384 hdP4Z_2->SetMinimum(0);
385 hdP4Z_2->SetXTitle("Z position (cm)");
386 hdP4Z_2->SetYTitle("#sigma_{1/pt} (1/GeV)");
387 hdP4Z_2->SetMarkerStyle(25);
388 hdP4ZNoCor_2->SetMarkerStyle(26);
390 hdP4ZNoCor_2->Draw("same");
391 gPad->SaveAs("picAlign/SigmaP4_z.gif");
392 gPad->SaveAs("picAlign/SigmaP4_z.eps");
394 hdP4ZNoCor_1->SetXTitle("Z position (cm)");
395 hdP4ZNoCor_1->SetYTitle("#Delta_{1/p_{t}} (1/GeV)");
396 hdP4Z_1->SetMarkerStyle(25);
397 hdP4ZNoCor_1->SetMarkerStyle(26);
398 hdP4ZNoCor_1->Draw("");
399 hdP4Z_1->Draw("same");
400 gPad->SaveAs("picAlign/DeltaP4_z.gif");
401 gPad->SaveAs("picAlign/DeltaP4_z.eps");
404 TH2F * hdPP4Z = new TH2F("hdPP4Z","hdPP4Z",8,-200,200,50,-5.05,5.05);
405 TH2F * hncdPP4Z = new TH2F("hncdPP4Z","hncdPP4Z",8,-200,200,50,-5.05,5.05);
406 chainTr->Draw("(dP4-corrP4)/sP4:meanZ>>hdPP4Z",""+cutRun+cutS+cutN120,"");
407 chainTr->Draw("(dP4-0)/sP4:meanZ>>hncdPP4Z",""+cutRun+cutS+cutN120,"");
408 hdPP4Z->FitSlicesY();
409 hncdPP4Z->FitSlicesY();
410 hdPP4Z_2->SetMarkerStyle(25);
411 hncdPP4Z_2->SetMarkerStyle(26);
412 hdPP4Z_2->SetMinimum(0);
413 hdPP4Z_2->SetXTitle("Z position (cm)");
414 hdPP4Z_2->SetYTitle("#sigma 1/p_{t} (Unit) ");
416 hncdPP4Z_2->Draw("same");
417 gPad->SaveAs("picAlign/PullP4_z.gif");
418 gPad->SaveAs("picAlign/PullP4_z.eps");
429 TChain *chainTracklet=chainTr;
430 AliTPCcalibAlign align;
434 AliExternalTrackParam * tp1 = 0;
435 AliExternalTrackParam * tp2 = 0;
439 for (Int_t i=0; i< elist->GetN(); i++){
440 //for (Int_t i=0; i<100000; i++){
441 chainTracklet->GetBranch("tp1.")->SetAddress(&tp1);
442 chainTracklet->GetBranch("tp2.")->SetAddress(&tp2);
443 chainTracklet->GetBranch("v1.")->SetAddress(&vec1);
444 chainTracklet->GetBranch("v2.")->SetAddress(&vec2);
445 chainTracklet->GetBranch("s1")->SetAddress(&s1);
446 chainTracklet->GetBranch("s2")->SetAddress(&s2);
447 chainTracklet->GetEntry(i);
448 if (i%100==0) printf("%d\t%d\t%d\t\n",i, s1,s2);
450 TLinearFitter * fitter = align.GetOrMakeFitter6(s1,s2);
451 if (fitter) align.Process6(vec1->GetMatrixArray(),vec2->GetMatrixArray(),fitter);
457 // chainTr->Scan("vy1:AliTPCcalibAlign::SCorrect(0,1,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)","","",100);
461 chainTr->Draw("vy2-vy1:s1>>hisdYNoCor(36,0,36,100,-0.3,0.3)","abs(s2-s1-36)<1","",40000);
462 chainTr->Draw("vy2-vy1-dy1:s1>>hisdYCor(36,0,36,100,-0.3,0.3)","abs(s2-s1-36)<1","",40000);
463 hisdYCor->FitSlicesY();
464 hisdYNoCor->FitSlicesY();
465 hisdYCor_1->Draw("");
474 treeAlign->Draw("1000*m6.fElements[4]","s2==s1+36&&nphi>100");
475 htemp->SetXTitle("#Delta_{#phi} (mrad)");
476 gPad->SaveAs("picAlign/mag5dPhi.eps");
477 gPad->SaveAs("picAlign/mag5dPhi.gif");
479 treeAlignNoMag->Draw("1000*m6.fElements[4]","s2==s1+36&&nphi>100");
480 htemp->SetXTitle("#Delta_{#phi} (mrad)");
481 gPad->SaveAs("picAlign/nomagdPhi.eps");
482 gPad->SaveAs("picAlign/nomagdPhi.gif");
486 treeAlign->Draw("1000*(m6.fElements[4]-NoMag.m6.fElements[4])","s2==s1+36&&nphi>100");
487 htemp->SetXTitle("#Delta_{#phi} (mrad)");
488 gPad->SaveAs("picAlign/diffnomagmag5dPhi.eps");
489 gPad->SaveAs("picAlign/diffnomagmag5dPhi.gif");
498 treeAlign->Draw("1000*m6.fElements[8]","s2==s1+36&&nphi>100");
499 htemp->SetXTitle("#Delta_{#theta} (mrad)");
500 gPad->SaveAs("picAlign/mag5dTheta.eps");
501 gPad->SaveAs("picAlign/mag5dTheta.gif");
503 treeAlignNoMag->Draw("1000*m6.fElements[8]","s2==s1+36&&nphi>100");
504 htemp->SetXTitle("#Delta_{#theta} (mrad)");
505 gPad->SaveAs("picAlign/nomagdTheta.eps");
506 gPad->SaveAs("picAlign/nomagdTheta.gif");
510 treeAlign->Draw("1000*(m6.fElements[8]-NoMag.m6.fElements[8])","s2==s1+36&&nphi>100");
511 htemp->SetXTitle("#Delta_{#theta} (mrad)");
512 gPad->SaveAs("picAlign/diffnomagmag5dTheta.eps");
513 gPad->SaveAs("picAlign/diffnomagmag5dTheta.gif");
516 treeAlign->Draw("1000*(m6.fElements[8]):s1","s2==s1+36&&nphi>100");
517 htemp->SetYTitle("#Delta_{#theta} (mrad)");
518 htemp->SetXTitle("Sector number");
519 treeAlignNoMag->Draw("1000*(m6.fElements[8]):s1","s2==s1+36&&nphi>100","same");
520 gPad->SaveAs("picAlign/diffnomagmag5dTheta_s1.eps");
521 gPad->SaveAs("picAlign/diffnomagmag5dTheta_s1.gif");
531 treeAlign->Draw("dz","s2==s1+36&&nphi>100");
532 htemp->SetXTitle("#Delta_{Z} (cm)");
533 gPad->SaveAs("picAlign/mag5dZ.eps");
534 gPad->SaveAs("picAlign/mag5dZ.gif");
536 treeAlignNoMag->Draw("dz","s2==s1+36&&nphi>100");
537 htemp->SetXTitle("#Delta_{Z} (cm)");
538 gPad->SaveAs("picAlign/nomagdZ.eps");
539 gPad->SaveAs("picAlign/nomagdZ.gif");
543 treeAlign->Draw("(dz-NoMag.dz)","s2==s1+36&&nphi>100");
544 htemp->SetXTitle("#Delta_{Z} (cm)");
545 gPad->SaveAs("picAlign/diffnomagmag5dZ.eps");
546 gPad->SaveAs("picAlign/diffnomagmag5dZ.gif");
549 treeAlign->Draw("dz:s1","s2==s1+36&&nphi>100");
550 htemp->SetYTitle("#Delta_{Z} (cm)");
551 htemp->SetXTitle("Sector number");
552 treeAlignNoMag->Draw("dz:s1","s2==s1+36&&nphi>100","same");
553 gPad->SaveAs("picAlign/diffnomagmag5dZ_s1.eps");
554 gPad->SaveAs("picAlign/diffnomagmag5dZ_s1.gif");
562 treeAlign->Draw("dy","s2==s1+36&&nphi>100");
563 htemp->SetXTitle("#Delta_{Y} (cm)");
564 gPad->SaveAs("picAlign/mag5dY.eps");
565 gPad->SaveAs("picAlign/mag5dY.gif");
567 treeAlignNoMag->Draw("dy","s2==s1+36&&nphi>100");
568 htemp->SetXTitle("#Delta_{Y} (cm)");
569 gPad->SaveAs("picAlign/nomagdY.eps");
570 gPad->SaveAs("picAlign/nomagdY.gif");
574 treeAlign->Draw("(dy-NoMag.dy)","s2==s1+36&&nphi>100");
575 htemp->SetXTitle("#Delta_{Y} (cm)");
576 gPad->SaveAs("picAlign/diffnomagmag5dY.eps");
577 gPad->SaveAs("picAlign/diffnomagmag5dY.gif");
580 treeAlign->Draw("dy:s1","s2==s1+36&&nphi>100");
581 htemp->SetYTitle("#Delta_{Y} (cm)");
582 htemp->SetXTitle("Sector number");
583 treeAlignNoMag->Draw("dy:s1","s2==s1+36&&nphi>100","same");
584 gPad->SaveAs("picAlign/diffnomagmag5dY_s1.eps");
585 gPad->SaveAs("picAlign/diffnomagmag5dY_s1.gif");