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");
11 // Load - Calibration using the CE
12 .L $ALICE_ROOT/TPC/CalibMacros/AnalyzeLaser.C+
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");
19 // Load -Calibration using laser tracks
24 TChain * chainTrack=0;
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);
32 chainTrack->SetProof(kTRUE);
33 chain = tool.MakeChain("laser.txt","Residuals",0,10200);
35 chainFit = tool.MakeChain("laser.txt","FitModels",0,10200);
37 chainFit->SetProof(kTRUE);
38 chain->SetProof(kTRUE);
39 chainDrift = tool.MakeChain("laser.txt","driftv",0,10200);
41 chainDrift->SetProof(kTRUE);
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");
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;
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;
73 // Get the Mean charge on pad as function of pad number
75 TH2* hisQPadPShort= 0;
76 TH2* hisQPadMMiddle= 0;
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());
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());
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());
94 hisQPadPShortM->SetLineColor(2);
95 hisQPadPMiddleM->SetLineColor(4);
96 hisQPadPLongM->SetLineColor(6);
97 hisQPadPShortM->SetMarkerStyle(23);
98 hisQPadPMiddleM->SetMarkerStyle(24);
99 hisQPadPLongM->SetMarkerStyle(25);
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");
115 void CalibEdgeTPad(){
117 // Get the Mean charge on pad as function of pad number
119 TH2* hisTPadPShort= 0;
120 TH2* hisTPadMMiddle= 0;
121 TH2* hisTPadMLong= 0;
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());
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());
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());
142 hisTPadPShortM->SetLineColor(2);
143 hisTPadPMiddleM->SetLineColor(4);
144 hisTPadPLongM->SetLineColor(6);
145 hisTPadPShortM->SetMarkerStyle(23);
146 hisTPadPMiddleM->SetMarkerStyle(24);
147 hisTPadPLongM->SetMarkerStyle(25);
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");
170 TH1* hisQedgePInner= 0;
171 TH1* hisQedgeMInner= 0;
172 TH1* hisQedgePOuter= 0;
173 TH1* hisQedgeMOuter= 0;
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");
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");
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");
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"));
213 hisZedgePInnerA->FitSlicesY(0,0,-1,0,"QNR",&farray);
214 farray->At(1)->Draw();