]>
Commit | Line | Data |
---|---|---|
5de0955b | 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&§or%36>17&§or<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&§or%36>17&§or>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&§or%36>17&§or>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&§or%36>17&§or<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&§or%36>17&§or>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&§or%36>17&§or>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&§or%36>17&§or<36","prof"); | |
176 | tree->Draw("qIn.fElements/qF2.fElements:dedgeMI>>hisQedgeMInner(50,0,5)","abs(qIn.fElements/qF2.fElements-1)<0.9&§or%36>17&§or<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&§or%36>17&§or>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&§or%36>17&§or>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 | } |