22 TCut
cutE=
"eY.fElements<0.02&&Rr.eY.fElements<0.02";
23 TCut
cutN=
"nCl.fElements>10&&Rr.nCl.fElements>10";
24 TCut
cutEd=
"(abs(Rr.Y.fElements)-Rr.X.fElements*0.155<-1)";
25 TCut
cutB=
"LTr.fVecLX.fElements>0";
26 TCut
cutR=
"(LTr.fVecLX.fElements%3)==1&&((abs(LTr.fVecLZ.fElements)+abs(LTr.fVecLY.fElements))%3)==1";
64 gSystem->Load(
"libANALYSIS");
65 gSystem->Load(
"libTPCcalib");
66 gSystem->Load(
"libSTAT");
67 gSystem->AddIncludePath(
"-I$ALICE_ROOT/TPC/macros");
68 gROOT->LoadMacro(
"$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
84 chain->SetAlias(
"dy",
"(dY.fElements-Rr.dY.fElements)");
85 chain->SetAlias(
"ctany",
"(dY.fElements-Rr.dY.fElements)/(250*dr)");
87 chain->SetAlias(
"dr",
"(250.-abs(LTr.fP[1]))");
88 chain->SetAlias(
"dr1",
"(1.-abs(LTr.fP[1]/250.))");
89 chain->SetAlias(
"phiL",
"(LTr.fVecLY.fElements/LTr.fVecLX.fElements)");
90 chain->SetAlias(
"Esign",
"(1.-LTr.fSide*2.)");
94 chain->SetAlias(
"ablx",
"(iblx.fElements/(ibz.fElements))");
95 chain->SetAlias(
"ably",
"(ibly.fElements/(ibz.fElements))");
96 chain->SetAlias(
"abr",
"(ibr.fElements/(ibz.fElements))");
97 chain->SetAlias(
"abrf",
"(ibrphi.fElements/(ibz.fElements))");
100 chain->SetAlias(
"r",
"(R.fElements-165.5)/80.3");
101 chain->SetAlias(
"ky",
"(kY.fElements)");
102 chain->SetAlias(
"sec",
"LTr.fVecSec.fElements");
103 chain->SetAlias(
"ca",
"cos(LTr.fVecPhi.fElements+0.)");
104 chain->SetAlias(
"sa",
"sin(LTr.fVecPhi.fElements+0.)");
111 Int_t nrows=mat.GetNrows();
112 TMatrixD *err =
new TMatrixD(nrows,1);
113 for (Int_t i=0; i<nrows;i++) (*err)(i,0)=TMath::Sqrt(
mat(i,i));
118 void MakeFit(Int_t i, TCut cutI, TString aName){
121 Int_t ntracks=3000000;
134 fstringB+=
"ablx*dr++";
135 fstringB+=
"ablx*ky*dr++";
136 fstringB+=
"ably*dr++";
137 fstringB+=
"ably*ky*dr++";
143 fstringT+=
"(dr1)*ky++";
144 fstringT+=
"(dr1)*phiL++";
145 fstringT+=
"(dr1)*phiL*ky++";
162 fstring0+=
"ky*ca*r++";
163 fstring0+=
"ky*sa*r++";
167 fstringL+=
"ca*dr1++";
168 fstringL+=
"sa*dr1++";
169 fstringL+=
"ky*ca*dr1++";
170 fstringL+=
"ky*sa*dr1++";
172 TString fstringBT = fstringB +fstringT;
173 TString fstringBT0 = fstringBT+fstring0;
174 TString fstringA = fstringBT0+fstringL;
178 TString * strFit = 0;
183 strFit = TStatToolkit::FitPlane(
chain,
"dy:0.1", fstringB.Data(),cutF,
chi2,
npoints,
fitParamB[i],
covarB[i],1,0, ntracks);
184 chain->SetAlias(aName+
"_FB",strFit->Data());
185 cutF=
cutR+cutI + Form(
"abs(dy-%s)<0.2",(aName+
"_FB").Data());
189 strFit = TStatToolkit::FitPlane(
chain,
"dy:0.1", fstringB.Data(),cutF,
chi2,
npoints,fitParamB[i],covarB[i],1,0, ntracks);
190 chain->SetAlias(aName+
"_FB",strFit->Data());
191 chi2B[i]=TMath::Sqrt(chi2/npoints);
194 strFit = TStatToolkit::FitPlane(
chain,
"dy:0.1", fstringBT.Data(),cutF,
chi2,
npoints,
fitParamBT[i],
covarBT[i],1,0, ntracks);
195 chain->SetAlias(aName+
"_FBT",strFit->Data());
196 chi2BT[i]=TMath::Sqrt(chi2/npoints);
199 strFit = TStatToolkit::FitPlane(
chain,
"dy:0.1", fstringBT0.Data(),cutF,
chi2,
npoints,
fitParamBT0[i],
covarBT0[i],1,0, ntracks);
200 chain->SetAlias(aName+
"_FBT0",strFit->Data());
201 chi2BT0[i]=TMath::Sqrt(chi2/npoints);
205 strFit = TStatToolkit::FitPlane(
chain,
"dy:0.1", fstringA.Data(),cutF,
chi2,
npoints,
fitParamA[i],
covarA[i],1, 0, ntracks);
206 chain->SetAlias(aName+
"_FA",strFit->Data());
207 chi2A[i]=TMath::Sqrt(chi2/npoints);
237 chain->Draw(
"(dy-dyAM5_FA):LTr.fVecPhi.fElements>>hisAM5(60,-3.14,3.14,100,-0.2,0.2)",
cutAM5,
"");
238 chain->Draw(
"(dy-dyAP5_FA):LTr.fVecPhi.fElements>>hisAP5(60,-3.14,3.14,100,-0.2,0.2)",
cutAP5,
"");
239 chain->Draw(
"(dy-dyAP2_FA):LTr.fVecPhi.fElements>>hisAP2(60,-3.14,3.14,100,-0.2,0.2)",
cutAP2,
"");
240 hisAM5->FitSlicesY(0,0,-1,20);
241 hisAP5->FitSlicesY(0,0,-1,20);
242 hisAP2->FitSlicesY(0,0,-1,20);
243 hisAM5_1->SetMinimum(-0.2);
244 hisAM5_1->SetMaximum(0.2);
245 hisAM5_1->SetMarkerStyle(20);
246 hisAP5_1->SetMarkerStyle(21);
247 hisAP2_1->SetMarkerStyle(22);
248 hisAM5_1->SetMarkerColor(1);
249 hisAP5_1->SetMarkerColor(2);
250 hisAP2_1->SetMarkerColor(4);
252 hisAP5_1->Draw(
"same");
253 hisAP2_1->Draw(
"same");
257 Double_t bz[3] ={-5,2,5};
258 Double_t p0A[3]={fitParam[0][0],fitParam[1][0],fitParam[2][0]};
259 Double_t p1A[3]={fitParam[0][1],fitParam[1][1],fitParam[2][1]};
260 Double_t p2A[3]={fitParam[0][2],fitParam[1][2],fitParam[2][2]};
261 Double_t p3A[3]={fitParam[0][3],fitParam[1][3],fitParam[2][3]};
262 Double_t p4A[3]={fitParam[0][4],fitParam[1][4],fitParam[2][4]};
263 Double_t p5A[3]={fitParam[0][5],fitParam[1][5],fitParam[2][5]};
264 Double_t p6A[3]={fitParam[0][6],fitParam[1][6],fitParam[2][6]};
265 Double_t p7A[3]={fitParam[0][7],fitParam[1][7],fitParam[2][7]};
266 Double_t p8A[3]={fitParam[0][8],fitParam[1][8],fitParam[2][8]};
267 Double_t p9A[3]={fitParam[0][9],fitParam[1][9],fitParam[2][9]};
268 TGraph grA0(3,bz,p0A);
269 TGraph grA1(3,bz,p1A);
270 TGraph grA2(3,bz,p2A);
271 TGraph grA3(3,bz,p3A);
272 TGraph grA4(3,bz,p4A);
273 TGraph grA5(3,bz,p5A);
274 TGraph grA6(3,bz,p6A);
275 TGraph grA7(3,bz,p7A);
276 TGraph grA8(3,bz,p8A);
277 TGraph grA9(3,bz,p9A);
278 TF1 f1(
"f1",
"[0]*x/(1+([0]*x)^2)");
279 TF1 f2(
"f2",
"([0]*x)^2/(1+([0]*x)^2)");
282 TMatrixD matBT0(6,5);
283 for (Int_t i=0; i<5;i++)
for (Int_t j=0; j<5;j++) matB[i][j]=
fitParamB[j][i];
284 for (Int_t i=0; i<5;i++)
for (Int_t j=0; j<5;j++) matBT[i][j]=
fitParamBT[j][i];
285 for (Int_t i=0; i<6;i++)
for (Int_t j=0; j<5;j++) matB0[i][j]=
fitParamBT0[j][i];
292 TTreeSRedirector *
pcstream =
new TTreeSRedirector(
"exbFits.root");
294 for (Int_t i=0; i<5;i++){
297 if (i==0) { bz=-5; side=1;}
298 if (i==1) { bz=2; side=1;}
299 if (i==2) { bz=5; side=1;}
300 if (i==3) { bz=-5; side=-1;}
301 if (i==4) { bz=2; side=-1;}
319 TFile
f(
"exbFits.root");
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
TFile f("CalibObjects.root")
TTreeSRedirector * pcstream
void MakeFit(Int_t i, TCut cutI, TString aName)
TMatrixD * MakeErrVector(TMatrixD &mat)