]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/CalibMacros/CalibAlign.C
420a9be95f7507687dab041ed90ce14241fad458
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibAlign.C
1 /*
2   .x ~/UliStyle.C
3   .x ~/rootlogon.C
4   gSystem->Load("libSTAT");
5   gSystem->Load("libANALYSIS");
6   gSystem->Load("libTPCcalib"); 
7   gSystem->Load("libSTAT");
8   gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
9   
10
11
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);
18   chainTr->Lookup();
19   //chainTr->SetProof(kTRUE);
20   //
21   //
22   //
23   .L $ALICE_ROOT/TPC/CalibMacros/CalibAlign.C
24   SetAlias();
25   InitCutsAlign();
26   MakeAlign();
27   
28 */
29 /*
30 #include "TMath.h"
31 #include "TFile.h"
32 #include "TLinearFitter.h"
33 #include "TChain.h"
34 #include "TTreeStream.h"
35 #include "TStatToolkit.h"
36 #include "TH2F.h"
37 #include "TLegend.h"
38 #include "TCut.h"
39 #include "TPad.h"
40 #include "AliTPCcalibAlign.h"
41 */
42
43
44
45 AliTPCcalibAlign align;
46 TChain * chainTr;
47
48 void SetAlias(){
49   //
50   //
51   //
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]");
57   //
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])");
63   //
64   chainTr->SetAlias("pP0","dP0/sP0");
65   chainTr->SetAlias("pP1","dP1/sP1");
66   chainTr->SetAlias("pP2","dP2/sP2");
67   chainTr->SetAlias("pP3","dP3/sP3");
68   //
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)");
75   //
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)");
87   //
88   //
89   //
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)");
97
98
99 }
100
101
102 void InitCutsAlign(){
103   // resolution cuts
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;
110   //
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;
117   //
118   TCut cutAll = cutS+cutP;
119   chainTr->Draw(">>listELP",cutAll,"entryList");
120   TEntryList *elist = (TEntryList*)gDirectory->Get("listELP");
121   chainTr->SetEntryList(elist);
122   
123   TCut cutRun("1");
124   TCut cutN120("1");
125
126 }
127
128 void MakeAlign(){
129   
130   align.ProcessTree(chainTr);
131   align.EvalFitters();
132   align.MakeTree("alignTree.root");
133   align.SetInstance(&align);
134 }
135  
136 void MakeCompareAlign(){
137   //
138   //
139   //
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);
147 }
148
149 TMatrixD * arrayAlign[72];
150 TMatrixD * arrayAlignTmp[72];
151
152 void ClearMatrices(){
153   //
154   //
155   for (Int_t i=0;i<72; i++) {
156     TMatrixD * mat = new TMatrixD(4,4);
157     mat->UnitMatrix();
158     arrayAlign[i]=mat;
159     arrayAlignTmp[i]=(TMatrixD*)(mat->Clone());
160   }
161
162 }
163
164 void GlobalAlign(){
165   //
166   // Global Align
167   //
168   TTreeSRedirector *cstream = new TTreeSRedirector("galign.root");
169
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++) {
173       //
174       TMatrixD  *mati0 = arrayAlign[is0];
175       TMatrixD matDiff(4,4);
176       Double_t sumw=0;      
177       for (Int_t is1=0;is1<72; is1++) {
178         Bool_t invers=kFALSE;
179         const TMatrixD *mat = align.GetTransformation(is0,is1,0); 
180         if (!mat){
181           invers=kTRUE;
182           mat = align.GetTransformation(is1,is0,0); 
183         }
184         if (!mat) continue;
185         Double_t weight=1;
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.;
189         //
190         //
191         TMatrixD matT = *mat;   
192         if (invers)  matT.Invert();
193         matDiff+=weight*(*(arrayAlign[is1]))*matT;
194         sumw+=weight;
195         (*cstream)<<"LAlign"<<
196           "iter="<<iter<<
197           "s0="<<is0<<
198           "m6.="<<arrayAlign[is0]<<
199           "\n";
200
201       }
202       if (sumw>0){
203         matDiff*=1/sumw;
204         (*arrayAlignTmp[is0]) = matDiff;
205       }
206     }
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);
212       //
213       (*cstream)<<"GAlign"<<
214         "iter="<<iter<<
215         "s0="<<is0<<
216         "m6.="<<arrayAlign[is0]<<
217         "\n";
218     }    
219   }
220   delete cstream;
221 }
222
223
224
225
226
227 void MakeGlobalCorr(){
228   //
229   //
230   //
231   TStatToolkit toolkit;
232   Double_t chi2=0;
233   Int_t    npoints=0;
234   TVectorD fitParam;
235   TMatrixD covMatrix;
236   TVectorD chi2V(5);
237   //
238   TString fstring="";
239   fstring+="side++";
240   //
241   fstring+="dR++";
242   fstring+="dR*dR++";
243   fstring+="dR*sa++";
244   fstring+="dR*ca++";
245   fstring+="ta0++";
246   fstring+="ta1++";
247   //
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++";
254
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());
258
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());
262
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());
266
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());
270
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());
274 }
275
276 void P0resolZ(){
277   //
278   //
279   //
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,"");
284   
285   hdP0Z->FitSlicesY();
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);
292   hdP0Z_2->Draw();
293   hdP0ZNoCor_2->Draw("same");  
294   gPad->SaveAs("picAlign/SigmaY_z.gif");
295   gPad->SaveAs("picAlign/SigmaY_z.eps");
296   //
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");
305   //
306   //
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) ");
318   hdPP0Z_2->Draw();
319   hncdPP0Z_2->Draw("same");
320   gPad->SaveAs("picAlign/PullY_z.gif");
321   gPad->SaveAs("picAlign/PullY_z.eps");
322 }
323
324 void P1resolZ(){
325   //
326   //
327   //
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,"");
332   
333   hdP1Z->FitSlicesY();
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);
340   hdP1Z_2->Draw();
341   hdP1ZNoCor_2->Draw("same");  
342   gPad->SaveAs("picAlign/SigmaZ_z.gif");
343   gPad->SaveAs("picAlign/SigmaZ_z.eps");
344   //
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");
353   //
354   //
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) ");
366   hdPP1Z_2->Draw();
367   hncdPP1Z_2->Draw("same");
368   gPad->SaveAs("picAlign/PullZ_z.gif");
369   gPad->SaveAs("picAlign/PullZ_z.eps");
370 }
371
372
373 void P4resolZ(){
374   //
375   //
376   //
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,"");
381   
382   hdP4Z->FitSlicesY();
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);
389   hdP4Z_2->Draw();
390   hdP4ZNoCor_2->Draw("same");  
391   gPad->SaveAs("picAlign/SigmaP4_z.gif");
392   gPad->SaveAs("picAlign/SigmaP4_z.eps");
393   //
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");
402   //
403   //
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) ");
415   hdPP4Z_2->Draw();
416   hncdPP4Z_2->Draw("same");
417   gPad->SaveAs("picAlign/PullP4_z.gif");
418   gPad->SaveAs("picAlign/PullP4_z.eps");
419 }
420
421
422
423
424
425 void MakeFit(){
426   //
427   //
428   //
429   TChain *chainTracklet=chainTr;
430   AliTPCcalibAlign align;
431   //
432   TVectorD * vec1 = 0;
433   TVectorD * vec2 = 0;
434   AliExternalTrackParam * tp1 = 0;
435   AliExternalTrackParam * tp2 = 0;  
436   Int_t      s1 = 0;
437   Int_t      s2 = 0;
438   {
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);
449       //vec1.Print();
450       TLinearFitter * fitter = align.GetOrMakeFitter6(s1,s2);
451       if (fitter) align.Process6(vec1->GetMatrixArray(),vec2->GetMatrixArray(),fitter);
452     }
453   }
454 }
455
456
457 // chainTr->Scan("vy1:AliTPCcalibAlign::SCorrect(0,1,s1,s2,vx1,vy1,vz1,vdydx1,vdzdx1)","","",100); 
458
459 void MakePlot(){
460   //
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("");
466
467 }
468
469
470 void dPhi(){
471   //
472   //
473   //  
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");
478   //
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");
483   //
484   //
485   //
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");
490   //
491 }
492
493
494 void dTheta(){
495   //
496   //
497   //  
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");
502   //
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");
507   //
508   //
509   //
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");
514   //
515   //
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");
522   //
523 }
524
525
526
527 void dZ(){
528   //
529   //
530   //  
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");
535   //
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");
540   //
541   //
542   //
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");
547   //
548   //
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");
555   //
556 }
557
558 void dY(){
559   //
560   //
561   //  
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");
566   //
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");
571   //
572   //
573   //
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");
578   //
579   //
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");
586   //
587 }
588
589
590
591
592
593
594
595
596