]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/CalibMacros/CalibEdge.C
Macros moved to the TPC/scripts/OCDBscan directory
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibEdge.C
1 /*
2
3 .x ~/rootlogon.C
4
5 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
6 gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+")
7 AliXRDPROOFtoolkit tool;
8 gSystem->Load("libSTAT.so");
9
10
11 //  Load - Calibration using the CE  
12 .L $ALICE_ROOT/TPC/CalibMacros/AnalyzeLaser.C+
13 LoadViewer();
14 tree->SetAlias("dedgePI","tan(10*pi/180.)*lx.fElements-ly.fElements+0.5*0.4");
15 tree->SetAlias("dedgeMI","ly.fElements+tan(10*pi/180.)*lx.fElements-0.5*0.4");
16 tree->SetAlias("dedgePO","tan(10*pi/180.)*lx.fElements-ly.fElements+0.5*0.6");
17 tree->SetAlias("dedgeMO","ly.fElements+tan(10*pi/180.)*lx.fElements-0.5*0.6");
18
19 // Load -Calibration using laser tracks
20 // PROOF neccessary
21
22
23 TChain * chainFit=0;
24 TChain * chainTrack=0;
25 TChain * chain=0;
26 //
27 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
28 gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
29 AliXRDPROOFtoolkit tool;
30 chainTrack = tool.MakeChain("laser.txt","Track",0,10200);
31 chainTrack->Lookup();
32 chainTrack->SetProof(kTRUE);
33 chain = tool.MakeChain("laser.txt","Residuals",0,10200);
34 chain->Lookup();
35 chainFit = tool.MakeChain("laser.txt","FitModels",0,10200);
36 chainFit->Lookup();
37 chainFit->SetProof(kTRUE);
38 chain->SetProof(kTRUE);
39 chainDrift = tool.MakeChain("laser.txt","driftv",0,10200);
40 chainDrift->Lookup();
41 chainDrift->SetProof(kTRUE);
42
43  TCut cutChi2YOut("sqrt(chi2y2Out*dEdx)<5");
44   TCut cutChi2ZOut("sqrt(chi2z2Out*dEdx)<5");
45   TCut cutChi2YIn("sqrt(chi2y2In*dEdx)<5");
46   TCut cutChi2ZIn("sqrt(chi2z2In*dEdx)<5");
47   //
48   TCut cutdEdx("sqrt(dEdx)<30&&sqrt(dEdx)>3");
49   TCut cutDY("abs(yPol2In.fElements[2]*nclO*nclO/4.)<3");
50   TCut cutN("nclO>20&&nclI>20");
51   TCut cutA = cutChi2YOut+cutChi2ZOut+cutChi2YIn+cutChi2ZIn+cutN+cutdEdx;
52   //
53   // Cluster cuts
54   //
55   TCut cutClY("Cl[].fY!=0&&abs(Cl[].fY-TrYpol2.fElements)<1.");
56   TCut cutClZ("abs(Cl[].fZ-TrZpol2.fElements)<1.0");
57   TCut cutClX("abs(Cl[].fX)>10");
58   TCut cutE("abs(Cl[].fY/Cl[].fX)<0.14");
59   TCut cutSY("sqrt(Cl[].fSigmaY2)>0.05");
60   TCut cutSZ("sqrt(Cl[].fSigmaZ2)>0.05");
61   TCut cutQ("sqrt(Cl[].fMax)>4");
62   TCut cutCl=cutClY+cutClZ+cutClX+cutE+cutSY+cutSZ+cutQ;
63
64
65
66 */
67
68
69
70
71 void CalibEdgeQPad(){
72   //
73   // Get the Mean charge on pad as function of pad number
74   //
75   TH2* hisQPadPShort= 0;
76   TH2* hisQPadMMiddle= 0;
77   TH2* hisQPadMLong= 0;
78   //
79   tree->Draw("qIn.fElements/qF2.fElements:pad.fElements>>hisQPadPShort(10,0,10,50,0.1,2)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector<36","");
80   hisQPadPShort = (TH2*)gROOT->FindObject("hisQPadPShort");
81   hisQPadPShort->FitSlicesY();
82   TH1 * hisQPadPShortM =  (TH1*)(gROOT->FindObject("hisQPadPShort_1")->Clone());
83   //
84   tree->Draw("qIn.fElements/qF2.fElements:pad.fElements>>hisQPadPMiddle(10,0,10,50,0.1,2)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector>36&&lx.fElements<197","");
85   hisQPadPMiddle = (TH2*)gROOT->FindObject("hisQPadPMiddle");
86   hisQPadPMiddle->FitSlicesY();
87   TH1 * hisQPadPMiddleM =  (TH1*)(gROOT->FindObject("hisQPadPMiddle_1")->Clone());
88   //
89   tree->Draw("qIn.fElements/qF2.fElements:pad.fElements>>hisQPadPLong(10,0,10,50,0.1,2)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector>36&&lx.fElements>197","");
90   hisQPadPLong = (TH2*)gROOT->FindObject("hisQPadPLong");
91   hisQPadPLong->FitSlicesY();
92   TH1 * hisQPadPLongM =  (TH1*)(gROOT->FindObject("hisQPadPLong_1")->Clone());
93   //
94   hisQPadPShortM->SetLineColor(2);
95   hisQPadPMiddleM->SetLineColor(4);
96   hisQPadPLongM->SetLineColor(6);
97   hisQPadPShortM->SetMarkerStyle(23);
98   hisQPadPMiddleM->SetMarkerStyle(24);
99   hisQPadPLongM->SetMarkerStyle(25);
100
101   hisQPadPShortM->Draw();
102   hisQPadPShortM->SetMinimum(0);
103   hisQPadPShortM->SetMaximum(1.4);
104   hisQPadPMiddleM->Draw("same");
105   hisQPadPLongM->Draw("same");
106   TLegend *legend = new TLegend(0.45,0.12,0.85,0.55, "Mean charge vs Pad number");
107   legend->SetBorderSize(1);
108   legend->AddEntry(hisQPadPShortM,"Short pads");
109   legend->AddEntry(hisQPadPMiddleM,"Medium pads");
110   legend->AddEntry(hisQPadPLongM,"Long pads");
111   legend->Draw();
112
113 }
114
115 void CalibEdgeTPad(){
116   //
117   // Get the Mean charge on pad as function of pad number
118   //
119   TH2* hisTPadPShort= 0;
120   TH2* hisTPadMMiddle= 0;
121   TH2* hisTPadMLong= 0;
122   //
123   tree->Draw("(timeIn.fElements-timeF2.fElements)*2.64:pad.fElements>>hisTPadPShort(10,0,10,50,-1,1)","timeIn.fElements!=0&&sector%36>17&&sector<36","");
124   hisTPadPShort = (TH2*)gROOT->FindObject("hisTPadPShort");
125   hisTPadPShort->FitSlicesY();
126   TH1 * hisTPadPShortM =  (TH1*)(gROOT->FindObject("hisTPadPShort_1")->Clone());
127   //
128   tree->Draw("(timeIn.fElements-timeF2.fElements)*2.64:pad.fElements>>hisTPadPMiddle(10,0,10,50,-1,1)","timeIn.fElements!=0&&sector%36>17&&sector>36&&lx.fElements<197","");
129   hisTPadPMiddle = (TH2*)gROOT->FindObject("hisTPadPMiddle");
130   hisTPadPMiddle->FitSlicesY();
131   TH1 * hisTPadPMiddleM =  (TH1*)(gROOT->FindObject("hisTPadPMiddle_1")->Clone());
132   //
133   tree->Draw("(timeIn.fElements-timeF2.fElements)*2.64:pad.fElements>>hisTPadPLong(10,0,10,50,-1,1)","timeIn.fElements!=0&&sector%36>17&&sector>36&&lx.fElements>197","");
134   hisTPadPLong = (TH2*)gROOT->FindObject("hisTPadPLong");
135   hisTPadPLong->FitSlicesY();
136   TH1 * hisTPadPLongM =  (TH1*)(gROOT->FindObject("hisTPadPLong_1")->Clone());
137   //
138
139
140
141   //
142   hisTPadPShortM->SetLineColor(2);
143   hisTPadPMiddleM->SetLineColor(4);
144   hisTPadPLongM->SetLineColor(6);
145   hisTPadPShortM->SetMarkerStyle(23);
146   hisTPadPMiddleM->SetMarkerStyle(24);
147   hisTPadPLongM->SetMarkerStyle(25);
148
149   hisTPadPShortM->Draw();
150   hisTPadPShortM->SetMinimum(-0.3);
151   hisTPadPShortM->SetMaximum(0.2);
152   hisTPadPMiddleM->Draw("same");
153   hisTPadPLongM->Draw("same");
154   TLegend *legend = new TLegend(0.45,0.12,0.85,0.35, "Mean charge vs Pad number");
155   legend->SetBorderSize(1);
156   legend->AddEntry(hisTPadPShortM,"Short pads");
157   legend->AddEntry(hisTPadPMiddleM,"Medium pads");
158   legend->AddEntry(hisTPadPLongM,"Long pads");
159   legend->Draw();
160
161 }
162
163
164
165
166 void CalibEdgeQ(){
167   //
168   // 
169   //
170   TH1* hisQedgePInner= 0;
171   TH1* hisQedgeMInner= 0;
172   TH1* hisQedgePOuter= 0;
173   TH1* hisQedgeMOuter= 0;
174
175   tree->Draw("qIn.fElements/qF2.fElements:dedgePI>>hisQedgePInner(50,0,5)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector<36","prof");
176   tree->Draw("qIn.fElements/qF2.fElements:dedgeMI>>hisQedgeMInner(50,0,5)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector<36","prof");
177   
178   hisQedgePInner = (TH1*)gROOT->FindObject("hisQedgePInner");
179   hisQedgeMInner = (TH1*)gROOT->FindObject("hisQedgeMInner");
180   hisQedgePInner->SetLineColor(2);
181   hisQedgeMInner->SetLineColor(4);
182   hisQedgePInner->Draw();
183   hisQedgeMInner->Draw("same");
184   //
185   //
186   //
187   tree->Draw("qIn.fElements/qF2.fElements:dedgePO>>hisQedgePOuter(50,0,5)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector>36&&lx.fElements<200","prof");
188   tree->Draw("qIn.fElements/qF2.fElements:dedgeMO>>hisQedgeMOuter(50,0,5)","abs(qIn.fElements/qF2.fElements-1)<0.9&&sector%36>17&&sector>36&&lx.fElements<200","prof");  
189   hisQedgePOuter = (TH1*)gROOT->FindObject("hisQedgePOuter");
190   hisQedgeMOuter = (TH1*)gROOT->FindObject("hisQedgeMOuter");
191   hisQedgePOuter->SetLineColor(2);
192   hisQedgeMOuter->SetLineColor(4);
193   hisQedgePOuter->Draw();
194   hisQedgeMOuter->Draw("same");
195 }
196
197
198
199
200
201
202 void EdgeLaserZ(){
203   
204
205   TH2* hisZedgePInnerA   = 0;
206   TH2* hisZedgePMiddleA = 0;
207   TH2* hisZedgePLongA   = 0;
208   TObjArray farray(100);
209   delete gROOT->FindObject("hisEdge");
210   chain->Draw("Cl[].fZ-TrZpol1.fElements:Cl[].fPad>>hisEdge1(50,0,10,50, -0.5,0.5)",cutA+cutClZ+"Cl[].fDetector<36&&Cl[].fDetector<18&&Cl[].fPad>0","",50000);  
211   hisZedgePInnerA = (TH2*)(gROOT->FindObject("hisEdge"));
212   
213   hisZedgePInnerA->FitSlicesY(0,0,-1,0,"QNR",&farray);
214   farray->At(1)->Draw();
215
216 }